Linux firewall-cmd 命令详解

来源:互联网 发布:淘宝c店投诉违反广告法 编辑:程序博客网 时间:2024/06/15 15:10
宽为限 紧用功 功夫到 滞塞通

firewall-cmd


Linux上新用的防火墙软件,跟iptables差不多的工具。

补充说明


firewall-cmd 是 firewalld的字符界面管理工具,firewalld是centos7的一大特性,最大的好处有两个:支持动态更新,不用重启服务;第二个就是加入了防火墙的“zone”概念。

firewalld跟iptables比起来至少有两大好处:

firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效。
firewalld在使用上要比iptables人性化很多,即使不明白“五张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能。
firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和 iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结 构以及使用方法不一样罢了。

语法

finger(选项)(参数)

实例

# 安装firewalldyum install firewalld firewall-configsystemctl start  firewalld # 启动systemctl status firewalld # 或者 firewall-cmd --state 查看状态systemctl disable firewalld # 停止systemctl stop firewalld  # 禁用# 关闭服务的方法# 你也可以关闭目前还不熟悉的FirewallD防火墙,而使用iptables,命令如下:systemctl stop firewalldsystemctl disable firewalldyum install iptables-servicessystemctl start iptablessystemctl enable iptables

配置firewalld

```firewall-cmd --version  # 查看版本firewall-cmd --help     # 查看帮助# 查看设置:firewall-cmd --state  # 显示状态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 --reload # 更新防火墙规则firewall-cmd --complete-reload# 两者的区别就是第一个无需断开连接,就是firewalld特性之一动态添加规则,第二个需要断开连接,类似重启服务# 将接口添加到区域,默认接口都在publicfirewall-cmd --zone=public --add-interface=eth0# 永久生效再加上 --permanent 然后reload防火墙# 设置默认接口区域,立即生效无需重启firewall-cmd --set-default-zone=public# 查看所有打开的端口:firewall-cmd --zone=dmz --list-ports# 加入一个端口到区域:firewall-cmd --zone=dmz --add-port=8080/tcp# 若要永久生效方法同上# 打开一个服务,类似于将端口可视化,服务需要在配置文件中添加,/etc/firewalld 目录下有services文件夹,这个不详细说了,详情参考文档firewall-cmd --zone=work --add-service=smtp# 移除服务firewall-cmd --zone=work --remove-service=smtp# 显示支持的区域列表firewall-cmd --get-zones# 设置为家庭区域firewall-cmd --set-default-zone=home# 查看当前区域firewall-cmd --get-active-zones# 设置当前区域的接口firewall-cmd --get-zone-of-interface=enp03s# 显示所有公共区域(public)firewall-cmd --zone=public --list-all# 临时修改网络接口(enp0s3)为内部区域(internal)firewall-cmd --zone=internal --change-interface=enp03s# 永久修改网络接口enp03s为内部区域(internal)firewall-cmd --permanent --zone=internal --change-interface=enp03s

服务管理

# 显示服务列表  Amanda, FTP, Samba和TFTP等最重要的服务已经被FirewallD提供相应的服务,可以使用如下命令查看:firewall-cmd --get-services# 允许SSH服务通过firewall-cmd --enable service=ssh# 禁止SSH服务通过firewall-cmd --disable service=ssh# 打开TCP的8080端口firewall-cmd --enable ports=8080/tcp# 临时允许Samba服务通过600秒firewall-cmd --enable service=samba --timeout=600# 显示当前服务firewall-cmd --list-services# 添加HTTP服务到内部区域(internal)firewall-cmd --permanent --zone=internal --add-service=httpfirewall-cmd --reload     # 在不改变状态的条件下重新加载防火墙

端口管理

# 打开443/TCP端口firewall-cmd --add-port=443/tcp# 永久打开3690/TCP端口firewall-cmd --permanent --add-port=3690/tcp# 永久打开端口好像需要reload一下,临时打开好像不用,如果用了reload临时打开的端口就失效了# 其它服务也可能是这样的,这个没有测试firewall-cmd --reload# 查看防火墙,添加的端口也可以看到firewall-cmd --list-all

直接模式

# FirewallD包括一种直接模式,使用它可以完成一些工作,例如打开TCP协议的9999端口firewall-cmd --direct -add-rule ipv4 filter INPUT 0 -p tcp --dport 9000 -j ACCEPTfirewall-cmd --reload

控制端口 / 服务

可以通过两种方式控制端口的开放,一种是指定端口号另一种是指定服务名。虽然开放 http 服务就是开放了 80 端口,但是还是不能通过端口号来关闭,也就是说通过指定服务名开放的就要通过指定服务名关闭;通过指定端口号开放的就要通过指定端口号关闭。还有一个要注意的就是指定端口的时候一定要指定是什么协议,tcp 还是 udp。知道这个之后以后就不用每次先关防火墙了,可以让防火墙真正的生效。

firewall-cmd --add-service=mysql        # 开放mysql端口firewall-cmd --remove-service=http      # 阻止http端口firewall-cmd --list-services            # 查看开放的服务firewall-cmd --add-port=3306/tcp        # 开放通过tcp访问3306firewall-cmd --remove-port=80tcp        # 阻止通过tcp访问3306firewall-cmd --add-port=233/udp         # 开放通过udp访问233firewall-cmd --list-ports               # 查看开放的端口

伪装 IP

firewall-cmd --query-masquerade # 检查是否允许伪装IPfirewall-cmd --add-masquerade   # 允许防火墙伪装IPfirewall-cmd --remove-masquerade# 禁止防火墙伪装IP

端口转发

端口转发可以将指定地址访问指定的端口时,将流量转发至指定地址的指定端口。转发的目的如果不指定 ip 的话就默认为本机,如果指定了 ip 却没指定端口,则默认使用来源端口。 如果配置好端口转发之后不能用,可以检查下面两个问题:

  1. 比如我将 80 端口转发至 8080 端口,首先检查本地的 80 端口和目标的 8080 端口是否开放监听了
  2. 其次检查是否允许伪装 IP,没允许的话要开启伪装 IP
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080   # 将80端口的流量转发至8080firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1 # 将80端口的流量转发至192.168.0.1firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 将80端口的流量转发至192.168.0.1的8080端口
  1. 当我们想把某个端口隐藏起来的时候,就可以在防火墙上阻止那个端口访问,然后再开一个不规则的端口,之后配置防火墙的端口转发,将流量转发过去。
  2. 端口转发还可以做流量分发,一个防火墙拖着好多台运行着不同服务的机器,然后用防火墙将不同端口的流量转发至不同机器。

站在巨人的肩膀上

本篇博文转载地址
https://jaywcjlove.github.io/linux-command/c/firewall-cmd.html

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 桌面计算机图标不见了怎么办 qq空间封闭了怎么办 血小板600多怀孕怎么办 干活要不到工钱怎么办 银联手机号换了怎么办 深圳个体户工商年检怎么办 三个人合伙怎么办执照 两个人合伙怎么办执照 单位公章坏了怎么办 公章外壳坏了怎么办 公司变更名称银行怎么办 公司被起诉了怎么办 微信限制搜索怎么办 微博vip改不了怎么办 改不了微信号怎么办 修改不了微信号怎么办 触屏自检失败怎么办 微信名片加不上怎么办 微信号不是手机号怎么办 qq被盗号了怎么办 不知道对方名字怎么办 qq密码找不到了怎么办 好朋友跟你告白怎么办 感情破裂没证据怎么办 在微信里找不到昵称怎么办 营业执照副本丢了怎么办 个体营业执照副本丢失怎么办 三联发票丢了怎么办 发票领用簿用完怎么办 忘记三证合一怎么办 ca证书锁死怎么办? 上海ca证书丢失怎么办 车牌号码好记怎么办 个体营业执照没有年报怎么办 工商年检过期了怎么办 注册公司没有业务怎么办 写字楼中途退租押金怎么办 公司不买公积金怎么办 公司换股东员工怎么办 公司注销后账本怎么办 国税正本丢了怎么办