iptables簡介
iptables是基于核心的防火牆,功能非常強大,iptables内置了filter,nat和mangle三張表。
filter負責過濾資料包,包括的規則鍊有,input,output和forward;
nat則涉及到網絡位址轉換,包括的規則鍊有,prerouting,postrouting和output;
mangle表則主要應用在修改資料包内容上,用來做流量整形的,預設的規則鍊有:INPUT,OUTPUT,NAT,POSTROUTING,PREROUTING;
input比對目的IP是本機的資料包,forward比對流經本機的資料包,prerouting用來修改目的位址用來做DNAT,postrouting用來修改源位址用來做SNAT。
iptables主要參數
-A 向規則鍊中添加一條規則,預設被添加到末尾 -T指定要操作的表,預設是filter -D從規則鍊中删除規則,可以指定序号或者比對的規則來删除 -R進行規則替換 -I插入一條規則,預設被插入到首部 -F清空所選的鍊,重新開機後恢複 -N建立使用者自定義的規則鍊 -X删除使用者自定義的規則鍊 -p用來指定協定可以是tcp,udp,icmp等也可以是數字的協定号, -s指定源位址 -d指定目的位址 -i進入接口 -o流出接口 -j采取的動作,accept,drop,snat,dnat,masquerade --sport源端口 --dport目的端口,端口必須和協定一起來配合使用
注意:所有鍊名必須大寫,表明必須小寫,動作必須大寫,比對必須小寫
iptable配置執行個體
iptable基本操作
iptables -L 列出iptables規則 iptables -F 清除iptables内置規則 iptables -X 清除iptables自定義規則
設定預設規則
在iptables規則中沒有比對到規則則使用預設規則進行處理
iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP
配置SSH規則
iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT 如果你把OUTPUT 設定成DROP,就需要加上這個規則,否則SSH還是不能登入,因為SSH服務職能進不能出。
隻允許192.168.0.3的機器進行SSH連接配接
iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT
如果要允許,或限制一段IP位址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.
允許loopback回環通信
IPTABLES -A INPUT -i lo -p all -j ACCEPT IPTABLES -A OUTPUT -o lo -p all -j ACCEPT
目的位址轉換,映射内部位址
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dprot 81 -j DNAT --to 192.168.0.2:80 iptables -t nat -A PREROUTING -i ppp0 -p tcp --dprot 81 -j DNAT --to 192.168.0.1-192.168.0.10
源位址轉換,隐藏内部位址
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1 iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1-1.1.1.10
位址僞裝,動态ip的NAT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
masquerade 和snat的主要差別在于,snat是把源位址轉換為固定的IP位址或者是位址池,而masquerade在adsl等方式撥号上網時候非常有用,因為是 撥号上網是以網卡的外網IP經常變化,這樣在進行位址轉換的時候就要在每次都要修改轉換政策裡面的ip,使用masquerade就很好的解決了這個問 題,他會自己去探測外網卡獲得的ip位址然後自動進行位址轉換,這樣就算外網獲得的ip經常變化也不用人工幹預了。
開啟轉發功能
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT 隻允許已建連接配接及相關連結對内轉發 ptables -A FORWARD -i eth1 -o eh0 -j ACCEPT 允許對外轉發
過濾某個MAC
iptables -A FORWARD -m mac --mac -source MAC位址 -j DROP
封包經過路由後,資料包中原有的MAC資訊會被替換,是以在路由後的iptables中使用mac比對沒有意義。
資料包整流
iptables -A FORWARD -d 192.168.0.1 -m limit --limit 50/s -j ACCEPT iptables -A FORWARD -d 192.168.0.1 -j DROP
多端口比對
用以一次比對多個端口
iptables -A INPUT -p tcp -m muliport --dport s 21,22,25,80,110 -j ACCEPT
丢棄非法連接配接
iptables -A INPUT -m state --state INVALID -j DROP iptables -A OUTPUT -m state --state INVALID -j DROP iptables-A FORWARD -m state --state INVALID -j DROP
存儲于恢複iptables規則
iptables-save > somefile iptables-restore < somefile
本文轉自 jundong 51CTO部落格,原文連結:http://blog.51cto.com/minitoo/1416467,如需轉載請自行聯系原作者