Linux iptables firewall 設定常見 FAQ 整理轉自
http://suse.lccnet.com.tw/module ... p?topic_id=1725&;forum=15
Linux iptables firewall 設定常見 FAQ 整理
=========================================
=========================================
常見 iptables 的 firewall 設定配置問題:
作者: 小州 (kenduest)
最近更新時間: 8/18/2006
=========================================
=========================================
標題列表項目: (一般本機的 firewall 配置問題)
1. 如何查詢我目前 iptables 的配置組態設定 ?
2. 如何關閉 Linux Distro 本身的 firewall 配置並讓規則清空不啟用?
3. 關於 RedHat 9, Fedora 與 RHEL 的 firewall 配置問題
4. 如何使用手動方式清空與重置 iptables firewall rule?
5. iptables firewall 本身封包比對判斷流程圖為何?
6. iptables firewall 本身封包比對規則方式為何?
7. 使用 -P INPUT DROP 引起的主機本身對外連線不通問題?
8. 使用 -P INPUT DROP 導致本機存取自己服務也受到限制?
9. 使用 -P INPUT DROP 引起的網路存取正常,但是 ftp 連入卻失敗?
10. 使用 -P OUTPUT DROP 引起的網路不通問題?
11. 有無建議本機 firewall 服務只有開放對外項目,其餘禁止的配置方式?
標題列表項目: (提供 NAT 服務配置問題)
1. 一般建議單純化的 NAT 服務配置語法為何?
2. 透過 NAT 上網的內部 ip 主機,ftp 連結存取錯誤?
3. 如何配置連線到 NAT 主機某個對外 Port 時,可以轉送到內部某主機?
4. 使用 -j MASQUERADE 與 -j SNAT 於 NAT 使用差異 ?
=========================================
一般本機的 firewall 配置問題
=====
1. 如何查詢我目前 iptables 的配置組態設定 ?
iptables 本身提供了 iptables-save 這個程式檔案,執行後可以檢視目前的配置。
iptables-save
若是使用 iptables 該主要的程式的話,可以搭配 -L 選項列出規則清單。不過由於 iptables 過濾本身是可以針對不同 table來處理,傳入 -t 可以查閱指定的 table,不指定時預設表示使用 filter table 項目。一般使用方式:
iptables -L
iptables -t nat -L
不過 iptables 對於規則內有 ip 位址項目時會進行反查解析出主機名稱,這個也常導致反查時需要時間導致列出規則時卡住無法運作下去,所以實際上一般會搭配傳入 -n 選項,表示不顯示反查後主機名稱結果。
iptables -L -n
iptables -t nat -L -n
當然,若是要查閱更詳細的資訊,可以再搭配 -v 選項。
iptables -L -n -v
iptables -t nat -L -n -v
=====
2. 如何關閉 Linux Distro 本身的 firewall 配置並讓規則清空不啟用?
各家發行版本都會提供各自的 firewall script 於開機時自動帶入設定規則,所以並沒有一個統一的做法。
--
在 RHEL 與 Fedora Linux 內的開機 script 本身為 /etc/init.d/iptables,所以關閉方式手動可以執行:
/etc/init.d/iptables stop
設定每次開啟不啟動該服務項目,可以使用 chkconfig 來關閉。
chkconfig iptables off
--
若是 SLES 的話,修改 /etc/sysconfig/network/config 配置,裡面可以找到:
# With this variable you can determine if the SuSEfirewall when enabled
# should get started when network interfaces are starte
FIREWALL="yes|no"
這可以設定每次啟動網路時是否啟用 firewall 配置。
=====
3. 關於 RedHat 9, Fedora 與 RHEL 的 firewall 配置問題
系統本身提供配置 firewall 方式,文字模式是可以執行 setup 程式, 於 Firewall 項目進入後就可以選擇新增相關規則。最後所開放允許的組態都是儲存於 /etc/sysconfig/iptables 檔案內。
使用 /etc/init.d/iptables start 或者是 service iptables start 時,就會依據 /etc/sysconfig/iptables 設定的配置啟用 firewall 設定。
於 /etc/sysconfig/iptables 的格式結果,可以使用 iptables-restore 程式由標準輸入讀入後進行啟用。簡單說所謂開啟該服務,其實也就是:
iptables-restore < /etc/sysconfig/iptables
執行 /etc/init.d/iptables save 可以把目前系統正在運作執行配置的規則儲存至 /etc/sysconfig/iptables 檔案內,這底層其實也是呼叫 iptables-save 程式來達成該結果。簡單說也就是:
iptables-save > /etc/sysconfig/iptables
關於 /etc/sysconfig/iptables 本身只有包含給 firewall rule 的規則敘述,本身並沒有包含任何iptables 相關 kernel module 載入配置, 若是需要載入額外的 module 的話可以修改/etc/sysconfig/iptables-config。
/etc/sysconfig/iptables-config 本身或於 /etc/ini.d/iptables 該腳本檔案時讀入使用。依據該內容來看,提供相關變數定義可以指定載入必要的module 項目:
# Load additional iptables modules (nat helpers)
# Default: -none-
# Space separated list of nat helpers (e.g. 'ip_nat_ftp ip_nat_irc'),
# which are loaded after the firewall rules are applied. Options for
# the helpers are stored in /etc/modprobe.conf.
IPTABLES_MODULES=""
=====
4. 如何使用手動方式清空與重置 iptables firewall rule?
若是純手動的方始清空所有規則設定,一般可以採用下列方式:
iptables -F # 若是沒有加上 -t 指定 table,預設是使用 -t filter
iptables -X
iptables -F -t nat
iptables -X -t nat
iptables -F -t mangle
iptables -X -t mangle