Centos7\Rehat中 Firewalld 命令详解

firewalld 和 iptables 的关系

firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样罢了。

 

对于centos7服务器来说,有的服务器firewalld和iptables两者都有的,有的服务器却只有firewalld;

 

firewalld的配置模式

firewalld的配置文件以xml格式为主(主配置文件firewalld.conf例外),他们有两个存储位置

1、/etc/firewalld/ 用户配置文件

2、/usr/lib/firewalld/ 系统配置文件,预置文件

 

我们知道每个zone就是一套规则集,但是有那么多zone,对于一个具体的请求来说应该使用哪个zone(哪套规则)来处理呢?这个问题至关重要,如果这点不弄明白其他的都是空中楼阁,即使规则设置的再好,不知道怎样用、在哪里用也不行。

对于一个接受到的请求具体使用哪个zone,firewalld是通过三种方法来判断的:

1、source,也就是源地址 优先级最高

2、interface,接收请求的网卡 优先级第二

3、firewalld.conf中配置的默认zone 优先级最低

这三个的优先级按顺序依次降低,也就是说如果按照source可以找到就不会再按interface去查找,如果前两个都找不到才会使用第三个,也就是学生在前面给大家讲过的在firewalld.conf中配置的默认zone。

 

firewalld 常用命令

通常情况下开放一个端口步骤所需命令如下:

  • 启动:systemctl start firewalld
  • 停止:systemctl stop firewalld
  • 状态:firewall-cmd --state
  • 添加:firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
  • 重启:firewall-cmd --reload
  • 查看:firewall-cmd --zone=public --query-port=80/tcp
  • 删除:firewall-cmd --zone=public --remove-port=80/tcp --permanent

 

一、firewalld 安装、运行、停止、禁用命令

1、安装

root@localhost:~# yum install firewalld

2、启动 firewalld

root@localhost:~# systemctl start firewalld

3、停止 firewalld

root@localhost:~# systemctl stop firewalld

4、禁用 firewalld

root@localhost:~# systemctl disable firewalld

5、在系统引导时启动 firewalld

root@localhost:~# systemctl enable firewalld

 

二、firewalld配置命令

1、查看版本:

root@localhost:~# firewall-cmd --version

2、查看帮助:

root@localhost:~# firewall-cmd --help

3、显示状态:

root@localhost:~# firewall-cmd --state

4、查看区域信息:

root@localhost:~# firewall-cmd --get-active-zones

5、查看指定接口所属区域:$

root@localhost:~# firewall-cmd --get-zone-of-interface=eth0

6、拒绝所有包:

root@localhost:~# firewall-cmd --panic-on

7、取消拒绝状态:

root@localhost:~# firewall-cmd --panic-off

8、查看是否拒绝:

 root@localhost:~# firewall-cmd --query-panic

 

三、firewall更新防火墙规则命令

1、无需断开连接,就是firewalld特性之一动态添加规则

root@localhost:~# firewall-cmd --reload

2、需要断开连接,类似重启服务

root@localhost:~# firewall-cmd --complete-reload

 

四、firewall 区域命令

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

root@localhost:~# firewall-cmd --zone=public --add-interface=eth0

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

root@localhost:~# firewall-cmd --zone=public --add-interface=eth0 --permanent
root@localhost:~# firewall-cmd --reload

3、设置默认接口区域

root@localhost:~# firewall-cmd --set-default-zone=public #立即生效无需重启

 

五、firewall 服务、端口命令

1、查看所有打开的端口:

root@localhost:~# firewall-cmd --list-ports

2、加入一个端口到区域:

root@localhost:~# firewall-cmd --zone=dmz --add-port=8080/tcp

3、若要永久生效方法同上:

root@localhost:~# firewall-cmd --zone=dmz --add-port=8080/tcp --permanent

4、打开一个服务,类似于将端口可视化,服务需要在配置文件中添加,/etc/firewalld 目录下有services文件夹,这个不详细说了,详情参考文档

root@localhost:~# firewall-cmd --zone=work --add-service=smtp

5、移除服务

root@localhost:~# firewall-cmd --zone=work --remove-service=smtp

 

Firewalld 所有命令详细

 

用法:

firewall-cmd [选项...]

 

常规选项

-h,--help          打印帮助文档

-V,--version     打印firewalld的版本

-q,--quiet         不要打印状态消息

 

状态选项

--state                       返回并打印firewalld状态

--reload                     重新加载防火墙并保存状态信息

--complete-reload    完全重新加载防火墙和松散的状态信息

 

 

永久选项

--permanent    性永久设置一个选项,可用于[P]

 

Zone(区域)选项

--get-default-zone      打印连接和接口的默认区域

--set-default-zone=    设置默认区域

--get-active-zones      打印当前活动区域

--get-zones                打印预定义区域[P]

--get-services             打印预定义的服务[P]

--get-icmptypes         打印预定义的icmptypes [P]

--get-zone-of-interface=         打印界面绑定区域的名称[P]

--get-zone-of-source=[/]         [/ mask]绑定的区域的打印名称[P]

--list-all-zones                          列出所有区域添加或启用的所有内容[P]

--new-zone =                           添加一个新区域[仅限P]

--delete-zone =                        删除现有区域[仅限P]

--zone =                                    使用此区域设置或查询选项,否则使用默认区域,可用于与[Z]匹配的选项

--get-target                               获取区域目标[仅限P]

--set-target=                             设置区域目标[仅限P]

 

IcmpType选项

--new-icmptype=           添加新的icmptype [仅限P]

--delete-icmptype=        删除和现有icmptype [仅限P]

 

服务选项

--new-service=             添加一项新服务[仅限P]

--delete-service=          删除和现有服务[仅限P]

 

适应和查询区域的选项

--list-all                         列出在区域中添加或启用的所有内容[P] [Z]

--list-services                为区域添加的列表服务[P] [Z]

--timeout =                  仅在秒内启用一个选项可用于与[T]匹配的选项

--add-service=             为区域添加服务[P] [Z] [T]

---remove-service=      从区域中删除服务[P] [Z]

--query-service=           返回是否为区域添加了服务[P] [Z]

 

--list-ports                            为区域添加的列表端口[P] [Z]

--add-port =[-]/                   为区域添加端口[P] [Z] [T]

--remove-port =[-]/             从区域删除端口[P] [Z]

--query-port=[-]/                 返回是否已为区域[P]添加端口[Z]

--list-icmp-blocks                 列出为区域添加的Internet ICMP类型块[P] [Z]

--add-icmp-block=               添加区域的ICMP块[P] [Z] [T]

--remove-icmp-block=         从区域删除ICMP块[P] [Z]

--query-icmp-block=            返回是否为区域添加了ICMP块[P] [Z]

--list-forward-ports              列出为区域添加的IPv4转发端口[P] [Z]

 

--add-forward-port=port=[-]:proto=[:toport=[-]][:toaddr=[/]]           为区域添加IPv4转发端口[P] [Z] [T]

--remove-forward-port=port=[-]:proto=[:toport=[-]][:toaddr=[/]]     从区域删除IPv4转发端口[P] [Z]

--query-forward-port=port=[-]:proto=[:toport=[-]][:toaddr=[/]]        返回是否已添加IPv4转发端口,一个区域[P] [Z]

 

--add-masquerade            为区域启用IPv4伪装[P] [Z] [T]

--remove-masquerade       禁用区域的IPv4伪装[P] [Z]

--query-masquerade          返回是否已为a启用了IPv4伪装区域[P] [Z]

 

--list-rich-rules                列出为区域添加的富语言规则[P] [Z]

--add-rich-rule=             为区域添加丰富的语言规则“规则”[P] [Z] [T]

--remove-rich-rule=       从区域中移除丰富的语言规则'规则'[P] [Z]

--query-rich-rule=           返回是否有丰富的语言规则“规则”,为区域添加[P] [Z]选项来处理接口绑定

--list-interfaces                列出绑定到区域的接口[P] [Z]

--add-interface=             绑定到区域[P] [Z]

--change-interface=       更改区域绑定到[Z]

--query-interface=          查询是否绑定到区域[P] [Z]

--remove-interface=       删除区域绑定[P] [Z]选项来处理源绑定

--list-sources                   列出绑定到区域的源代码[P] [Z]

 

--add-source=[/]              将[/]绑定到区域[P] [Z]

--change-source=[/]        更改区域[/]绑定到[Z]

--query-source=[/]          查询[/]是否绑定到区域[P] [Z]

--remove-source=[/]       删除区域[/]的绑定[P] [Z]直接选项

--direct                            所有直接选项的第一个选项

--get-all-chains               获得所有连锁店[P]

 

--get-chains {ipv4 | ipv6 | eb}          获取所有链表添加到表[P]

--add-chain {ipv4 | ipv6 | eb}          在表中添加一个新链[P]

--remove-chain {ipv4 | ipv6 | eb}     从表中删除链[P]

--query-chain {ipv4 | ipv6 | eb}        返回链表是否已经添加到表格[P]

--get-all-rules                                   获取所有规则[P]

--get-rules {ipv4 | ipv6 | eb}             获取添加到表中的所有规则[P]

--add-rule {ipv4 | ipv6 | eb} ...          将规则添加到链表中[P]

--remove-rule {ipv4 | ipv6 | eb} ...    从链表中删除具有优先级的规则[P]

--remove-rules {ipv4 | ipv6 | eb}      从链表中删除规则[P]

--query-rule {ipv4 | ipv6 | eb} ...       返回表中是否在链中添加了具有优先级的规则[P]

--passthrough {ipv4 | ipv6 | eb} ...    传递一个命令

--get-all-passthroughs                     获取所有直通规则[仅限P]

 

--get-passthroughs {ipv4 | ipv6 | eb} ...             获取直通规则[仅限P]

--add-passthrough {ipv4 | ipv6 | eb} ...              添加新的passthrough规则[仅限P]

--remove-passthrough {ipv4 | ipv6 | eb} ...        删除passthrough规则[仅限P]

--query-passthrough {ipv4 | ipv6 | eb} ...           返回是否已添加直通规则[仅限P]锁定选项

 

--lockdown-on                    启用锁定。

--lockdown-off                    禁用锁定。

--query-lockdown               查询锁定是否为enabledLockdown白名单选项

 

--list-lockdown-whitelist-commands              列出白名单上的所有命令行[P]

--add-lockdown-whitelist-command=            将该命令添加到白名单[P]

--remove-lockdown-whitelist-command=      从白名单中删除命令[P]

--query-lockdown-whitelist-command=         查询该命令是否在白名单上[P]

--list-lockdown-whitelist-contexts                   列出白名单上的所有上下文[P]

--add-lockdown-whitelist-context=                 将上下文上下文添加到白名单[P]

--remove-lockdown-whitelist-context=           从白名单中删除上下文[P]

--query-lockdown-whitelist-context=              查询上下文是否在白名单上[P]

--list-lockdown-whitelist-uids                          列出白名单上的所有用户ID [P]

--add-lockdown-whitelist-uid=                       将用户标识uid添加到白名单[P]

--remove-lockdown-whitelist-uid=                 从白名单中删除用户ID uid [P]

--query-lockdown-whitelist-uid=                    查询用户标识uid是否在白名单中[P]

--list-lockdown-whitelist-users                        列出白名单上的所有用户名[P]

--add-lockdown-whitelist-user=                     将用户名称用户添加到白名单[P]

--remove-lockdown-whitelist-user=               从白名单中删除用户名用户[P]

--query-lockdown-whitelist-user=                  查询用户名是否在白名单中[P] Panic选项

 

-- panic-on          启用恐慌模式

-- panic-off          禁用恐慌模式

--query-panic      查询是否启用恐慌模式

 

Firewalld 防火墙

付杰
  • ¥ 798.0元
  • 市场价:1298.0元
  • ¥ 98.0元
  • 市场价:298.0元
  • ¥ 59.0元
  • 市场价:99.0元
  • ¥ 1.0元
  • 市场价:9.9元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: