網絡安全攻防:Linux系統安全之iptables配置
iptables是用來設置、維護和檢查Linux內核的IP分組過濾規則的。作為Linux下的一款防火墻,它的功能十分強大,它有3個表,每個表內有規則鏈。
(1)filter 是默認的表,包含了內建的鏈 INPUT(處理進入的分組)、FORWARD(處理通過的分組)和OUTPUT(處理本地生成的分組)。
(2)nat表被查詢時表示遇到了產生新的連接的分組,由3個內建的鏈構成:PREROUTING(修改到來的分組)、OUTPUT(修改路由之前本地的分組)、POSTROUTING(修改準備出去的分組)。
(3)mangle表用來對指定的分組進行修改。它有2個內建規則:PREROUTING(修改路由之前進入的分組)和OUTPUT(修改路由之前本地的分組)。下面簡單介紹iptables的常用配置。
1. 查看iptables規則
查看當前的iptables策略,使用iptables-L命令,默認查看的是filter表的內容,如下:
- root@kali:~# iptables-L
- Chain INPUT(policy ACCEPT)
- target prot opt source destination
- f2b-sshd tcp – anywhere anywhere multiport dports ssh
- Chain FORWARD(policy ACCEPT)
- target prot opt source destination
- Chain OUTPUT(policy ACCEPT)
- target prot opt source destination
- Chain f2b-sshd(1 references)
- target prot opt source destination
- RETURNall-anywhere anywhere
2. 設置chain策略
對于filter表,默認的chain策略為ACCEPT,可以通過以下命令修改chain的策略:
- root@kali:~# iptables-P INPUT DROP
- root@kali:~# iptables-P FORWARD DROP
- root@kali:~# iptbales-P OUTPUT DROP
以上命令配置將接收、轉發和發出分組均丟棄,施行比較嚴格的分組管理。由于接收和發分組均被設置為丟棄,當進一步配置其他規則的時候,需要注意針對 INPUT和OUTPUT分別配置。當然,如果信任本機器往外發分組,上面第3條規則可不必配置。
3. 清空已有規則
可以用以下規則來清空已有的規則:
- root@kali:~# iptables-F
4. 網口轉發規則
對于用作防火墻或網關的服務器,一個網口連接到公網,其他網口的分組轉發到該網口實現內網向公網通信,假設eth0連接內網,eth1連接公網,配置規則如下:
- root@kali:~# iptables-A FORWARD-i eth0-o eth1-j ACCEPT
5. 端口轉發規則
命令將888端口的分組轉發到22端口,因而通過888端口也可進行SSH連接:
- root@kali:~# iptables-t nat-A PREROUTING-p tcp-d 192.168.1.1 –dport 888-j DNAT--to 192.168.1.1:22
6. DoS攻擊防范
利用擴展模塊limit,還可以配置iptables規則,實現DoS攻擊防范,如下所示:
- root@kali:~# iptables-A INPUT-p tcp –dport 80-m limit –limit 25/minute--limit-burst 100-j ACCEPT
--litmit 25/minute 指示每分鐘限制最大連接數為25。
--litmit-burst 100 指示當總連接數超過100時,啟動litmit/minute限制。