0x00 前言

曾经入手服务器的时候都喜欢先安装已给宝塔面板,全部都一步到位安装环境!!但是真正的企业里肯定是不会这么干的……毕竟宝塔也是爆过漏洞的(想起某个紧张且兴奋的夜晚)。接下来慢慢的安装FTP、Apache、MySql、PHP的环境。

次此权当无聊了罢,做个记录

(曾经虚拟机都不知重装了多少QWQ)

环境

服务器:Center 7.6 x64

0x01 FTP安装

简介

FTP (文件传输协议) ,是用于网络上的文件传输协议。安装FTP将会更好的帮助咱上传下载文件(增、删、改、查)。

本地安装可能还需要配置防火墙,这里不赘述!!就是开启个端口而已!!

安装

1
yum -y install vsftpd ftp

查看ftp的安装位置

1
whereis vsftpd

etc/vsftpd 目录下有四个文件

1、ftpusers 文件 指定哪些用户不能访问 ftp 服务,这些用户是指 Linux 系统用户还是包括虚拟用户?

2、user_list 文件 用户列表,当 vsftpd 里 userlist_deny=NO时,只允许这里的用户访问 ftp 服务,注意此时同时也检测 ftpusers 文件;当 vsftpd 里 userlist_deny=YES(默认) 时,不允许这里的用户 访问 ftp 服务

3、vsftpd.conf 文件 是 vsftpd 的核心配置文件

4、vsftpd_conf_migrate.sh 文件 是 vsftpd 操作的一些变量和设置脚本

开启FTP服务

1
systemctl start vsftpd

查看FTP的状态

1
systemctl status vsftpd

编辑配置

编辑**/etc/vsftpd/vsftpd.conf**

1
2
3
4
5
6
7
8
9
10
#主要编辑的几个核心基础配置如下
anonymous_enable=NO 是否允许匿名登录

local_enable=YES 是否允许本地账号(系统账号)登录

write_enable=YES 是否运行上传操作,如果要运行上传那么就要开启这个配置

listen=NO ftp服务的运行模式,=NO时表示xinetd模式;=YES时表示standlone模式。

userlist_enable=NO 控制 user_list 的功能

编辑ftpuser

这个文件相当是黑名单,将root用户从这里面删除

编辑user_list

这个文件相当于白名单,将除root以外的用户删除

重启ftp服务

1
systemctl restart vsftpd.service

使用系统用户root登陆

虚拟用户创建

如若多人需要使用ftp文件服务,可以创建虚拟用户。

此时root用户无法登陆FTP(我这里就不折腾root用户了)。

ftp有三种登陆方式:

  • 匿名登陆:存在安全隐患,故在配置文件中关闭。
  • 系统账户:以root及普通账户登陆。
  • 虚拟用户:系统账户存在安全隐患,不适于大型ftp场景,虚拟用户登陆方式相对安全。

映射账户

建立系统账户shawn,以此映射虚拟账户

1
2
3
useradd shawn -d /home/shawn -s /sbin/nologin
#添加shawn用户,并在/home目录下创建shawn目录作为根目录,并禁止其登陆系统(ssh)
#接下来所有的ftp用户都将映射到此账户。

进入到home目录下,修改shawn目录的权限

1
2
3
4
chmod 755 shawn/
#第一个7:表示当前文件的拥有者的权限, 可读可写可执行权限
#第二个5:表示当前文件的所属组(同组用户)权限,可读可执行权限
#第三个5:表示当前文件的组外权限,可读可执行权限

在shawn目录下创建文件hello.shawn

以及目录111的目录

1
2
touch hello.shawn
mkdir -p 111

FTP虚拟账户

在/etc/vsftpd目录下创建存储用户的文件

1
2
3
vim user
#1 奇数行为登录名--test
#2 偶数行为登陆密码--123456

此时此账户还无法被vsftpd所认证,即无法进行远程登陆。同时明文存储的账户信息也是不安全的,所以需要进行一下转换。

使用db_load命令 hash算法将明文信息虚拟用户文件转换成db文件

并降低此文件的权限,只有root用户可实行读写

1
db_load -T -t hash -f /etc/vsftpd/user /etc/vsftpd/user.db
1
chmod 600 /etc/vsftpd/user.db

现在虚拟用户和用于映射的user账户都有了

接下来需要让ftp找到虚拟用户文件进行认证

PAM认证配置

PAM(可插拔认证模块)

PAM(Pluggable Authentication Modules )是由Sun提出的一种认证机制,

通过提供一些动态链接库和一套统一的API,将系统提供的服务 和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。

新建一个用于虚拟用户认证的PAM配置文件vsftpd.user

1
vim /etc/pam.d/vsftpd.user

并写入以下配置

1
2
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/user
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/user

配置ftp主配置文件(etc/vsftpd/vsftpd.conf),使服务启动时,能够找到认证文件

1
2
3
4
5
6
7
8
9
10
guest_enable=YES
#添加:支持虚拟用户
guest_username=shawn
#添加:虚拟用户指定映射账户
allow_writeable_chroot=YES
#添加:支持虚拟用户的读写
pam_service_name=vsftpd.user
#修改:pam认证的文件
user_config_dir=/etc/vsftpd/userconfig
#添加:虚拟用户的控制文件路径

虚拟用户配置

配置虚拟用户文件,对不同的登录用户进行不同的控制。

在etc/vsftpd文件目录下新建一个文件目录userconfig

1
mkdir -p userconfig

进入到此目录下创建登陆用户的同名文件

1
2
touch test
vim test

写入以下配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
local_root=/home/shawn
#虚拟用户登陆后会访问到的目录,根据实际需求访问各自的目录
write_enable=YES
#是否可写
anon_umask=022
anon_world_readable_only=NO
#是否只可读
anon_upload_enable=YES
#可上传
anon_mkdir_write_enable=YES
#可建立目录可写
anon_other_write_enable=YES
download_enable=YES
#可下载

注意

每一句配置后若有多余的空格,就会无法连接!!注意空格 ! ! !

重启FTP服务

1
systemctl restart vsftpd.service

使用test账户连接FTP服务

0x02 Apache安装

简介

Apache(音译为阿帕奇是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。

安装

使用yum安装

1
yum install httpd

开启apache服务

1
systemctl start httpd

只要80端口是开启状态,那么就可以直接输入ip进行访问

进入到默认站点的存放位置**/var/www/html**目录下,创建一个html文件,写入一个h1标签的hello,shawn

配置端口站点

默认情况下一般使用的是80端口,那么这里再添加一个8080端口的站点

apache的配置文件**/etc/httpd/conf/httpd.conf**

添加端口8080,云服务器还需要到控制台打开8080端口

保存退出后进入到**/etc/httpd/conf/conf.d**目录下

创建站点配置文件,文件名随意,后缀名必须为conf

文件内容如下

1
2
3
4
5
6
7
8
9
10
11
# Virtual Hosts
<VirtualHost *:8080>
ServerName localhost #域名,若无默认此即可
ServerAlias localhost #泛域名使用
DocumentRoot "/var/www/hello"
<Directory "/var/www/hello">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

在**/var/www/hello**目录下写入html文件,进行ip访问

解析PHP文件

编辑**/etc/httpd/conf/httpd.conf**

1
2
3
4
5
6
7
8
9
10
11
# 搜索关键字,匹配到如下配置

<IfModule dir_module>
DirectoryIndex index.html
</IfModule>

# 修改为

<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>

再搜索AddType关键字,在此配置后面加上如下配置

1
2
3
4
5
6
7
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php .phtml .php3
AddType application/x-httpd-php-source .phps

<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

重启apche服务即可

接下来即可正常解析PHP文件。

SSL配置

手上暂无域名,后面买了再来补!!

0x03 MySQL

简介

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

安装(5.7版本)

不同版本安装请前往官网查看相应安装方式。

使用 wget 下载 5.7 版本的mysql yum

1
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

使用 yum 安装mysql yum

1
yum localinstall mysql57-community-release-el7-8.noarch.rpm

检测 mysql yum是否安装成功

1
yum repolist enabled | grep "mysql.*-community.*"

安装mysql服务

1
yum install mysql-community-server

开启服务

1
systemctl start mysqld

修改密码

查看密码

1
grep "temporary password" /var/log/mysqld.log

1
mysql -u root -p

1
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

mysql默认的密码规则必须包含特殊字符、大写字母、小写字母、数字、一定长度

如果一定要设置弱密码,可以通过如下命令设置密码规则等级。

1
2
set global validate_password_policy=0;
set global validate_password_length=1;

远程连接设置

1
2
3
4
5
6
#任何主机均可连接,password为登陆密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
#指定主机方可连接
GRANT ALL PRIVILEGES ON *.* TO 'xxxx'@’xx.xx.xx.xx’ IDENTIFIED BY 'xxxx' WITH GRANT OPTION;
#刷新权限
flush privileges;

设置固定ip登陆

1
2
3
use mysql;
update user set host = '%' where user = 'root';
# %表示所有ip,如果指定某个ip或者用户,则修改host为相应的ip,user为相应对象。

注意

当重置密码退出后再重新登入爆以下错误

1
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

停止mysql服务

1
systemctl stop mysqld.service

修改配置文件为无密码登陆

1
vi /etc/my.cnf

在最尾部加上

1
skip-grant-tables

保存退出后登陆数据库

1
mysql -u root

修改密码

1
2
3
use mysql;
update mysql.user set authentication_string=password('password') where user='root';
flush privileges;

退出修改配置文件,将之间加skip-grant-tables配置删除,保存退出即可!

0x04 PHP

简介

PHP(Pre Hypertext Preprocessor)即超文本预处理器,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。

这里原本采用的是编译安装的方式,但是编译安装后还是存在一些目前解决不了的问题。

怪折腾人的QWQ

后面还是得单独把编译安装搞一搞。

参考文章

添加EPEL和REMI存储库

1
yum install epel-release
1
yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

安装PHP 7.4.16版本

1
yum -y install yum-utils

查看仓库的php版本

1
yum repolist all | grep php

选择remi-php74版本

1
yum-config-manager --enable remi-php74

安装依赖以及扩展

1
yum install php  php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json php-redis

查看php版本

1
php -v