赞
踩
时间 | 2019/06/25 |
笔者 | 一只会飞的小猴子 |
说明 | 更新中... |
iptables的模板:
Iptables -t {filter,nat} -{A,I,D} {INPUT,FORWORD,OUTPUT} {n} -p {tcp,udp,icmp} {!} -s {192.169.0.1, 192.168.0.0/24,不写代表所有} -d {不写代表防火墙自身} --sport m:n --dport x:y -j {ACCEPT, DROP, REJECT , POSTROUTING , PREROUTING, LOG}
表的作用:容纳各种规则链
表的划分依据:防火墙规则的作用相似
默认包括4个规则表
raw表:确定是否对该数据包进行状态跟踪
mangle表:为数据包设置标记
nat表:修改数据包中的源、目标IP地址或端口
filter表:确定是否放行该数据包(过滤)
常用的就是其中filter表nat表多用于实现ip的转化功能,这里的表功能个人感觉相当于链下面的表功能,每种链都存在这四种表
raw>mangle>nat>filter
规则链之间的默认优先级
入站:PREROUTING>INPUT
出站:OUTPUT>POSTROUTING
转发:PREROUTING>FORWARD>POSTROUTING
规则链内的匹配顺序
按顺序依次检查,匹配即停止(LOG策略例外)
若找不到相匹配的规则,则按该链的默认策略处理,这跟路由转发还是有点区别的
命令 | 说明 | 试图 |
iptables -L -n | 查看本机iptables的设置情况(右边图是没有启动防火墙) | |
iptables -F | 清除预设表filter中的所有规则链的规则 |
|
iptables -X | 清除预设表 filter中的使用者自定链中的规则 |
|
/etc/rc.d/init.d/iptables save | 保存(需要重启才生效) | |
service iptables restart | 重启 | |
iptables -D
| 将指定的链中删除规则 |
|
iptables -P | 修改链的默认设置,如将iptables -P INPUT DROP (将INPUT链设置为DROP) |
|
iptables -t nat -L | 列出所有NAT链中所有规则 |
|
/etc/sysconfig/iptables | 文件配置地址(命令执行需要保存并重启才成功) |
--dport | 指定目标TCP/IP端口 如 –dport 80 |
--sport | 指定源TCP/IP端口 如 –sport 80 |
-p tcp | 指定协议为tcp |
-p icmp | 指定协议为ICMP |
-p udp | 指定协议为UDP |
-j DROP | 拒绝 |
-j ACCEPT | 允许 |
-j REJECT | 拒绝并向发出消息的计算机发一个消息 |
-j LOG | 在/var/log/messages中登记分组匹配的记录 |
-m mac –mac | 绑定MAC地址 |
-m limit –limit 1/s 1/m | 设置时间策列 |
-s 10.10.0.0或10.10.0.0/16 | 指定源地址或地址段 |
-d 10.10.0.0或10.10.0.0/16 | 指定目标地址或地址段 |
-s ! 10.10.0.0 | 指定源地址以外的 |
iptables -P INPUT DROP | 预设input规则,超出则放弃 控制流入数据(但是执行此命令会导致SSH远程断开,需要配置规则,无需执行此命令) |
iptables -P OUTPUT ACCEPT | 预设output规则,全部接受 |
iptables -P FORWARD DROP | 同理 转发 规则 |
首先添加input链,上述默认预设规则是drop,所以需要添加规则使SSH远程可以登录
iptables -A INPUT -p tcp --dport 22 -j ACCEPT | 远程SSH连接端口 开启22端口(具体端口依据实际情况)
|
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT | 如果预设output规则设置drop 需要设置此规则(具体端口依据实际情况) |
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT | 如果web服务器,output设置drop,同样需要添加一条链(具体端口依据实际情况) |
iptables -A INPUT -p tcp --dport 80 -j ACCEPT | 同理需要web服务器,input设置drop,需要开启端口 80链(具体端口依据实际情况) |
iptables -A INPUT -p tcp --dport 110 -j ACCEPT iptables -A INPUT -p tcp --dport 25 -j ACCEPT | 开启邮件服务器,开启 25、110 端口链(具体端口依据实际情况) |
iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A INPUT -p tcp --dport 20 -j ACCEPT
| 开启FTP服务器,(具体端口依据实际情况) |
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
| 开启DNS服务器 ,(具体端口依据实际情况) |
iptables -A OUTPUT -p icmp -j ACCEPT iptables -A INPUT -p icmp -j ACCEPT
| 运行icmp包通过(ping) |
iptables -A OUTPUT -o lo -p all -j ACCEPT iptables -A INPUT -i lo -p all-j ACCEPT
| 允许loopback 不然会导致DNS无法正常关闭 |
iptables -A OUTPUT -p tcp --sport 9990-j DROP
| 如果output链规则是accept,则需要关闭对于的端口号,防止有些病毒利用此端口 |
iptables -A INPUT -p tcp --dport 9090-j DROP | 如果input链规则是accept,则需要关闭对于的端口号,防止有些病毒利用此端口 |
iptables -A INPUT -s 192.168.0.1 -p tcp --dport 22 -j ACCEPT | 允许固定ip机器进行SSH连接(!191.168.0.1 表示除此IP外) |
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT | 允许 192.168.0.1-255 端的所有ip(删除/ect/sysconfig/iptables 里的其中一行 -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT) |
Iptables -A FORWORD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT Iptables -A FORWORD -i eth1 -o eth0 -j ACCEPT | 在NAT时 FORWORD 规则是DROP我们需要开启转发功能 |
Iptables -A FORWORD -p TCP ! --syn -m state --state NEW -j DROP | 丢弃坏的TCP包 |
Iptables -A FORWORD -f -m limit 100/s --limit-burst 100 -j ACCEPT | 处理ip碎片数量,防止攻击,允许每秒100个 |
Iptables -A FORWORD -p icmp -m limit 1/s --limit-burst 10 -j ACCEPT | 设置icmp包过滤,允许每秒1个包,限制触发条件10个包 |
iptables -A INPUT -m state --state INVALID -j DROP iptables -A OUTPUT -m state --state INVALID -j DROP iptables -A FORWARD -m state --state INVALID -j DROP
| DROP非法连接 |
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT | 对进来的包的状态进行检测。已经建立tcp连接的包以及该连接相关的包允许通过! |
iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT | 允许本地环回接口在INPUT表的所有数据通信 |
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited | 这两条的意思是在INPUT表和FORWARD表中拒绝所有其他不符合上述任何一条规则的数据包。并且发送一条host prohibited的消息给被拒绝的主机。 |
iptables -I INPUT -s 123.45.6.7 -j DROP | 屏蔽单个IP的命令是 |
iptables -I INPUT -s 123.0.0.0/8 -j DROP | 封整个段即从123.0.0.1到123.255.255.254的命令 |
iptables -I INPUT -s 124.45.0.0/16 -j DROP | 封IP段即从123.45.0.1到123.45.255.254的命令 |
iptables -I INPUT -s 123.45.6.0/24 -j DROP | 封IP段即从123.45.6.1到123.45.6.254的命令是 |
指令I是insert指令 但是该指令会insert在正确位置并不像A指令看你自己的排序位置,因此用屏蔽因为必须在一开始就要加载屏蔽IP,所以必须使用I命令加载,然后注意执行/etc/rc.d/init.d/iptables save进行保存后重启服务即可 |
|
iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP
| 防止外网内网IP欺骗 |
iptables -t nat -A PREROUTING -d 211.101.46.253 -j DROP
| 禁止与211.101.46.253的所有连接
|
测试题1:查看ip
测试题2:查看防火墙状态
测试题3:查看规则列表
测试题4:阻止特定ip(192.168.0.1)进行SSH连接
测试题5:删除filter表的output链第3条规则
测试题6:阻止客户端访问服务器8080端口号的访问
测试题7:允许web服务只能被固定端的ip访问
测试题8:只允许192.168.0.3的机器进行SSH连接
测试题9:阻止8080端口被ip(192.168.0.1)客户端访问
测试题10:匹配的规则记录到日志中去
CODE:JAVA |
1、ifconfig 2、/etc/init.d/iptables status 3、iptables -L -n 4、iptables -t filter -A INPUT -p tcp -s 192.168.0.1 --dport 22 -j DROP 5、iptables -D OUTPUT 3 6、iptables -A INPUT -p tcp --dport 8080 -j DROP 7、 iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 80 -j ACCEPT iptables -A INPUT -s x.x.x.x -p tcp --dport 80 -j ACCEPT 9、iptables -A INPUT -p tcp -s 192.168.0.1 --dport 8080-j DROP 10、iptables -A INPUT -P tcp -m mac --mac=mac地址 --dport 22 -j LOG
|
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。