firewall防火墙

1 防火墙简介

在基于RHEL7的服务器,提供了一个firewall的动态管理的防火墙,其支持IPv4和IPv6,还支持以太网桥,并有分离运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口。

2 简单介绍

firewall的配置文件:/etc/lib/firewalld/和/etc/firewalld/下的XML文件。配置firewall可以直接编辑配置文件,也可以使用firewall-cmd命令行工具。

3 防火墙使用

  1. 查看firewalld的状态
firewall-cmd --state
  1. 查看活动分区类别
firewall-cmd --get-active-zones
  1. 查看当前分配的接口
firewall-cmd --get-zone-of-interface=ens33
  1. 查看分配的区域的所有接口:
firewall-cmd --zone=public --list-interfaces
  1. 找出公共区域的所有设置
firewall-cmd --zone=public --list-all
firewall-cmd --list-all
  1. 关闭|开启所有的输入和输出的数据包(禁用)
# 关闭所有输入输出的数据包
firewall-cmd --panic-on
# 开启再次输入输出的数据包
firewall-cmd --panic-off
# 查看panic模式的状态(yes启用 no退出)
firewall-cmd --query-panic
  1. 重新加载防火墙
# 重新加载防火墙,不中断用户连接(不丢失状态信息)
firewall-cmd --reload
# 重新加载防火墙并中断用户连接(丢失状态信息),防火墙出现严重问题才执行
firewall-cmd --complete-reload
  1. 为分区增加接口
# 把em1增加到公共分区,增加--permanent选择并重新加载防火墙,是之永久生效
firewall-cmd --zone=public --add-interface=em1
  1. 设置分区(将一个端口加入分区)
# 设置默认分区,立即生效,不需要重新加载防火墙
firewall-cmd --set-default-zone=public
# 将一个端口加入分区
firewall-cmd --zone=public --permanent --add-port=8080/tcp
firewall-cmd --reload
# 查看开发的端口
firewall-cmd --zone=public --list-ports
# 删除
firewll-cmd --zone=pubic --remove --remove-port=8080/tcp
  1. 将一个服务(http)加入到分区
# 加入
firewall-cmd --permanent --zone=work --add-service=http
firewall-cmd --reload
# 移除
firewall-cmd --permanent --zone=work --remove-service=http
firewall-cmd --reload
# 注意,这并不会中断已经建立的连接。如果您打算中断,您可以使用 --complete-reload 选项,但这不仅仅中断您已经移除的服务,还会中断所有已经建立的连接。
  1. 配置伪装 IP 地址
# 查询是否可用
firewall-cmd --zone=external --query-masquerade
# 允许伪装IP
firewall-cmd --zone=external --add-masquerade
# 禁用伪装IP
firewall-cmd --zone=external --remove-masquerade
  1. 配置端口转发,地址转发
# 将22端口转发到3753端口,使用tcp协议
firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=3753
# 原本发往22端口的程序包现在被转发到地址是192.0.2.55下相同的端口
firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toaddr=192.0.2.55
# 将22端口的数据包转发到192.0.2.55下的2055端口
firewall-cmd --zone=external /
--add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.0.2.55
  1. 使用直接接口增加一个自定义规则
# 增加一个自定义规则到 “IN_public_allow” 链里:
firewall-cmd --direct --add-rule ipv4 filter IN_public_allow \
0 -m tcp -p tcp --dport 666 -j ACCEPT
# 从 “IN_public_allow” 链移除一个自定义规则:
firewall-cmd --direct --remove-rule ipv4 filter IN_public_allow \
0 -m tcp -p tcp --dport 666 -j ACCEPT
# 列出 “IN_public_allow” 链中的规则:
firewall-cmd --direct --get-rules ipv4 filter IN_public_allow
  1. 配置rich language语法:

    格式:
# 添加
firewall-cmd [--zone=zone] --add-rich-rule='rule' [--timeout 9=seconds]
# 移除
firewall-cmd [--zone=zone] --remove-rich-rule='rule'
# 检查是否存在
firewall-cmd [--zone=zone] --query-rich-rule='rule'

多规则结构:

rule [family="<rule family>"]
[ source address="<address>" [invert="True"] ]
[ destination address="<address>" [invert="True"] ]
[ <element> ]
[ log [prefix="<prefix text>"] [level="<log level>"] [limit value="rate/duration"] ]
[ audit ]
[ accept|reject|drop ]

多规则命令:

source:指定源地址,不支持使用主机名。可以通过增加 invert="true" 或 invert="yes" 来颠倒源地址命令的意思。所有提供的地址都匹配。
destination:通过制定目的地址,目标可以被限制在目的地址中。
service:服务名称是 firewalld 提供的其中一种服务。可以通过 firewall-cmd --get-services查看。格式: service name=service_name
port: 端口,可为范围或者独立数字 格式:port port=number_or_range protocol=protocol
protocol:协议
icmp-block:用这个命令阻绝一个或多个 ICMP 类型,查看支持的icmp类型列表:firewall-cmd --get-icmptypes,格式: icmp-block name=icmptype_name
masquerade:打开规则里的 IP 伪装。用源地址而不是目的地址来把伪装限制在这个区域内。在此,指定一个动作是不被允许的。
forward-port:从一个带有指定为 tcp 或 udp 协议的本地端口转发数据包到另一个本地端口,或另一台机器,或另一台机器上的另一个端口.格式:forward-port port=number_or_range protocol=protocol /
to-port=number_or_range to-addr=address

运行来自主机192.168.1.3的所有IPv4流量

firewall-cmd --zone=public --add-rich-rule="rule family='ipv4' source address=192.168.1.3 accept"

拒绝来自主机192.168.1.4到22端口的tcp流量

firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address=192.168.1.4 port port=22 protocol=tcp reject'

允许主机10.1.0.3到80端口的IPv4的TCP流量,并转发到65530端口上

firewall-cmd --zone=public --add-rich-rule 'rule family=ipv4 source address=10.1.0.3 forward-port port=80 protocol=tcp to-port=65530'

firewall防火墙的更多相关文章

  1. CentOS7下Firewall防火墙配置用法详解

    官方文档地址: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide ...

  2. Centos中iptables和firewall防火墙开启、关闭、查看状态、基本设置等(转)

    iptables防火墙 1.基本操作 # 查看防火墙状态 service iptables status   # 停止防火墙 service iptables stop   # 启动防火墙 servi ...

  3. CentOS7.4 关闭firewall防火墙,改用iptables

    1.关闭默认的firewall防火墙 systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service ...

  4. 如何将centos7自带的firewall防火墙更换为iptables防火墙

    用惯了centos6的iptables防火墙,对firewall太无感了,那么如何改回原来熟悉的iptables防火墙呢? 1.关闭firewall防火墙 [root@centos7 html]# s ...

  5. CentOS 7中firewall防火墙详解和配置以及切换为iptables防火墙--转载

    最近在linux(这里用到的是Centos7的64位版本)安装nginx时,在开放80端口时用iptables设置端口 和重启服务发现提示未找到文件,在网络上收集查找后发现在Centos7中iptab ...

  6. Centos 7 关闭firewall防火墙启用iptables防火墙

    一.关闭firewall防火墙 1.停止firewall systemctl stop firewalld.service 2.禁止firewall开机启动 systemctl disable fir ...

  7. 《Linux就该这么学》培训笔记_ch08_iptables与firewall防火墙

    <Linux就该这么学>培训笔记_ch08_iptables与firewall防火墙 文章最后会post上书本的笔记照片. 文章主要内容: 防火墙管理工具 iptables firewal ...

  8. firewall防火墙常用操作

    # firewall防火墙常用操作 - 启动```systemctl start firewalld```- 停止```systemctl stop firewalld```- 重启```system ...

  9. CentOS7安装firewall防火墙

    CentOS7之后 , 系统已经推荐了firewall防火墙 , 而不是iptables 主要 : firewall 和 iptables冲突 , 需要禁用其中一个. #停止iptables服务 sy ...

随机推荐

  1. 课堂小记---JavaScript(4)

    day11 1.正则表达式 去掉首尾的空格或者其他字符 replace方法可传入函数可分组. 以下为分组 基础正则表达式语法: /** * 正则表达式是一个对象类型 */ // 匹配字符串中的che ...

  2. 关于<超文本>定义

    百度百科定义: 1, 超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本.它更是一种用户界面范式,用以显示文本及与文本之间相关的内容.现时超文本普遍以电子文档方式存在,其中的文字包含 ...

  3. vue vue-resource的特点

    1.vue-resource 实现 get, post, jsonp请求. 2.JSONP的是实现原理: 由于浏览器的安全性限制,不允许AJAX访问 协议不同.域名不同.端口不同的数据接口,浏览器认为 ...

  4. HDU 2243考研路茫茫——单词情结 (AC自动机+矩阵快速幂)

    背单词,始终是复习英语的重要环节.在荒废了3年大学生涯后,Lele也终于要开始背单词了. 一天,Lele在某本单词书上看到了一个根据词根来背单词的方法.比如"ab",放在单词前一般 ...

  5. BUAA面向对象设计与构造——第二单元总结

    BUAA面向对象设计与构造——第二单元总结 第一阶段:单部傻瓜电梯的调度 第二阶段:单部可捎带电梯的调度 (由于我第一次写的作业就是可捎带模式,第二次只是增加了负数楼层,修改了一部分参数,因此一起总结 ...

  6. Git是什么、Git的功能、为什么versioncontrol用Git、Git的常用命令、Git的优缺点

    Git是什么 git是目前世界上最先进的分布式版本控制系统(没有之一). Git是用于 Linux内核开发的版本控制工具.与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版 ...

  7. 使用ftp读取文件夹中的多个文件,并删除

    public class FTPUtils { private static final Logger LOG = LoggerFactory.getLogger(FTPUtils.class); / ...

  8. 常用jq代码

    1. 只允许输入数字,且禁止输入法 <html> <head> <script type='text/javascript' src='../../js/jquery.m ...

  9. java 新手指南

    Java新手指南 不小心走上了一条不归路的我 因为对可视化感兴趣,然后学了MFC,发现MFC好麻烦啊,不如开发APP吧,刚学开发APP,艹,居然是用java做开发,那只好学java了,,呜呜,不知道什 ...

  10. 如何查找MySQL中查询慢的SQL语句(转载)

    转载自https://www.cnblogs.com/qmfsun/p/4844472.html 如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那 ...