防火墙之iptables

防火墙是作为互联网(公网)和外网之间的保护屏障
防火墙之iptables
防火墙的配置有4种方法,只需要掌握其中一种即可,分别是iptables、firewall-cmd、firewall-config、TCP Wrappers
由于iptables是用在RHEL5、RHEL6、RHEL7.0、RHEL7.1版本的linux中,RHEL7.2之后的版本都默认没有iptables
iptables
防火墙匹配规则的特点:
①从上至下匹配,最上面的规则优先级最高
②一旦匹配到某规则,即立即结束匹配工作并去执行匹配项中定义的行为(允许和拒绝),如果没有匹配到策略就去执行默认的策略

在实际的工作中,我们是把防火墙设置成全部拒绝,把需要使用到的规则进行放行
iptables服务把用于处理或过滤流量的策略条目称为规则,多条的规则可以组成一个规则链,规则链主要分为5种:
①INPUT(处理流入数据,最多使用)
②OUTPUT (处理流出数据)
③FORWARD (处理转发数据,二次处理、转发链)
④PREROUTING (路由选择前处理数据)
⑤POSTROUTING (路由选择后处理数据)

规则对应的动作:
ACCEPT 允许
REJECT 拒绝 并 响应
DROP 拒绝 丢包 不响应
LOG 记录日志信息
iptables使用到的参数
注意:防火墙的策略规则的匹配顺序是从上至下的,因此需要把较为严格、优先级较高的策略规则放在前面,以免发生错误。
防火墙之iptables
iptables配置:
1、查看已有的防火墙规则链
2、清空已有的防火墙规则链(针对的是新系统,对于已经部署好的直接略过这步,直接进行添加策略即可)
3、将INPUT链默认设置为拒绝
4、添加允许策略
5、添加拒绝策略
6、删除策略
7、防火墙策略永久生效

实验:
1、查看已有的防火墙规则链
iptables -L
防火墙之iptables
2、清空已有的防火墙规则链
iptables -F
iptables -L
防火墙之iptables
防火墙之iptables
3、把INPUT规则链的默认策略设置成拒绝
iptables -P INPUT DROP
iptables -L

由2可以看到,没有设置的时候,INPUT的默认规则链是ACCEPT
防火墙之iptables
注意1:当把INPUT链设置为默认拒绝,就要往里面写入允许的策略,否则所有流入的数据包都会被默认拒绝掉
注意2:默认拒绝只能是DROP,不能是REJECT
防火墙之iptables
4、添加允许策略规则 -j ACCEPT:
①添加允许使用ping命令的规则,ping所匹配的协议为icmp,使用的参数为-p,-I 是优先级最高,添加到策略之首,-A 优先级最低,添加到策略末尾
iptables -I INPUT -p icmp -j ACCEPT
防火墙之iptables
防火墙之iptables
防火墙之iptables

②添加只允许指定网段的主机访问本机的22端口,拒绝来自其他所有主机的流量
-s 指定网段的主机地址,源地址
-p 协议 22端口的服务是ssh服务
–dport 端口号
做该实验之前先把策略默认设置为ACCEPT,否则如果不是在xshell进行ssh是无法连接上的,另一个原因是还需要添加拒绝的策略
iptables -P INPUT ACCEPT
防火墙之iptables
防火墙之iptables
iptables -I INPUT 2-s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT
防火墙之iptables
在xshell上ssh 192.168.10.20
防火墙之iptables
在terminal下ssh 192.168.10.20
防火墙之iptables
现在再来添加拒绝其他所有主机的流量
-A 优先级低,这边使用-A的原因是:先允许192.168.10.20主机进行访问22端口,在拒绝其他主机访问22端口
iptables -A INPUT -p tcp --dport 22 -j REJECT
防火墙之iptables
注意:防火墙策略规则是按照从上到下的顺序进行匹配的,因此一定要把允许的动作放到拒绝动作的前面,否则所有的流量将被拒绝,导致任何的主机都无法访问到我们的服务
防火墙之iptables
防火墙之iptables
5、删除策略
-D 精准删除,就是要删除第几个就删除第几个
iptables -D INPUT 8
iptables -L
防火墙之iptables
6、添加拒绝策略
①添加拒绝所有人访问本机11111端口
拒绝所有人 不用加参数-s
端口协议有tcp和udp这2种协议,如果没有强调是哪一种,则原则上是将2个协议全部拒绝
iptables -I INPUT -p tcp --dport 11111 -j REJECT
iptables -I INPUT 2 -p udp --dport 11111 -j REJECT
iptables -L
防火墙之iptables
②添加拒绝192.168.10.5主机访问本机80端口(web服务)
80端口协议 tcp
iptables -I INPUT -s 192.168.10.5 -p tcp --dport 80 -j REJRCT
iptables -L
防火墙之iptables
③添加拒绝所有主机访问本机3000-4000端口
iptables -A INPUT -p tcp --dport=3000:4000 -j REJECT
iptables -A INPUT -p udp --dport 3000:4000 -j REJECT
iptables -L
防火墙之iptables
7、防火墙永久生效
默认的情况下是会在系统的下一次重启就会失效,如果想让配置的防火墙策略永久生效,还要执行保存的命令
service iptables save
防火墙之iptables
注意:如果service iptables save命令无法执行,则需先执行yum -y install iptables-services。因为RHEL7.2之后的版本默认情况下是没有安装iptables的服务,如果还想用iptables来配置防火墙,那么也得先执行yum -y install iptables-services
命令总结:
iptables -L
iptables -F
iptables -P INPUT DROP
iptables -P INPUT ACCEPT
iptables -D INPUT 1
iptables -I INPUT -p icmp -j ACCEPT
iptables -I INPUT -s #.#.#.#/24 -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -s #.#.#.# -p tcp --dport 80 -j REJECT
iptables -I INPUT 2 -p tcp --dport 22 -j REJECT
iptables -A INPUT -p tcp —dport 1000:1024 -j REJECT
service iptables save