zoukankan      html  css  js  c++  java
  • 防火墙 Firewalld

    RHEL7支持的防火墙:
    IPTABLES
    IP6TABLES
    FIREWALL
    EBTABLES

    命令模式:
    firewall-cmd
    图形化界面:
    firewall-config

    Firewall的区域zone:
    Drop 任何流入网络的包都被丢弃,并且不给出任何响应
    Block 任何进入的网络都被拒绝,会给出响应。
    Public 系统默认zone,允许指定的规则。
    External 用在路由器等启用伪装的外部网络
    Dmz 允许隔离区dmz中的电脑有限地被外界网络访问
    Work 工作网络,允许受信任的计算机被限制的进入连接,类似workgroup
    Home 家庭网络,同上,类似homegroup
    Internal 内部网络,同上,针对所有互联网用户。
    Trusted 允许所有网络连接。

    image

    一些常用的基本操作命令
    #systemctl state/status/start/stop firewalld
    #systemctl mask iptables    ---RHEL7中建议使用firewalld,把其它三个防火墙mask掉
    #systemctl mask ip6tables
    #systemctl mask ebtables
    #firewall-cmd --help
    #firewall-cmd --list-all     --列出默认zone-public中的防火墙规则

    [root@rhel1 ~]# firewall-cmd --list-all
    public (active)
       target: default
       icmp-block-inversion: no
       interfaces: enp0s3 enp0s8
       sources:
       services: ssh dhcpv6-client mysql ftp dns smtp samba nfs rpc-bind mountd
       ports: 139/tcp 445/tcp 20048/tcp 20049/tcp 6666/tcp 8888/tcp 12345/tcp 12345/udp 6666/udp 3260/tcp 123/udp 80/tcp
       protocols:
       masquerade: no
       forward-ports:
       source-ports:
       icmp-blocks:
       rich rules:

    #firewall-cmd --get-active-zones --列出活动有zone,也就是配置过防火墙策略的zone

    [root@rhel1 ~]# firewall-cmd --get-active-zones
    public
       interfaces: enp0s3 enp0s8
    block
       sources: 192.168.100.0/24

    #firewall-cmd --zone=block --add-source=192.168.100.2     --来自这个IP的数据包全部被拒绝了。

    从RHEL2客户机ping RHEL1测试:

    [root@rhel2 ~]# ping 192.168.100.1
    PING 192.168.100.1 (192.168.100.1) 56(84) bytes of data.
    From 192.168.100.1 icmp_seq=1 Destination Host Prohibited   --提示被拒绝。
    From 192.168.100.1 icmp_seq=2 Destination Host Prohibited

    # firewall-cmd --zone=block --remove-source=192.168.100.2  --删除防火墙策略

    # firewall-cmd --zone=drop --add-source=192.168.100.2   --来自source网络的数据包全部被丢弃了。从rhel2 ping rhel1 测试时,没任何提示。从这可以看出block和drob的区别。生产环境一般用drop,就是直接丢弃数据包,不返回任何提示,这样更安全。

    #firewall-cmd --zone=work --list-all   --列出指定zone中已配置的防火墙规则

    [root@rhel1 ~]# firewall-cmd --zone=block --list-all
    block (active)
       target: %%REJECT%%
       icmp-block-inversion: no
       interfaces:
       sources: 192.168.100.2
       services:
       ports:
       protocols:
       masquerade: no
       forward-ports:
       source-ports:
       icmp-blocks:
       rich rules:

    #firewall-cmd --get-default-zone   --查看默认zone

    [root@rhel1 ~]# firewall-cmd --get-default-zone
    public

    #firewall-cmd --set-default-zone=public    --设置默认zone,添加防火墙策略时,如果不指定zone参数,则默认添加到public区域中
    #firewall-cmd --add-service=http   --添加服务
    #firewall-cmd --remove-service=http  --删除服务
    #firewall-cmd --add-port=8080/tcp   --添加端口
    #firewall-cmd --remove-port=8080/tcp --删除端口
    #firewall-cmd --add-source=192.168.100.0/24  --添加源地址
    #firewall-cmd --remove-source=192.168.100.0/24
    #firewall-cmd --add-icmp-block=echo-request     --添加echo-request屏蔽
    #firewall-cmd --remove-icmp-block=echo-request
    #firewall-cmd --zone=work --add-service=http    ---指定zone添加服务
    #firewall-cmd --permanent --zone=work --add-service=http   --加permanent参数,表示永久生效,即,将防火墙策略写入到配置文件/etc/firewalld下。否则重启防火墙或重启服务器之后,防火墙策略就不生效了。
    #firewall-cmd –reload   --重读配置文件

    # firewall-cmd --get-zone-of-interface=enp0s3 --查看指定接口的Zone信息
    public
    #firewall-cmd --zone=public --list-interfaces   --查看指定级别的接口
    enp0s3

    # firewall-cmd --zone=public --list-all   --查看指定zone的所有信息

    # firewall-cmd --zone=public --add-interface=eth0 --添加某接口到指定zone

    ===============

    配置public zone端口转发

    # firewall-cmd --zone=public --add-masquerade  --打开端口转发

    # firewall-cmd --zone=public --add-forward-port=port=12345:proto=tcp:toport=80  --将tcp12345转发到80端口

    转发 22 端口数据至另一个 ip 的相同端口上
    # firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.100

    转发 22 端口数据至另一ip的 2055 端口上
    # firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.168.1.100
    富规则端口转发

    把80端口转向8899:

    # firewall-cmd –permanent --add-rich-rule="rule family="ipv4" forward-port port="80" protocol="tcp" to-port="8899""
    #firewall-cmd --reload

    其它富规则例子(拒绝192.168.100.111通过ssh方式连接进来):

    [root@localhost ~]# firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=192.168.100.111/24 service name=ssh reject"
    success
    [root@localhost ~]# firewall-cmd --list-all
    public (active)
      target: default
      icmp-block-inversion: no
      interfaces: enp0s3
      sources: 
      services: ssh dhcpv6-client
      ports: 
      protocols: 
      masquerade: no
      forward-ports: 
      source-ports: 
      icmp-blocks: 
      rich rules: 
    
    [root@localhost ~]# firewall-cmd --reload 
    success
    [root@localhost ~]# firewall-cmd --list-all
    public (active)
      target: default
      icmp-block-inversion: no
      interfaces: enp0s3
      sources: 
      services: ssh dhcpv6-client
      ports: 
      protocols: 
      masquerade: no
      forward-ports: 
      source-ports: 
      icmp-blocks: 
      rich rules: 
            rule family="ipv4" source address="192.168.100.111/24" service name="ssh" reject
    [root@localhost ~]# 
    firewall-cmd --permanent --add-rich-rule="这里面的内容也可以不加引号,系统会自动添加引号“
  • 相关阅读:
    java回顾之多线程
    java回顾之异常
    模拟斗地主和冒泡排序
    java回顾之Map
    java回顾之集合List
    java回顾之树
    java回顾之单列集合、泛型、数据结构
    java回顾之类API再体验之引用类型小结
    java回顾之API初体验
    函数之 闭包函数 和 装饰器
  • 原文地址:https://www.cnblogs.com/rusking/p/7762335.html
Copyright © 2011-2022 走看看