CentOS 6.8 防火牆拒絕特定IP,並且記錄下來
有時候公司會遇到惡意存取伺服器SSH的攻擊者。
因此,我特地寫一隻程式固定一段時間從log檔裡面篩出惡意攻擊的IP,把那些IP阻擋在防火牆之外。
所以,進而產生想要記錄攻擊者不斷嘗試連線的需求。
沒錯!純粹是好奇而已,好奇他們會不會發現自己被阻擋,進而放棄攻擊伺服器 (妄想?)
本文將會以CentOS 6.8的防火牆作為範例,一步一步做介紹!
Step 1
建立自訂規則名稱(Tags)
1 |
[andy@www ~]$ sudo iptables -N LOG_REJECT |
Step 2
設定LOG_REJECT規則
規則『LOG_REJECT』內的log會存在/var/log/messages之中,而且會以『INTPUT:REJECT』為開頭,log-level=6
1 |
[andy@www ~]$ sudo iptables -A LOG_REJECT -j LOG --log-prefix "INPUT:REJECT: " --log-level 6 |
規則『LOG_REJECT』是屬於『拒絕訪問』的防火牆條件(Chain)
1 |
[andy@www ~]$ sudo iptables -A LOG_REJECT -j REJECT |
Step 3
新增規則(Rules)
贊助廣告
新增一筆套用至『LOG_REJECT』的規則,篩選(Filter)方式為進入(INPUT)電腦的連線,且IP為192.168整個網段的所有IP,針對443(SSH) Port拒絕存取。
1 |
[andy@www ~]$ sudo iptables -I INPUT -s 192.168.0.0/16 -p tcp --dport 443 -j LOG_REJECT |
直接拒絕特定IP,不限任何Port號:
1 |
[andy@www ~]$ sudo iptables -I INPUT -s 46.166.185.124/32 -j LOG_REJECT |
Step 4
儲存防火牆(iptables)設定
iptables並不會自動將現在設定的規則存擋,在此必須將設定存起來,下一次iptables就會自動建立這些設定。
1 |
[andy@www ~]$ sudo /etc/init.d/iptables save |
iptables會將設定值寫入設定檔『/etc/sysconfig/iptables』之中。
Step 5
檢查設定/查看log
1 |
[andy@www ~]$ sudo iptables -L -n |
列出文件最尾端起算20行內容
1 |
[andy@www ~]$ sudo tail -n 20 /var/log/messages |