標籤:
#1 分類
對單一主機,主要有兩種:資料包過濾Netfilter和依據服務軟體分析的TCP Wrapper.
對地區型防火牆來說,即安裝防火牆的主機充當路由器的角色。防火牆類型主要有兩種:資料包過濾Netfilter和Proxy 伺服器。
對Netfilter(資料包過濾機制),Linux提供了iptables這個軟體來進行管理。下文的重點就是整理iptables常用的命令。
對TCP wraper(程式管理),是針對特定的軟體,如ssh,telnet等特定軟體進行IP限制,MAC地址限制等(不可用於apache)。
Proxy 伺服器往往也是NAT伺服器,以實現透明代理。
#2 iptables概念
iptables由多個table組成,每個table都有自己的策略和規則。預設的table為Filter,作用是過濾本地的資料包。除此之外,還有NAT table,功能是進行來源於目的地的IP或port轉換,與Linux本機無關。還有其他的table,此處不提。
每個table都有自己的鏈(chain),盜圖一張,具體如下:
對Filter來說,有三條鏈,分別為INPUT,OUTPUT,FORWARD。
一個資料包進入本機與從本機發出的過程,如所示,再次盜圖一張:
#3 iptables文法
1. 規則查看
iptables [-t target(預設為fliter)] [-L (查看當前table的規則)] [-v (更多資訊)]
查看filter表規則 : iptables -L
查看NAT表規則 : iptables -t nat -L
2. 規則查看2
iptables-save [-t target]
會列出完整的防火牆規則
3. 清空規則
iptables -F 清除所有已制定規則
iptables -X 清除所有使用者自訂的tables
iptables -Z 將所有chain的計數和流量清空
4. 定義預設策略
iptables [-t target] -P [INPUT,OUTPUT...] [DROP,ACCEPT]
5. 設定規則:針對IP
iptables [-AI 鏈名(-A為新增,-I為插入)] [-io 網路介面(-i為資料包進入的介面)] [-p 協議(主要有:tcp udp icmp all)] [-s 來源IP/網路] [-d 目標IP/網路] -j [ACCEPT|DROP|REJECT|LOG (接收,悄悄丟棄,向來源地址發送拒絕資料包,日誌記錄)]
LOG記錄的資料儲存在/var/log/message中,LOG並不影響後續的資料包對比。
例:
添加lo為信任裝置: iptables -A INPUT -i lo -j ACCEPT
來自內網的所有資料都接收:iptables -A INPUT -i eth1 -s 192.168.1.0/24 -j ACCEPT(假設eth1串連LAN)
6. 設定規則:針對連接埠
iptables [-AI 鏈名] [-io 網路介面] [-p tcp,udp] [-s 來源] [--sport 連接埠範圍] [-d 目的] [--dport 連接埠範圍] -j [ACCEPT|DROP|REJECT]
--sport表示來源IP/網路的連接埠範圍,--dsport表示目的IP/網路的連接埠範圍
因為僅有TCP、UDP資料包有連接埠,所以要想使用--sport或者--dport,都需要指定-p
例:
拒絕進入原生21號連接埠的資料包:iptables -A INPUT -i eth0 -p tcp --dport 21 -j REJECT
7. 設定規則:針對mac和state
iptables -A INPUT [-m 外掛模組名(state,mac等)] [--state 狀態]
常見的資料包狀態:INVALID(無效資料包) ESTABLISHED(串連成功的串連狀態) NEW(建立串連的資料包) RELATED(與主機發出去的資料包有關)
例:
通過所有已建立串連或與發出請求相關的資料包,不合法資料包丟棄:iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP
允許存取mac地址為aa:bb:cc:dd:ee:ff的主機 iptables -A INPUT -m mac --mac-source aa:bb:cc:dd:ee:ff -j ACCEPT
Linux私房菜——防火牆部分筆記