NetFilter規定的五個規則鏈sql
PREROUTING (路由前)、INPUT (數據包流入口)、FORWARD (轉發管卡)、OUTPUT(數據包出口)、POSTROUTING(路由後)網絡
任何一個數據包,只要通過本機,必將通過這五個鏈中的其中一個鏈;tcp
NAT: Network Address Transition (網絡地址轉換)oop
防火牆策略spa
filter 定義容許或者不容許的 、nat 定義地址轉換的、mangle功能:修改報文原數據rest
filter來說通常只能作在3個鏈上:INPUT ,FORWARD ,OUTPUTorm
nat來說通常也只能作在3個鏈上:PREROUTING ,OUTPUT ,POSTROUTING接口
mangle則是5個鏈均可以作:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
ip
iptables -L -n 或 iptables -nL -- 查看規則表路由
iptables -t nat -L -n -- 查看網絡地址轉換表
iptables -F -- 清除預設表filter中的全部規則鏈的規則
iptables -X -- 清除預設表filter中使用者自定鏈中的規則
/etc/rc.d/init.d/iptables save -- 保存設置
cat /etc/sysconfig/iptables -- 查看規則設置保存文件
service iptables restart -- 重啓規則表
設置預設規則
iptables -p INPUT DROP
iptables -p OUTPUT DROP
iptables -p FORWARD DROP
開啓FORWARD轉發,需修改內核配置文件
/proc/sys/net/ipv4/ip_forward 默認0(0:關閉 1:打開)
開啓是 iptables -p OUTPUT ACCEPT 才起做用
開啓SSH遠程登陸
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT -- 限制mac地址訪問
iptables -D INPUT -p tcp --dport 22 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT -- 刪除MAC地址訪問設置
iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT -- 指定IP訪問
iptables -A OUTPUT -d 192.168.0.3 -p tcp --sport 22 -j ACCEPT -- 指定輸出到指定IP經過
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT -- 指定IP段 192.168.0.1-255訪問
iptables -A OUTPUT -d 192.168.0.0/24 -p tcp --sport 22 -j ACCEPT -- 指定輸出到指定IP段經過
iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j DROP-- 限制IP訪問
iptables -A OUTPUT -d 192.168.0.3 -p tcp --sport 22 -j DROP -- 限制到目的IP得輸出
iptables -D INPUT -p tcp --dport 22 -j ACCEPT
iptables -D OUTPUT -p tcp --sport 22 -j ACCEPT
開始本機8080端口訪問
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 8080 -j ACCEPT
容許icmp包經過(注:容許ping)
iptables -A OUTPUT -p icmp -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -D OUTPUT -p icmp -j ACCEPT
iptables -D INPUT -p icmp -j ACCEPT
容許loopback 會致使DNS沒法正常關閉
IPTABLES -A INPUT -i lo -p all -j ACCEPT
-- -i 表明輸入接口 (不指定-i參數,將處理進入全部接口的數據包,! -i eth0 : 將處理全部經由eth0之外的接口進入的數據包,-i eth+ :將處理全部經由eth開頭的接口進入的數據包)
IPTABLES -A OUTPUT -o lo -p all -j ACCEPT
-- -o 表明輸出接口(! -o eth0 : 從eth0之外的接口輸出,-i eth+ : 從eth開頭的接口輸出)
DNS服務開啓
DNS佔用TCP、UDP兩個協議端口、通常狀況下使用UDP 53
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT-p udp --sport 53 -j ACCEPT
容許創建鏈接的包經過
iptables-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
開啓本機訪問外部80端口
iptables -A INPUT -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
開啓、刪除Mysql(3306)端口
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT -- 在行首添加輸入 目的端口3306 訪問經過
iptables -I OUTPUT -p tcp --sport 3306 -j ACCEPT -- 在行首添加輸出 原端口3306 訪問經過
iptables -D INPUT -p tcp --dport 3306 -j ACCEPT -- 刪除輸入 目的3306端口訪問
iptables -D OUTPUT -p tcp --sport 3306 -j ACCEPT -- 刪除輸出 原端口3306端口訪問
iptables -I INPUT -s 192.168.0.3 -p tcp --dport 3306 -j ACCEPT -- 指定IP訪問
iptables -I OUTPUT -d 192.168.0.3 -p tcp --sport 3306 -j ACCEPT -- 指定輸出到指定IP經過
iptables -D INPUT -s 192.168.0.3 -p tcp --dport 3306 -j ACCEPT
iptables -D OUTPUT -d 192.168.0.3 -p tcp --sport 3306 -j ACCEPT
開啓、刪除SendMail(25)端口
iptables -I INPUT -p tcp --sport 25 -j ACCEPT -- 不開啓此項也能發送
iptables -I OUTPUT -p tcp --dport 25 -j ACCEPT
iptables -D INPUT -p tcp --sport 25 -j ACCEPT
iptables -D OUTPUT -p tcp --dport 25 -j ACCEPT
經常使用端口
22 -- SSH 23 -- telnet 25 -- smtp 53 -- DNS
已創建鏈接狀態包經過
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -- 添加已創建鏈接狀態包經過
iptables -D INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -- 添加已創建鏈接狀態包經過