firewalld防火墙的基本使用

 

firewalld和iptables的区别:

在Centos7里有几种防火墙共存:firewalld、iptables、ebtables,默认是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables等。

 

firewalld跟iptables比起来优点:

1、firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效;

2、firewalld在使用上要比iptables人性化很多,即使不明白“五张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能。

 

缺点:

firewalld跟iptables比起来,不好的地方是每个服务都需要去设置才能放行,因为默认是拒绝。

而iptables里默认是每个服务是允许,需要拒绝的才去限制。

 

区别可如图大概看出:

 

注意:

iptables与firewalld都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具而已,或者说,它们只是一种服务。

iptables服务会把配置好的防火墙策略交由内核层面的netfilter网络过滤器来处理,而firewalld服务则是把配置好的防火墙策略交由内核层面的nftables包过滤框架来处理。

换句话说,当前在Linux系统中其实存在多个防火墙管理工具,旨在方便运维人员管理Linux系统中的防火墙策略,我们只需要配置妥当其中的一个就足够了。

虽然这些工具各有优劣,但它们在防火墙策略的配置思路上是保持一致的。

 

firewall的一个重要的概念:区域管理

通过将网络划分成不同的区域,制定出不同区域之间的访问控制策略来控制不同程序区域间传送的数据流。

例如,互联网是不可信任的区域,而内部网络是高度信任的区域。网络安全模型可以在安装,初次启动和首次建立网络连接时选择初始化。

该模型描述了主机所连接的整个网络环境的可信级别,并定义了新连接的处理方式。有如下几种不同的初始化区域:

阻塞区域(block):任何传入的网络数据包都将被阻止。

工作区域(work):相信网络上的其他计算机,不会损害你的计算机。

家庭区域(home):相信网络上的其他计算机,不会损害你的计算机。

公共区域(public):不相信网络上的任何计算机,只有选择接受传入的网络连接。

隔离区域(DMZ):隔离区域也称为非军事区域,内外网络之间增加的一层网络,起到缓冲作用。对于隔离区域,只有选择接受传入的网络连接。

信任区域(trusted):所有的网络连接都可以接受。

丢弃区域(drop):任何传入的网络连接都被拒绝。

内部区域(internal):信任网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。

外部区域(external):不相信网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。

注:FirewallD的默认区域是public,也是常用的一个区域。

firewalld默认提供了九个zone配置文件:block.xml、dmz.xml、drop.xml、external.xml、 home.xml、internal.xml、public.xml、trusted.xml、work.xml,

他们都保存在“/usr/lib /firewalld/zones/”目录下。

 

配置方法

firewalld的配置方法主要有三种:

firewall-config、firewall-cmd和直接编辑xml文件,其中 firewall-config是图形化工具,firewall-cmd是命令行工具。

而对于linux来说大家应该更习惯使用命令行方式(firewall-cmd)的操作。

 

1、安装firewalld

yum install firewalld firewall-config
 
2、firewalld的基本使用
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld 或者 firewall-cmd --state
开机禁用  : systemctl disable firewalld
开机启用  : systemctl enable firewalld
 
 

3.配置firewalld-cmd

查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
显示状态: firewall-cmd --state
查看所有打开的端口: firewall-cmd --zone=public --list-ports
更新防火墙规则: firewall-cmd --reload
查看区域信息:  firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic
 
 

将接口添加到区域,默认接口都在public

firewall-cmd --zone=public --add-interface=eth0

让内网网卡eth1不受防火墙限制

firewall-cmd --zone=trusted --add-interface=eth1

永久生效再加上 --permanent 然后reload防火墙

 

设置默认接口区域

firewall-cmd --set-default-zone=public

立即生效无需重启

 

查看所有打开的端口:

firewall-cmd --zone=dmz --list-ports

 

 
开启端口(实用)
添加
firewall-cmd --zone=public --add-port=80/tcp --permanent    #(--permanent永久生效,没有此参数重启后失效)
允许UDP协议某个范围的端口访问
firewall-cmd --zone=public --add-port=5060-5059/udp --permanent

 

 
重新载入(使规则生效)
firewall-cmd --reload
查看
firewall-cmd --zone=public --query-port=80/tcp
删除
firewall-cmd --zone=public --remove-port=80/tcp --permanent

 禁ping

firewall-cmd --zone=external --add-icmp-block=echo-request  --permanent

 

管理服务

添加 smtp 服务至 work zone

firewall-cmd --zone=work --add-service=smtp

移除 work zone 中的 smtp 服务

firewall-cmd --zone=work --remove-service=smtp

 

配置 external zone 中的 ip 地址伪装

查看

firewall-cmd --zone=external --query-masquerade

打开伪装

firewall-cmd --zone=external --add-masquerade

关闭伪装

firewall-cmd --zone=external --remove-masquerade

 

配置 public zone 的端口转发

要打开端口转发,则需要先

firewall-cmd --zone=public --add-masquerade

然后转发 tcp 22 端口至 3753

firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=3753

转发 22 端口数据至另一个 ip 的相同端口上

firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.100

转发 22 端口数据至另一 ip 的 2055 端口上

firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.168.1.100

 

IP 封禁

firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' reject"
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.0/24' reject"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4"  source address="192.168.1.101" port port="22" protocol="tcp" accept" 
#该IP只能访问22端口

 (reject 拒绝   accept 允许 删除该规则把 --add-rich-rule 改成 --remove-rich-rule即可)

 

 

补充:

关于Centos7的systemctl,systemctl是服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。

启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed

 

 

 

 

posted @ 2021-10-27 17:35  叮伱格斐呃  阅读(292)  评论(0编辑  收藏  举报
Live2D