對於有公網IP的生產環境VPS,僅僅開放須要的端口,即採用ACL來控制IP和端口(Access Control List).web
這裏可使用Linux防火牆netfilter的用戶態工具服務器
iptables有4種表:raw-->mangle(修改報文原數據)-->nat(定義地址轉換)-->filter(定義容許或者不容許的規則)tcp
每一個表能夠配置多個鏈:工具
filter表的三個鏈詳解:學習
觸類旁通學習:網站
【例】:過濾全部的訪問: iptables -t filter -A INPUT -s 0.0.0.0/0.0.0.0 -d X.X.X.X -j DROP 【例】:對SSH的22端口開放 iptables -I INPUT -s 0.0.0.0/0.0.0.0 -d X.X.X.X -p tcp --dport 22 -j ACCEPT 【例】:開放80端口 iptables -A INPUT -s 0.0.0.0/0.0.0.0 -d X.X.X.X -p tcp --dport 80 -j ACCEPT 【例】:來自124的數據禁止經過174 IP iptables -A OUTPUT -p tcp -s 45.32.102.124 -d 157.240.22.174 -j REJECT 【例】打印當前生效的iptables規則(-n顯示IP地址) iptables -L -n
Linux中iptables防火牆指定端口範圍code
iptables -I INPUT -p tcp --dport 700:800 -j DROP iptables -I INPUT -s 11.129.35.45 -p tcp --dport 700:800 -j ACCEPT
1、 700:800 表示700到800之間的全部端口
2、 :800 表示800及如下全部端口
3、 700: 表示700以及以上全部端口
這個例子做用是,700-800端口,僅僅對 11.129.35.45 IP開放,白名單機制。ip
Snat、Dnat的iptables用途:
源地址轉換(Snat): iptables -t nat -A -s 私IP -j Snat --to-source 公IP
目的地址轉換(Dnat): iptables -t nat -A -PREROUTING -d 公IP -j Dnat --to-destination 私IP域名
iptables命令詳解io
iptables經常使用的命令選項有: -P:設置默認策略的(設定默認門是關着的仍是開着的)如:iptables -P INPUT (DROP|ACCEPT) -F: FLASH,清空規則鏈的(注意每一個鏈的管理權限) -N:NEW 支持用戶新建一個鏈,好比:iptables -N inbound_tcp_web 表示附在tcp表上用於檢查web的。 -X:用於刪除用戶自定義的空鏈 -Z:清空鏈 -A:追加 -I num : 插入,把當前規則插入爲第幾條 -R num:Replays替換/修改第幾條規則 -D num:刪除,明確指定刪除第幾條規則 -L:查看規則詳細信息,好比"iptables -L -n -v" -s 表示源地址IP -d 表示目標地址IP DROP 表示丟棄(拒絕) ACCEPT 表示接受 -p 表示適用協議,如tcp
其餘更多例子:
【例】添加iptables規則禁止用戶訪問域名爲www.sexy.com的網站。 iptables -I FORWARD -d www.sexy.com -j DROP 【例】添加iptables規則禁止用戶訪問IP地址爲20.20.20.20的網站。 iptables -I FORWARD -d 20.20.20.20 -j DROP 【例】添加iptables規則禁止IP地址爲192.168.1.X的客戶機上網。 iptables -I FORWARD -s 192.168.1.X -j DROP 【例】添加iptables規則禁止192.168.1.0子網裏全部的客戶機上網。 iptables -I FORWARD -s 192.168.1.0/24 -j DROP 【例】禁止192.168.1.0子網裏全部的客戶機使用FTP協議下載。 iptables -I FORWARD -s 192.168.1.0/24 -p tcp –dport 21 -j DROP 【例】強制全部的客戶機訪問192.168.1.x這臺Web服務器。 iptables -t nat -I PREROUTING -i eth0 -p tcp –dport 80 -j DNAT –to-destination 192.168.1.x:80 【例】禁止使用ICMP協議。 iptables -I INPUT -i ppp0 -p icmp -j DROP