【Firewalld(Iptables)】-创新互联

       ****************************************
        *************Firewalld(iptables)********
        ****************************************

一,firewalld(动态防火墙后台程序)
   1.(重点)相比iptables,firewalld更加智能化,用以支持网络“zones”,以及分配对一个网络及其相关连接和界面的信任。
   2.(重点)(关于策略的配置)具备一个通向服务或者应用程序以直接增加防火墙规则。【相比iptables,firewalld智能就在此处,它不用进行5条策略的分析,系统会将你的策略安排在何时的地方】
   3.它支持以太网桥,并有分离运行时间和永久性配置选择。
   4.具备IPv4和IPv6防火墙设置和支持。
二,文件所属位置(firewalld和iptablesservice不同点)
   1.firewalld
   /usr/lib/firewalld/和/etc/firewalld 【这两个里面有各种xml文件,进行配置和存储】
   2.iptables
   /etc/sysconfig/iptables    【这里面进行配置存贮】

三,iptables和firewalld的执行区别
   1.iptables server的更改,表示清除所有旧的规则,然后从/etc/sysconfig/iptables里读取所有的新的规则。
   2.firewalld却不会再创建新的规则;仅仅运行规则中的不同之处。因此,firewalld可以再运行时间内。改变设置而不丢失现行连接

四,防火墙结构(上层的图形化和服务,也是基于iptables的命令,最底层是内核中的netfilter)

   system-config-firewall ————> iptables(service)
                             ————> iptables(command)                                ————>kernel(netfilter)
   firewall-config
           —————> firewalld(daemon& service)
   firewall-cmd
五,zones(9个)
   trusted(信任):接受所有网络连接。
   home(家庭):仅接受ssh,mdns,ipp-client,samba-client,或者dhcpv6-client服务连接。
   internal(内部):仅接收ssh,mdns,ipp-client,samba-client,dhcpv6-client。
   work(工作):用于工作区,仅接受ssh,ipp-client或dhcpv6-client服务连接。
   public(公共):在公共区域内使用,仅接受ssh或dhcpv6-client服务连接。
   external(外部):出去的ipv4网络连接通过此区域伪装和转发,仅接受ssh服务连接。
   dmz(非军事区):仅接受ssh服务连接
   block(限制):拒绝所有网络连接
   drop(丢弃):任何接收的网络数据包都被丢弃,没有任何回复。
六,命令

#firewall-cmd --state          [查看firewalld的状态]
#firewall-cmd --get-active-zones   [查看当前活动的区域,并附带一个目前分配给他们的接口列表]
#firewall-cmd --get-defailt-zone   [查看默认区域]
#firewall-cmd --get-zones      [查看所有可用域区]

#firewall-cmd --get=public --list-all  [列出指定区域的所有设置,不指定就是默认]
#firewall-cmd --get-service    [列出所有预设服务]
#firewall-cmd --list-all-zones     [列出所有区域的设置]
#firewall-cmd --set-default-zone=dmz   [设置默认区域]

#firewall-cmd --permanent --zone=internal --add-source=172.25.254.60/24 [设置源地址的所属zone]
(--permanent参数表示永久生效设置,如果没有指定--zone参数,则表示加入到默认区域)
#firewall-cmd --permanent --zone=internal --remove-source=172.25.254.60/24 [删除网络地址]

#firewall-cmd --permanent --zone=internal --add-interface=eth0 [添加,修改,删除网络接口eth0]
#firewall-cmd --permanent --zone=internal --change-interface=eth0
#firewall-cmd --permanent --zone=internal --remove-interface=eth0

#firewall-cmd --permanent --zone=internal --add-service=smtp   [添加,删除邮件服务]
#firewall-cmd --permanent --zone=internal --remove-service-smtp

#firewall-cmd --zone=public --list-ports   [列出,添加,删除端口]
#firewall-cmd --permanent --zone=public --add-port=8080/tcp
#firewall-cmd --permanent --zone=public --remove-port=8080/tcp

#firewall-cmd --reload         [重载配置,并不会中断服务]
#firewall-cmd --complete-reload    [完全重载,会中断服务]

firewalld的规则被保存在/etc/firewalld目录下的文件中,你也可以直接编辑这些文件达到配置防火墙的目的。/usr/lib/firewalld目录下的内容是不可以被编辑的,但可以用做默认模板。

七,防火墙规则(Direct Rules)

 1. 通过firewall-cmd工具,可以使用 --direct选项在运行时间里增加或者移除链。
 iptables策略在修改时候需要明白五条链的意义,对于不熟悉iptables的人,使用直接接口非常危险,若不注意会导致防火墙***。
 直接端口模式适用于服务或者程序,以便在运行时间内增加特定的防火墙规则。
 直接端口模式添加的规则优先应用

  添加规则:
 #firewall-cmd --direct --add-rule ipv4filter IN_public_allow 0 -p tcp --dport 80 -j ACCEPT
  删除规则:
 #firewall-cmd --direct --remove-ruleipv4 filter IN_public_allow 0 -p tcp --dport 80 -j ACCEPT
  列出规则:
 #firewall-cmd --direct--get-all-rules

 2.多语言命令的格式(操作身份root)

 (1)增加一项规则的命令格式如下:
    firewall-cmd [--zone=zone] --add-rich-rule='rule' [--timeout=seconds]
 (这样将为zone分区增加一项多语言规则rule。这个选项可以多次指定。如果分区被省略。将使用默认分区。如果出现超时,规则将在指定的秒数内被激活,并在之后被自动移除)
 (2)删除一项规则:
    firewall-cmd [--zone=zone] --remove-rich-rule='rule'
 (3)检查一项规则是否存在:
    firewall-cmd [--zone=zone] --query-rich-rule='rule'
 (复查是否已经成为区域增加一个多语言规则,如果可用,屏幕会显示yes,退出状态为0;否则,屏幕显示no,退出状态为1.如果省略zone,默认区域将被使用)
 (4)列出所有多语言规则:
    firewall-cmd --list-rich-rules
  (5)添加规则:
    firewall-cmd --add-rich-rule='rulefamily="ipv4" source address="172.25.254.60"accept' [允许172.25.254.60主机所有连接]
    firewall-cmd --add-rich-rule='ruleservice name=ftp limit value=2/s accept'  [每秒钟允许2个新连接访问ftp服务]
    firewall-cmd --add-rich-rule='ruleservice name=ftp log limit value="1/m" audit accept'  [同意新的IPv4和IPv6连接FTP,并使用审核每分钟登录一次]
    firewall-cmd --add-rich-rule='rulefamily="ipv4" source address="172.25.254.60/24" servicename=ssh log prefix="ssh" level="natice" limitvalue="3/m"' [允许来自172.25.254.60/24地址的新IPv4连接SSH服务,并且每分钟记录三次]
    firewall-cmd --permanent--add-rich-rule='rule protocol value=icmp drop'  [禁ping,丢弃所有ICMP数据包]
    firewall-cmd --add -rich-rule='rulefamily=ipv4 source address=172.25.254.6/24 reject' --timeout=10     [当使用source和destination指定地址时,必须有family参数指定ipv4或ipv6.如果指定超时,规则将在指定的秒数内被激活,并在之后被自动移除。]
    firewall-cmd --add -rich-rule='rulefamily=ipv6 source address="2001:db8::/64"servicename="dns" audit limit value="1/h"reject' --timeout=300   [拒绝所有来自2001:db8::/64子网的主机访问dns服务,并且每小时只审核记录一次服务]
    firewall-cmd --permanent--add-rich-rule='rule family=ipv4 source address=172.25.254.6/24 servicename=ftp accept'   [允许172.25.254.6/24访问主机ftp服务]
    firewall-cmd --add-rich-rule='rulefamily="ipv6" source address="fe80::f8f8:5aff:fe6e:7bd0"forward-port to-addr="fe80::f8f8:5aff:fe6e:7bd1"protocol="tcp" port="4011 to-port="4012" " [转发来自ipv6地址fe80::f8f8:5aff:fe6e:7bd0 TCP端口4011到fe80::f8f8:5aff:fe6e:7bd1的TCP端口4012上]

八,【伪装/端口转发】

  (1)伪装
    #firewall-cmd --permanent--zone= --add-masquerade
    #firewall-cmd --permanent--zone=< ZONE > --add-rich-rule='rule family=ipv4 source
addres=172.25.0.0/24 masquerad
  (2)转发
    #firewall-cmd --permanent--zone= --add-forward-port=prot=80:proto=TCP:toport=8080:toaddr=172.25.254.6
    ## firewall-cmd --permanent--zone=< ZONE > --add-rich-rule='rule family=ipv4 source
address=172.25.254.6/24 forward-port port=80 protocol=tcp to-port=8080'

九,管理SElinux端口标签

列出端口标签:
#semanage port -l

添加端口标签:
#semanage port -t http_port_t -p tcp 82

删除端口标签
#semanage port -d http_port_t -p tcp 82

十,规则表:

1.filter表——三个链:INPUT、FORWARD、OUTPUT
作用:过滤数据包 内核模块:iptables_filter.
2.Nat表——三个链:PREROUTING、POSTROUTING、OUTPUT
作用:用于网络地址转换(IP、端口) 内核模块:iptable_nat
3.Mangle表——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS内核模块:iptable_mangle(别看这个表这么麻烦,咱们设置策略时几乎都不会用到它)
4.Raw表——两个链:OUTPUT、PREROUTING
作用:决定数据包是否被状态跟踪机制处理 内核模块:iptable_raw

(一)规则链:

   1.INPUT——进来的数据包应用此规则链中的策略
   2.OUTPUT——外出的数据包应用此规则链中的策略
   3.FORWARD——转发数据包时应用此规则链中的策略
   4.PREROUTING——对数据包作路由选择前应用此链中的规则
   (记住!所有的数据包进来的时侯都先由这个链处理)
   5.POSTROUTING——对数据包作路由选择后应用此链中的规则
   (所有的数据包出来的时侯都先由这个链处理)

(二)规则表之间的优先顺序:

   Raw——mangle——nat——filter
   规则链之间的优先顺序(分三种情况):

第一种情况:入站数据流向

   从外界到达防火墙的数据包,先被PREROUTING规则链处理(是否修改数据包地址等),之后会进行路由选择(判断该数据包应该发往何处),如果数据包的目标主机是防火墙本机(比如说Internet用户访问防火墙主机中的web服务器的数据包),那么内核将其传给INPUT链进行处理(决定是否允许通过等),通过以后再交给系统上层的应用程序(比如Apache服务器)进行响应。

第二冲情况:转发数据流向

   来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理,之后会进行路由选择,如果数据包的目标地址是其它外部地址(比如局域网用户通过网关访问QQ站点的数据包),则内核将其传递给FORWARD链进行处理(是否转发或拦截),然后再交给POSTROUTING规则链(是否修改数据包的地址等)进行处理。

第三种情况:出站数据流向
    防火墙本机向外部地址发送的数据包(比如在防火墙主机中测试公网DNS服务器时),首先被OUTPUT规则链处理,之后进行路由选择,然后传递给POSTROUTING规则链(是否修改数据包的地址等)进行处理

(三)图示法

             ___________________________
            |             |
   PREROUTING   | INPUT  FORWORD   OUTPUT | POSTROUTING
            |                          |
            ----------------------------

             Kernal Netfilter

创新互联秉承实现全网价值营销的理念,以专业定制企业官网,网站设计、做网站,重庆小程序开发,网页设计制作,手机网站制作成都全网营销帮助传统企业实现“互联网+”转型升级专业定制企业官网,公司注重人才、技术和管理,汇聚了一批优秀的互联网技术人才,对客户都以感恩的心态奉献自己的专业和所长。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享名称:【Firewalld(Iptables)】-创新互联
网站地址:http://scyanting.com/article/gohcj.html