一、常用命令
#查看防火墙状态 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=<filename> [--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> return 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-rule=<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] --helper=<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
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论