linux系统中firewalld防火墙管理工具firewall-cmdCLI命令行

linux系统中firewalld防火墙拥有基于CLI(命令行界面)和基于GUI(图形用户界面)两种管理方式

相较于传统的防火墙管理配置工具,firewalld支持动态更新技术并加入了区域(zone)的概念。简单来说,区域就是firewalld预先准备了几套防火墙策略集合(策略模板)

用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。

firewalld中常见的区域名称(默认为public)以及相应的策略规划如下图:(linux就该这么学p160)

 

终端管理工具CLI(命令行界面)

firewall-cmd是firewalld防火墙配置管理工具的CLI(命令行界面)版本。firewall-cmd命令的参数一般都是长格式的。

firewall-cmd命令中使用的参数以及作用

 

 

        与linux系统中其他的防火墙策略配置工具一样,使用firewalld配置的防火墙策略默认为运行时模式,又称为当前生效模式,而且随着系统的重启会失效。如果想让配置策略一致存在,就需要使用永久模式了。

方法就是在用firewall-cmd命令正常设置防火墙策略是添加 --permanent参数,这样配置的防火墙策略就可以永久生效了。但是,永久生效模式有一个不近人情的特点,就是使用它设置的策略只有在系统重启

之后才能自动生效。如果想让配置的策略立即生效,需要手动执行firewall-cmd  --reload命令。

 

1、查看firewalld服务当前所使用的区域:

[linuxprobe@linuxprobe Desktop]$ firewall-cmd --get-default-zone 
public

 

2、查询eno16777728网卡在firewalld服务中的区域:

[linuxprobe@linuxprobe Desktop]$ ifconfig | head -n 3  ## 查看网卡名称
eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.13  netmask 255.255.255.0  broadcast 192.168.3.255
        inet6 fe80::20c:29ff:feab:7b00  prefixlen 64  scopeid 0x20<link>
[linuxprobe@linuxprobe Desktop]$ firewall-cmd --get-zone-of-interface=eno16777728  ## 查看网卡在firewalld服务中的区域
public

 

3、把firewalld服务中eno16777728网卡的默认区域修改为external,并在系统重启后生效

[root@linuxprobe ~]# firewall-cmd --get-zone-of-interface=eno16777728  ## 查看网卡在firewalld服务中的区域
public
[root@linuxprobe ~]# firewall-cmd --permanent --zone=external --change-interface=eno16777728  ##将网卡的默认区域永久修改为external,但是不能立即生效(需要重启系统生效,或者firewall-cmd --reload)
success
[root@linuxprobe ~]# firewall-cmd --get-zone-of-interface=eno16777728  ## 查看网卡在firewalld服务中的区域,仍然为public
public
[root@linuxprobe ~]# firewall-cmd --get-zone-of-interface=eno16777728 --permanent ## 加--permanent,变为external(或者重启)
external

 

4、修改firewalld服务的默认区域

[root@linuxprobe ~]# firewall-cmd --get-default-zone ## 查看当前firewalld服务所在的区域
public
[root@linuxprobe ~]# firewall-cmd --set-default-zone=external   ## 设为external
success
[root@linuxprobe ~]# firewall-cmd --get-default-zone   ## 查看
external 
[root@linuxprobe ~]# firewall-cmd --set-default-zone=home  ## 设为home
success
[root@linuxprobe ~]# firewall-cmd --get-default-zone   ## 查看
home
[root@linuxprobe ~]# firewall-cmd --set-default-zone=trusted 
success
[root@linuxprobe ~]# firewall-cmd --get-default-zone 
trusted
[root@linuxprobe ~]# firewall-cmd --set-default-zone=drop 
success
[root@linuxprobe ~]# firewall-cmd --get-default-zone 
drop
[root@linuxprobe ~]# firewall-cmd --set-default-zone=public 
success
[root@linuxprobe ~]# firewall-cmd --get-default-zone 
public

 

5、启动/关闭firewalld防火墙服务的应急状况模式,阻断一切网络连接(当远程控制服务时慎用):

[root@linuxprobe ~]# firewall-cmd --panic-on  ## 开启
success
[root@linuxprobe ~]# firewall-cmd --panic-off  ## 关闭
success

 

6、查询public区域是否允许请求SSH和HTTPS协议的流量:

[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=ssh  ## 允许
yes
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=https  ## 拒绝
no
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=dhcpv6-client   ## 允许
yes
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=ipp-client   ## 拒绝
no

 

7、把firewalld服务中请求HTTPS协议的流量设置为永久允许,并立即生效

[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=https ## 查看当前是否允许
no
[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-service=https  ## 加--permanent设置为永久允许
success
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=https  ## 查看,未立即生效
no
[root@linuxprobe ~]# firewall-cmd --reload   ## 执行reload
success
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=https  ## 立即生效
yes

 

8、把firewalld服务中请求HTTP协议的流量设置为永久拒绝,并立即生效:

[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=http  ## 查看当前http在firewalld服务中的状态,为拒绝
no
[root@linuxprobe ~]# firewall-cmd --zone=public --add-service=http --permanent ## 设置为永久允许
success
[root@linuxprobe ~]# firewall-cmd --reload   ## 使其立即生效
success
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=http  ## 查看是否生效,是
yes
[root@linuxprobe ~]# firewall-cmd --zone=public --remove-service=http --permanent  ## 设置为永久拒绝
success
[root@linuxprobe ~]# firewall-cmd --reload   ## 使其立即生效
success
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=http  ## 查看是否生效,是
no

 

9、把在firewalld服务中访问8080和8081端口的流量策略设置为允许,但仅限当前生效:

[root@linuxprobe ~]# firewall-cmd --zone=public --list-ports ## 列出当前的端口
[root@linuxprobe ~]# firewall-cmd --zone=public --add-port=8080-8081/tcp  ## 增加端口
success
[root@linuxprobe ~]# firewall-cmd --zone=public --list-ports   ## 列出端口
8080-8081/tcp

 

10、把原本访问本机888端口的流量转发到22端口,且要求当前和长期均有效:

测试修改前的情况:

[root@linuxprobe ~]# ifconfig | head -n 5  ## 查看当前主机的IP
eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.13  netmask 255.255.255.0  broadcast 192.168.3.255
        inet6 fe80::20c:29ff:feab:7b00  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ab:7b:00  txqueuelen 1000  (Ethernet)
        RX packets 319  bytes 31578 (30.8 KiB)
[root@linuxprobe ~]# ifconfig | head -n 5  ## 登录另一台主机,并查看IP
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.14  netmask 255.255.255.0  broadcast 192.168.3.255
        inet6 fe80::d7fe:9dfc:42ec:c255  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ef:86:f2  txqueuelen 1000  (Ethernet)
        RX packets 562  bytes 68551 (66.9 KiB)
[root@linuxprobe ~]# ssh -p 888 192.168.3.13  ## 测试端口为888的远程控制情形,无法连接
ssh: connect to host 192.168.3.13 port 888: No route to host

执行修改:

[root@linuxprobe ~]# firewall-cmd --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.3.13 --permanent  ## 执行端口转移
success
[root@linuxprobe ~]# firewall-cmd --reload ## 重新加载,立即生效
success

测试修改效果:

[root@linuxprobe ~]# ifconfig | head -n 5 ## 登录另一台主机,并查看IP
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.14  netmask 255.255.255.0  broadcast 192.168.3.255
        inet6 fe80::d7fe:9dfc:42ec:c255  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ef:86:f2  txqueuelen 1000  (Ethernet)
        RX packets 650  bytes 76761 (74.9 KiB)
[root@linuxprobe ~]# ssh -p 888 192.168.3.13  ## 测试端口流量转移后远程控制,通过
root@192.168.3.13's password:
Last login: Fri Oct 30 22:01:12 2020

 

11、firewalld中的富规则表示更细致、更详细的防火墙策略配置,优先级在所有的防火墙策略中是最高的,比如我们可以在firewalld服务中配置一条富规则,使其拒绝192.168.3.0/24网段的所有用户访问本机的ssh服务(22端口):

测试修改前的ssh服务:

[root@linuxprobe ~]# ifconfig | head -n 5  ## 查看当前主机IP
eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.13  netmask 255.255.255.0  broadcast 192.168.3.255
        inet6 fe80::20c:29ff:feab:7b00  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ab:7b:00  txqueuelen 1000  (Ethernet)
        RX packets 360  bytes 37008 (36.1 KiB)
[root@linuxprobe ~]# ifconfig | head -n 5  ## 登录另一台主机,查看IP
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.14  netmask 255.255.255.0  broadcast 192.168.3.255
        inet6 fe80::d7fe:9dfc:42ec:c255  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ef:86:f2  txqueuelen 1000  (Ethernet)
        RX packets 963  bytes 110176 (107.5 KiB)
[root@linuxprobe ~]# ssh 192.168.3.13  ## 测试ssh远程控制服务,通过
root@192.168.3.13's password:
Last login: Fri Oct 30 22:51:22 2020 from 192.168.3.13
[root@linuxprobe ~]# ifconfig | head -n 5  ## 登录另一台主机,并查看IP
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.8  netmask 255.255.255.0  broadcast 192.168.3.255
        inet6 fe80::54f8:bbf7:7760:3745  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:8d:79:f8  txqueuelen 1000  (Ethernet)
        RX packets 226  bytes 211739 (206.7 KiB)
[root@linuxprobe ~]# ssh 192.168.3.13  ## 测试ssh远程控制服务,通过
root@192.168.3.13's password:
Last login: Fri Oct 30 22:52:04 2020 from 192.168.3.14

执行修改,测试192.168.10.0/24网段:

[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject"  ## 执行修改
success
[root@linuxprobe ~]# firewall-cmd --reload   ## 立即生效
success
[root@linuxprobe ~]# ifconfig | head -n 5 ## 登录另一主机,查看IP
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.14  netmask 255.255.255.0  broadcast 192.168.3.255
        inet6 fe80::d7fe:9dfc:42ec:c255  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ef:86:f2  txqueuelen 1000  (Ethernet)
        RX packets 1109  bytes 127776 (124.7 KiB)
[root@linuxprobe ~]# ssh 192.168.3.13 ## 测试远程服务,通过
root@192.168.3.13's password:
Last login: Fri Oct 30 22:53:55 2020 from 192.168.3.8
[root@linuxprobe ~]# ifconfig | head -n 5  ## 登录另一主机,查看IP
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.8  netmask 255.255.255.0  broadcast 192.168.3.255
        inet6 fe80::54f8:bbf7:7760:3745  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:8d:79:f8  txqueuelen 1000  (Ethernet)
        RX packets 1875  bytes 2376094 (2.2 MiB)
[root@linuxprobe ~]# ssh 192.168.3.13  ##  测试远程服务,通过
root@192.168.3.13's password:
Last login: Fri Oct 30 23:00:27 2020 from 192.168.3.14

 执行修改,测试192.168.3.0/24网段:

[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.3.0/24" service name="ssh" reject"  ## 执行修改
success
[root@linuxprobe ~]# firewall-cmd --reload   ## 立即生效
success
[root@linuxprobe ~]# ifconfig | head -n 5  ## 登录另一主机,查看IP
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.14  netmask 255.255.255.0  broadcast 192.168.3.255
        inet6 fe80::d7fe:9dfc:42ec:c255  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ef:86:f2  txqueuelen 1000  (Ethernet)
        RX packets 1300  bytes 152392 (148.8 KiB)
[root@linuxprobe ~]# ssh 192.168.3.13  ## 测试ssh远程服务,拒绝
ssh: connect to host 192.168.3.13 port 22: Connection refused
[root@linuxprobe ~]# ifconfig | head -n 5  ## 登录另一主机,查看IP
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.8  netmask 255.255.255.0  broadcast 192.168.3.255
        inet6 fe80::54f8:bbf7:7760:3745  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:8d:79:f8  txqueuelen 1000  (Ethernet)
        RX packets 1990  bytes 2390926 (2.2 MiB)
[root@linuxprobe ~]# ssh 192.168.3.13  ## 测试ssh远程服务,拒绝
ssh: connect to host 192.168.3.13 port 22: Connection refused

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


系ubuntu 下面打开终端输入:sudo apt-get install sendmail一般就安装完成噶啦跟住进入 /etc/mail/目录输入:m4 sendmail.mc &gt; sendmail.cf意思系跟住.mc文件 生成 sendmial.cf文件输入呢个命令:ps aux | g
依家我有1个软件goagent目录(大家懂得) 放在/home/gateman/Programs/ 下 1. proxy.py 入面有1个 proxy.py 文件 放在/home/gateman/Programs/goagent/local/ 入面 2.breakwall.sh 我在 proxy.p
其实我想讲的是 cp -L关于-L参数的解释:-L, --dereference always follow symbolic links in SOURCE意思是如果复制目标是1个软链接,则复制链接的目标 不是链接本身做个例子: 例如 ~/tmp/fo1 入面有1个c.txt 文件 和 指向他的软
原地址:http://www.rjgc.net/control/content/content.php?nid=4418 1、将文件checkout到本地目录svn checkout path(path是服务器上的目录)例如:svn checkout svn://192.168.1.1/pro/do
chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以 `/`,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为 `/` 位置。实例:用live CD ubuntu假设你的
简单解析下, stdin就是标准输入, stdout就是标准。举个例子, 在当前我要打包1个文件夹 /var/log/ 到当前目录下,并用zip压缩,那么我们可以分步执行#tar -cvf log.tar /var/log/#zip -r log.tar.zip log.tar#rm -rf log
转自:http://man.ddvip.com/linux/Mandrakelinuxref/process-priority.html系统中运行的每个进程都有一个优先级(亦称“nice 值”),其范围从 -20 (最高优先级)到 19 (最低优先级)。默认情况下,进程的优先级是 0 (“基本”调度
str=&quot;/home/gateman&quot; if [ ${str:0:1} = &quot;/&quot; ]; then echo &quot;yes&#39;fi ${str:0:1} 中0表示从第几个字符开始,1表示截取多长
转自:http://kwokchivu.blog.51cto.com/1128937/694347 在RedHat系统下用usermod 命令可把某用户添加进多个附属组,默认情况下,一次性添加多个附属组可用以下方式来添加: usermod -G 附属组1,附属组2,...,附属组X 用户名 但在添加
有个文件 test.txt 内容如下:bash-3.00$ cat test.txt user user user_hiuser #注:呢行系空行T JGATEMANGATTTTTEMANGABBEMANAAABbash-3.00$下面介绍下常用的通配符 配合grep 命令:1. &quot;.&q
linux系统为每1个文件都分配有i索引节点(inode),系统根据呢d节点从磁盘找出数据。 一般来讲,每1个文件名(包含全路径)实际上都链接住1个i索引节点。inode实际上系乜咧? 其实可以算系1个指向磁盘具体位置(柱面,扇区之类)的指针, 系统分析某个文件的inode,得出磁盘柱面,扇区等数据
grep 可以立即为筛选, 一般的用法系 grep + 要查询的字段 + 文件(或者内容 例如| 传递既内容)1.grep + 要查询的字段 + 文件gateman@GPC:~/shell/SQL_GSI$ grep OID a.sqlWHERE OID=@BuildNOWHERE OID INWH
原文转自:http://www.ibm.com/developerworks/cn/linux/l-cn-vimcolumn/index.html开始之前人类大脑对文字的处理是平面式的,所以我们浏览文章、查找资料或者重构代码,要么是横向读,要么是纵向读,要么使用搜索功能,将文字作为一个平面整体。而在
PS:偶很喜欢用scp这个命令来传输数据。scp命令跟cp命令类似,只不过cp命令是在同一台机器上用的,scp是在两台机器上复制传输数据的命令。scp实质相当于利用SSH协议来传输数据的cp命令。 用法举例: 1、复制远程服务器的文件到本地: scp -P888 root@120.18.50.33:
打开终端,进入/bin/ls 一下会见到 bash sh 呢两个文件。其实距地系两个唔同既shell 解析器。如果在脚本a.sh 开头写入#!/bin/sh那么执行./a.sh 时候 就相当于 sh a.sh同理 开头写入#!/bin/bash执行./a.sh 时候 就相当于 bash a.sh如果
find查找文件的时候排除某个或几个文件或目录转自:http://www.cnblogs.com/starspace/archive/2008/10/20/1315380.html比如要在/usr/sam目录下查找不在dir1子目录之内的所有文件find /usr/sam -path &quot;/
假设有变量 var=http://www.google.com/test.htm一 # 号截取,删除左边字符,保留右边字符。echo ${var#*//}其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符即删除 http://结果是 :www.goog
转自: http://edyfox.codecarver.org/html/_vimrc_for_beginners.htmlVIM 中可供用户定制的选项非常非常多,作为初学者,我们没有必要了解这么多东西。下面,滇狐简单列出了一些最常用的配置项,大家可以根据自己的需要将这些内容添加到自己的 .vim
转自:http://www.einit.com/user1/11/archives/2006/3603.htmlUnix/Linux下一般想让某个程序在后台运行,很多都是使用 &amp; 在程序结尾来让程序自动运行。比如我们要运行mysql在后台: /usr/local/mysql/bin/mysq
首先, mount是类unix系统, 挂载设备到1个文件夹的操作命令, 注意系设备阿正常来讲,mount 是不能挂在文件夹到文件夹的。例如, 在我的~/tmp/ 目录中有两个文件夹fo1 fo2其中fo1 中有3个文件a.txt b.txt c.txt fo2 有4个 e.txt d.txt e.t