centos7下Firewall使用
centos7下Firewall使用详解
安装它,只需
# yum install firewalld
如果需要图形界面的话,则再安装
# yum install firewall-config(亲测买的云服务器或者vps上不好使,可能是依赖没有安装全,还是使用基本的命令维护较好)
一、介绍
防火墙守护 firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永 久的接口规则,并实时生效而无需重启服务。
什么是区域?
网络区域定义了网络连接的可信等级。这是一个一对多的关系,这意味着一次连接可以仅仅是一个区域的一部分,而一个区域可以用于很多连接。
预定义的服务
服务是端口和/或协议入口的组合。备选内容包括 netfilter 助手模块以及 IPv4、IPv6地址。
端口和协议
定义了 tcp 或 udp 端口,端口可以是一个端口或者端口范围。
ICMP阻塞
可以选择 Internet 控制报文协议的报文。这些报文可以是信息请求亦可是对信息请求或错误条件创建的响应。
伪装
私有网络地址可以被映射到公开的IP地址。这是一次正规的地址转换。
端口转发
端口可以映射到另一个端口以及/或者其他主机。
哪个区域可用?
由firewalld 提供的区域按照从不信任到信任的顺序排序。
firewall-cmd --get-zones
上面代码获取支持的区域
丢弃(drop)
任何流入网络的包都被丢弃,不作出任何响应。只允许流出的网络连接。
阻塞(block)
任何进入的网络连接都被拒绝,并返回 IPv4 的 icmp-host-prohibited 报文或者 IPv6 的 icmp6-adm-prohibited 报文。只允许由该系统初始化的网络连接。
公开(public)
用以可以公开的部分。你认为网络中其他的计算机不可信并且可能伤害你的计算机。只允许选中的连接接入。(You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.)
外部(external)
用在路由器等启用伪装的外部网络。你认为网络中其他的计算机不可信并且可能伤害你的计算机。只允许选中的连接接入。
隔离区(dmz)
用以允许隔离区(dmz)中的电脑有限地被外界网络访问。只接受被选中的连接。
工作(work)
用在工作网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。
家庭(home)
用在家庭网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。
内部(internal )
用在内部网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。
受信任的(trusted)
允许所有网络连接。
我应该选用哪个区域?
例如,公共的 WIFI 连接应该主要为不受信任的,家庭的有线网络应该是相当可信任的。根据与你使用的网络最 符合的区域进行选择,网络服务器的一般是public。
如何配置或者增加区域?
你可以使用任何一种 firewalld 配置工具来配置或者增加区域,以及修改配置。工具有例如 firewall-config 这样的图形界面工具, firewall-cmd 这样的命令行工具,以及D-BUS接口。或者你也可以在配置文件目录中创建或者拷贝区域文件。 @PREFIX@/lib/firewalld/zones 被用于默认和备用配置,/etc/firewalld/zones 被用于用户创建和自定义配置文件。
如何为网络连接设置或者修改区域
区域设置以 ZONE= 选项 存储在网络连接的ifcfg文件中。如果这个选项缺失或者为空,firewalld 将使用配置的默认区域。
如果这个连接受到 NetworkManager 控制,你也可以使用 nm-connection-editor 来修改区域。
二、使用方法
可以通过图形界面工具 firewall-config 或者命令行客户端 firewall-cmd 启用或者关闭防火墙特性。
使用firewall-cmd
命令行工具 firewall-cmd 支持全部防火墙特性。对于状态和查询模式,命令只返回状态,没有其他输出。
# systemctl start firewalld # 启动,
# systemctl enable firewalld # 开机启动
# systemctl stop firewalld # 关闭
# systemctl disable firewalld # 取消开机启动
具体的规则管理,可以使用 firewall-cmd,具体的使用方法可以
查看帮助
$ firewall-cmd --help
参数作用
--get-default-zone查询默认的区域名称。
--set-default-zone=<区域名称>设置默认的区域,永 久生效。
--get-zones显示可用的区域。
--get-services显示预先定义的服务。
--get-active-zones显示当前正在使用的区域与网卡名称。
--add-source=将来源于此IP或子网的流量导向指定的区域。
--remove-source=不再将此IP或子网的流量导向某个指定区域。
--add-interface=<网卡名称>将来自于该网卡的所有流量都导向某个指定区域。
--change-interface=<网卡名称>将某个网卡与区域做关联。
--list-all显示当前区域的网卡配置参数,资源,端口以及服务等信息。
--list-all-zones显示所有区域的网卡配置参数,资源,端口以及服务等信息。
--add-service=<服务名>设置默认区域允许该服务的流量。
--add-port=<端口号/协议>允许默认区域允许该端口的流量。
--remove-service=<服务名>设置默认区域不再允许该服务的流量。
--remove-port=<端口号/协议>允许默认区域不再允许该端口的流量。
--reload让“永 久生效”的配置规则立即生效,覆盖当前的。
特别需要注意的是firewalld服务有两份规则策略配置记录,必需要能够区分:
RunTime:当前正在生效的。
Permanent:永 久生效的。
查看版本:
$ firewall-cmd --version
获取 firewalld 状态
firewall-cmd --state
在不改变状态的条件下重新加载防火墙(永 久生效):
firewall-cmd --reload
获取支持的区域列表
# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
获取所有支持的服务
# firewall-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https
获取所有支持的ICMP类型
# firewall-cmd --get-icmptypes
destination-unreachable echo-reply echo-request parameter-problem redirect router-advertisement router-solicitation source-quench time-exceeded
列出全部启用的区域的特性
# firewall-cmd --list-all-zones (内容较多,不展示)
输出区域 全部启用的特性。如果生略区域,将显示默认区域的信息。
firewall-cmd [–zone=] –list-all
获取默认区域的网络设置
# firewall-cmd --zone=public --list-all
设置默认区域
firewall-cmd --set-default-zone=
# firewall-cmd --set-default-zone=dmz
获取活动的区域
firewall-cmd –get-active-zones
列举区域中启用的服务
firewall-cmd [ –zone= ] –list-services
# firewall-cmd --zone=public --list-services
dhcpv6-client ssh
根据接口获取区域
firewall-cmd –get-zone-of-interface=
# firewall-cmd --get-zone-of-interface=eno16777736
trusted
输出接口所属的区域名称。
# firewall-cmd --get-zone-of-interface=lo
no zone
列出 public zone 所有网卡
# firewall-cmd --zone=public --list-interfaces
查询eno16777728网卡的区域:
# firewall-cmd --get-zone-of-interface=eno16777728
public
在public中分别查询ssh与http服务是否被允许:
# firewall-cmd --zone=public --query-service=ssh
yes
# firewall-cmd --zone=public --query-service=http
no
查看默认区域
#firewall-cmd --get-default-zone
设置默认规则为dmz:
# firewall-cmd --set-default-zone=dmz
让“永 久生效”的配置文件立即生效:
# firewall-cmd --reload
success
启动/关闭应急状况模式,阻断所有网络连接(建议关闭,可能把自己弄残):
应急状况模式启动后会禁止所有的网络连接,一切服务的请求也都会被拒绝,当心,请慎用。
# firewall-cmd --panic-on
success
# firewall-cmd --panic-off
success
允许https服务流量通过public区域,要求立设置当前生效与永 久有效
# firewall-cmd --zone=public --add-service=https
# firewall-cmd --permanent --zone=public --add-service=https
不再允许http服务流量通过public区域,要求立即生效且永 久生效:
# firewall-cmd --permanent --zone=public --remove-service=http
success
使用参数“–reload“让永 久生效的配置文件立即生效:
# firewall-cmd --reload
允许8080与8081端口流量通过public区域,立即生效且永 久生效:
#?firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp
#?firewall-cmd --reload
将 eth0 添加至 public zone,永 久
# firewall-cmd --zone=public --permanent --add-interface=eth0
eth0 存在与 public zone,将该网卡添加至 work zone,并将之从 public zone 中删除
# firewall-cmd --zone=work --permanent --change-interface=eth0
删除 public zone 中的 eth0,永 久
# firewall-cmd --zone=public --permanent --remove-interface=eth0
配置 public zone 的 icmp
查看所有支持的 icmp 类型
# firewall-cmd --get-icmptypes
destination-unreachable echo-reply echo-request parameter-problem redirect router-advertisement router-solicitation source-quench time-exceeded
列出
# firewall-cmd --zone=public --list-icmp-blocks
添加 echo-request 屏蔽
# firewall-cmd --zone=public --add-icmp-block=echo-request [--timeout=seconds]
移除 echo-reply 屏蔽
# firewall-cmd --zone=public --remove-icmp-block=echo-reply
IP 封禁 (这个是我们平时用得最多的, reject 拒绝 accept 允许 ,删除该规则把 –add-rich-rule 改成 –remove-rich-rule即可)
# firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='222.222.222.222' reject" 单个IP
# firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='222.222.222.0/24' reject" IP段
# firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=192.168.1.2 port port=80 protocol=tcp accept" 单个IP的某个端口
设置富规则,拒绝192.168.10.0/24网段的用户访问ssh服务:
firewalld服务的富规则用于对服务、端口、协议进行更详细的配置,规则的优先级最 高。
# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject"
success
屏蔽192.168.10.0/24网段访问80端口
[root@localhost ~]# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.66.26" port protocol="tcp" port="80" reject"
列出公共区域的规则
[root@localhost ~]# firewall-cmd --zone=public --list-rich-rules
上一篇:Linux磁盘挂载
下一篇:在线扩容云盘(Linux系统)