rhel 7:firewall-cmd工具,firewalld服务
1、区域:
firewalld将网卡对应到不同的区域(zone),通过不同的zone定义了不同的安全等级
trusted :允许所有流量通过
home/internal:仅允许ssh数据通过
work:仅允许ssh,ipp-client,dhcpv6-client数据通过
public:默认区域,仅允许ssh,dhcpv6-client数据通过
external:仅允许ssh数据通过,通过该区域的数据将会伪装(SNAT/DNAT)
dmz:仅允许ssh数据通过
block:任何传入的网络数据包都将被阻止。拒绝所有流量
drop:拒绝所有流量,没有返回回应消息
2、命令详解
firewall-cmd --permanent
--permanent #永久生效的配置参数、资源、端口以及服务等信息
1、域zone相关的命令
--get-default-zone #查询默认的区域名称
--set-default-zone=<区域名称> #设置默认的区域
--get-active-zones #显示当前正在使用的区域与网卡名称
--get-zones #显示总共可用的区域
2、services管理的命令
--add-service=<服务名> --zone=<区域> #设置指定区域允许该服务的流量
--remove-service=<服务名> --zone=<区域> #设置指定区域不再允许该服务的流量
3、Port相关命令
--add-port=<端口号/协议> --zone=<区域> #设置指定区域允许该端口的流量
--remove-port=<端口号/协议> --zone=<区域> #设置指定区域不再允许该端口的流量
4、查看所有规则的命令
--list-all --zone=<区域> 显示指定区域的网卡配置参数、资源、端口以及服务等信息
--reload #让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
3、firewalld配置使用
1、查看默认区域:
环境:
firewall-server/ip:192.168.94.133
test/ip:192.168.94.134
[root@firewall-server ~]# netstat -lntp | grep :80
tcp6 0 0 :::80 :::* LISTEN 1250/httpd
[root@firewall-server ~]# systemctl start firewalld
[root@firewall-server ~]# firewall-cmd --get-default-zone
public
验证:
[root@test ~]# curl -I 192.168.94.133
curl: (7) Failed connect to 192.168.94.133:80; No route to host
2、更改默认区域
[root@firewall-server ~]# firewall-cmd --set-default-zone=trusted
success
[root@firewall-server ~]# firewall-cmd --reload
success
验证:
[root@test ~]# curl -I 192.168.94.133
HTTP/1.1 200 OK
================================================
修改回默认区域:
[root@firewall-server ~]# firewall-cmd --set-default-zone=public
success
[root@firewall-server ~]# firewall-cmd --reload
success
3.向public区域添加服务
[root@firewall-server ~]# firewall-cmd --permanent --add-service=http --zone=public
success
[root@firewall-server ~]# firewall-cmd --reload
success
验证:
[root@test ~]# curl -I 192.168.94.133
HTTP/1.1 200 OK
4.指定IP地址为192.168.94.134/24的客户端进入drop区域
[root@firewall-server ~]# firewall-cmd --permanent --add-source=192.168.94.134/24 --zone=drop
success
[root@firewall-server ~]# firewall-cmd --reload
success
验证:
[root@test ~]# curl -I 192.168.94.133 #访问不通
5.将192.168.94.134/24移除drop区域
[root@firewall-server ~]# firewall-cmd --permanent --remove-source=192.168.94.134/24 --zone=drop
success
[root@firewall-server ~]# firewall-cmd --reload
success
验证:
[root@test ~]# curl -I 192.168.94.133
HTTP/1.1 200 OK
6.向pubic区域添加服务,以添加端口的方式
[root@firewall-server ~]# firewall-cmd --permanent --add-port=80/tcp --zone=public
success
[root@firewall-server ~]# firewall-cmd --reload
success
验证:
[root@test ~]# curl -I 192.168.94.133:80
HTTP/1.1 200 OK
7、删除服务、端口
[root@firewall-server ~]# firewall-cmd --permanent --remove-service=http --zone=public
success
[root@firewall-server ~]# firewall-cmd --reload
success
验证:
用192.168.94.134访问192.168.94.133机器
[root@test ~]# curl -I http://192.168.94.133 #访问通
HTTP/1.1 200 OK
====================================================================================
[root@firewall-server ~]# firewall-cmd --permanent --remove-port=80/tcp --zone=public
success
[root@firewall-server ~]# firewall-cmd --reload
success
验证:
在192.168.94.134访问192.168.94.133机器
[root@test ~]# curl -I http://192.168.94.133 #访问失败
curl: (7) Failed connect to 192.168.94.133:80; No route to host