开发者

linux之防火墙firewall解读

目录
  • 一、常用命令
    • 使用firewall-cmd命令管理防火墙
  • 二、配置docker0服务到受信任连接
    • 三、help 帮助详解
      • Zone Options 区域选项
      • IPSet Options
      • IcmpType Options
      • Service Options
      • Options to Adapt and Query Zones 适应和查询区域的选项
      • Options to Handle Bindings of Interfaces 处理接口绑定的选项
      • Helper Options 助手选项
      • Direct Options 直接选项
      • Lockdown Options
      • Lockdown Whitelist Options
      • Panic Options
    • 总结

      一、常用命令

      #查看防火墙状态    
      systemctl status firewalld
      #关闭防火墙  
      systemctl stop firewalld
      #3、开启防火墙  
      systemctl start firewalld
      #4、禁止防火墙开机自启动  
      systemctl disable firewalld
      #5、设置防火墙开机自启动  
      systemctl enable firewalld

      使用firewall-cmd命令管理防火墙

      #  查看防火墙状态:
      firewall-cmd --state
      #查看防火墙,添加的端口也可以看到:
      firewall-cmd --list-all
      #列出所有区域的设置:
      firewall-cmd --list-all-zones
      #查看防火墙已开放的端口列表(默认不开放任何端口)   
      firewall-cmd --list-ports
      # 查看获取的区域
      [root@localhost ~] firewall-cmd --get-active-zones
      docker
        interfaces: docker0
      
      
      注意:所有操作之前都需附带 --zone=public --permanent(指定区域和永久生效)。操作之后需要执行firewall-cmd --reload刷新配置。
      # 添加规则 开启80端口(允许80端口通过防火墙)
      firewall-cmd --permanent --zone=public --add-port=80/tcp    # --permanent (永久生效)
      #更新防火墙规则  
      firewall-cmd --reload
      # 删除开放的端口  
      firewall-cmd --permanent --zone=public  --remove-port=80/tcp  
      # 查看80端口状态:
      firewall-cmd --zone=public --query-port=80/tcp
      
      -------------- ip白名单设置 ----------------
      #关闭某个端口
      #开启某个端口(指定IP可访问) 只允许服务器192.168.1.1/24网段的3306端口能访问
      firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.1.1/24" port protocol="tcp" port="3306" accept"
      #禁止ping数据包:
      firewall-cmd --permanent --add-rich-rule='rule protocol value=icmp drop'
      # 关闭某个端口(删除策略) 
      firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="10.1.1.14/32" port protocol="tcp" port="80" accept"
      
      
      # 拒绝所有包:
      firewall-cmd --panic-on
      # 取消拒绝状态: 
      firewall-cmd --panic-off
      # 查看是否拒绝: 
      firewall-cmd --query-panic
      
      #显示服务列表:
      firewall-cmd --get-services
      #允许SSH服务通过:
      firewall-cmd --add-service=ssh
      #禁止SSH服务通过:
      firewall-cmd --remove-service=ssh
      #显示当前服务:
      firewall-cmd --list-services
      
      
      #临时允许Samba服务通过600秒:
      firewall-cmd --enable service=samba --timeout=600
      
      #查看指定接口所属区域:
      firewall-cmd --get-zone-of-interface=eth0
      #完全重新载入规则(会中断已连接的连接,类似于重启):
      firewall-cmd --complete-reload
      
      注意:打开防火墙后一定要先添加ssh端口到规则中,并重新载入
      firewall-cmd --permanent --zone=public --add-port=22/tcp 
      firewall-cmd --reload
      

      二、配置docker0服务到受信任连接

      #配置docker0服务到受信任连接
      nmcli connection modify docker0 connection.zone trusted
      
      #停止NetworkManager(检测网络、自动连接网络的程序)服务
      systemctl stop NetworkManager.service
      
      #修改docker网络接口为内部区域(永久)
      firewall-cmd --permanent --zone=trusted --change-interface=docker0
      
      #启动NetworkManager(检测网络、自动连接网络的程序)服务
      systemctl start NetworkManager.service
      
      #配置docker0服务到受信任连接
      nmcli connection modify docker0 connection.zone trusted
      
      #重启docker服务
      systemctl restart docker.service编程

      三、help 帮助详解

      [root@localhost ~]# firewall-cmd --help
      
      Usage: firewall-cmd [OPTIONS...]
      
      General Options
        -h, --help           Prints a short help text and exists
        -V, --version        Print the version string of firewalld
        -q, --quiet          Do not print status messages
      
      Status Options 	状态选择
        --state              Return and print firewalld state					返回并打印防火墙状态
        --reload             Reload firewall and keep state information		重新加载防火墙并保留状态信息
        --complete-reload    Reload firewall and lose state information		重新加载防火墙并丢失状态信息
        --runtime-to-permanent
                             Create permanent from runtime configuration
        --check-config       Check permanent configuration for errors
      
      Log Denied Options 	日志拒绝选项
        --get-log-denied     Print the log denied value			打印日志拒绝值
        --set-log-denied=<value>
                             Set log denied value
      
      Automatic Helpers Options
        --get-automatic-helpers
                             Print the automatic helpers value
        --set-automatic-helpers=<value>
                             Set automatic helpers value
      
      Permanent Options
        --permanent          Set an option permanently
                             Usable for options marked with [P]

      Zone Options 区域选项

      Zone Options
        --get-default-zone   Print default zone for connections and interfaces		打印连接和接口的默认区域
        --set-default-zone=<zone>
                             Set default zone						设置默认区域
        --get-active-zones   Print currently active zones 		打印当前活动区域
        --get-zones          Print predefined zones [P]			打印预定义区域
        --get-services       Print predefined services [P]		打印预定义服务
        --get-icmptypes      Print predefined icmptypes [P]
        --get-zone-of-interface=<interface>
                             Print name of the zone the interface is bound to [P]
        --get-zone-of-source=<source>[/<mask>]|<MAC>|ipset:<ipset>
                             Print name of the zone the source is bound to [P]
        --list-all-zones     List everything added for or enabled in all zones [P]
        --new-zone=<zone>    Add a new zone [P only]
        --new-zone-from-file=<filename> [--name=<zone>]
                             Add a new zone from file with optional name [P only]
        --delete-zone=<zone> Delete an existing zone [P only]
        --load-zone-defaults=<zone>
                             Load zone default settings [P only] [Z]
        --zone=<zone>        Use this zone to set or query options, else default zone
                             Usable for options marked with [Z]
        --get-target         Get the zone target [P only] [Z]
        --set-target=<target>
                             Set the zone target [P only] [Z]
        --info-zone=<zone>   Print information about a zone
        --path-zone=<zone>   Print file path of a zone [P only]

      IPSet Options

      IPSet Options
        --get-ipset-types    Print the supported ipset types 							打印支持的ipset类型
        --new-ipset=<ipset> --type=<ipset type> [--option=<key>[=<value>]]..
                             Add a new ipset [P only]
        --new-ipset-from-file=<filename> [--name=<ipset>]
                             Add a new ipset from file with optional name [P only]
        --delete-ipset=<ipset>
                             Delete an existing ipset [P only]
        --load-ipset-defaults=<ipset>
                             Load ipset default settings [P only]
        --info-ipset=<ipset> Print information about an ipset
        --path-ipset=<ipset> Print file path of an ipset [P only]
        --get-ipsets         Print predefined ipsets
        --ipset=<ipset> --set-description=<description>
                             Set new description to ipset [P only]
        --ipset=<ipset> --get-description
                             Print description for ipset [P only]
        --ipset=<ipset> --set-short=<description>
                             Set new short description to ipset [P only]
        --ipset=<ipset> --get-short
                             Print short description for ipset [P only]
        --ipset=<ipset> --add-entry=<entry>
                             Add a new entry to an ipset [P]
        --ipset=<ipset> --remove-entry=<entry>
                             Remove an entry from an ipset [P]
        --ipset=<ipset> --query-entry=<entry>
                             Return whether ipset has an entry [P]
        --ipset=<ipset> --get-entries
                             List entries of an ipset [P]
        --ipset=<ipset> --add-entries-from-file=<entry>
                             Add a new entries to an ipset [P]
        --ipset=<ipset> --remove-entries-from-file=<entry>
                             Remove entries from an ipset [P]

      IcmpType Options

      IcmpType Options
        --new-icmptype=<icmptype>
                             Add a new icmptype [P only]
        --new-icmptype-from-file=<filename> [--name=<icmptype>]
                             Add a new icmptype from file with optional name [P only]
        --delete-icmptype=<icmptype>
                             Delete an existing icmptype [P only]
        --load-icmptype-defaults=<icmptype>
                             Load icmptype default settings [P only]
        --info-icmptype=<icmptype>
                             Print information about an icmptype
        --path-icmptype=<icmptype>
                             Print file path of an icmptype [P only]
        --icmptype=<icmptype> --set-description=<description>
                             Set new description to icmptype [P only]
        --icmptype=<icmptype> --get-description
                             Print description for icmptype [P only]
        --icmptype=<icmptype> --set-short=<description>
                             Set new short description to icmptype [P only]
        --icmptype=<icmptype> --get-short
                             Print short description for icmptype [P only]
        --icmptype=<icmptype> --add-destination=<ipv>
                             Enable destination for ipv in icmptype [P only]
        --icmptype=<icmptype> --remove-destination=<ipv>
                             Disable destination for ipv in icmptype [P only]
        --icmptype=<icmptype> --query-destination=<ipv>
                             Return whether destination ipv is enabled in icmptype [P only]
        --icmptype=<icmptype> --get-destinations
                             List destinations in icmptype [P only]

      Service Options

      Service Options
        --new-service=<service>
                             Add a new service [P only]
        --new-service-from-file=<http://www.devze.comfilename> [--name=<service>]
                             Add a new service from file with optional name [P only]
        --delete-service=<service>
                             Delete an existing service [P only]
        --load-service-defaults=<service>
                             Load icmptype default settings [P only]
        --info-service=<service>
                             Print information about a service
        --path-service=<service>
                             Print file path of a service [P only]
        --service=<service> --set-description=<description>
                             Set new description to service [P only]
        --service=<service> --get-description
                             Print description for service [P only]
        --service=<service> --set-short=<description>
                             Set new short description to service [P only]
        --service=<service> --get-short
                             Print short description for service [P only]
        --service=<service> --add-port=<portid>[-<portid>]/<protocol>
                             Add a new port to service [P only]
        --service=<service> --remove-port=<portid>[-<portid>]/<protocol>
                             Remove a port from service [P only]
        --service=<service> --query-port=<portid>[-<portid>]/<protocol>
                             Return whether the port has been added for service [P only]
        --service=<service> --get-ports
                             List ports of service [P only]
        --service=<service> --add-protocol=<protocol>
                             Add a new protocol to service [P only]
        --service=<service> --remove-protocol=<protocol>
                             Remove a protocol from service [P only]
        --service=<service> --query-protocol=<protocol>
                             javascriptReturn whether the protocol has been added for service [P only]
        --service=<service> --get-protocols
                             List protocols of service [P only]
        --service=<service> --add-source-port=<portid>[-<portid>]/<protocol>
                             Add a new source port to service [P only]
        --service=<service> --remove-source-port=<portid>[-<portid>]/<protocol>
                             Remove a source port from service [P only]
        --service=<service> --query-source-port=<portid>[-<portid>]/<protocol>
                             Return whether the source port has been added for service [P only]
        --service=<service> --get-source-ports
                             List source ports of service [P only]
        --service=<service> --add-module=<module>
                             Add a new module to service [P only]
        --service=<service> --remove-module=<module>
                             Remove a module from service [P only]
        --service=<service> --query-module=<module>
                             Return whether the module has been added for service [P only]
        --service=<service> --get-modules
                             List modules of service [P only]
        --service=<service> --set-destination=<ipv>:<address>[/<mask>]
                             Set destination for ipv to address in service [P only]
        --service=<service> --remove-destination=<ipv>
                             Disable destination for ipv i service [P only]
        --service=<service> --query-destination=<ipv>:<address>[/<mask>]
                             Return whether destination ipv is set for service [P only]
        --service=<service> --get-destinations
                             List destinations in service [P only]

      Options to Adapt and Query Zones 适应和查询区域的选项

      Options to Adapt and Query Zones
        --list-all           List everything added for or enabled in a zone [P] [Z]
        --list-services      List services added for a zone [P] [Z]
        --timeout=<timeval>  Enable an option for timeval time, where timeval is
                             a number followed by one of letters 's' or 'm' or 'h'
                             Usable for options marked with [T]
        --set-description=<description>
                             Set new description to zone [P only] [Z]
        --get-description    Print description for zone [P only] [Z]
        --set-short=<description>
                             Set new short description to zone [P only] [Z]
        --get-short          Print short description for zone [P only] [Z]
        --add-service=<service>
                             Add a service for a zone [P] [Z] [T]
        --remove-service=<service>
                             Remove a service from a zone [P] [Z]
        --query-service=<service>
                             Return whether service has been added for a zone [P] [Z]
        --list-ports         List ports added for a zone [P] [Z]
        --add-port=<portid>[-<portid>]/<protocol>
                             Add the port for a zone [P] [Z] [T]
        --remove-port=<portid>[-<portid>]/<protocol>
                             Remove the port from a zone [P] [Z]
        --query-port=<portid>[-<portid>]/<protocol>
                             Return whether the port has been added for zone [P] [Z]
        --list-protocols     List protocols added for a zone [P] [Z]
        --add-protocol=<protocol>
                             Add the protocol for a zone [P] [Z] [T]
        --remove-protocol=<protocol>
                             Remove the protocol from a zone [P] [Z]
        --query-protocol=<protocol>
                             Return whether the protocol has been added for zone [P] [Z]
        --list-source-ports  List source ports added for a zone [P] [Z]
        --add-source-port=<portid>[-<portid>]/<protocol>
                             Add the source port for a zone [P] [Z] [T]
        --remove-source-port=<portid>[-<portid>]/<protocol>
                             Remove the source port from a zone [P] [Z]
        --query-source-port=<portid>[-<portid>]/<protocol>
                             Return whether the source port has been added for zone [P] [Z]
        --list-icmp-blocks   List Internet ICMP type blocks added for a zone [P] [Z]
        --add-icmp-block=<icmptype>
                             Add an ICMP block for a zone [P] [Z] [T]
        --remove-icmp-block=<icmptype>
                             Remove the ICMP block from a zone [P] [Z]
        --query-icmp-block=<icmptype>
                             Return whether an ICMP block has been added for a zone
                             [P] [Z]
        --add-icmp-block-inversion
                             Enable inversion of icmp blocks for a zone [P] [Z]
        --remove-icmp-block-inversion
                             Disable inversion of icmp blocks for a zone [P] [Z]
        --query-icmp-block-inversion
                             Return whether inversion of icmp blocks has been enabled
                             for a zone [P] [Z]
        --list-forward-ports List IPv4 forward ports added for a zone [P] [Z]
        --add-forward-port=port=<portid>[-<portid>]:proto=<protocol>[:toport=<portid>[-<portid>]][:toaddr=<address>[/<mask>]]
                             Add the IPv4 forward port for a zone [P] [Z] [T]
        --remove-forward-port=port=<portid>[-<portid>]:proto=<protocol>[:toport=<portid>[-<portid>]][:toaddr=<address>[/<mask>]]
                             Remove the IPv4 forward port from a zone [P] [Z]
        --query-forward-port=port=<portid>[-<portid>]:proto=<protocol>[:toport=<portid>[-<portid>]][:toaddr=<address>[/<mask>]]
                             Return whether the IPv4 forward port has been added for
                             a zone [P] [Z]
        --add-masquerade     Enable IPv4 masquerade for a zone [P] [Z] [T]
        --remove-masquerade  Disable IPv4 masquerade for a zone [P] [Z]
        --query-masquerade   Return whether IPv4 masquerading has been enabled for a
                             zone [P] [Z]
        --list-rich-rules    List rich language rules added for a zone [P] [Z]
        --add-rich-rule=<rule>
                             Add rich language rule 'rule' for a zone [P] [Z] [T]
        --remove-rich-rule=<rule>
                             Remove rich language rule 'rule' from a zone [P] [Z]
        --query-rich-rulandroide=<rule>
                             Return whether a rich language rule 'rule' has been
                             added for a zone [P] [Z]

      Options to Handle Bindings of Interfaces 处理接口绑定的选项

      Options to Handle Bindings of Interfaces
        --list-interfaces    List interfaces that are bound to a zone [P] [Z]
        --add-interface=<interface>
                             Bind the <interface> to a zone [P] [Z]
        --change-interface=<interface>
                             Change zone the <interface> is bound to [P] [Z]
        --query-interface=<interface>
                             Query whether <interface> is bound to a zone [P] [Z]
        --remove-interface=<interface>
                             Remove binding of <interface> from a zone [P] [Z]
      
      Options to Handle Bindings of Sources
        --list-sources       List sources that are bound to a zone [P] [Z]
        --add-source=<source>[/<mask>]|<MAC>|ipset:<ipset>
                             Bind the source to a zone [P] [Z]
        --change-source=<source>[/<mask>]|<MAC>|ipset:<ipset>
                             Change zone the source is bound to [Z]
        --query-source=<source>[/<mask>]|<MAC>|ipset:<ipset>
                             Query whether the source is bound to a zone [P] [Z]
        --remove-source=<source>[/<mask>]|<MAC>|ipset:<ipset>
                             Remove binding of the source from a zone [P] [Z]

      Helper Options 助手选项

      Helper Options
        --new-helper=<helper> --module=<module> [--family=<family>]
                             Add a new helper [P only]
        --new-helper-from-file=<filename> [--name=<helper>]
                             Add a new helper from file with optional name [P only]
        --delete-helper=<helper>
                             Delete an existing helper [P only]
        --load-helper-defaults=<helper>
                             Load helper default settings [P only]
        --info-helper=<helper> Print information about an helper
        --path-helper=<helper> Print file path of an helper [P only]
        --get-helpers         Print predefined helpers
        --helper=<helper> --set-description=<description>
                             Set new description to helper [P only]
        --h编程客栈elper=<helper> --get-description
                             Print description for helper [P only]
        --helper=<helper> --set-short=<description>
                             Set new short description to helper [P only]
        --helper=<helper> --get-short
                             Print short description for helper [P only]
        --helper=<helper> --add-port=<portid>[-<portid>]/<protocol>
                             Add a new port to helper [P only]
        --helper=<helper> --remove-port=<portid>[-<portid>]/<protocol>
                             Remove a port from helper [P only]
        --helper=<helper> --query-port=<portid>[-<portid>]/<protocol>
                             Return whether the port has been added for helper [P only]
        --helper=<helper> --get-ports
                             List ports of helper [P only]
        --helper=<helper> --set-module=<module>
                             Set module to helper [P only]
        --helper=<helper> --get-module
                             Get module from helper [P only]
        --helper=<helper> --set-family={ipv4|ipv6|}
                             Set family for helper [P only]
        --helper=<helper> --get-family
                             Get module from helper [P only]

      Direct Options 直接选项

      Direct Options
        --direct             First option for all direct options			所有直接选项的第一个选项
        --get-all-chains
                             Get all chains [P]							获得所有链条
        --get-chains {ipv4|ipv6|eb} <table>
                             Get all chains added to the table [P]
        --add-chain {ipv4|ipv6|eb} <table> <chain>
                             Add a new chain to the table [P]
        --remove-chain {ipv4|ipv6|eb} <table> <chain>
                             Remove the chain from the table [P]
        --query-chain {ipv4|ipv6|eb} <table> <chain>
                             Return whether the chain has been added to the table [P]
        --get-all-rules
                             Get all rules [P]
        --get-rules {ipv4|ipv6|eb} <table> <chain>
                             Get all rules added to chain in table [P]
        --add-rule {ipv4|ipv6|eb} <table> <chain> <priority> <arg>...
                             Add rule to chain in table [P]
        --remove-rule {ipv4|ipv6|eb} <table> <chain> <priority> <arg>...
                             Remove rule with priority from chain in table [P]
        --remove-rules {ipv4|ipv6|eb} <table> <chain>
                             Remove rules from chain in table [P]
        --query-rule {ipv4|ipv6|eb} <table> <chain> <priority> <arg>...
                             Return whether a rule with priority has been added to
                             chain in table [P]
        --passthrough {ipv4|ipv6|eb} <arg>...
                             Pass a command through (untracked by firewalld)
        --get-all-passthroughs
                             Get all tracked passthrough rules [P]
        --get-passthroughs {ipv4|ipv6|eb} <arg>...
                             Get tracked passthrough rules [P]
        --add-passthrough {ipv4|ipv6|eb} <arg>...
                             Add a new tracked passthrough rule [P]
        --remove-passthrough {ipv4|ipv6|eb} <arg>...
                             Remove a tracked passthrough rule [P]
        --query-passthrough {ipv4|ipv6|eb} <arg>...
                             Return whether the tracked passthrough rule has been
                             added [P]

      Lockdown Options

      Lockdown Options
        --lockdown-on        Enable lockdown.
        --lockdown-off       Disable lockdown.
        --query-lockdown     Query whether lockdown is enabled

      Lockdown Whitelist Options

      Lockdown Whitelist Options
        --list-lockdown-whitelist-commands
                             List all command lines that are on the whitelist [P]
        --add-lockdown-whitelist-command=<command>
                             Add the command to the whitelist [P]
        --remove-lockdown-whitelist-command=<command>
                             Remove the command from the whitelist [P]
        --query-lockdown-whitelist-command=<command>
                             Query whether the command is on the whitelist [P]
        --list-lockdown-whitelist-contexts
                             List all contexts that are on the whitelist [P]
        --add-lockdown-whitelist-context=<context>
                             Add the context context to the whitelist [P]
        --remove-lockdown-whitelist-context=<context>
                             Remove the context from the whitelist [P]
        --query-lockdown-whitelist-context=<context>
                             Query whether the context is on the whitelist [P]
        --list-lockdown-whitelist-uids
                             List all user ids that are on the whitelist [P]
        --add-lockdown-whitelist-uid=<uid>
                             Add the user id uid to the whitelist [P]
        --remove-lockdown-whitelist-uid=<uid>
                             Remove the user id uid from the whitelist [P]
        --query-lockdown-whitelist-uid=<uid>
                             Query whether the user id uid is on the whitelist [P]
        --list-lockdown-whitelist-users
                             List all user names that are on the whitelist [P]
        --add-lockdown-whitelist-user=<user>
                             Add the user name user to the whitelist [P]
        --remove-lockdown-whitelist-user=<user>
                             Remove the user name user from the whitelist [P]
        --query-lockdown-whitelist-user=<user>
                             Query whether the user name user is on the whitelist [P]

      Panic Options

      Panic Options
        --panic-on           Enable panic mode
        --panic-off          Disable panic mode
        --query-panic        Query whether panic mode is enabled
      

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

      0

      上一篇:

      下一篇:

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      最新运维

      运维排行榜