linux 防火墙 firewalld 查看状态、新增端口、删除端口
firewall简介
linux firewall有source、网卡、zone等概念,source就是源ip;网卡就是流量源网卡;zone就是规则的集合,分为家庭网络、工作网络、公共网络,不同的zone对应的rule不一样,默认zone是public;在zone内除了源ip、端口外还有较复杂的rich-rule复杂规则,比如可以限制只有某网段访问某接口;firewall在系统中体现为firewalld服务、firewall-cmd是firewall的命令入口,就像systemctl就是systemd的命令入口。
firewalld vs iptables
firewalld、iptables、ebtables,默认是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables等。
firewalld跟iptables比起来至少有两大好处:
1、firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效;
2、firewalld在使用上要比iptables人性化很多,即使不明白“五张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能
firewalld和iptables service 之间最本质的不同是:
1、FirewallD 使用区域和服务而不是链式规则。 2、它动态管理规则集,允许更新规则而不破坏现有会话和连接。 iptables在
/etc/sysconfig/iptables 中储存配置,而 firewalld将配置储存在
/usr/lib/firewalld/(不建议修改,后续升级会覆盖该区域) 和 /etc/firewalld/
(这些文件将会覆盖默认配置)中的各种XML文件里.
iptables每一个单独更改意味着清除所有旧有的规则并/etc/sysconfig/iptables里读取所有新的规则,然而使用
firewalld却不会再创建任何新的规 则;仅仅运行规则中的不同之处。
因此,firewalld可以在运行时间内,改变设置而不丢失现行连接。
优先级
- 源ip
- 网卡
- zone
优先级从上往下依次降低,源ip需要配置在zone中,同一个源ip只能分配在一个zone中,配置在多个zone,后边的配置会覆盖前边的配置;如果未给网卡绑定zone,则使用默认zone,否则使用指定zone;zone中有开放端口、ip、rich rules。比如一个源ip请求来了,匹配到源ip,则使用匹配到源ip的zone;否则,使用网卡绑定的zone,如果未绑定zone,则使用默认zone;
firewall-cmd命令介绍
firewall-cmd [选项] [子命令] [参数]
- 选项:如 --permanent、–zone 等,用于指定作用范围或模式。
- 子命令:如 --add-port、–list-all 等,表示具体的操作。
- 参数:如端口号、协议、服务名等,用于指定子命令的具体参数。
firewall-cmd是firewalld服务的命令入口。
查看防火墙状态
- 查看firewalld服务状态,
systemctl status firewalld - 查看防火墙状态,
firewall-cmd --state
源ip
源ip,也就是通常意义上的白名单,比如,信任某网段或者某ip,
- firewall-cmd --permanent --zone=public --add-source=192.168.100.0/24 (允许某网段)
- firewall-cmd --permanent --zone=public --add-source=192.168.222.123/32 (允许来源某ip)
网卡
- 设置默认zone,
firewall-cmd --set-default-zone=public - 查看网卡,
firewall-cmd --get-zone-of-interface=en7s0 - 给指定网卡设置zone,
firewall-cmd --zone=public --add-interface=en7s0 - 针对网卡更改zone,
firewall-cmd --zone=public --change-interface=en7s0 - 针对网卡删除zone,
firewall-cmd --zone=public --remove-interface=en7s0 - 查看系统所有网卡所在的zone,
firewall-cmd --get-active-zones
开放端口
- 查看开放的端口
firewall-cmd --list-ports - 开放端口,开放某端口是普通的规则
sudo firewall-cmd --permanent --zone=public --remove-port=8080/tcp
rich rules
- 查看开放的rich rule
firewall-cmd --rich-rules - 查看开放的所有
firewall-cmd --list-all - rich rules,限制某网段可访问某端口是复杂规则
- 限制只有某网段可访问某端口
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.0/16" port protocol="tcp" port="8080" accept'
- 删除,必须要与新增规则一样
firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.0.0/16" port protocol="tcp" port="8080" accept'
- 限制只有某网段可访问某端口
除了以上,还可以对某个service放行,也就是systemd中的service,比如httpd、sshd
重新加载配置
只要更改了配置,都要重新加载方能生效
firewall-cmd --reload
更多推荐
所有评论(0)