一,实验环境
二,安装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
四,安装 php-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后端服务指定的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.ini
配置 safe_mode = on
控制 PHP 脚本能访问的目录
关闭 PHP 信息在 HTTP 头的泄漏
错误信息控制
删除空用户
防止文件注入
禁用 symbolic-links 选项
关闭远程访问
--skip-networking
参数使 MySQL 服务不监听任何 TCP/IP 连接,增加安全性。--lenhxue
--2021-7-27
原文:https://www.cnblogs.com/Thoth/p/15113622.html