Linux防火牆

Linux防火牆基礎知識

netfilter主頁:http://www.netfilter.org/
 
iptables既用表也用鏈,表是處理的塊,對包的不同操作就是在表中進行的,不同的表處理不同的鏈,鏈是規則的集合。有4個內建的表:網絡地址轉換表,軋表、過濾表和原始表,每個表處理不同的鏈。

下面列出的是過濾表:
 
  Filter table 這是用iptables命令修改規則時需要的默認表,防火牆的大部分的實現都是在這裏實現的。

  •  INPUT       當有訪問本地系統的數據包時,此鏈被處理。
  •  FORWARD  當有通過本地系統的數據時,此鏈被處理。
  •  OUTPUT    當有本地系統產生的數據包時,此鏈被處理。


目標是當一個包符合一個給定的規則時應該採取的行動。 目標是用 j <target> 文法進行說明

 

  •  ACCEPT   包由TCP/IP協議棧的區域部分接受並處理。
  •  DROP 包丟棄且不通知發送端。
  •  RETURN 在前一個鏈中,緊接着最近被處理的那個規則後的規則處繼續處理。


配置(環境CentOS 5.3 )

1、防火牆必須工作在一個安裝好的系統上,所以系統必須要升級強化。
考慮到服務器原有的文件中可能會有有危險性的文件,所以如果該系統只是用做防火牆,推薦全盤格式化後,安裝全新的最小化的系統,並升級加固。
2、查看防火牆是否安裝。使用命令  chkconfig  --list ,將列出所有的服務及其開啓時的運行等級:

            chkconfig --list | grep iptables
            iptables        0:關閉  1:關閉  2:啓用  3:啓用  4:啓用  5:啓用  6:關閉


說明iptable會在等級  2~5運行。你也可以使用命令  chkconfig  --level 2345  iptables on     命令設置該服務默認啓動。

3、刪除規則和鏈
很多Linux發行版默認netfilter服務是開啓的,但規則是空的。 可以用 iptables -L   命令查看當前狀態,如果是下面這樣,就是空的:
 
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain RH-Firewall-1-INPUT (0 references)
target     prot opt source               destination 
        
大家注意到我的記錄的組後兩行是之前沒提到的,這個是發行版中創建的非默認的鏈,可以用命令 
iptables -X RH-Firewall-1-INPUT  刪除該自定義鏈。
 
4、注意   
      在下面的配置中一定要非常小心,在開始其他所有工作之前,首先創建一個規則,容許管理員接入。這是因爲一旦將所有的規則都配置爲DROP ,SSH連接也會被禁止,這樣連修改的機會也沒了。
5、 其他常識
我用的是CentOS,防火牆被安裝爲服務,系統自動提供了一個iptables的管理腳本  
/etc/init.d/iptables 。這裏面提供了幾個選項:start 、 stop、restart、condrestart、status、panic、save  。
要注意如果 使用命令 service iptables stop 、 service iptables start 、 service iptables restart  這幾個命令會消除當前活躍的規則集,並從配置文件中重新載入。所以需要使用 service iptables save  命令保存當前活躍的規則集.
默認的配置文件路徑:/etc/sysconfig/iptables
6、 配置
 

    • 首先設置防火牆的規則允許管理通信訪問,允許到防火牆的SSH連接,使用下面的命令:
                iptables -A INPUT -p tcp -s 192.168.92.0/24 --dport 22 -j ACCEPT
                s指出只能容許192.168.92.0、24這個內部網段的ip才能訪問。如果你想容許訪問80,11211等類似端口,也可以參考這個命令。當然了這只是容許了進入的包,還要容許出去的包。
    • 容許出去
                你可以使用  iptables -P OUTPUT ACCEPT 。 這種方法很簡單,但我們有更安全的方法。
                iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
                這個命令允許全部的應答通信通過,只要他是對被允許的會話的應答。

                如果你想設置允許從防火牆發出的數據到遠端的syslog服務器(比如:192.168.92.3:514)的syslog通信量通過,可以使用該命令:
                iptables -A OUTPUT -p udp -d 192.168.92.3 --dport 514
                因爲該協議是udp協議,並且是單向的會話,不需要進入,只是出去。

    • 將幾個默認鏈設爲DROP狀態
                之所以放在最後,是因爲我在測試時,一使用命令iptables -P INPUT DROP ,我就不能再訪問服務器了,所以我就把這不放在最後了。
                iptables -P INPUT DROP
                iptables -P FORWARD DROP
                iptables -P OUTPUT DROP
    • 保存當前規則
                service iptables save  

 

           
對鏈或規則本身進行操作的iptable命令使用大寫字母表示:
-A 附加 、-D 刪除規則 、-I 插入 、-R 替換 、 -L 列表 、-F 充溢 、-N 新建 、-X 刪除鏈
用於詳細說明規則的選項用小寫字母:
-s 源地址、-p 協議 、 -d 目的地址 、-j 跳 、 -i 入界面 、 -o 出界面


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章