2009/09/12

設定 iptables - 防火牆規則設定

Ubuntu 預設的 iptables 設定是全部通行,防火牆如果全部通行那就等於沒設定,所以我們要對它設些規則。

目標:
  • 對內: 僅打開 SSH(22), HTTP(80), HTTPS(443), MYSQL(3306) PORT,其他全部封鎖
  • 對外: 不設限

這樣就可以防止有心人入侵其他 Port。

本來是要下一大堆指令的,不過 iptables 可以用 iptables-save 來輸出規則,所以我直接貼出規則檔:

# Generated by iptables-save v1.4.1.1 on Tue Aug 25 12:57:50 2009
*filter
:INPUT DROP [2858:374901]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [186:47949]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
COMMIT
# Completed on Tue Aug 25 12:57:50 2009


將此檔存到 /etc/iptables.up.rule。

因為每次開機後 iptables 的規則就會重置,要修改開機時能夠讀取剛才建立的規則檔,這樣我們建立的防火牆規則才有效。

用 vi 打開 /etc/network/interfaces,應該可以看到網路卡設定,加一行指令即可:


pre-up iptables-restore < /etc/iptables.up.rule


並存檔。這樣可以確保開機後自動回覆規則。

但是沒重新開機前,現在的 iptables 狀態還是空的,所以我們要手動載入規則檔,執行:

# iptables-restore < /etc/iptables.up.rule

就可以了,要查看是否成功的話可以下指令:

# iptables -L

應該會出現很多規則,這樣就成功了。

沒有留言:

張貼留言