iptables命令中则常见的控制类型有:
- ACCEPT:允许通过.
- LOG:记录日志信息,然后传给下一条规则继续匹配.
- REJECT:拒绝通过,必要时会给出提示
- DROP:直接丢弃,不给出任何回应.
规则链则依据处理数据包的位置不同而进行分类:
PREROUTING:在进行路由选择前处理数据包
INPUT:处理入站的数据包
OUTPUT:处理出站的数据包
FORWARD:处理转发的数据包
POSTROUTING:在进行路由选择后处理数据包
Iptables中的规则表:
规则表的先后顺序:raw→mangle→nat→filter
规则链的先后顺序:
入站顺序:PREROUTING→INPUT
出站顺序:OUTPUT→POSTROUTING
转发顺序:PREROUTING→FORWARD→POSTROUTING
iptables的基本参数:
参数 | 作用 |
-P | 设置默认策略:iptables -P INPUT (DROP|ACCEPT) |
-F | 清空规则链 |
-L | 查看规则链 |
-A | 在规则链的末尾加入新规则 |
-I num | 在规则链的头部加入新规则 |
-D num | 删除某一条规则 |
-s | 匹配来源地址IP/MASK,加叹号"!"表示除这个IP外。 |
-d | 匹配目标地址 |
-i 网卡名称 | 匹配从这块网卡流入的数据 |
-o 网卡名称 | 匹配从这块网卡流出的数据 |
-p | 匹配协议,如tcp,udp,icmp |
--dport num | 匹配目标端口号 |
--sport num | 匹配来源端口号 |
实例:iptables的filter的配置:
--关闭firewall:
[root@localhost ~]# systemctl stop firewalld.service #停止firewall
[root@localhost ~]# systemctl disable firewalld.service #禁止firewall开机启动
--安装安装iptables防火墙
[root@localhost ~]# yum install iptables-services #安装
--清空已有的规则:
iptables -F iptables -X iptables -Z
--配置允许SSH登陆端口进入
iptables -A INPUT -p tcp -s 192.168.0.0/24 -j ACCEPT
--允许所有的ping操作
iptables -A INPUT -p tcp -s 192.168.0.0/24 -j ACCEPT
--允许本机lo通信
iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT
--设置默认的访问规则
iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT
--允许关联的状态包通过
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
--开放特定的端口,以80为例
iptables -A INPUT -p tcp --dport 80 -j ACCEP
--保存配置
service iptables save
--重启
systemctl restart iptables.service
--设置开机自启动
systemctl enable iptables.service
# iptables -I INPUT -p tcp --dport 80 -j DROP
#
iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 80 -j ACCEPT
# iptables -I
INPUT -s 211.123.16.123/24 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 9889 -j DROP
iptables -I INPUT
-s 192.168.1.0/24 -p tcp --dport 9889 -j ACCEPT
如果用了NAT转发记得配合以下才能生效
iptables -I FORWARD -p tcp --dport 80 -j DROP
iptables -I FORWARD -s
192.168.1.0/24 -p tcp --dport 80 -j ACCEPT
常用的IPTABLES规则如下:
只能收发邮件,别的都关闭
iptables -I Filter -m mac --mac-source
00:0F:EA:25:51:37 -j DROP
iptables -I Filter -m mac --mac-source
00:0F:EA:25:51:37 -p udp --dport 53 -j ACCEPT
iptables -I Filter -m mac
--mac-source 00:0F:EA:25:51:37 -p tcp --dport 25 -j ACCEPT
iptables -I Filter
-m mac --mac-source 00:0F:EA:25:51:37 -p tcp --dport 110 -j ACCEPT
IPSEC NAT 策略
iptables -I PFWanPriv -d 192.168.100.2
-j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 80 -d $INTERNET_ADDR
-j DNAT --to-destination 192.168.100.2:80
iptables -t nat -A PREROUTING -p tcp --dport 1723 -d $INTERNET_ADDR -j DNAT --to-destination 192.168.100.2:1723
iptables -t nat -A PREROUTING -p udp --dport 1723 -d $INTERNET_ADDR -j DNAT --to-destination 192.168.100.2:1723
iptables -t nat -A PREROUTING -p udp --dport 500 -d $INTERNET_ADDR -j DNAT --to-destination 192.168.100.2:500
iptables -t nat -A PREROUTING -p udp --dport 4500 -d $INTERNET_ADDR -j DNAT --to-destination 192.168.100.2:4500
FTP服务器的NAT
iptables -I PFWanPriv -p tcp --dport 21 -d
192.168.100.200 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 21 -d
$INTERNET_ADDR -j DNAT --to-destination 192.168.100.200:21
只允许访问指定网址
iptables -A Filter -p udp --dport 53 -j
ACCEPT
iptables -A Filter -p tcp --dport 53 -j ACCEPT
iptables -A Filter
-d www.3322.org -j ACCEPT
iptables -A Filter -d img.cn99.com -j
ACCEPT
iptables -A Filter -j DROP
开放一个IP的一些端口,其它都封闭
iptables -A Filter -p tcp --dport
80 -s 192.168.100.200 -d www.pconline.com.cn -j ACCEPT
iptables -A Filter -p
tcp --dport 25 -s 192.168.100.200 -j ACCEPT
iptables -A Filter -p tcp --dport
109 -s 192.168.100.200 -j ACCEPT
iptables -A Filter -p tcp --dport 110 -s
192.168.100.200 -j ACCEPT
iptables -A Filter -p tcp --dport 53 -j
ACCEPT
iptables -A Filter -p udp --dport 53 -j ACCEPT
iptables -A Filter
-j DROP
多个端口
iptables -A Filter -p tcp -m multiport
--destination-port 22,53,80,110 -s 192.168.20.3 -j REJECT
连续端口
iptables -A Filter -p tcp -m multiport
--source-port 22,53,80,110 -s 192.168.20.3 -j REJECT iptables -A Filter -p tcp
--source-port 2:80 -s 192.168.20.3 -j REJECT
指定时间上网
iptables -A Filter -s 10.10.10.253 -m time
--timestart 6:00 --timestop 11:00 --days Mon,Tue,Wed,Thu,Fri,Sat,Sun -j
DROP
iptables -A Filter -m time --timestart 12:00 --timestop 13:00 --days
Mon,Tue,Wed,Thu,Fri,Sat,Sun -j ACCEPT
iptables -A Filter -m time --timestart
17:30 --timestop 8:30 --days Mon,Tue,Wed,Thu,Fri,Sat,Sun -j ACCEPT
禁止多个端口服务
iptables -A Filter -m multiport -p tcp --dport
21,23,80 -j ACCEPT
将WAN 口NAT到PC
iptables -t nat -A PREROUTING -i
$INTERNET_IF -d $INTERNET_ADDR -j DNAT --to-destination 192.168.0.1
将WAN口8000端口NAT到192。168。100。200的80端口
iptables -t nat
-A PREROUTING -p tcp --dport 8000 -d $INTERNET_ADDR -j DNAT --to-destination
192.168.100.200:80
MAIL服务器要转的端口
iptables -t nat -A PREROUTING -p tcp
--dport 110 -d $INTERNET_ADDR -j DNAT --to-destination
192.168.100.200:110
iptables -t nat -A PREROUTING -p tcp --dport 25 -d
$INTERNET_ADDR -j DNAT --to-destination 192.168.100.200:25
只允许PING 202。96。134。133,别的服务都禁止
iptables -A Filter -p
icmp -s 192.168.100.200 -d 202.96.134.133 -j ACCEPT
iptables -A Filter -j
DROP
禁用BT配置
iptables –A Filter –p tcp –dport 6000:20000 –j
DROP
禁用QQ防火墙配置
iptables -A Filter -p udp --dport ! 53 -j
DROP
iptables -A Filter -d 218.17.209.0/24 -j DROP
iptables -A Filter -d
218.18.95.0/24 -j DROP
iptables -A Filter -d 219.133.40.177 -j DROP
基于MAC,只能收发邮件,其它都拒绝
iptables -I Filter -m mac --mac-source
00:0A:EB:97:79:A1 -j DROP
iptables -I Filter -m mac --mac-source
00:0A:EB:97:79:A1 -p tcp --dport 25 -j ACCEPT
iptables -I Filter -m mac
--mac-source 00:0A:EB:97:79:A1 -p tcp --dport 110 -j ACCEPT
禁用MSN配置
iptables -A Filter -p udp --dport 9 -j
DROP
iptables -A Filter -p tcp --dport 1863 -j DROP
iptables -A Filter -p
tcp --dport 80 -d 207.68.178.238 -j DROP
iptables -A Filter -p tcp --dport 80
-d 207.46.110.0/24 -j DROP
只允许PING 202。96。134。133 其它公网IP都不许PING
iptables -A Filter
-p icmp -s 192.168.100.200 -d 202.96.134.133 -j ACCEPT
iptables -A Filter -p
icmp -j DROP
禁止某个MAC地址访问internet:
iptables -I Filter -m mac
--mac-source 00:20:18:8F:72:F8 -j DROP
禁止某个IP地址的PING:
iptables –A Filter –p icmp –s 192.168.0.1
–j DROP
禁止某个IP地址服务:
iptables –A Filter -p tcp -s 192.168.0.1
--dport 80 -j DROP
iptables –A Filter -p udp -s 192.168.0.1 --dport 53 -j
DROP
只允许某些服务,其他都拒绝(2条规则)
iptables -A Filter -p tcp -s
192.168.0.1 --dport 1000 -j ACCEPT
iptables -A Filter -j DROP
禁止某个IP地址的某个端口服务
iptables -A Filter -p tcp -s 10.10.10.253
--dport 80 -j ACCEPT
iptables -A Filter -p tcp -s 10.10.10.253 --dport 80 -j
DROP
禁止某个MAC地址的某个端口服务
iptables -I Filter -p tcp -m mac --mac-source 00:20:18:8F:72:F8 --dport 80 -j DROP
禁止某个MAC地址访问internet:
iptables -I Filter -m mac
--mac-source 00:11:22:33:44:55 -j DROP
禁止某个IP地址的PING:
iptables –A Filter –p icmp –s 192.168.0.1
–j DROP