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連接,使用下面的命令:
- 容許出去
- 將幾個默認鏈設爲DROP狀態
- 保存當前規則
對鏈或規則本身進行操作的iptable命令使用大寫字母表示: -A 附加 、-D 刪除規則 、-I 插入 、-R 替換 、 -L 列表 、-F 充溢 、-N 新建 、-X 刪除鏈 |
用於詳細說明規則的選項用小寫字母: -s 源地址、-p 協議 、 -d 目的地址 、-j 跳 、 -i 入界面 、 -o 出界面 |