部署Nginx服务,并且强化Nginx软件的安全性。
下载Nginx源码包:nginx.net
提前安装必备环境:
useradd -s /sbin/nologin nginx yum -y install gcc openssl-devel pcre-devel zlib-devel php-mysql php-fpm
注意!php-mysql php-fpm 为可选项,只是为了后续使用不必繁琐。
编译并安装:
./configure --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-stream && make && make install
注意,为了强化安全性,安装时应当使用最小化的安装方法,需要禁用一些不需要且较为危险的模块:
加入编译时加入以下命令,禁用不安全的模块:
--without-http_autoindex_module --without-http_ssi_module
将软件名和版本号隐藏掉,也可以提升安全性。
参考资料:https://teddyou.com/?p=14
限制并发,提升被攻击的防护能力:
通过此手段可以降低DDos(分布式拒绝访问)攻击的风险。
此功能由默认模块 ngx_http_limit_req_module 提供,默认为启用状态。
在配置文件中写入:
http { .... limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; .... server { .... listen 80; server_name localhost; limit_req zone=one burst=5; .... } .... }
拒绝非法请求:
常见的HTTP请求方法:
请求方法 | 功能描述 |
GET | 请求指定的页面信息,并返回实体主体。 |
HEAD | 类似于GET请求,但返回的响应中没有具体内容,用于获取报头 |
POST | 向指定资源提交数据进行处理请求 |
DELETE | 请求服务器删除指定的页面 |
PUT | 向服务器特定位置上传资料 |
配置文件写入:
http { .... limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; .... server { .... listen 80; if ( $request_method !~ ^(GET|POST)$ ) { return 401; } .... } .... }
定义缓冲区大小:
防止客户端请求数据溢出,有效降低服务器Dos攻击风险。
http { .... client_body_buffer_size 1k; client_header_buffer_size 1k; client_max_body_size 16k; large_client_header_buffers 4 4k; .... }
发表评论