iptables防火墻(二)
阿新 • • 發佈:2018-01-19
icm ofo tro 客戶機 條件 目的 ppp cto tina SNAT策略的典型應用環境
局域網主機共享單個公網IP地址接入InternetSNAT策略的原理
未作SNAT轉換時的情況
進行SNAT轉換後的情況
前提條件
-
MASQUERADE —— 地址偽裝
DNAT策略的典型應用環境
DNAT策略的原理
在Internet中發布內網服務器
驗證DNAT結果
-
局域網主機共享單個公網IP地址接入Internet
SNAT策略的原理
源地址轉換,Source Network Address Translation
修改數據包的源地址
局域網共享上網
未作SNAT轉換時的情況
![技術分享圖片](http://i2.51cto.com/images/blog/201801/19/3f29010d18ec49423d1121a84c1e3e1a.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
進行SNAT轉換後的情況
![技術分享圖片](http://i2.51cto.com/images/blog/201801/19/e57753eb5238a7556274175d7ce913dc.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
前提條件
局域網各主機正確設置IP地址/子網掩碼
局域網各主機正確設置默認網關地址
Linux網關支持IP路由轉發
實現方法
編寫SNAT轉換規則
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 218.29.30.31 POSTRIYTING;路由選擇後再處理 192.168.1.0/24;局域網短地址 193.eth0;外網接口名稱 194.218.29.30.31;外網接口IP
-
驗證SNAT結果
在局域網主機 192.168.1.234 中能夠訪問外網的Web服務器 58.63.236.45
查看Web主機 58.63.236.45 的訪問日誌,記錄的來訪者應是網關主機的外網IP地址 218.29.30.31
MASQUERADE —— 地址偽裝
適用於外網IP地址非固定的情況
對於ADSL撥號連接,接口通常為 ppp0、ppp1
將SNAT規則改為MASQUERADE即可
DNAT策略的典型應用環境
在Internet中發布位於企業局域網內的服務器
DNAT策略的原理
目標地址轉換,Destination Network Address Translation
修改數據包的目標地址
進行DNAT轉換後的情況
![技術分享圖片](http://i2.51cto.com/images/blog/201801/19/ae44e9b4c3b3a63ad3f579bd2b52f392.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
在Internet中發布內網服務器
![技術分享圖片](http://i2.51cto.com/images/blog/201801/19/7b69b493a5fd8b7553c0a9218e1f5242.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
前提條件
局域網的Web服務器能夠訪問Internet
網關的外網IP地址有正確的DNS解析記錄
Linux網關支持IP路由轉發
實現方法
編寫DNAT轉換規則
[root@localhost ~]# iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.6 PRETOUTING;路由選擇之前處理 218.29.30.31;外網接口IP地址 80;發布服務器端口 192.168.1.6;web主機內網IP地址
驗證DNAT結果
在外網客戶機 173.96.97.98 中能夠訪問位於企業內網的Web服務,訪問地址為 http://218.29.30.31/
查看Web服務器 192.168.1.6 的訪問日誌,記錄了外網客戶機的IP地址 173.96.97.98
![技術分享圖片](http://i2.51cto.com/images/blog/201801/19/eef427e99e119457ad750caf0912311e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
發布時修改目標端口
在DNAT規則中以“IP:Port”的形式指定目標地址
[root@localhost ~]# iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31
-p tcp --dport 2346 -j DNAT --to-destination 192.168.1.6:22
2346;訪問的目的端口
:22;實際提供服務的端口
-
導出(備份)規則
iptables-save工具
[root@localhost ~]# iptables-save
Generated by iptables-save v1.4.7 on Wed Sep 24 08:25:33 2014
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [54:7037]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
Completed on Wed Sep 24 08:25:33 2014
[root@localhost ~]# iptables-save > /opt/iprules_all.txt
-
導入(還原)規則
iptables-restore工具
可結合重定向輸入指定規則來源
[root@localhost ~]# iptables-restore < /opt/iprules_all.txt
iptables服務
腳本位置:/etc/init.d/iptables
規則文件位置:/etc/sysconfig/iptables
[root@localhost ~]# service iptables start
iptables:應用防火墻規則: [確定]
[root@localhost ~]# service iptables stop
iptables:將鏈設置為政策 ACCEPT:filter [確定]
iptables:清除防火墻規則: [確定]
iptables:正在卸載模塊: [確定]
[root@localhost ~]# service iptables status
iptables:未運行防火墻
——
1.定義基本變量
便於腳本的維護、重用
#!/bin/bash
INET_IF= "eth0"
INET_IP="218.29.30.31"
LAN_IF="eth1"
LAN_IP= "192.168.1.1"
LAN_NET="192.168.1.0/24"
LAN_WWW_IP="192.168.1.6"
IPT="/sbin/iptables"
MOD="/sbin/modprobe"
CTL="/sbin/sysctl“
……
2.加載必要的內核模塊
將頻繁用到的模塊載入內核
……
$MOD ip_tables
$MOD ip_conntrack
$MOD ipt_REJECT
$MOD ipt_LOG
$MOD ipt_iprange
$MOD xt_tcpudp
$MOD xt_state
$MOD xt_multiport
$MOD xt_mac
$MOD ip_nat_ftp
$MOD ip_conntrack_ftp
……
支持FTP訪問的地址轉換連接狀態跟蹤
3.調整/proc參數
Linux內核控制及調優
$CTL -w net.ipv4.ip_forward=1
$CTL -w net.ipv4.ip_default_ttl=128
$CTL -w net.ipv4.icmp_echo_ignore_all=1
$CTL -w net.ipv4.icmp_echo_ignore_broadcasts
$CTL -w net.ipv4.tcp_syncookies=1
$CTL -w net.ipv4.tcp_syn_retries=3
$CTL -w net.ipv4.tcp_synack_retries=3
$CTL -w net.ipv4.tcp_fin_timeout=60
$CTL -w net.ipv4.tcp_max_syn_backlog=3200
優化TCP響應能力
4. 具體的防火墻規則
按表、鏈分別設置規則,包括默認策略
……
$IPT -t filter -X
$IPT -t nat -X
$IPT -t filter -F
$IPT -t nat -F
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
$IPT -t nat -A POSTROUTING -s $LAN_NET -o $INET_IF -j SNAT --to-source $INET_IP
$IPT -t nat -A PREROUTING -i $INET_IF -d $INET_IP -p tcp --dport 80 -j DNAT --to-destination $LAN_WWW_IP
-t 清空原有規則
-P 設置默認策略
-t nat 其他具體規則
-
“主機型”防火墻腳本
針對本機進行保護
filter表中的INPUT、OUTPUT鏈
[root@localhost ~]# vi /opt/myipfw.hostonly
#!/bin/bash
1. 定義基本變量
IPT= "/sbin/iptables"
……
2 定義默認策略
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
3 設置filter表中的各種規則
$IPT -A INPUT -p tcp --dport 80 -j ACCEPT
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables防火墻(二)