linux iptables扩展,脚本防火墙
netfileter:防火墻內(nèi)核態(tài)
ip tables:防火墻用戶態(tài)(管理防火墻規(guī)則)
iptables的表和鏈
表包括不同的鏈,鏈包括大量的規(guī)則
4個表:
raw,mangle,nat,filter
5種鏈(一般在nat表里用):
INPUT(入站數(shù)據(jù)),OUTPUT(出站數(shù)據(jù)),FORWARD(轉發(fā)數(shù)據(jù)),
PREROUTING(路由選擇前),POSTROUTING(路由選擇后)
iptables基本用法:
iptables -t 表名 -選項 鏈名 條件匹配 -j 操作類型
常見選項:
-A:在鏈的末尾追加一條規(guī)則
-I:在鏈的開頭(或指定序號)插入一條規(guī)則
-L:列出所有的規(guī)則條目
-n:以數(shù)字形式顯示地址,端口等信息
--line-numbers:查看規(guī)則時,顯示規(guī)則的序號
-D:刪除鏈內(nèi)指定序號(或內(nèi)容)的一條規(guī)則
-F:清空所有的規(guī)則
-P:為指定的鏈設置默認規(guī)則
條件匹配類型:
通用匹配:獨立使用
-p:指定協(xié)議
-s:源地址
-d:目標地址
-i:入站網(wǎng)卡
-o:出站網(wǎng)卡
隱含匹配:依賴于某種通用匹配
--sport:源端口
--dport:目標端口
--icmp-type:
--tcp-flags:
擴展匹配:-m 模塊名
擴展條件的方法
前提條件:有對應的防火墻模塊支持
基本用法:
-m 擴展模塊 --擴展條件 條件值
示例:-m mac --mac-source 00:0C:29:74:BE:21
簡化服務開啟規(guī)則
一條規(guī)則開放多個端口
比如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范圍封鎖主機:
ssh登陸的ip范圍控制
允許192.168.1.10-192.168.4.20登陸
靜止從192.168.4.0/24網(wǎng)段其他主機登陸
[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表典型應用
SNAT源地址轉換(Source Network Address Translation)
修改數(shù)據(jù)包的源地址
僅用于nat表的POSTROUTING鏈
DNAT目標地址轉換(Destination Network Address Translation)
修改數(shù)據(jù)包目標地址(ip,端口)
僅用于nat表的PREROUTING,OUTPUT鏈
配置SNAT共享上網(wǎng)
配置的關鍵策略:
選擇出去的包,針對來自局域網(wǎng),
即將從外網(wǎng)接口發(fā)出去的包,將源ip地址修改為網(wǎng)關的公網(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地址)
地址偽裝策略
共享動態(tài)公網(wǎng)ip地址實現(xiàn)上網(wǎng):
主要針對外網(wǎng)接口ip地址不固定的情況,
將SNAT改為MASQUERADE即可
對于ADSL寬帶撥號連接,網(wǎng)絡接口可寫為ppp+
iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -o eth1 -j MASQUERADE
——————————————————————————————————————————————————————
案例準備:
gw1:192.168.4.1 174.16.16.1
svr:192.168.4.2
pc174.16.16.120
在svr上準備dns服務,web服務,網(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主機能夠訪問internet,比如SNAT
linux網(wǎng)關服務器開啟ip路由轉發(fā),將web域名解析為網(wǎng)關的外網(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地址轉換)
[root@gw1 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1(開啟路由轉發(fā))
發(fā)布web,dns服務器
配置的關鍵策略:
在路由選擇之前,針對從外網(wǎng)接口收到的
訪問本機公網(wǎng)地址tcp 80端口的數(shù)據(jù)包
將其目標地址修改位于內(nèi)網(wǎng)的web主機的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服務地址)
發(fā)布ssh服務器
執(zhí)行ssh -p 2345 174.16.16.1時,實際登陸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訪問響應慢的問題,sshd會嘗試解析客戶機的fqdn,設置了一個不可用的dsn
ssh會gss驗證方式
修改客戶端的/etc/ssh/ssh_config文件,禁用gss認證
GSSAPIAuthentication no(改為no)
發(fā)布ftp服務器
注意事項:加載模塊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導出/導入規(guī)則
使用iptables-save導出
[root@gw1~]# ipables-save > /root/myiptables.txt(把防火墻規(guī)則導入到自定義的文件夾)
使用iptables-restore導入
[root@gw1~]# iptables-restore < /root/myiptables.txt
開機后自動加載億保存的規(guī)則
[root@gw1~]# iptables-save > /etc/sysconfig/iptables
[root@gw1~]# chkconfig iptables on
————————————————————————————————————————————————————————————————————
防火墻腳本
shell腳本的編寫:
vim建立代碼文件
使用變量
可執(zhí)行語句的編寫【免交互】
添加x權限
針對linux網(wǎng)關編寫腳本,提供SNAT共享上網(wǎng)策略
提供DNAT發(fā)布web,ftp服務的策略,編寫網(wǎng)絡型,主機型防護規(guī)則。
批量設置防火墻規(guī)則
編寫腳本文件——》開機時調(diào)用/etc/rc.local
防火墻規(guī)則的腳本化:
定義基本變量
必要時,內(nèi)核模塊和運行參數(shù)調(diào)整
防火墻策略設計:
各鏈的默認規(guī)則
按表,鏈組織的具體規(guī)則
運行環(huán)境處理
變量及模塊整理,
方便腳本的維護,重用,移植
必要的功能模塊預備
#!/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
... ...
主機型防火墻腳本
以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)絡型防火墻腳本
以filter表的FORWRD鏈為主,網(wǎng)關上會用到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
—————————————————————————————————————————————————————————
?
轉載于:https://www.cnblogs.com/Hydraxx/p/7209702.html
總結
以上是生活随笔為你收集整理的linux iptables扩展,脚本防火墙的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 又想到了模板引擎和前端MVVM框架
- 下一篇: RPC简介