iptables防火牆規則常常初學者總是不知道放哪好,重開機規則又全部重來:

undefined

我這邊設計一個簡單的方式,業界標準的方式,原理是把規則變成一個ssh script,開機時自動載入。

我這邊利用Linux的Crontab (例行性工作排程) 實現這個功能。

 

1. 編輯一個firewall script,路徑就自己定囉,不限在哪。

# vi /scripts/firewall.sh

2. 編輯iptables規則,根據自己的需求自行增加刪減

#清除所有防火牆規則
iptables -F
iptables -X
#禁止icmp ping
iptables -A INPUT -p icmp -j DROP;
#allow port 80
iptables -A INPUT -p tcp --dport 80 -j ACCEPT;
#allow port 22
iptables -A INPUT -p tcp --dport 22 -j ACCEPT;
#allow port 443
iptables -A INPUT -p tcp --dport 443 -j ACCEPT;

3. 設定script執行權限,要給root的執行權限,才能保障一定可以執行

~# chmod -c 777 /scripts/firewall.sh

4. 進入Crontab設定

~# crontab -e

5. 編輯Crontab規則,開機延遲60秒,載入防火牆規則

@reboot sleep 60;sudo /scripts/firewall.sh

 

要特別注意的是Linux不適合剛開機就做動作,因此我在crontab的指令裡面都會加一個延遲60秒 (sleep 60),這樣比較不會指令執行失敗。

這邊講一個故事,現在主機很多都在雲端,換句話說沒有一台實體的電腦可以讓你操作,如果防火牆的規則寫錯了,太快載入,如果不小心設定錯誤,或者誤阻擋管理者,至少開機後的1分鐘你還有機會補救。

HC 發表在 痞客邦 留言(0) 人氣()