zoukankan      html  css  js  c++  java
  • 防火墙-firewalld

    转载:http://www.52wiki.cn/docs/linux/linux-1ao67g3qlteo0

    一.简介

    firewalld是centos7系统默认的防火墙,和iptables一样,是使用系统中netfilter内核模块的管理工具。

    和iptables不一样的点
    firewalld 使用区域和服务而不是链式规则。
    它动态管理规则集,允许更新规则而不破坏现有会话和连接。

    优点:
    支持动态的配置规则
    有多个预设的区域,可以在不同环境下,简单方便的变更规则

    对于一个接受到的请求具体使用哪个zone,firewalld是通过三种方法来判断的:
    1、source,也就是源地址 优先级最高
    2、interface,接收请求的网卡 优先级第二
    3、firewalld.conf中配置的默认zone 优先级最低

    firewalld有的区域(zone)
    block(拒绝)
    dmz(非军事化)
    drop(丢弃)
    external(外部)
    home(家庭)
    internal(内部)
    public(公开)
    trusted(信任)
    work(工作区)

    文件:
    /etc/firewalld/zones #用户自己定义的
    /usr/lib/firewalld #系统配置文件,预定义配置文件

    状态

    Target:目标
    icmp-block-inversion:ICMP协议类型黑白名单开关(yes/no)
    Interfaces:关联的网卡接口
    sources:来源,可以是IP地址,也可以是mac地址
    services:允许的服务
    ports:允许的目标端口,即本地开放的端口
    protocols:允许通过的协议
    masquerade:是否允许伪装(yes/no),可改写来源IP地址及mac地址
    forward-ports:允许转发的端口
    source-ports:允许的来源端口
    icmp-blocks:可添加ICMP类型,当icmp-block-inversion为no时,这些ICMP类型被拒绝;当icmp-block-inversion为yes时,这些ICMP类型被允许。
    rich rules:富规则,即更细致、更详细的防火墙规则策略,它的优先级在所有的防火墙策略中也是最高的。

    二.操作命令

    启动
    systemctl start firewalld

    查看状态
    systemctl status firewalld / firewall-cmd --state

    停止
    systemctl stop firewalld

    禁用
    systemctl disable firewalld

    三.使用命令

    firewall的状态

    查看防火墙的状态
    --state

    重新加载防火墙,中断用户的连接,将临时配置清掉,加载配置文件中的永久配置
    --reload

    重新加载防火墙,不中断用户的连接(防火墙出严重故障时使用)
    --complete-reload

    紧急模式,强制关闭所有网络连接,–panic-off是关闭紧急模式
    --panic-on

    配置集

    使用firewall-cmd添加的操作,重启会失效

    添加–permanent可以写到配置文件里,永久生效
    firewall-cmd --zone=public --add-service=http

    区域

    可以将配置写到不同与其中,例如public区域允许22端口,而external则允许80端口访问。这样登陆机器开启public,而提供服务的机器开启external。

    查看支持的所有ICMP类型
    --get-icmptypes

    查看所有区域
    --get-zones

    查看当前的默认区域
    --get-default-zone

    更改默认的区域
    --set-default-zone=work

    查看当前正在使用的区域
    --get-active-zones

    查看当前区域支持的服务
    --get-services

    查看当前区域开放的服务列表
    --list-services

    查看此区域内的所有配置,类似与iptables -L -n
    --zone=public --list-all

    查看所有区域配置
    --list-all-zones

    限制规则

    add添加 remove删除/禁用

    将网络接口添加到默认的区域内
    --add-interface=eth0

    将网络接口在默认的区域内删除
    --remove-interface=eth0

    添加端口到区域开放列表中
    --add-port=12222/tcp

    将端口范围添加到开放列表中
    --add-port=5000-10000/tcp

    添加服务到区域开放列表中(注意服务的名称需要与此区域支持的服务列表中的名称一致)
    --add-service=ftp

    区域内将http服务删除在开放列表中删除
    --remove-service=ftp

    添加源地址的流量到指定区域
    --add-source=192.168.1.1

    删除源地址的流量到指定区域
    --remove-source=192.168.1.1

    改变指定的接口到其他区域
    --change-interface=eth1

    确定该网卡接口是否存在于此区域
    --query-interface=eth1

    开启SNAT(源地址转换)
    --add-masquerade

    查询SNAT的状态
    --query-masquerade

    开启SNAT(源地址转换)
    --add-masquerade

    端口转发,本地513到其他机器的22端口,要开启masquerade
    --add-forward-port=port=513:proto=tcp:toport=22:toaddr=192.168.100.101

    四.例子

    服务与端口

    在public中添加一个允许访问http服务
    firewall-cmd --zone=public --add-service=http

    在public中拒绝访问http服务
    firewall-cmd --zone=public --remove-service=http

    允许访问12345端口的tcp流量
    firewall-cmd --zone=public --add-port=12345/tcp

    拒绝访问12345端口的tcp流量
    firewall-cmd --zone=public --remove-port=12345/tcp

    转发

    将本地80端口的流量转发到本地12345端口上
    firewall-cmd --zone="public" --add-forward-port=port=80:proto=tcp:toport=12345

    转发到另一台服务器上需要的区域中激活 masquerade。
    firewall-cmd --zone=public --add-masquerade

    将本地80端口转发到123.456.78.9的8080上
    firewall-cmd --zone="public" --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=123.456.78.9

    将add变成remove就是去除这条
    firewall-cmd --zone="public" --remove-forward-port=port=80:proto=tcp:toport=8080:toaddr=123.456.78.9

    五.丰富规则

    列出你目前的丰富规则
    firewall-cmd --list-rich-rules

    允许192.168.0.14的所有IPv4流量
    firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address=192.168.0.14 accept'

    拒绝192.168.1.10的ipv4访问22端口
    firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.1.10" port port=22 protocol=tcp reject'

    允许10.1.0.3的ipv4访问80端口的tcp,并把流量转发到6532上
    firewall-cmd --zone=public --add-rich-rule 'rule family=ipv4 source address=10.1.0.3 forward-port port=80 protocol=tcp to-port=6532'

    六.实际操作

    跳板机

    跳板机通常只开放22端口,其它关闭,并且只允许某ip连接,其它需要拨VPN

    选择public做默认区域
    firewall-cmd --set-default-zone=public

    允许指定ip访问固定端口
    firewall-cmd --add-rich-rule="rule family="ipv4" source address=10.10.10.140 port protocol="tcp" port="22" accept"

    对外服务机器

    允许所有访问80端口
    firewall-cmd --add-port=80/tcp

    允许固定ip访问所有端口
    firewall-cmd --add-rich-rule 'rule family="ipv4" source address=10.10.10.140 accept'

    允许跳板机ip访问22端口
    firewall-cmd --add-rich-rule="rule family="ipv4" source address=10.10.10.140 port protocol="tcp" port="22" accept"

    内部应用服务器

    允许所有端口访问
    firewall-cmd --add-port=1-65535/tcp
    firewall-cmd --add-port=1-65535/udp

     

  • 相关阅读:
    还在使用golang 的map 做Json编码么?
    Golang 性能测试(2) 性能分析
    golang 性能测试 (1) 基准性能测试
    消息队列 NSQ 源码学习笔记 (五)
    消息队列 NSQ 源码学习笔记 (四)
    消息队列 NSQ 源码学习笔记 (三)
    消息队列 NSQ 源码学习笔记 (二)
    消息队列 NSQ 源码学习笔记 (一)
    你不知道的空格
    Supervisor 使用和进阶4 (Event 的使用)
  • 原文地址:https://www.cnblogs.com/flashfish/p/10956720.html
Copyright © 2011-2022 走看看