web_1 基础环境搭建

web环境搭建以及加固

任务要求:

  1. 搭建 Linux+nginx+php-fpm+MySQL ,并详细记录。
  2. 对环境进行加固,并记录。
  3. 能够运行 php 代码并且可以使用 php 连接 mysql,成功执行 mysql 的语句。
  4. 扩展:其他的环境搭建。

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
      
    • 检验配置

    • web_1 基础环境搭建

加固

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

web_1 基础环境搭建

上一篇:allure生成测试报告,index.html页面内容为空


下一篇:记一次使用 Electron 打包在线网页