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