部署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;
....
}


发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。