zoukankan      html  css  js  c++  java
  • 网站免费安全加固- LNMP环境


    环境介绍:
    系统版本: CentOS Linux release 7.7.1908 (Core)
    WordPress: 5.4–zh_CN
    nginx版本: nginx/1.16.1
    PHP版本: PHP 7.2.26
    数据库版本: mysql 3.28.0
    在这里插入图片描述

    一、加固原因(真实经历)

    血的教训!!!

    • LNMP环境搭建的个人网页,本以为个人网页没必要做安全,安全离遥不可及,直到每天收到阿里云的短信,个人小网页在也没法使用时,可气的删除了我的所有学习笔记,我才知道安全中有多重要
    • 你不解决一些教科书级的漏洞,总有熊孩子折腾你

    在这里插入图片描述

    二、整体加固方法介绍

    1、关闭不需要的端口

    只打开如下端口

    服务 端口
    ssh 443(限制IP)
    http 80
    https 443
    ftp 21,20000-30000

    2、配置https

    尽量使用https防止被指持,这个的详细配置,从证书的申请到配置有详细的一期介绍:点击这里查看

    3、设置目录权限

    将网站的根目录权限,取消执行权限(chmod命令调整)

    三、基于nginx加固

    1. 升级nginx的版本到最新版,隐藏nginx的版本信息
    #vim nginx的配置文件
    #yum安装nginx路径 /etc/nginx/nginx.conf
    
    #在http括号中任意位置添加以下命令
    server_tokens off;
    
    

    在这里插入图片描述
    在这里插入图片描述
    2. nginx配置中的其他加固
    配置nginx的配置文件 nginx.conf
    你也可以将需要的模块加载单个网页配置文件中

    # 设置timeout设低来防御DOS攻击
    http
    {
    client_body_timeout   10;
    client_header_timeout  30;
     keepalive_timeout     30  30;
     send_timeout          10;
    
    }
    
    #限制访问的方法
    server
    {
    if($request_method !~ ^(GET|HEAD|POST)$) {        
                         return404;
                  }
    }
    
    在原来的编译参数的首行加入--add-module=/root/install/naxsi-core-0.51-1/naxsi_src
    nbs.rules文件
    
    server{
    
    limit_req zone=one burst=5;
    
    limit_conn two 15;
    
    }
    
    自定义nginx版本号
    
    http://purplegrape.blog.51cto.com/1330104/1291871
    
    #封杀各种user-agent
    
    if ($http_user_agent ~* "java|python|perl|ruby|curl|bash|echo|uname|base64|decode|md5sum|select|concat|httprequest|httpclient|nmap|scan" ) {
    
        return 403;
    }
    
    if ($http_user_agent ~* "" ) {
        return 403;
    }
    
    # 封杀特定的url
    
    location ~ ^/(.user.ini|.ht|.git|.svn|.project|LICENSE|README.md) {
          deny all;
        }
    
    # 封杀特定的http方法和行为
    
    if ($request_method !~ ^(GET|POST|HEAD)$ ) {
    
        return 405;
    
    }
    
    if ($http_range ~ "d{9,}") {
    
        return 444;
    
    }
    # 强制网站使用域名访问,可以逃过IP扫描
    
    if ( $host !~* 'abc.com' ) {
    
        return 403;
    
    }
    
    url 参数过滤敏感字
    
    if ($query_string ~* "union.*select.*(") { 
    
        rewrite ^/(.*)$  $host  permanent;
    
    } 
    
    if ($query_string ~* "concat.*(") { 
    
        rewrite ^/(.*)$  $host  permanent;
    
    }
    
    #必须携带 referer
    
    if ($http_referer = "" ) {
    
        return 403;
    
    }
    
    

    以上 的模块都可以单独添加在nginx.conf的 sever{ }中
    你还可以点击这里查看 nginx配置文件介绍

    四、基于PHP加固

    隐藏php版本信息
    在header中隐藏php版本信息,修改php配置文件如下:
    我的编译安装位置 /usr/local/php72/etc (路径可以自定义可能不同)

    cd /usr/local/php72/etc
    vim  php.ini 
    380行中的 expose_php = On
    修改为 expose_php = off
    

    :vim 命令中输入 set number显示行数

    五、基于mysql加固

    • phpMyAdmin管理数据库限制
      进入 phpMyAdmin 目录,找到 config.inc.php,如果没有,可以将根目录下的config.sample.inc.php 复制为 config.inc.php。
      编辑 config.inc.php,添加下面两行代码,其中 111.18.89.174 是允许访问 phpMyAdmin 的 IP,Access denied 是未经授权访问时的提示信息:
    ?$ip_prefix = '111.18.89.174';
    if (substr($_SERVER['REMOTE_ADDR'], 0, strlen($ip_prefix)) != $ip_prefix ) die('Access denied');
    
    • 修改phpmyadmin的端口号访问mysql数据库:
      修改phpmyadmin目录下libraries下配置文件config.default.php。
    $cfg['Servers'][$i]['port'] = ''
    #上面是默认语句,默认端口为3306
    $cfg['Servers'][$i]['port'] = '3310';
    #我们修改端口,指定为3301,这个可以自由指定
    

    六、安全建议

    • 建议大家搭建个人网页时,尽量去官网,如果国外的官网太慢,使用国内的软件安装更新源一定要选择权威的一些源,如国内的阿里源、中科源等
    • 配置千万条,安全第一条
      在这里插入图片描述
  • 相关阅读:
    Undergound Heaven [only_for_information]
    Essential Booklist of .Net Framework
    Thinkpad T4x 风扇转速档位控制
    Hot scene AGAIN!
    JavaScript使用技巧精萃
    今天项目中遇到的一个问题:判断新闻Id是否存在
    C++编译过程中"没有找到MFC80UD.DLL,因此这个程序未能启动.重新安装应用程序可能会修复此问题"? 的彻底解决
    SQL操作全集
    关于UrlReferrer传值的几点注意
    在ASP.Net2.0中使用UrlRewritingNet实现链接重写(转)
  • 原文地址:https://www.cnblogs.com/tianyao2020/p/12790066.html
Copyright © 2011-2022 走看看