之前nginx服务提到过一些对nginx的优化。
这里针对nginx的以下内容进行优化:
1、取消自动索引,防止暴露网页文件
2、隐藏版本信息,显示版本信息攻击者会根据版本找对应的漏洞
3、限制并发数量,可以减少DOS攻击
4、拒绝非法请求,可以减少DOS攻击
5、防止buffer溢出
----------
1、取消自动索引
tar -xvf nginx-1.17.3.tar.gz
cd nginx-1.17.3
./configure --without-http_autoindex_module --without-http_ssi_module #without代表不安装模块
make && make install
# 想要开启自动索引需要在配置文件中配置
vim /usr/local/nginx/conf/nginx.conf
server {
autoindex on; #需要有-http_autoindex_module这个模块
}
2、隐藏版本信息
curl -I http://192.168.80.136 #可以看到nginx版本信息
方法1:
vim /usr/local/nginx/conf/nginx.conf
http{
server_tokens off; #隐藏版本号
...
}
方法2:
vim +48 src/http/ngx_http_header_filter_module.c #nginx源码目录中的src
# 修改之前
static u_char ngx_http_server_string[] = "Server: nginx" CRLF;
static u_char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;
static u_char ngx_http_server_build_string[] = "Server: " NGINX_VER_BUILD CRLF;
# 修改之后
static u_char ngx_http_server_string[] = "Server: apache" CRLF;
static u_char ngx_http_server_full_string[] = "Server: apache" CRLF;
static u_char ngx_http_server_build_string[] = "Server: apache" CRLF;
# 之后源码编译安装
3、限制并发数量:
# 使用ngx_http_limit_req_module模块,默认安装
vim /usr/local/nginx/conf/nginx.conf
http{
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
# limit_req_zone表示定义了一个内存区域,存放client访问nginx的请求
# zone=one:10m表示区域的名字是one,大小是10m
# rate=1r/s表示对于同一个ip的请求,1秒只处理1个
server {
listen 80;
server_name localhost;
limit_req zone=one burst=5;
# 表示在one这个内存区域中,同一个ip的请求最多存放5个
# 加上正在处理的,一共是6个
# 如果一台计算机访问了100次,那么只有6次得到了处理
}
}
# 使用ab进行测试
yum -y install httpd-tools
ab -c 100 -n 100 http://192.168.80.136:80/
4、拒绝非法请求
curl -i -X HEAD http://192.168.80.136 #发送HEAD请求,正常
vim /usr/local/nginx/conf/nginx.conf
http{
server {
listen 80;
if ($request_method !~ ^(GET|POST)$ ) {
# 只允许处理get和post请求,正则,!代表取反
return 404;
# 除了get和post以外的其他请求返回404状态码
}
}
}
curl -i -X HEAD http://192.168.80.136 #发送HEAD请求,会报错
curl -i -X GET http://192.168.80.136 #发送GET请求,正常
5、防止buffer溢出
vim /usr/local/nginx/conf/nginx.conf
http{
client_body_buffer_size 1K; #最小值
client_header_buffer_size 1k; #最小值
client_max_body_size 16k; #最大值
large_client_header_buffers 4 4k; #最大值
...
}
# 重启nginx成功则表示配置成功。
写总结的第六十三天!!!