unix iptables

iptables簡介網絡

iptables是基於內核的防火牆,功能很是強大,iptables內置了filter,nat和mangle三張表。tcp

filter負責過濾數據包,包括的規則鏈有,input,output和forward;oop

nat則涉及到網絡地址轉換,包括的規則鏈有,prerouting,postrouting和output;post

mangle表則主要應用在修改數據包內容上,用來作流量整形的,默認的規則鏈有:INPUT,OUTPUT,NAT,POSTROUTING,PREROUTING;spa

input匹配目的IP是本機的數據包,forward匹配流經本機的數據包,prerouting用來修改目的地址用來作DNAT,postrouting用來修改源地址用來作SNAT。rest

iptables主要參數code

-A 向規則鏈中添加一條規則,默認被添加到末尾orm

-T指定要操做的表,默認是filter接口

-D從規則鏈中刪除規則,能夠指定序號或者匹配的規則來刪除ip

-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 > somefileiptables-restore < somefile

相關文章
相關標籤/搜索