iptables命令:
列出iptables規則:iptables -L -n
列出iptables規則並顯示規則編號:iptables -L -n --line-numbers
列出iptables nat表規則(默認是filter表):iptables -L -n -t nat
清除默認規則(注意默認是filter表,如果對nat表操作要加-t nat)
#清楚所有規則:iptables -F
#刪除用戶自定義的鏈:iptables -X
#將鏈的計數器清零:iptables -Z
#重啓iptables發現規則依然存在,因爲沒有保存:service iptables restart
#保存配置:service iptables save
#禁止ssh登陸(若果服務器在機房,一定要小心)iptables -A INPUT -p tcp --dport 22 -j DROP
#清除規則:iptables -D INPUT -p tcp --dport 22 -j DROP
-A, --append chain 追加到規則的最後一條
-D, --delete chain [rulenum] Delete rule rulenum (1 = first) from chain
-I, --insert chain [rulenum] Insert in chain as rulenum (default 1=first) 添加到規則的第一條
-p, --proto proto protocol: by number or name, eg. 'tcp',常用協議有tcp、udp、icmp、all
-j, --jump target 常見的行爲有ACCEPT、DROP和REJECT三種,但一般不用REJECT,會帶來安全隱患
注意:INPUT和DROP這樣的關鍵字需要大寫
#禁止192.168.10.0網段從eth0網卡接入
iptables -A INPUT -p tcp -i eth0 -s 192.168.10.100 -j DROP
iptables -A INPUT -p tcp --dport 22 -i eth0 -s 192.168.10.100 -j ACCEPT
#禁止ip地址非192.168.10.10的所有類型數據接入:iptables -A INPUT ! -s 192.168.10.10 -j DROP
#禁止ip地址非192.168.10.10的ping請求:iptables -I INPUT -p icmp --icmp-type 8 -s 192.168.50.100 -j DROP
#擴展匹配:1.隱式擴展 2.顯示擴展
#隱式擴展 -p tcp
--sport PORT 源端口
--dport PORT 目標端口
#顯示擴展:使用額外的匹配規則
-m EXTENSTION --SUB-OPT
-p tcp --dport 22 與 -p tcp -m tcp --dport 22功能相同
state:狀態擴展,接口ip_contrack追蹤會話狀態
NEW:新的連接請求, ESTABLISHED:已建立的連接請求, INVALID:非法連接, RELATED:相關聯的連接
#匹配端口範圍:iptables -I INPUT -p tcp --dport 22:80 -j DROP
#匹配多個端口:iptables -I INPUT -p tcp -m multiport --dport 22,80,3306 -j ACCEPT
#不允許源端口爲80的數據流出:iptables -I OUTPUT -p tcp --sport 80 -j DROP
配置防火牆:兩種模式-->電影院模式和逛公園模式
配置一個生產環境的防火牆
#1.清空所有規則
iptables -F
iptables -Z
iptables -X
#2.配置允許ssh協議的22端口進入
iptables -A INPUT -p tcp --dport 22 -s 192.168.50.100 -j ACCEPT
#3.配置允許lo接口數據的進出
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#4.設置默認的進出規則,DROP掉INPUT鏈和FORWARD鏈,保留OUTPUT鏈
iptables --policy OUTPUT ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP
#5.開啓信任的IP段
iptables -A INPUT -p all -s 192.168.10.0/24 -j ACCEPT
#6.開放http的80端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#7.允許icmp類型協議通過
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
#8.允許關聯狀態包進出
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#對於FTP而言,就需要 RELATED 才能實現 21 端口白名單,如不加此項需要額外開放端口,而那些額外開放端口是不受連接狀態保護的。
#9.保存iptables配置到文件
service iptables save
iptables的NAT功能:將Linux服務器配置爲上網網關和端口映射功能
上網網關:就是將Linux服務器配置成路由器或者網關,實現其他服務器能通過這臺服務器進行上網的功能,如果需要實在
該功能,就要藉助iptables的nat表