防火墙工具 - firewalld

Catalogue
  1. 1. 防火墙
  2. 2. 什么是FirewallD
  3. 3. 什么是iptables
  4. 4. firewalld的基本使用
  5. 5. firewalld端口管理
    1. 5.1. 查看端口情况
    2. 5.2. 删除端口
    3. 5.3. 添加端口
    4. 5.4. 命令含义
    5. 5.5. firewalld配置重新载入
  6. 6. 配置firewalld-cmd
  7. 7. 端口转发
    1. 7.1. 端口转发至其他IP其他Port
    2. 7.2. 端口转发至其他Port
    3. 7.3. 端口转发至其他IP
  8. 8. 内网白名单
  9. 9. iptables服务的基本操作
    1. 9.1. 启动iptables服务
    2. 9.2. 停止iptables服务
    3. 9.3. 禁用iptables服务
    4. 9.4. 启用iptables服务
    5. 9.5. 检查iptables服务的状态
  10. 10. 理解网络区
    1. 10.1. drop(丢弃)
    2. 10.2. block(限制)
    3. 10.3. public(公共)
    4. 10.4. external(外部)
    5. 10.5. dmz(非军事区)
    6. 10.6. work(工作)
    7. 10.7. home(家庭)
    8. 10.8. internal(内部)
    9. 10.9. trusted(信任)
  11. 11. 理解直接接口
  12. 12. 参考资料

防火墙

防火墙是一种位于内部网络与外部网络之间的网络安全系统。一项信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。防火墙通常工作在网络层,也即IPv4或IPv6的IP包上。

是否允许包通过防火墙,取决于防火墙配置的规则。这些规则既可以是内建的,也可以是用户自定义的。每一个包要进出防火墙,均需要满足防火墙配置的规则。

每一条规则均有一个目标动作,具有相同动作的规则可以分组在一起。对于Linux系统,最常用的防火墙有:FirewallD或iptables。Linux的发行版种类极多,但是公认的仍然是这两种。

什么是FirewallD

防火墙守护 firewalld(Dynamic Firewall Manager of Linux systems) 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。

什么是iptables

iptables是另一种服务,它可以决定是否允许、删除或返回IP数据包。iptables服务管理IPv4数据包,而ip6tables则管理IPv6数据包。此服务管理了一堆规则表,其中每个表分别用于维护不同的目的,比如过滤表(filter table)为防火墙规则,NAT表供新连接查询使用,mangle表用于数据包的转换等。

更进一步,每个表还具有规则链,规则链可以是内建的或是用户自定义的,它表示适用于一个数据包的规则集合,从而决定数据包应该执行哪些目标动作,比如允许ALLOWED、阻塞BLOCKED或返回RETURNED。iptables服务在RHEL/CentOS 6/5、Fedora、ArchLinux、Ubuntu等Linux发行版中是系统默认的服务。

func desc
Firewall 能将不同的网络连接归类到不同的信任级别,Zone 提供了以下几个级别
drop 丢弃所有进入的包,而不给出任何响应
block 拒绝所有外部发起的连接,允许内部发起的连接
public 允许指定的进入连接
external 同上,对伪装的进入连接,一般用于路由转发
dmz 允许受限制的进入连接
work 允许受信任的计算机被限制的进入连接,类似 workgroup
home 同上,类似 homegroup
internal 同上,范围针对所有互联网用户
trusted 信任所有连接

firewalld的基本使用

启动: systemctl start firewalld

查看状态: systemctl status firewalld 或者 firewall-cmd --state

停止: systemctl disable firewalld

禁用: systemctl stop firewalld

firewalld端口管理

查看端口情况

firewall-cmd --zone= public --query-port=80/tcp

删除端口

firewall-cmd --zone=public --remove-port=3306/tcp --permanent

添加端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

出现success表明添加成功,重启firewald服务或配置重新载入。

命令含义

--zone              #作用域
--add-port=80/tcp   #添加端口,格式为:端口/通讯协议
--permanent         #永久生效,没有此参数重启后失效

firewalld配置重新载入

firewall-cmd --reload

配置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

端口转发

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

端口转发至其他IP其他Port

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

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

端口转发至其他Port

然后转发 tcp 22 端口至 3753

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

端口转发至其他IP

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

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

内网白名单

把一个源地址加入白名单,以便允许来自这个源地址的所有连接
这个在集群中使用常见
设置后利用firewall-cmd –reload更新防火墙规则
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.1.215" accept' --permanent
firewall-cmd --reload

iptables服务的基本操作

在RHEL/CentOS 6/5/4系统和Fedora 12-18系统中,iptables是默认的防火墙,如果服务不存在,可以这样安装:
> yum install iptables-services

然后就可以对iptables服务进行启动、停止、重启等操作了。

启动iptables服务

systemctl start iptables or service iptables start

停止iptables服务

systemctl stop iptables or service iptables stop

禁用iptables服务

systemctl disable iptables or service iptables save or service iptables stop

启用iptables服务

systemctl enable iptables or service iptables start

检查iptables服务的状态

systemctl status iptables or service iptables status

理解网络区

在CentOS/RHEL 7系统中,基于用户对网络中设备和通信所给与的信任程度,防火墙可用于将网络划分成不同的区域,区域类型如下:

drop(丢弃)

任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接。

block(限制)

任何接收的网络连接都被 IPv4 的 icmp-host-prohibited 信息和 IPv6 的 icmp6-adm-prohibited 信息所拒绝。

public(公共)

在公共区域内使用,不能相信网络内的其他计算机不会对您的计算机造成危害,只能接收经过选取的连接。

external(外部)

特别是为路由器启用了伪装功能的外部网。您不能信任来自网络的其他计算机,不能相信它们不会对您的计算机造成危害,只能接收经过选择的连接。

dmz(非军事区)

用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接。

work(工作)

用于工作区。您可以基本相信网络内的其他电脑不会危害您的电脑。仅仅接收经过选择的连接。

home(家庭)

用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连接。

internal(内部)

用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接受经过选择的连接。

trusted(信任)

可接受所有的网络连接。

对于区域的修改,可使用网络管理器NetworkManager搞定。

理解直接接口

FirewallD包含了一个名为直接接口(direct interface)的概念,意思是可以直接通过iptables、ip6tables和ebtables的规则。直接接口适用于应用程序,不适用于用户。如果不熟悉iptables,那么使用直接接口是很危险的,因为可能会导致防火墙被入侵。

FirewallD保持对所增加规则项的追踪,所以能质询FirewallD,发现由使用直接端口模式的程序造成的更改。要使用直接端口,增加–direct选项到firewall-cmd命令来使用。

参考资料

-CentOS7使用firewalld命令
-CentOS7 防火墙firewall开放3306端口(顺带科普firewall命令)