您好,登錄后才能下訂單哦!
配置iptables防火墻
管理iptables規則
1、 拒絕所有入站協議的數據包
[root@s2 ~]# iptables -P INPUT DROP
2、 允許系統管理員從192.168.10.100/24 網段使用SSH方式遠程防火墻主機
[root@s2 ~]# iptables -A INPUT -p tcp --dport 22 -s 192.168.10.100/24 -j ACCEPT
3、 查看filter表INPUT鏈中的所有規則,同時顯示各條規則的順序號
[root@s2 ~]# iptables -L INPUT --line-numbers
4、 查看filter表各鏈中所有規則的相信信息,同時以數字的形式顯示地址和端口信息
[root@s2 ~]# iptables –vnL注意-L選項放在最后,否則會將vn當成鏈名
Chain INPUT (policy DROP 47 packets, 10544 bytes)
pkts bytes target prot opt in out source destination
732 51752 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 566 packets, 57384 bytes)
pkts bytes target prot opt in out source destination
Chain RH-Firewall-1-INPUT (0 references)
pkts bytes target prot opt in out source destination
5、 刪除filter表INPUT鏈中的第二條規則
[root@s2 ~]# iptables -D INPUT 2
6、 清空filter表、nat表、mangle表各鏈中的所有規則
[root@s2 ~]# iptables –F不指定表名時默認清空filter表
[root@s2 ~]# iptables -t nat -F
[root@s2 ~]# iptables -t mangle -F
7、 將filter表中FORWARD規則鏈的默認策略設為DROP
[root@s2 ~]# iptables -t filter -P FORWARD DROP
8、 將filter表中OUTPUT規則鏈的默認策略設為ACCEPT
[root@s2 ~]# iptables -P OUTPUT ACCEPT
9、 獲得iptables相關選項用法的幫助信息
查看iptables命令中關于icmp協議的幫助信息
[root@s2 ~]# iptables -p icmp –h
10、在raw表中新增一條自定義的規則鏈,鏈名為TCP_PACKETS
[root@s2 ~]# iptables -t raw -N TCP_PACKETS
[root@s2 ~]# iptables -t raw -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain TCP_PACKETS (0 references)
target prot opt source destination
11、清空用戶自定義的所有規則鏈
[root@s2 ~]# iptables -t raw -X
條件匹配
1、通用(general)條件匹配
拒絕進入防火墻的所有icmp協議數據包
[root@s2 ~]# iptables -I INPUT -p icmp -j REJECT
2、允許防火墻轉發除icmp協議以外的所有數據包(使用驚嘆號! 可以將條件相反)
[root@s2 ~]# iptables -A FORWARD -p ! icmp -j ACCEPT
[root@s2 ~]# iptables -L FORWARD
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT !icmp -- anywhere anywhere
3、拒絕轉發來自192.168.1.11主機的數據,允許轉發來自192.168.0.0/24網段的數據
[root@s2 ~]# iptables -A FORWARD -s 192.168.1.11 -j REJECT
[root@s2 ~]# iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
4、丟棄從外網接口(eth2)進入防火墻本機的源地址為私網
[root@s2 ~]# iptables -A INPUT -i eht1 -s 192.168.0.0/24 -j DROP
5、封鎖某個IP網段,設置兩小時后解鎖
[root@s2 ~]# iptables -I INPUT -s 192.168.1.0/24 -j DROP
[root@s2 ~]# iptables -I FORWARD -s 192.168.1.0/24 -j DROP
[root@s2 ~]# at now +2 hours設置2小時后解鎖
at> iptables -D INPUT 1
at> iptables -D FORWARD 1<EOT>
job 3 at 2010-04-25 19:52此處按Ctrl+D組合鍵提交任務
6、允許本機開放從TCP端口20~1024提供的應用服務
[root@s2 ~]# iptables -A INPUT -p tcp --dport 20:1024 -j ACCEPT
[root@s2 ~]# iptables -A OUTPUT -p tcp --dport 20:1024 -j ACCEPT
7、作為網關使用時,允許轉發來自192.168.0.0/24局域網段的DNS解析請求數據包
[root@s2 ~]# iptables -A FORWARD -s 192.168.0.0/24 -p udp --dport 53 -j ACCEPT
[root@s2 ~]# iptables -A FORWARD -d 192.168.0.0/24 -p udp --sport 53 -j ACCEPT
--dport 目標端口 --sport 源端口
8、拒絕從外網接口(eth2)直接訪問防火墻本機的數據包,但是允許響應防火墻TCP請求的數據包進入
[root@s2 ~]# iptables -I INPUT -i eth2 -p tcp --tcp-flags SYN,RST,ACK SYN -j REJECT
[root@s2 ~]# iptables -I INPUT -i eth2 -p tcp --tcp-flags ! SYN,RST,ACK SYN -j ACCEPT
--tcp-flags 用于查找數據包的TCP標記位
9、禁止其他主機ping防火墻主機,但是允許從防火墻上ping其他主機(允許接受ICMP回應數據)
[root@s2 ~]# iptables -A INPUT -p icmp --icmp-type Echo-Request -j DROP
[root@s2 ~]# iptables -A INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT
[root@s2 ~]# iptables -A INPUT -p icmp --icmp-type destination-Unreachable -j ACCEPT
Echo-Request 數值代碼為8 Echo-Reply 數值代碼為0 destination-Unreachable 數值代碼為3,分別對應ICMP協議的請求、回顯、目標不可達數據
10、禁止轉發來自MAC地址為00-50-56-C0-00-01的主機的數據包。
[root@s2 ~]# iptables -A FORWARD -m mac --mac-source 00:50:56:C0:00:01 -j DROP
-m 模塊關鍵字的形式調用顯示匹配
11、允許防火墻本機對外開放TCP端口20、21、25、110以及被動模式FTP端口1250~1280
[root@s2 ~]# iptables -A INPUT -p tcp -m multiport --dport 20,21,25,11,1250:1280 -j ACCEPT--dports 端口列表 或 –sports端口列表
12、禁止轉發源IP地址為192.168.1.20~192.168.1.199的TCP數據包
[root@s2 ~]# iptables -A INPUT -p tcp -m multiport --dport 20,21,25,11,1250:1280 -j ACCEPT--src-range IP地址范圍 或者 --dst-rangeIP地址范圍
13、禁止轉發與正常TCP連接無關的非—syn請求數據包(如網絡中可能存在的一些非法***數據包)
[root@s2 ~]# iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP state 檢查數據包連接狀態 常見的數據包狀態主要包括NEW(與任何連接無關)、ESTABLISHED(響應請求或者已建立連接的)和RELATED(與已有連接有相關性的,如FTP數據連接)
14、拒絕訪問防火墻的新數據包,但允許響應連接或已有連接相關的數據包
[root@s2 ~]# iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
15、在服務器中設置防火墻策略,只開放本機的Web服務(80端口)、FTP服務(20、21端口、20450、20480),放行外部主機發往服務器其他端口的應答數據包,將其他入站數據包均予以丟棄處理
[root@s2 ~]# iptables -I INPUT -p tcp -m multiport --dport 20,21,80 -j ACCEPT
[root@s2 ~]# iptables -I INPUT -p tcp --dport 20450:20480 -j ACCEPT
[root@s2 ~]# iptables -I INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
[root@s2 ~]# iptables -P INPUT DROP將默認策略設為DROP
數據包控制
1、對于嘗試通過SSH方式登錄防火墻主機的訪問數據,記錄日志信息并禁止其他訪問
iptables -I INPUT -p tcp --dport 22 -j DROP
iptables -I INPUT -p tcp --dport 22 -j LOGLOG 在、var/log/messages文件中記錄日志信息
2、為了避免日志記錄過于頻繁,通常結合LIMIT方式顯示匹配(-嗎limit)對日志寫入頻繁進行限制。以下規則用于將日志的頻繁限制為平均三次/分鐘,允許的峰值為八次
[root@s2 ~]# iptables -R INPUT 1 -p tcp --dport 22 -m limit --limit 3/minute --limit-burst 8 -j LOG
3、自定義一個新的鏈MyLAN1,轉發自/至192.168.1.0、24網段的數據包均較給該鏈中的規則處理
[root@s2 ~]# iptables -t filter -N MyLAN1
[root@s2 ~]# iptables -A FORWARD -s 192.168.1.0/24 -j MyLAN1
[root@s2 ~]# iptables -A FORWARD -d 192.168.1.0/24 -j MyLAN1
[root@s2 ~]# iptables -A MyLAN1 -p icmp -j DROP
SNAT(源地址轉換)修改數據包的源IP地址
DNAT(目標地址轉換)修改數據包的目標IP地址
使用防火墻腳本
1、直接執行iptables-save命令時,將會把當前設置的防火墻信息輸出到終端
[root@s2 ~]# iptables-save
# Generated by iptables-save v1.3.5 on Sun Apr 25 19:41:15 2010
*filter
:INPUT DROP [456:29475]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1855:180828]
:MyLAN1 - [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -p tcp -m tcp --dport 22 -m limit --limit 3/min --limit-burst 8 -j LOG
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A FORWARD -s 192.168.1.0/255.255.255.0 -j MyLAN1
-A FORWARD -d 192.168.1.0/255.255.255.0 -j MyLAN1
-A MyLAN1 -p icmp -j DROP
COMMIT
# Completed on Sun Apr 25 19:41:15 2010
2、將當前調好的iptables規則保存到配置文件,并通過iptables服務自動加載
[root@s2 ~]# iptables-save > /etc/sysconfig/iptables
[root@s2 ~]# service iptables restart
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
Applying iptables firewall rules: [ OK ]
Loading additional iptables modules: ip_conntrack_netbios_ns [ OK ]
[root@s2 ~]# chkconfig --level 35 iptables on
3、從保存的規則配置文件中導入iptables規則
[root@s2 ~]# [root@s2 ~]# chkconfig --level 35 iptables on
編寫防火墻腳本
1、在腳本文件中預先將防火墻主機的IP地址、網絡接口、局域網地址等定義為變量。
#!/bin/bash
INET_IP="214.16.18.20"
INET_IF="eth2"
LAN_IP="192.168.0.1"
LAN_IF="eth0"
2、在腳本文件中預先加載iptables需要用到的內核模塊
/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_nat
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_raw
/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_iprange
/sbin/modprobe xt_tcpudp
/sbin/modprobe xt_state
/sbin/modprobe xt_multiport
/sbin/modprobe xt_mac
/sbin/modprobe xt_limit
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_nat_irc
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc
3開啟路由轉發功能
在腳本文件中開啟防火墻主機的路由轉發功能
[root@s2 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@s2 ~]# cat /proc/sys/net/ipv4/ip_forward
1
通過修改/etc/sysctl.conf文件中的方式開啟防火墻主機的路由轉發功能。
net.ipv4.ip_forward = 1
4、用戶設置的iptables規則
刪除用戶的自定義的鏈,清空以保存的規則,將filter表的默認策略恢復為允許
/sbin/iptables -X
/sbin/iptables -t nat -X
/sbin/iptables -t mangle -X
/sbin/iptables -t raw -X
/sbin/iptables -F
/sbin/iptables -t nat -F
/sbin/iptables -t mangle -F
/sbin/iptables -t raw -F
/sbin/iptables -p INPUT ACCEPT
/sbin/iptables -p OUTPUT ACCEPT
/sbin/iptables -p FORWARD ACCEPT
上機實驗部分
編寫iptables腳本實現IP地址、端口過濾
1、將iptables的filter表中INPUT、FORWARD鏈的缺省策略設為DROP
[root@s2 ~]# iptables -P INPUT DROP
[root@s2 ~]# iptables -P FORWARD DROP
2、
(1)、允許從Internet訪問網關服務器的指定端口,并記錄訪問日志沒15分鐘記錄一次
[root@s2 ~]# iptables -A INPUT -p tcp --dport 22 -s 201.12.13.14/24 -j ACCEPT
[root@s2 ~]# iptables -I INPUT -p tcp --dport 22 -m limit --limit 15/minute -j LOG
(2)、允許來自內網IP為:192.168.1.5/24的主機訪問網關的22號端口
[root@s2 ~]# iptables -A INPUT -p tcp --dport 22 -s 192.168.1.5/24 -j ACCEPT
(3)、允許MAC地址為00:0C:27:30:4E:5D的主機訪問網關的22號端口
[root@s2 ~]# iptables -A INPUT -p tcp --dport 22 -m mac --mac-source 00:0C:27:30:4E:5D -j ACCEPT
(4)、僅允許局域網主機(LAN1:192.168.1.0/24)訪問3128端口的代理服務
[root@s2 ~]# iptables -A INPUT -p tcp --dport 3128 -s 192.168.1.0/24 -j ACCEPT
(5)、允許局域網主機訪問DNS服務器
[root@s2 ~]# iptables -A FORWARD -s 192.168.1.5/24 -d 192.168.2.2/24 -p udp --dport 53 -j ACCEPT
[root@s2 ~]# iptables -A FORWARD -s 192.168.2.2/24 -d 192.168.1.5/24 -p udp --dport 53 -j ACCEPT
3、開啟路由轉發
/etc/sysctl.conf
net.ipv4.ip_forward = 1
重新加載/etc/sysctl.conf文件中的sysctl配置
[root@s2 ~]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
4、編寫腳本
net_ip="201.12.13.1/24"
inet_if="eth0"
inet2_ip="192.168.2.1"
inet2_if="eth2"
yuan_ip="201.12.13.14/24"
lan_ip="192.168.1.0/24"
lan_mac="00:0C:27:30:4E:5D"
dns="192.168.2.2/24"
/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_nat
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_raw
/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_iprange
/sbin/modprobe xt_tcpudp
/sbin/modprobe xt_state
/sbin/modprobe xt_multiport
/sbin/modprobe xt_mac
/sbin/modprobe xt_limit
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_nat_irc
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -A INPUT -p tcp --dport 22 -s $yuan_ip -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 22 -m limit --limit 15/minute -j LOG
/sbin/iptables -A INPUT -p tcp --dport 22 -s $lan_ip -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 22 -m mac --mac-source $lan_mac -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 3128 -s $lan_ip -j ACCEPT
/sbin/iptables -A FORWARD -s $lan_ip -d $dns -p udp --dport 53 -j ACCEPT
/sbin/iptables -A FORWARD -s $dns -d $lan_ip -p udp --dport 53 -j ACCEPT
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。