zoukankan      html  css  js  c++  java
  • firealld 定义防火墙配置 Alex

    firewalld zone分类

     dmz  非军事区(Demilitarized Zone)

    两道防火墙,可以被外部用户访问的主机放在第一道防火墙里,其他不能被外部访问的主机放到第二道防火墙里,如果是一道防火墙的话,可以被外部访问的主机,和不能被外部访问的主机放在了同一个局域网中,可能会带来安全风险,万一可以被外部访问的主机被黑客攻击,这些主机就可能被当做跳板机访问内部的其他主机,中间的区域就叫DMZ,

    firewalld配置

      firewall-cmd --get-services 查看预定义服务列表
      /usr/lib/firewalld/services/*.xml预定义服务的配置
    三种配置方法
      firewall-config (firewall-config包)图形工具
      firewall-cmd (firewalld包)命令行工具
      /etc/firewalld 配置文件,一般不建议
    一、firewall-config (firewall-config包)图形工具

    前提要求,firewalld 服务是开启状态

    默认区域是public ,当开启firewalld这个服务没有明确允许的都默认拒绝,有打钩的可以访问,没打勾的默认拒绝,打钩及时生效,但只是在内存里生效,没有保存,需要永久生效的话,将Configuration后面的Runtime 改为Permanent

    Runtime:能生效不保存

    Permanent:能保存不生效

    Permanent上点击了对应的服务如果不生效的话,还可以点击Options里的Reload Firewalld重新生效,或者换到字符界面重启防火墙或systemctl reload firewalld重读使其生效

      默认的是服务固定的端口,例如http对应80,

       通过直接搜索到对应的name,如我这是http8080,点击Add添加端口,点击Options里的Reload Firewalld重新生效

     二、firewall-cmd (firewalld包)命令行工具

    1、列出所有可用区域

    firewall-cmd --get-zones 

    2、查询默认区域

    firewall-cmd --get-default-zone

    3、设置默认区域trusted(trusted允许所有流量)

    firewall-cmd --set-default-zone=trusted

    4、列出当前正使用的区域

    firewall-cmd --get-active-zones 

    5、允许服务的流量通过,如果无--zone= 选项,使用默认区域(如ftp)

    firewall-cmd --add-service=ftp

    6、列出允许访问的服务

    firewall-cmd --list-services

    7、查看开放的端口

    firewall-cmd --list-ports 

    8、在internal zone中增加源地址192.168.0.0/24的永久规则

    firewall-cmd --permanent --zone=internal --add-source=192.168.0.0/24
    

    9、在internal zone(internal 区域)中增加协议mysql的永久规则

    firewall-cmd --permanent –zone=internal --add-service=mysql

    10、添加非标端口如tcp8080

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

    以上不加 --Permanent均为临时生效,重启服务后会自动丢失,永久保存在服务后面添加 --Permanent(注意是保存,不会生效,)(Tab键可以自动补全)

    firewall-cmd --add-service=ftp --permanent 

    加载新规则,重新生效, --Permanent不会立即生效,通过这个命令可以立即生效

    firewall-cmd --reload

    禁用iptables,手动起不来

    systemctl mask iptables

    针对上面禁用iptables服务,通过unmask可以关闭mask,可以通过正常启动服务开启

    systemctl unmask firewalld

    三、配置文件

    /etc/firewalld/zones/public.xml

     Permanent里面打钩的会自动保存在这个里面,取消打钩会自动删除里面的对应行

     其它规则

    当基本firewalld语法规则不能满足要求时,可以使用以下更复杂的规则
      rich-rules 富规则,功能强,表达性语言
      Direct configuration rules 直接规则,灵活性差
    帮助:man 5 firewalld.direct

    1、拒绝从192.168.0.11的所有流量,当address 选项使用source 或 destination时,必须用family= ipv4 |ipv6

    firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.0.11/32 reject'

    2、限制每分钟只有两个连接到ftp服务

    firewall-cmd --add-rich-rule=‘rule service name=ftp limit value=2/m accept’

    3、抛弃esp( IPsec 体系中的一种主要协议)协议的所有数据包

    firewall-cmd --permanent --add-rich-rule='rule protocol value=esp drop'

    4、接受所有192.168.1.0/24子网端口5900-5905范围的TCP流量

    firewall-cmd --permanent --zone=vnc --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 port port=5900-5905 protocol=tcp accept'

    rich日志规则

    log [prefix="<PREFIX TEXT>" [level=<LOGLEVEL>] [limit value="<RATE/DURATION>"]
      <LOGLEVEL> 可以是emerg,alert, crit, error, warning, notice, info, debug.
      <DURATION> s:秒, m:分钟, h:小时, d:天
      audit [limit value="<RATE/DURATION>"]

    rich日志规则实例

    接受ssh新连接,记录日志到syslog的notice级别,每分钟最多三条信息

    firewall-cmd --permanent --zone=work --add-rich-rule='rule service name="ssh" log prefix="ssh " level="notice" limit value="3/m" accept

    从2001:db8::/64子网的DNS连接在5分钟内被拒绝,并记录到日志到audit,每小时最大记录一条信息

    firewall-cmd --add-rich-rule='rule family=ipv6 source address="2001:db8::/64" service name="dns" audit limit value="1/h" reject' --timeout=300
     firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.1.0 service name="http" log level=notice prefix="NEW HTTP " limit value="3/s" accept'

    伪装和端口转发

    NAT网络地址转换,firewalld支持伪装和端口转发两种NAT方式

      伪装NAT
    firewall-cmd --permanent --zone=<ZONE> --add-masquerade

     检查是否允许伪装

    firewall-cmd --query-masquerade

    允许防火墙伪装IP

    firewall-cmd --add-masquerade 

    禁止防火墙伪装IP

    firewall-cmd --remove-masquerade 

    示例:从192.168.0.0这个网段过来的数据,就允许伪装,通过本机的某一个网卡连接到互联网上去

    firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.0.0/24 masquerade'

    端口转发
    端口转发:将发往本机的特定端口的流量转发到本机或不同机器的另一个端口。通常要配合地址伪装才能实现

    firewall-cmd --permanent --zone=<ZONE> --add-forward-port=port=<PORTNUMBER>:proto=<PROTOCOL>[:toport=<PORTNUMBER>][:toaddr=<IPADDR>]

    说明:toport= 和toaddr= 至少要指定一个

    示例:
    转发传入的连接9527/TCP,到防火墙的80/TCP到public zone 的192.168.0.254

    1 firewall-cmd --add-masquerade 启用伪装
    2 firewall-cmd --zone=public --add-forward-port=port=9527:proto=tcp:toport=80:toaddr=192.168.0.254

    示例:将访问192.168.1.7:80的转发给192.168.1.15的80端口

    1、在192.168.1.7机器上,启用伪装

    firewall-cmd --add-masquerade 

    2、将访问本机的80端口转发到192.168.1.15的80端口上

    firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=80:toaddr=192.168.1.15
    
    
    
  • 相关阅读:
    公用技术——设计模式23——访问者模式——待补充
    公用技术——设计模式24——空对象模式——待补充
    数据库语言——SQL——基础部分——初篇
    短信通道——阿里大鱼(java)
    spring cloud的常见注解
    HashMap在Jdk1.7和1.8中的实现
    java基础面试题
    java当中需要进一步学习的内容
    jsp中9大内置对象
    mysql中的锁
  • 原文地址:https://www.cnblogs.com/alexlv/p/14746008.html
Copyright © 2011-2022 走看看