netfileter:防火墻內(nèi)核態(tài)
ip tables:防火墻用戶態(tài)(管理防火墻規(guī)則)
iptables的表和鏈
表包括不同的鏈,鏈包括大量的規(guī)則
4個(gè)表:
raw备籽,mangle慢显,nat,filter
5種鏈(一般在nat表里用):
INPUT(入站數(shù)據(jù)),OUTPUT(出站數(shù)據(jù)),FORWARD(轉(zhuǎn)發(fā)數(shù)據(jù)),
PREROUTING(路由選擇前),POSTROUTING(路由選擇后)
iptables基本用法:
iptables -t 表名 -選項(xiàng) 鏈名 條件匹配 -j 操作類型
常見選項(xiàng):
-A:在鏈的末尾追加一條規(guī)則
-I:在鏈的開頭(或指定序號(hào))插入一條規(guī)則
-L:列出所有的規(guī)則條目
-n:以數(shù)字形式顯示地址,端口等信息
--line-numbers:查看規(guī)則時(shí)核蘸,顯示規(guī)則的序號(hào)
-D:刪除鏈內(nèi)指定序號(hào)(或內(nèi)容)的一條規(guī)則
-F:清空所有的規(guī)則
-P:為指定的鏈設(shè)置默認(rèn)規(guī)則
條件匹配類型:
通用匹配:獨(dú)立使用
-p:指定協(xié)議
-s:源地址
-d:目標(biāo)地址
-i:入站網(wǎng)卡
-o:出站網(wǎng)卡
隱含匹配:依賴于某種通用匹配
--sport:源端口
--dport:目標(biāo)端口
--icmp-type:
--tcp-flags:
擴(kuò)展匹配:-m 模塊名
擴(kuò)展條件的方法
前提條件:有對(duì)應(yīng)的防火墻模塊支持
基本用法:
-m 擴(kuò)展模塊 --擴(kuò)展條件 條件值
示例:-m mac --mac-source 00:0C:29:74:BE:21
簡(jiǎn)化服務(wù)開啟規(guī)則
一條規(guī)則開放多個(gè)端口
比如web巍糯,ftp,mail客扎,ssh等
[root@hydra]# iptables -A INPUT -p tcp -m multiport --dports 20:22,25,80,110,143,16501:16800 -j ACCEPT
根據(jù)ip范圍封鎖主機(jī):
ssh登陸的ip范圍控制
允許192.168.1.10-192.168.4.20登陸
靜止從192.168.4.0/24網(wǎng)段其他主機(jī)登陸
[root@hydra]# iptables -A INPUT -p tcp --dport 22 -m iprange --src-range 192.168.4.10-192.168.4.20 -j ACCEPT
[root@hydra]# iptables -A INPUT -p tcp --dport 22 -s 192.168.4.0/24 -j DROP
——————————————————————————————————————————————————————————
nat表典型應(yīng)用
SNAT源地址轉(zhuǎn)換(Source Network Address Translation)
修改數(shù)據(jù)包的源地址
僅用于nat表的POSTROUTING鏈
DNAT目標(biāo)地址轉(zhuǎn)換(Destination Network Address Translation)
修改數(shù)據(jù)包目標(biāo)地址(ip祟峦,端口)
僅用于nat表的PREROUTING,OUTPUT鏈
配置SNAT共享上網(wǎng)
配置的關(guān)鍵策略:
選擇出去的包徙鱼,針對(duì)來自局域網(wǎng)宅楞,
即將從外網(wǎng)接口發(fā)出去的包,將源ip地址修改為網(wǎng)關(guān)的公網(wǎng)ip地址
[root@gw1 ~]# iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -o eth1 -j SNAT --to-source 174.16.16.1
(192.168.4.0/24局域網(wǎng)網(wǎng)段地址袱吆,eth1外網(wǎng)接口厌衙,174.16.16.1外網(wǎng)接口的ip地址)
地址偽裝策略
共享動(dòng)態(tài)公網(wǎng)ip地址實(shí)現(xiàn)上網(wǎng):
主要針對(duì)外網(wǎng)接口ip地址不固定的情況,
將SNAT改為MASQUERADE即可
對(duì)于ADSL寬帶撥號(hào)連接绞绒,網(wǎng)絡(luò)接口可寫為ppp+
iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -o eth1 -j MASQUERADE
——————————————————————————————————————————————————————
案例準(zhǔn)備:
gw1:192.168.4.1 174.16.16.1
svr:192.168.4.2
pc174.16.16.120
在svr上準(zhǔn)備dns服務(wù)婶希,web服務(wù),網(wǎng)頁內(nèi)容hydra 提供解析記錄:www.Anonymous.cn ——》174.16.16.1
從pc上能夠訪問以下地址:
http://174.16.16.1
http://www.Anonymous.cn
[root@svr ~]# vim /var/named/Anonymous.cn.zone
@ NS svr.Anonymous.cn.
svr A 192.168.4.2
www A 174.16.16.1
[root@svr ~]# vim /etc/named.conf
zone "Anonymous.cn" IN {
type master;
file "Anonymous.cn.zone";
};
[root@svr ~]# vim /var/www/html/test.html
hydra蓬衡!
內(nèi)網(wǎng)web主機(jī)能夠訪問internet喻杈,比如SNAT
linux網(wǎng)關(guān)服務(wù)器開啟ip路由轉(zhuǎn)發(fā),將web域名解析為網(wǎng)關(guān)的外網(wǎng)ip地址
[root@gw1 ~]# iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -o eth1 -j SNAT --to-source 174.16.16.1(nat地址轉(zhuǎn)換)
[root@gw1 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1(開啟路由轉(zhuǎn)發(fā))
發(fā)布web狰晚,dns服務(wù)器
配置的關(guān)鍵策略:
在路由選擇之前筒饰,針對(duì)從外網(wǎng)接口收到的
訪問本機(jī)公網(wǎng)地址tcp 80端口的數(shù)據(jù)包
將其目標(biāo)地址修改位于內(nèi)網(wǎng)的web主機(jī)的ip地址
[root@gw1 ~]# iptables -t nat -A PREROUTING -i eth1 -d 174.16.16.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.4.2(允許公網(wǎng)訪問)
[root@gw1 ~]# iptables -t nat -A PREROUTING -i eth1 -d 174.16.16.1 -p udp --dport 53 -j DNAT --to-destination 192.168.4.2(發(fā)布dns服務(wù)地址)
發(fā)布ssh服務(wù)器
執(zhí)行ssh -p 2345 174.16.16.1時(shí),實(shí)際登陸192.168.4.2
[root@gw1 ~]# iptables -t nat -A PREROUTING -i eth1 -d 174.16.16.1 -p tcp --dport 2345 -j DNAT --to-destination 192.168.4.2:22
ps:sshd訪問響應(yīng)慢的問題壁晒,sshd會(huì)嘗試解析客戶機(jī)的fqdn瓷们,設(shè)置了一個(gè)不可用的dsn
ssh會(huì)gss驗(yàn)證方式
修改客戶端的/etc/ssh/ssh_config文件,禁用gss認(rèn)證
GSSAPIAuthentication no(改為no)
發(fā)布ftp服務(wù)器
注意事項(xiàng):加載模塊nf_nat_ftp秒咐,nf_conntrack_ftp
[root@gw1 ~]# modprobe -a nf_nat_ftp nf_conntrack_ftp
[root@gw1 ~]# iptables -t nat -A PREROUTING -i eth1 -d 174.16.16.1 -p tcp --dport 20:21 -j DNAT --to-destination 192.168.4.2
iptables導(dǎo)出/導(dǎo)入規(guī)則
使用iptables-save導(dǎo)出
[root@gw1~]# ipables-save > /root/myiptables.txt(把防火墻規(guī)則導(dǎo)入到自定義的文件夾)
使用iptables-restore導(dǎo)入
[root@gw1~]# iptables-restore < /root/myiptables.txt
開機(jī)后自動(dòng)加載億保存的規(guī)則
[root@gw1~]# iptables-save > /etc/sysconfig/iptables
[root@gw1~]# chkconfig iptables on
————————————————————————————————————————————————————————————————————
防火墻腳本
shell腳本的編寫:
vim建立代碼文件
使用變量
可執(zhí)行語句的編寫【免交互】
添加x權(quán)限
針對(duì)linux網(wǎng)關(guān)編寫腳本谬晕,提供SNAT共享上網(wǎng)策略
提供DNAT發(fā)布web,ftp服務(wù)的策略携取,編寫網(wǎng)絡(luò)型固蚤,主機(jī)型防護(hù)規(guī)則。
批量設(shè)置防火墻規(guī)則
編寫腳本文件——》開機(jī)時(shí)調(diào)用/etc/rc.local
防火墻規(guī)則的腳本化:
定義基本變量
必要時(shí)歹茶,內(nèi)核模塊和運(yùn)行參數(shù)調(diào)整
防火墻策略設(shè)計(jì):
各鏈的默認(rèn)規(guī)則
按表夕玩,鏈組織的具體規(guī)則
運(yùn)行環(huán)境處理
變量及模塊整理,
方便腳本的維護(hù)惊豺,重用燎孟,移植
必要的功能模塊預(yù)備
!/bin/bash
INET_IF=eth1
INET_IP=174.16.16.1
LAN_NET=192.168.4.0/24
LAN_WWW_IP=192.168.4.2
IPT=/sbin/iptables
... ...
/sbin/modprobe -a nf_nat_ftp nf_conntrack_ftp
... ...
主機(jī)型防火墻腳本
以filer表的INPUT鏈為主OUTPUT鏈次之
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
... ...
$IPT -P INPUT -p tcp --dport 8 -j ACCEPT
$IPT -P INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
... ...
網(wǎng)絡(luò)型防火墻腳本
以filter表的FORWRD鏈為主,網(wǎng)關(guān)上會(huì)用到nat表
$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
$IPT -A FORWARD -d $LAN_NET -i $INET_IF -m state --state ESTABLISHED,RELATED -j ACCEPT