最近,服务器被攻击了
最近nginx服务器经常被黑客攻击,nginx利用nginx_tcp_proxy_module模块对tcp请求进行代理服务,配置文件如下:
worker_processes 4;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
use epoll;
worker_connections 1024;
}
tcp {
#tcp_nopush on;
#keepalive_timeout 0;
#gzip on;
timeout 1d;
#不停得发送心跳等待服务器返回状态(长连接)
proxy_read_timeout 10d;
proxy_send_timeout 10d;
proxy_connect_timeout 30;
upstream ciaAuth {
server ip1:port weight=5;
server ip2:port weight=5;
}
server {
listen 8000;
server_name authProxy;
tcp_nodelay on;
proxy_pass ciaAuth;
}
}
这样会生成tcp请求的访问日志,利用如下命令可以将用户的ip地址按照访问次数排序,并导入到黑名单配置文件中。
awk '{print $4}' tcp_access.log |sort | uniq -c | sort -n -k 1 -r | head -n 100 | awk '{if($1>1000)print "deny "$2";"}'> blockip.conf
解释一下:
awk ‘{print $4}’ tcp_access.log
输出访问日志中第四列(即ip列)
sort
排序
uniq -c
去重并计数
sort -n -k 1 -r
-n 依照数值的大小排序
-k1 选择第一列进行排序(即数量列)
-r 倒序
head -n 100
取前100条数据
awk ‘{if($1>1000)print “deny “$2”;”}’
如果第一列数量大于1000,则输入deny 第二列(ip);
> blockip.conf
将打印结果保存到blockip.conf中。
nginx报错
2015/11/01 20:04:19 [error] 14533#0: *1855045 upstream servers are busy or encounter error! while connecting to upstream, client: 117.136.0.0, server: 0.0.0.0:88
修改:worker_connections 1024;
调整为:worker_connections 5000;
阿里云的云盾
千万不要让阿里云去做清洗,会导致一部分ip无法访问。
其他方案(待研究)
fail2ban
直接使用iptables