web环境搭建以及加固
任务要求:
- 搭建 Linux+nginx+php-fpm+MySQL ,并详细记录。
- 对环境进行加固,并记录。
- 能够运行 php 代码并且可以使用 php 连接 mysql,成功执行 mysql 的语句。
- 扩展:其他的环境搭建。
LNMP的搭建
一,实验环境
- Ubuntu :21.04
- Nginx:1.18.0
- php:7.4.16
- MySQL:8.0.25
二,安装MySQL
-
执行安装命令 apt-get -y install mysql-server mysql-client ,
-
完成后运行 mysql_secure_installation,进行安全设置向导,
-
设置密码强度 然后设置如下 –删除匿名账号 Remove anonymous users? –取消root用户远程登录 Disallow root login remotely? –删除test库和对test库的访问权限 Remove test database and access to it? –刷新授权表使修改生效 Reload privilege tables now?
三,安装 Nginx
- 执行安装命令 apt-get install nginx ,
- 完成后运行 service nginx start ,
- 从浏览器输入本地地址,测试 Nginx 。
四,安装 php-fpm
- 执行安装命令 pip install php7.4
- 继续安装扩展 apt-get install php7.4-fpm
五,进行配置
-
配置php-fpm
-
sudo gedit /etc/php/7.2/fpm/php.ini #修改参数如下: # 778行 ;cgi.fix_fathinfo=1 更改为 cgi.fix_fathinfo=0
-
sudo gedit /etc/php/7.2/fpm/pool.d/www.conf #修改参数如下 # 36行 listen = 127.0.0.1:9000 # 62行 listen.allowed_clients = 127.0.0.1 # 113行 pm.max_children = 50 # 139行 pm.max_requests = 500 # 340行 request_terminate_timeout = 0 # 344行 rlimit_files = 1024 # 以上部分,包括但不限于去除前面的";"
-
编写php测试程序
-
# 创建文件 /var/www/html/index.php # 写入如下内容 <h1> <span> hello </span> </h1>
-
-
配置nginx
-
sudo gedit /etc/nginx/sites-available/default # 第44行,在index.html前面加入index.php # 第56-62行,用如下内容替换: location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name; include fastcgi_params; }
-
-
重启服务
-
sudo service php7.2-fpm restart sudo service nginx restart
-
检验配置
-
加固
Nginx 加固
-
Nginx后端服务指定的Header隐藏状态 | 服务配置
-
描述:隐藏Nginx后端服务X-Powered-By头,使可获得的信息更少。
-
# 加固 1、打开conf/nginx.conf配置文件; 2、在http下配置proxy_hide_header项; 增加或修改为 proxy_hide_header X-Powered-By; proxy_hide_header Server;
-
-
Nginx的WEB访问日志记录状态 | 服务配置
-
描述:应为每个核心站点启用access_log指令。默认情况下启用。
-
1、打开conf/nginx.conf配置文件; 2、在http下配置access_log项 access_log logs/host.access.log main; 3、并删除off项
-
-
隐藏Nginx服务的Banner | 服务配置
-
描述:Nginx服务的Banner隐藏状态
-
1、打开conf/nginx.conf配置文件; 2、在server栏目下,配置server_tokens项 server_tokens off; 如出现多项不支持,执行ln <conf_path> /etc/nginx/nginx.conf
-
-
确保NGINX配置文件权限为644 | 文件权限
-
描述:把控配置文件权限以抵御外来攻击
-
执行chmod 644 <conf_path>来限制Nginx配置文件的权限; (<conf_path>为配置文件的路径,如默认/安装目录/conf/nginx.conf或自定义
-
-
针对Nginx SSL协议进行安全加固 | 服务配置
-
描述:Nginx SSL协议的加密策略进行加固
-
1、打开conf/nginx.cconf配置文件 2、配置 server { … ssl_protocols TLSv1.2; … }
-
PHP 加固
-
启用 PHP 安全模式
-
打开 php.ini
-
配置 safe_mode = on
-
-
控制 PHP 脚本能访问的目录
- 使用 open_basedir 来进行修改
-
关闭 PHP 信息在 HTTP 头的泄漏
- expose_php = off
-
错误信息控制
- display_errors = Off
- 开启错误信息记录
- log_errors = On
MySQL 加固
-
删除空用户
- select user from mysql.user;
- delete from mysql.user where user="";
-
防止文件注入
- 于配置文件末尾加上 local_infile = 0
-
禁用 symbolic-links 选项
- 打开 /etc/my.cnf ,配置 skip_symbolic_links = yes,然后重启。
-
关闭远程访问
- 条件:应用和数据库在同一主机
- 通过在 MySQL 服务器的启动参数中添加
--skip-networking
参数使 MySQL 服务不监听任何 TCP/IP 连接,增加安全性。
--lenhxue
--2021-7-27