to be
a problem slover

centos firewalld防火墙管理

概述

centos 7默认使用firewalld作为防火墙服务。firewalld与iptables不兼容,它们不应该一起使用。

同时运行这两个服务将会搞乱防火墙, 所以只能选择一个。

本文介绍firewalld的使用。

zone

firewalld中有zone的概念,zone是一套预定义的防火墙配置,不同的场景可使用不同的zone。

按可信度从高到低排列,有以下默认zone

名字 描述
Trusted 完全信任环境,不过滤任何流量,在信任程度上,它排第一,它不会过滤任何内容。
Home 在家庭网络中使用,它开启以下服务:ssh、mdns、ipp-client、samba-client和dhcpv6-client。
Internal 内部网络中使用,和家庭网络类似,但它还允许以下服务:ssh、mdns、ipp-client、samba-client和dhcpv6-client。
Work 工作网络使用,它允许以下服务返回:ssh、ipp-client和dhcpv6-client。
Public 在公共网络中使用,它允许以下服务ssh和dhcpv6-client。这是默认启用的Zone。
External 用于伪装。你认为网络中其他的计算机不可信并且可能伤害你的计算机。只允许选中的连接接入。
Dmz 用以允许隔离区(dmz)中的电脑有限地被外界网络访问。只接受被选中的连接。
Block 任何进入的网络连接都被拒绝,并返回 IPv4 的 icmp-host-prohibited 报文或者 IPv6 的 icmp6-adm-prohibited 报文。只允许由该系统初始化的网络连接。
Drop 丢弃所有连接,不返回任何信息

系统预定义的zone文件存储在/usr/lib/firewalld/zones目录下,而自定义zone文件需存储在/etc/firewalld/zone目录。

查看zone列表

$ firewall-cmd --list-all-zones

查看生效的zone配置

$ firewall-cmd --list-all

改变默认zone

$ firewall-cmd --set-default-zone=work

该命令立即生效,且永久生效,无需reload

查看指定网卡用哪个zone

先用ifconfig查看有哪些网卡,然后用下面的命令查看网卡使用哪个zone

$ firewall-cmd --get-zone-of-interface=lo

给网卡设置zone

$ firewall-cmd --zone=public --add-interface=lo

改变网卡zone

$ firewall-cmd --zone=work --change-interface=lo

删除网卡zone

firewall-cmd --zone=work --remove-interface=lo

查看所有网卡所在的zone

$ firewall-cmd --get-active-zones
work
  interfaces: lo
public
  interfaces: wlp3s0

服务

服务是firewalld概念中的次要关键元素。在zone文件中使用服务是管理防火墙规则的最佳方式。服务用于在区域文件中为相关网络服务创建预定义的规则。

开放服务

开放http服务

$ firewall-cmd --permanent --add-service=http
success
$ firewall-cmd --reload
success

预定义的服务可使用ls /usr/lib/firewalld/services/查看,这个目录下的xml不应该去动的。

可以将/usr/lib/firewalld/services/下的xml拷贝到/etc/firewalld/services/然后再修改来自定义服务。

关闭服务

关闭http服务

$ firewall-cmd --permanent --remove-service=http
success
$ firewall-cmd --reload
success

查看开放的服务

$ firewall-cmd --list-services
dhcpv6-client http ssh

查看服务的标准端口

使用semanage port -l | grep [service_name]查看服务的标准端口(默认允许使用)

$ semanage port -l | grep mysqld
mysqld_port_t                  tcp      1186, 3306, 63132-63164

设置服务使用非标准端口

参见centos设置服务使用非标准端口

端口

开放端口

开放单个端口

$ firewall-cmd --permanent --add-port=63150/tcp
success

开放某个范围的端口

$ firewall-cmd --permanent --add-port=200-300/tcp
success

reload生效

$ firewall-cmd --reload
success

关闭端口

关闭单个/某个范围端口

$ firewall-cmd --permanent --remove-port=63150/tcp
success
$ firewall-cmd --permanent --add-port=200-300/tcp
success

reload生效

$ firewall-cmd --reload
success

查看开放的端口

$ firewall-cmd --list-ports
63150/tcp

服务 or 端口?

如果我们可以指定端口,为什么还要使用服务呢?
因为在服务中可以配置一个服务使用多个端口,开启一个服务可以同时开启多个端口,便于管理。

参考资料

How To Open A Port In CentOS 7 With Firewalld
Firewalld Basic concepts Explained with Examples

赞(4) 打赏
欢迎转载,注明出处:刘世明的博客 » centos firewalld防火墙管理

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下作者

支付宝扫一扫打赏

微信扫一扫打赏