一,实验环境
二,安装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