• Nginx安全加固


    本加固文档适用于nginx中间件。明确了nginx安全配置方面的基本要求。

    一.开启SELinux

    操作目的

    防止大多数系统root级攻击

    检查方法

    #getsebool –a 查看SELinux设置项

    加固方法

    # getsebool -a | lessgetsebool -a | grep offgetsebool -a | grep o

    然后使用setsebool命令开启需要的配置项

    记录

    备注

    开启SELinux后,在RHEL或CentOS上通常会增加2-8%的系统开销。

    二.通过mount参数提供最低权限

    操作目的

    通过mount参数提供最低权限

    检查方法

    cat nginx.conf|grep autoindex

    加固方法

    为/html/php文件创建独立的分区,例如,创建一个/dev/sda5分区挂载在/ngnix上,确定/ngnix使用了noexec,nodev和nosetuid权限挂载。下面是一个挂载实例:

    LABEL=/nginx     /nginx          ext3   defaults,nosuid,noexec,nodev 1 2

    注意:需要使用fdisk和mkfs.ext3命令创建一个新分区。

    记录

    备注

    三.禁止autoindex

    操作目的

    禁止目录列出

    检查方法

    查看nginx配置文件是否禁用autoindex,即autoindex off或者没有配置autoindex

    加固方法

    在nginx配置文件中 修改 autoindex on 为 autoindex off

    记录

    备注

    四.关闭服务器标记

    操作目的

    禁止显示服务器的版本和信息

    检查方法

    # curl -I 某个应用URL  查看是否错误页面都会显示服务器的版本和信息

    加固方法

    修改nginx.conf配置文件如下:

    http{

        include       naxsi_core.rules;

        include      mime.types;

        default_type  application/octet-stream;

        sendfile        on;

        server_tokens off;

        ... ...

    记录

    备注

    五.自定义缓存

    操作目的

    设置自定义缓存以限制缓冲区溢出攻击

    检查方法

    #

    加固方法

    修改nginx.conf配置文件如下:

    http{

        ... ...

        server{

            ... ...

            client_body_buffer_size  16K;

           client_header_buffer_size  1k;

            client_max_body_size  1m;

           large_client_header_buffers  4  8k;

            ... ... 

    上述的参数不是最优参数,仅供参考

    记录

    六.设置连接超时

    操作目的

    设置timeout设低来防御DOS攻击

    检查方法

    查看nginx.conf 主配置文件是否设置timeout参数

    加固方法

    修改nginx.conf配置文件如下:

    http {

        ... ...

           client_body_timeout   10;

           client_header_timeout  30;

           keepalive_timeout     30  30;

           send_timeout          10;

    记录

    七.配置日志

    操作目的

    设置timeout设低来防御DOS攻击

    检查方法

    #tail -3f /usr/local/nginx/logs/dfh.smartcity.com.log查看Nginx的日志文件是否存在,并且访问应用时,有日志输出。

    加固方法

    鉴于日志的输出格式还未确定,目前暂时先使用Nginx默认的日志格式。

    修改nginx.conf配置文件如下:

    http {

        ......

        log_format  main  '$remote_addr - $remote_user [$time_local]"$request" ''$status $body_bytes_sent "$http_referer"''"$http_user_agent" "$http_x_forwarded_for"';

        access_log logs/ access.log  main;

        ... ...

    记录

    八.限制访问的方法

    操作目的

    拒绝除了post和get方式请求

    检查方法

    尝试使用不同的请求方式是否能访问

    加固方法

    修改nginx.conf配置文件如下:

    server{

           ... ...

           if($request_method !~ ^(GET|HEAD|POST)$) {        

                         return404;

                  }

           ... ...

    记录

    九.限制访问IP

    操作目的

    限制某些IP地址的客户端访问

    检查方法

    查看nginx.conf 主配置文件

    加固方法

    如下范例:

    location/ {

        deny  192.168.1.1;

        allow 192.168.1.0/24;

        allow 10.1.1.0/16;

        allow 2001:0db8::/32;

        deny  all;

    }

    注:规则按照顺序依次检测,直到匹配到第一条规则。 在这个例子里,IPv4的网络中只有 10.1.1.0/16 和 192.168.1.0/24允许访问,但 192.168.1.1除外, 对于IPv6的网络,只有2001:0db8::/32允许访问。

    记录

  • 相关阅读:
    BERT模型可视化分析总结:BertVi注意力分布与dodrio句法语义分析使用实录
    MySQL分页查询的工作原理
    redis Lettuce客户端
    apollo学习之:如何测试canbus模块
    【开发小记】vuex存储用户信息
    python 在pycharm中使用venv虚拟环境 + 激活与去激活在干什么?+如何不激活环境使用pip
    腾讯RPC框架开源了
    安科瑞无线测温产品在某风电场项目的超温事故预警及分析-安科瑞 蒋静
    Python异步编程原理篇之协程的IO
    第三章 内存管理 一、内存的基础知识
  • 原文地址:https://blog.csdn.net/jiangteddt/article/details/127447523