nginx防攻擊的簡單配置

主要經過兩方案來作防禦,一是nginx自帶模塊限制請求鏈接數和併發數;二是篩選IP加入黑名單;nginx

一、併發數和鏈接數控制的配置
    nginx http配置:
    #請求數量控制,每秒20個
    limit_req_zone $binary_remote_addr zone=one:10m rate=20r/s;
    #併發限制30個
    limit_conn_zone $binary_remote_addr zone=addr:10m;
    
    server塊配置
    limit_req zone=one burst=5;
    limit_conn addr 30;


二、根據nginx 訪問日誌記錄發現可疑的或者不正常的訪問記錄記錄而後自動添加到nginx的黑名單
起到阻止的做用  能夠做爲防範少許的ddos攻擊

策略:根據nginx日誌,最近5W條同一IP訪問記錄超過5000的加入黑名單禁止訪問,每兩小時執行一次

示例腳本:
#!/bin/bash
acc_log=/usr/local/nginx/logs/uatpc.access.log
blockip=/usr/local/nginx/conf/vhost/blockip.conf
#最近50000條日誌,同一IP超過5000的加入黑名單
tail -n50000 ${acc_log} | awk '{print $1,$7,$9}'|grep -i -v -E "google|yahoo|baidu|msnbot|FeedSky|sogou|360|bing|soso|403|api"|awk '{print $1}'|sort|uniq -c|sort -rn | awk '{if($1>5000)print "deny "$2";"}' >> ${blockip}

#排除公司IP
sed -i '/116.228.62.38/d' ${blockip}
/usr/local/nginx/sbin/nginx -s reloadapi

相關文章
相關標籤/搜索