Linux下的iptables詳解及配置

 Linux下的iptables詳解及配置mysql

一.防火牆簡介web

 可以確保信息安全的一種設備設備上有一些特定的規則,容許或拒絕數據包經過。經過防火牆能夠隔離風險區域與安全區域的鏈接,同時不會妨礙風險區域的訪問。固然須要注意的是世界上沒有絕對的安全,防火牆也只是啓到必定的安全防禦。大多數的安全風險仍是在內網當中!sql

二.防火牆分類安全

1)軟件防火牆件防火牆須要運行在特定的計算機上,並且須要計算機的操做系統的支持。網絡

2)硬件防火牆硬件防火牆其實就是一個普通pc機的架構,而後上面跑有專門的操做系統。架構

3芯片級防火牆這種防火牆基於專門的硬件平臺,沒有操做系統,專有的ASIC芯片使它們比其餘類的防火牆速度更快,處理能力極強,性能更高,可是價格昂貴。ssh


三.Iptables簡介tcp

1用戶空間:由管理員制定規則netfilter組件ide

2內核空間:規則會題交給內核空間,內核就按照這些規則去過濾數據包。iptables組件oop

四.Iptables的表和鏈

1filter 默認的,可以實現數據包的過濾,該表還包含三條鏈:

@1.INPUT:到達本機的數據包

@2.OUTPUT:從本機出去的數據包

@3.FORWARD:通過本機的數據包


2nat 網絡地址轉換,

   SNAT 源地址轉換

   DNAT 目的地址轉換

PANTSNAT 差很少,不同的是SNAT的源地址是固定的,PNAT的源地址是不固定的,當使用ppppppoe的方式鏈接互聯網的時候通常適應這個

3mangle 打標記,表主要是修改數據包頭部信息的


@1.PREROUTING,
         在數據包進入防火牆以後,也稱爲路由前,
@2.POSTROUTING,
          在數據包肯定目標地址後,也稱爲路由後,
@3.OUTPUT
          從本機出去的時間包路由前
@4.INPUT
          數據包進入本機後,路由後
@5.FORWARD
          第一次路由判斷以後,最後一次路由判斷以前改變數據包

五.Iptables的狀態


1.NEW狀態
       NEW狀態的數據包說明這個數據包是收到的第一個數據包。
2.ESTABLISHED狀態
      只要發送並接到應答,一個數據包的狀態就從NEW變爲ESTABLEISHED,並且該狀態會繼續匹配這個鏈接後繼數據包。
3.RELATED狀態
      當一個數據包的狀態處於ESTABLSHED狀態的鏈接有關係的時候,就會被認爲是RELATED,也就是說一個連接想要是RELATED狀態,首先要有一個ESTABLISHED的鏈接。
4.INVALID狀態
      不能被識別屬於哪一個鏈接狀態或沒有任何關係的狀態,通常這中數據包要被拒絕的。

六.Iptables的命令使用

1.命令:

-A 順序添加添加一條新規則

-I 插入插入一條新規則 -I 後面加一數字表示插入到哪行

-R 修改 刪除一條新規則 -D 後面加一數字表示刪除哪行

-D 刪除刪除一條新規則 -D 後面加一數字表示刪除哪行

-N   新建一個鏈

-X   刪除一個自定義鏈,刪除以前要保證次鏈是空的,並且沒有被引用

-L 查看

         @1.iptables -L -n 以數字的方式顯示

         @2. iptables -L -v顯示詳細信息

         @3. iptables -L -x 顯示精確信息

-E   重命名鏈

-F 清空鏈中的全部規則

-Z   清除鏈中使用的規則

-P 設置默認規則


2.匹配條件:

隱含匹配:

   -p  tcp udp icmp

   --sport指定源端口

   --dport指定目標端


   -s 源地址


   -d 目的地址


-i 數據包進入的網卡


-o 數據包出口的網卡

擴展匹配:

-m state --state   匹配狀態的

-m mutiport --source-port   端口匹配 ,指定一組端口

-m limit --limit 3/minute   每三分種一次

-m limit --limit-burst  5   只匹配5個數據包

-m string --string --algo bm|kmp --string"xxxx"  匹配字符串

-mtime--timestart 8:00 --timestop 12:00  表示從哪一個時間到哪一個時間段

-mtime--days    表示那天

-m mac --mac-sourcexx:xx:xx:xx:xx:xx 匹配源MAC地址

-m layer7 --l7proto qq   表示匹配騰訊qq的 固然也支持不少協議,這個默認是沒有的,須要咱們給內核打補丁並從新編譯內核及iptables纔可使用 -m layer7 這個顯示擴展匹配


3.動做:

-j

   DROP 直接丟掉

   ACCEPT 容許經過

REJECT 丟掉,可是回覆信息

LOG --log-prefix"說明信息,本身隨便定義" 記錄日誌

SNAT       源地址轉換

DNAT       目標地址轉換

REDIRECT   重定向

MASQUERAED  地址假裝

六.具體實例

1.常見服務的端口號及協議

   ssh tcp 22

   dhcp udp 67 68

   DNS tcp/udp 53

   http tcp 80

   samba  udp 137 138  tcp 139 445

   nfs  2049 111 /etc/sysconfig/nfs

   ftp  tcp 20 21 >1024

   squid tcp 3128

   mysql tcp 3306

   smtp 25

   pop3 110

   imap 143


2.應用實例

1開啓22端口.

[root@tx1 ~]# service iptables start

Flushing firewall rules:                                   [  OK  ]

Setting chains to policy ACCEPT: filter                    [  OK  ]

Unloading iptables modules:                                [  OK  ]

[root@tx1 ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT

[root@tx1 ~]# iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT(若是OUTPUT鏈默認爲DROP這條就必定要加上,如下相同

只開放一我的的遠程鏈接:

[root@tx1 ~]# iptables -A INPUT -p tcp --dport 22 -s 192.168.8.71 -j ACCEPT



2)若是咱們只開設了web服務
[root@tx1 ~]# iptables -P INPUT DROP #咱們用-P來攔截主機上全部通信
[root@tx1 ~]#iptables -A INPUT -p tcp --dport 80 -j ACCEPT#打開80端口的tcp協議

[root@tx1 ~]# iptables -L

Chain INPUT (policy DROP)

target     prot opt source               destination        

ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http


Chain FORWARD (policy ACCEPT)

target     prot opt source               destination        


Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination        

[root@tx1 ~]# /etc/init.d/iptables save

Saving firewall rules to /etc/sysconfig/iptables:          [  OK  ]

3)不容許ping

[root@tx1 ~]# iptables -A INPUT -p icmp -j DROP


(4)刪除3號規則

[root@tx1 ~]# iptables -L --line-number

Chain INPUT (policy DROP)

num  target     prot opt source               destination        

1    ACCEPT     tcp  --  192.168.8.71         anywhere            tcp dpt:ssh

2    DROP       icmp --  anywhere             anywhere            

3    ACCEPT     tcp  --  192.168.8.71         anywhere            tcp dpt:ssh


Chain FORWARD (policy ACCEPT)

num  target     prot opt source               destination        


Chain OUTPUT (policy ACCEPT)

num  target     prot opt source               destination        

[root@tx1 ~]# iptables -D INPUT 3

[root@tx1 ~]# iptables -L --line-number

Chain INPUT (policy DROP)

num  target     prot opt source               destination        

1    ACCEPT     tcp  --  192.168.8.71         anywhere            tcp dpt:ssh

2    DROP       icmp --  anywhere             anywhere            


Chain FORWARD (policy ACCEPT)

num  target     prot opt source               destination        


Chain OUTPUT (policy ACCEPT)

num  target     prot opt source               destination      

5防止廣播包進入局域網:
[root@tx1 ~]# iptables  -A INPUT -s 255.255.255.255 -i eth0 -j DROP

[root@tx1 ~]# iptables -A INPUT -s 224.0.0.0/224.0.0.0 -i eth0 -j DROP

[root@tx1 ~]# iptables -A INPUT -d 0.0.0.0 -i eth0 -j DROP

(6)修改第3條規則:

[root@tx1 ~]# iptables -R INPUT 3 -s 192.168.8.72 -j ACCEPT

7在第3條規則上面插入一條新的規則:

[root@tx1 ~]# iptables -I INPUT 3 -s 192.168.8.73 -j ACCEPT

(8)ping的信息定向到日誌:

[root@tx1 ~]# iptables -A INPUT -p icmp -s 172.16.13.13 -j LOG

[root@tx1 ~]#  tail -0f /var/log/messages

9連續端口的寫法:25:110

iptables -A INPUT -p tcp --dport 25:110 -j ACCEPT

10容許loopback!(否則會致使DNS沒法正常關閉等問題)

[root@tx1 ~]# iptables -A INPUT -i lo -p all -j ACCEPT

[root@tx1 ~]# iptables -A OUTPUT -o lo -p all -j ACCEPToutput鏈爲DROP的狀況下

(11)減小不安去的端口鏈接

有些些特洛伊***會掃描端口3133731340(即***語言中的 elite 端口)上的服務。既然合法服務都不使用這些非標準端口來通訊,因此拒絕這些端口的鏈接是有必要的

[root@tx1 ~]#  iptables -A OUTPUT -p tcp --sport 31337:31338 -j DROP

[root@tx1 ~]#  iptables -A OUTPUT -p tcp --sport 31339:31340 -j DROP


3.FORWARD鏈實例(要開啓轉發功能,有兩塊網卡)

注:在作NAT,FORWARD默認規則是DROP,必須的:

[root@tx1 ~]# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

[root@tx1 ~]# iptables -A FORWARD -i eth1 -o eh0 -j ACCEP

1丟棄壞的TCP

[root@tx1 ~]# iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP

2處理IP碎片數量,防止***,容許每秒100

[root@tx1 ~]# iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT

3設置ICMP包過濾,容許每秒1個包,限制觸發條件是10個包.

[root@tx1 ~]# iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT

[root@tp rc.d]# iptables -t nat -L

若是你想清除,命令是

[root@tx1 ~]# iptables -F -t nat

[root@tx1 ~]# iptables -X -t nat

[root@tx1 ~]# iptables -Z -t nat

(4)添加規則

[root@tx1 ~]# iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP

[root@tx1 ~]#  iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP

[root@tx1 ~]# iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP

5禁用FTP(21)端口


[root@tx1 ~]# iptables -t nat -A PREROUTING -p tcp --dport 21 -j DROP

(6)拒絕非法鏈接

[root@tx1 ~]# iptables -A INPUT     -m state --state INVALID -j DROP

[root@tx1 ~]# iptables -A OUTPUT    -m state --state INVALID -j DROP

[root@tx1 ~]# iptables -A FORWARD -m state --state INVALID -j DROP

(7)接收已經創建的鏈接

[root@tx1 ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

[root@tx1 ~]# iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


注:本文部份內容爲轉載

相關文章
相關標籤/搜索