前言
Linux下iptables的设置,设置了它就能够有效地过滤掉相关的数据包从而阻挡相关攻击,感觉这个东西跟安全有很大用处,比如在我们学习的计算机网络知识里面,网络拓扑十分瓜皮,路由器没有过滤数据包的功能,直接就实现路由转发的过程,这样就会对一个LAN造成很大的安全隐患,现在我要更正一下自己的思路,路由器不单单实现转发功能,我现在还把他看成一台可以实现过滤功能的电脑,这样就对它所连接的LAN有保护作用了,但现在一般对于网络防火墙而言很少再使用iptables了,现在一般都用一些大型厂商提供的防火墙。比如华3,深信服之类的,说白了就是牛逼了一点的电脑,但是对于一台服务器而言还是可以设置规则来防止别人拿下服务器的。
命令实现
基本格式
iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
几个注意事项
不指定表名时,默认指filter表
不指定链名时,默认指表内的所有链
除非设置链的默认策略,否则必须指定匹配条件
选项、链名、控制类型使用大写字母,其余均为小写
数据包的常见控制类型
ACCEPT:允许通过
DROP:直接丢弃,不给出任何回应
REJECT:拒绝通过,必要时会给出提示
LOG:记录日志信息,然后传给下一条规则继续匹配
添加新的规则,这里考虑到他的匹配规则必要的时候需要换一下命令
-A:在链的末尾追加一条规则
-I:在链的开头(或指定序号)插入一条规则
iptables -t filter -A INPUT -p tcp -j ACCEPT 直接在最后加入规则 iptables -I INPUT 2 -p icmp -j ACCEPT 这样就是在第二条后面插入规则
删除、清空规则 -D
:删除链内指定序号(或内容)的一条规则 -F
:清空所有的规则
iptables -F 清空所有规则 iptables -D INPUT 3 删除第三条规则
-P
:为指定的链设置默认规则
iptables -t filter -P FORWARD DROP 给FORWARD链默认设置DROP规则
协议匹配:-p
协议名
地址匹配:-s
源地址、-d
目的地址
接口匹配:-i
入站网卡、-o
出站网卡
iptables -A FORWARD -p ! icmp -j ACCEPT 这条命令的意思就是除了icmp协议之外的所有协议都ACCEPT iptables -I INPUT -s 10.20.30.0/24 -j DROP 这条命令的意思就是把来自10.20.30.0这一个网段的包全都丢掉,有效防止了DDOS攻击 iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
上面这三条命令也很有实际意义,假设有人恶意串改了源地址,同时把这个包发送到内网,内网的机子会对这种包做出响应,此时源地址变成目的地址,就会直接在内网里面一个个尝试对应IP从而可以攻击内网的机子,因为这种源IP是内网地址的是不可能出现在互联网上的,理所当然应该禁止
端口匹配:--sport
源端口、--dport
目的端口
TCP标记匹配:--tcp-flags
检查范围 被设置的标记
ICMP类型匹配:--icmp-type
ICMP类型
iptables -A FORWARD -s 192.168.4.0/24 -p udp --dport 53 -j ACCEPT 对于192.168.4.0这个网段的DNS服务开启做相应规则 iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT 禁止FTP iptables -A INPUT -p icmp --icmp-type 8 -j DROP iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
原文:https://www.cnblogs.com/zh718594493/p/12245709.html