zoukankan      html  css  js  c++  java
  • Iptables網路連線限制及攻擊防護和相關設定

    【筆記整理】Iptables網路連線限制及攻擊防護和相關設定

    1. 限制每個IP連接HTTP最大併發50個連接數

    iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j REJECT

    2. 限制每個IP同時最多100個連接數

    iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECT

    or

    iptables -I INPUT -p tcp --syn --dport 80 -m connlimit ! --connlimit-above 100 -j ACCEPT

    3. 限制每組C Class IP同時最多100個連接數

    iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 --connlimit-mask 24 -j REJECT

    4. 限制每個IP同時5個80 port轉發,超過的丟棄

    iptables -I FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j DROP

    5. 限制每個IP在60秒內允許新建立30個連接數

    iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --update --seconds 60 --hitcount 30

    -j REJECT

    6. (By CentOS 5.x)調整ipt_recent參數,記錄1000個IP,每個IP記錄60個封包

    vim /etc/modprobe.conf

    options ipt_recent ip_list_tot=1000 ip_pkt_list_tot=60

    完成後執行

    modprobe ipt_recent

    7. 每秒最多允許5個新連接封包數

    iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 5 -j ACCEPT

    8. 防止各種端口掃描

    iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST SYN -m limit --limit 1/s -j ACCEPT

    9. Ping of Death

    iptables -A INPUT -p icmp --icmp-type echo_request -m limit --limit 1/s -j ACCEPT

    10. NMAP FIN/URG/PSH

    iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j LOG --log-level warn

    iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP

    11. Xmas Tree

    iptables -A INPUT -p tcp --tcp-flags ALL ALL -j LOG --log-level warn

    iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

    12. Another Xmas Tree

    iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j LOG --log-level warn

    iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP

    13. Null Scan(possibly)

    iptables -A INPUT -p tcp --tcp-flags ALL NONE -j LOG --log-level warn

    iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

    14. SYN/RST

    iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST SYN,RST -j LOG --log-level warn

    iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST SYN,RST -j DROP

    15. SYN/FIN --Scan(possibly)

    iptables -A INPUT -p tcp --tcp-flags ALL SYN,FIN SYN,FIN -j LOG --log-level warn

    iptables -A INPUT -p tcp --tcp-flags ALL SYN,FIN SYN,FIN -j DROP

    16. Prevent Sync Flood (New Chain:SYNFLOOD)

    iptables -N SYNFLOOD

    iptables -A SYNFLOOD -p tcp --syn -m limit --limit 1/s -j RETURN

    iptables -A SYNFLOOD -p tcp -j LOG --log-level alert

    iptables -A SYNFLOOD -p tcp -j REJECT --reject-with tcp-reset

    iptables -A INPUT -p tcp -m state --state NEW -j SYNFLOOD

    17. Prevent Ping Flood ATTACK (New Chain:PING)

    iptables -N PING

    iptables -A PING -p icmp --icmp-type echo-request -m limit --limit 1/s -j RETURN

    iptables -A PING -p icmp -j LOG --log-level alert

    iptables -A PING -p icmp -j REJECT

    iptables -A INPUT -p icmp --icmp-type echo-request -m state --state NEW -j PING

    18. SYN相關設定

    sysctl -a | grep syn

    vim /etc/sysctl.conf

    net.ipv4.tcp_fin_timeout=10:減少處於FIN_WAIT2連接狀態時間

    net.ipv4.tcp_keepalive_time=1800:減少TCP KeepAlive連接偵測時間

    net.ipv4.tcp_window_scaling=0

    net.ipv4.tcp_sack=0

    net.ipv4.tcp_tw_recycle=1:表示開啟TCP連接中TIME_WAIT sockets的快速回收。默認為0,表示關閉

    net.ipv4.tcp_tw_reuse=1:表示開啟重用,允許將TIME_WAIT sockets重新用於新的TCP連接

    net.ipv4.tcp_timestamps=1

    net.ipv4.tcp_max_syn_backlog=4096:SYN隊列的長度

    net.ipv4.tcp_syncookies=1:打開SYN Cookie,可防止部分攻擊

    net.ipv4.tcp_synack_retries=1:定義SYNACK重試次數

    net.ipv4.tcp_syn_retries=5:加大SYN隊列長度可容納更多等待連接的網路連接數

    fs.quota.syncs=23

    net.ipv4.conf.default.rp_filter=1

    net.ipv4.conf.all.rp_filter=1

    net.ipv4.conf.default.accept_source_route=0

    net.ipv4.conf.all.accept_source_route=0

    net.ipv4.ip_contrack_max=524288

    net.ipv4.netfilter.ip_conntrack_max=524288

    net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv=5

    net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent=15

    net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=108000

    net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=3

    net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=3

    net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=3

    sysctl -p /etc/sysctl.conf:套用更改過的sysctl.conf

    註:上列有些參數不需要設定,或是數字可調整,依伺服器狀況而定。

    19. 查詢目前各狀態連接數狀況

    netstat -nat | awk '{print awk $NF}' | sort | uniq -c | sort -n

    20. 查詢並自動封鎖目前連線數最大的前50個IP(請小心謹慎並記得調整Iptables Chain)

    netstat -na | grep :80 |awk '{print $5}'|awk -F '::ffff:' '{print $2}' | grep ':'

    | awk -F: '{print $1}' | sort | uniq -c | sort -r | awk -F' ' '{if ($1 > 50) print $2}'

    | sed 's/^.*$/iptables -I firewall 1 -p tcp -s & --dport 80 --syn -j REJECT/' | sh

    21. 增加例外白名單IP(我沒測試過)

    netstat -na | grep :80 |awk '{print $5}'|awk -F '::ffff:' '{print $2}' | grep ':'

    | awk -F: '{print $1}' | sort | uniq -c | sort -r | awk -F' ' '{if ($1 > 50) print $2}'

    | grep -v xxx.xxx.xxx.xxx

    | sed 's/^.*$/iptables -I RH-Firewall-1-INPUT 1 -p tcp -m tcp -s & --dport 80 --syn -j REJECT/' | sh

    22. 查詢port 80目前的IP連接數

    netstat -nat | grep ":80" | awk '{printf "%s %s ", $5, $6}' | awk -F: '{print $1}' | sort | uniq -c | sort -n

  • 相关阅读:
    bootstrap-datetimepicker日期控件下载
    【eclipse】启动不了报错java was started but returned exit code=13
    jsp选项卡导航实现——模板
    【eclipse】Multiple annotations found at this line:——解决方法
    【链接】SpringBoot启动错误
    eclipse隐藏关闭的工程
    【链接】虚拟机使用桥接模式不能上网
    python中使用指定GPU
    python开启GPU加速
    Adam那么棒,为什么还对SGD念念不忘 (1) —— 一个框架看懂优化算法
  • 原文地址:https://www.cnblogs.com/upshania/p/3877877.html
Copyright © 2011-2022 走看看