linux就该这么学-8 iptables和firewalld

1 概述

RHEL7中,firewalld取代了iptables防火墙。两者相同点是都是防火墙管理工具,只是配置策略,策略会由内核的netfilter网络过滤器处理,iptables的策略由netfilter处理,firewalld策略由内核nftables包过滤框架处理

2 iptables

2.1 概述

iptables按照从上到下顺序读取策略,如果读到匹配的则执行匹配规则,不继续往下执行

策略 有两种:通与堵

规则 iptables用于处理或过滤流量的策略叫规则,多个规则可组成一个规则链

规则链 根据数据包处理位置分为五种 prerouting, input, output, forward, postrouting

reject和drop区别:reject是直接拒绝,drop是不处理,外界看来这个机器是不存在,因为看不到响应,响应就和它不存在一样

2.1 使用

iptables属于链路层服务

因为iptables是从上到下识别,所以应将优先级高的放前面

查看iptables策略 iptables -L

8300914d061e422786ba1d14c98bed81.png

清空iptables策略 iptables -F

修改INPUT规则链默认为拒绝 iptables -P INPUT DROP,注意,丢弃要是DROP,不能是REJECT

允许ICMP流量进入(即ping时发的流量) iptables -I INPUT -p icmp -j ACCEPT   -I表示插入规则,后面跟规则链、-p表示协议,-P表示target/chain,后面跟规则链和目标两个参数,-j表示目标,目标就是指ACCEPT/DROP这种

iptables无任何策略时,可ping通主机,添加drop策略后就ping不通了

 e8b1ff9945674fa6806852981e3fcfad.png

6a993140215a4770bc6e4804f222e257.png

 删除INPUT中刚加入的规则,并将默认规则设为允许

iptables -D INPUT 1

iptables -P INPUT ACCEPT

设置INPUT只允许指定网段主机访问本机22端口,拒绝其他流量

iptables -I INPUT -s 192.168.1.3/24 -p tcp --dport 22 -j ACCEPT 注意,应该白名单,所以吧允许规则放前面,未匹配的均不允许

规则设定前,网段主机可以正常ssh目标主机

1d4d6b2257764452bdd3054c91def801.png

规则设定后,网段内主机无法ssh目标主机,一直没响应,如果是reject,则ssh直接被拒绝

16e9845504c444e18a3d2537cf7bf472.png

 给INPUT添加拒绝所有人访问本机12345端口的规则

iptables -I INPUT -p tcp --dport 12345 -j REJECT

iptables -I INPUT -p udp --dport 12345 -j REJECT

给INPUT添加拒绝192.168.80.134主机访问本机80端口的策略

iptables -I INPUT -p tcp -s 192.168.80.134 --dport 80 -j REJECT

给INPUT添加拒绝所有主机访问本机1000-1024端口的策略

iptables -A INPUT -p tcp --dport 1000:1024 -j REJECT

iptables -A INPUT -p udp --dport 1000:1024 -j REJECT

注意,下次重启主机,iptables规则会失效,可以使用iptables-save永久保存规则

如果是RHEL567,保存命令未service iptables save

3 firewalld

firewall有命令行和GUI

生效也有runtime和永久生效,命令行如果要永久生效,加入参数--permanent,加入永久生效规则得重启才能生效,如果需要立即生效,执行命令firewall-cmd --reload

和iptables相比,规则不是自上而下识别,而是有优先级,例如富规则比一般规则优先

3.1 使用

1 查看firewalld服务当前使用区域 firewall-cmd --get-default-zone

8cd631e49a1f4c2c98763338fcd755e6.png

2 查询指定网卡在firewalld服务中绑定的区域 firewall-cmd --get-zone-of-interface=ens33

c0adb01f0a154126aa6aae86ff16a5a3.png

 3 吧网卡默认区域该文external,使其永久生效 firewall-cmd --permanent --zone=external --change-interface=ens33

4 吧firewalld服务默认区域改为public firewall-cmd --set-default-zone=public

5 启动或关闭firewalld防火墙服务的应急状态模式 firewall-cmd --panic-on/firewall-cmd --panic-off

a057b48373cd4079b55b199a3d20b3df.png

 6 查询ssh和https协议流量是否允许通过

firewall-cmd --zone=public --query-service=ssh

firewall-cmd --zone=public --query-service=https

8e0e45b0ac224da0b7e1ff50066e8d3b.png

7 把https协议流量设为永久允许并立即生效

firewall-cmd --zone=public --permanent --add-service=https

firewall-cmd --reload 

如果不重启或立即生效,改完再查会发现没改过来

8 把http协议改为永久拒绝,立即生效

firewall-cmd --zone=public --permanent --remove-service=http

firewall-cmd --reload

9 把8080和8081设为允许,仅当前生效

firewall-cmd --zone=public --add-port=8080-8081/tcp

firewall-cmd --zone=public --list-ports

10 把访问本机888端口流量转发到22端口,永久生效

firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.1.1

firewall-cmd --reload

可正常ssh

c1c1682a98814556a9b497b2eef97b2f.png

 11 富规则设定,拒绝某网段所有请求

firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.80.0/24" service name="ssh" reject"

3.2 图形管理工具

4 服务访问控制列表

此处介绍的是tcpwrapper

看服务是否支持tcpwrapper:ldd service_name|grep wrapper

cfc9f3f4ea0548609d92615b27cec2bf.png

设置tcpwrapper的话,编辑/etc/下的hosts.allow/hosts.deny就好了,先匹配allow,没匹配到再匹配deny

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值