Linux firewalld防火墙学习总结

打印 上一主题 下一主题

主题 865|帖子 865|积分 2595

实践情况

CentOS-7-x86_64-DVD-2009
简介

Firewalld是一种简单的、有状态的、基于地区(zone-based)的防火墙。计谋和地区用于组织防火墙规则。网络在逻辑上被划分为多个地区,它们之间的流量可以通过计谋进行管理。

检察防火墙状态
  1. # service firewalld status
复制代码
或者
  1. # systemctl status firewalld
  2. ● firewalld.service - firewalld - dynamic firewall daemon
  3.    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
  4.    Active: inactive (dead)
  5.      Docs: man:firewalld(1)
复制代码
说明:假如输出显示 Active: inactive (dead),则表示未开启防火墙。  假如现实Active: active (running)则表示开启了防火墙。
或者
  1. # firewall-cmd --state
  2. not running
复制代码
开启防火墙
  1. # service firewalld start
复制代码
或者
  1. # systemctl start firewalld
复制代码
重启防火墙
  1. # service firewalld restart
复制代码
或者
  1. # systemctl restart firewalld
复制代码
设置防火墙开机自启
  1. # systemctl enable firewalld
  2. Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
  3. Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
复制代码
禁用防火墙开机自启
  1. # systemctl disable firewalld
  2. Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
  3. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
复制代码
检察预定义地区
  1. # firewall-cmd --get-zones
  2. block dmz drop external home internal public trusted work
  3. # #查看每个区域的详细信息
  4. # firewall-cmd --list-all-zones
复制代码
地区简介:
地区默认规则block拒绝流入的流量,除非与流出的流量相干dmz拒绝流入的流量,除非与流出的流量相干;假如流量与ssh服务相干,则允许流量drop拒绝流入的流量,除非与流出的流量相干external拒绝流入的流量;除非与流出的流量相干;假如流量与ssh服务相干,则允许流量home拒绝流入的流量;除非与流出的流量相干;假如流量与ssh,mdns,ipp-client,amba-client,dhcpv6-client服务相干,则允许流量internal等同于home地区public拒绝流入的流量;除非与流出的流量相干;假如流量与ssh,dhcpv6-client服务相干,则允许流量trusted允许所有的数据包流入与流出work拒绝流入的流量;除非与流出的流量相干;假如流量与ssh,ipp-client,dhcpv6-client服务相干,则允许流量创建自定义地区
  1. # firewall-cmd --permanent --new-zone=testing
  2. success
复制代码
留意:--permanent选项不能少
检察默认地区
  1. # firewall-cmd --get-default-zone
  2. public
复制代码
检察网卡关联的地区
  1. # ip addr
  2. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  3.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  4.     inet 127.0.0.1/8 scope host lo
  5.        valid_lft forever preferred_lft forever
  6.     inet6 ::1/128 scope host
  7.        valid_lft forever preferred_lft forever
  8. 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
  9.     link/ether 00:0c:29:12:86:da brd ff:ff:ff:ff:ff:ff
  10.     inet 192.168.206.102/24 brd 192.168.206.255 scope global ens33
  11.        valid_lft forever preferred_lft forever
  12.     inet6 fe80::20c:29ff:fe12:86da/64 scope link
  13.        valid_lft forever preferred_lft forever
  14. # firewall-cmd --get-zone-of-interface=ens33
  15. public
复制代码
留意:一张网卡只能关联一个地区
修改默认地区

例子:
  1. # #修改默认区域为`trusted`
  2. # firewall-cmd --set-default-zone=trusted
  3. success
  4. # firewall-cmd --get-default-zone
  5. trusted
  6. # firewall-cmd --get-zone-of-interface=ens33
  7. trusted
  8. # #还原
  9. # firewall-cmd --set-default-zone=public
  10. success
  11. # firewall-cmd --get-default-zone
  12. public
  13. # firewall-cmd --get-zone-of-interface=ens33
  14. public
复制代码
修改网卡关联的地区

方法1:先删除现有关联地区,再添加目标关联地区(由于同一时间,一张网卡只能关联一个地区,所以要先添加再删除)
  1. # firewall-cmd --remove-interface=ens33 --zone=public
  2. success
  3. # firewall-cmd --get-zone-of-interface=ens33
  4. no zone
  5. ## 设置ens33关联区域为trusted
  6. # firewall-cmd --add-interface=ens33 --zone=trusted
  7. success
  8. # firewall-cmd --get-zone-of-interface=ens33
  9. trusted
复制代码
方法2:
  1. ## 设置ens33关联区域为public
  2. # firewall-cmd --change-interface=ens33 --zone=public
  3. success
  4. # firewall-cmd --get-zone-of-interface=ens33
  5. public
复制代码
打印当前活动地区及绑定的接口和源
  1. firewall-cmd --get-active-zones
复制代码
打印当前活动地区以及这些地区中使用的接口和源。活动地区是与接口或源绑定的地区。输特别式为:
  1. zone1
  2.   interfaces: interface1 interface2 ..
  3.   sources: source1 ..
  4. zone2
  5.   interfaces: interface3 ..
  6. zone3
  7.   sources: source2 ..
  8. 如果没有接口和源绑定到区域,则忽略该对应区域行
复制代码
例子:
  1. # firewall-cmd --get-active-zones
  2. public
  3.   interfaces: ens33
复制代码
端口访问限制

检察已开放端口
  1. firewall-cmd  [--permanent] [--zone=zone] --list-ports
复制代码
以空格分隔的列表形式列出为地区添加的端口。端口的形式为portid[-portid]/protocol,它可以是端口和协议对,也可以是具有协议的端口范围。假如忽略--zone选项设置,将使用默认地区。
添加开放端口
  1. firewall-cmd [--permanent] [--zone=zone] --add-port=portid[-portid]/protocol [--timeout=timeval]     
复制代码
为zone(地区)添加端口。假如省略了--zone选项设置,将使用默认地区。此选项可以多次指定。假如提供了--timeout,则该规则将在指定的超时时间内处于活动状态,超时之后将自动删除。timeval是一个数字(秒)或数字后跟一个字符s(秒)、m(分钟)、h(小时),比方20m或1h。
端口可以是单个端口号,也可以是端口范围portid-portid。协议可以是tcp、udp、sctp或dccp。
--timeout选项不能与--permanent选项组合使用。
取消开放端口
  1. firewall-cmd [--permanent] [--zone=zone] --remove-port=portid[-portid]/protocol
复制代码
从地区中删除端口。假如省略了--zone选项设置,将使用默认地区。此选项可以多次指定。
--permanent 可用于长期设置选项。这些更改不会立刻生效,只有在重新启动/重新加载服务或系统重新启动后才会生效。假如未使用--permanent,则更改将仅是运行时设置的一部门(所做的变动在重启服务、重新加载服务后失效),下同,不再赘述。
例子

例子:为public地区长期开放 tcp协议端口 15672
  1. # firewall-cmd --permanent --add-port=15672/tcp
  2. # firewall-cmd --list-ports # 查不到端口
  3. # #让配置生效
  4. # firewall-cmd --reload
  5. success
  6. # firewall-cmd --list-ports
  7. 15672/tcp
复制代码
说明:

  • firewall-cmd --reload
    重新加载防火墙规则并保留状态信息。当前的长期设置将成为新的运行时设置,也就说执行的所有仅运行时变动在重新加载规则后丢失。类似的,有以下命令
  • firewall-cmd --complete-reload
    完全重新加载防火墙,甚至netfilter内核模块。这很大概会停止活动连接,由于状态信息会丢失。此选项仅用于严肃的防火墙问题。比方,防火墙规则正确的情况下,无法建立连接的状态信息问题
例子:为public地区长期开放 tcp协议端口范围 1000-2000(包罗1000及2000)
  1. # firewall-cmd --permanent --add-port=1000-2000/tcp
  2. success
  3. # firewall-cmd --reload
  4. success
  5. # firewall-cmd --list-ports
  6. 15672/tcp 1000-2000/tcp
复制代码
例子:为public地区长期取消开放 tcp协议端口 15672
  1. # firewall-cmd --permanent --remove-port=15672/tcp
  2. success
  3. # firewall-cmd --reload
  4. success
  5. # firewall-cmd --list-ports
  6. 1000-2000/tcp
复制代码
例子:为public地区长期取消开放tcp协议端口范围 1000-2000(包罗1000及2000)
  1. ]# firewall-cmd --permanent --remove-port=1000-2000/tcp
  2. success
  3. # firewall-cmd --reload
  4. success
  5. # firewall-cmd --list-ports
  6. #
复制代码
IP、网络访问限制

添加开放源
  1. firewall-cmd [--permanent] [--zone=zone] --add-source=source[/mask]|MAC|ipset:ipset
复制代码
绑定源(source,IP、网络、MAC、IP集)到地区zone。假如省略了--zone选项设置,将使用默认地区。
取消开放源
  1. firewall-cmd [--permanent] --remove-source=source[/mask]|MAC|ipset:ipset
复制代码
从地区zone删除之前添加绑定的源
例子

例子:允许IP 192.168.50.182长期访问为public地区
  1. # firewall-cmd --permanent --add-source=192.168.50.182
  2. success
  3. # firewall-cmd --reload
  4. success
复制代码
说明:添加IP白名单后,即使未添加开放端口,针对当前IP,也可以正常访问。
例子:允许子网192.168.50.0/24长期访问为public地区
  1. # firewall-cmd --permanent --add-source=192.168.50.0/24
  2. success
  3. # firewall-cmd --reload
  4. success
复制代码
例子:取消IP 192.168.50.182对public地区的长期访问许可
  1. # firewall-cmd --permanent --remove-source=192.168.50.182
  2. success
  3. # firewall-cmd --reload
  4. success
复制代码
富语言规则

列出富语言规则
  1. firewall-cmd [--permanent] [--zone=zone] --list-rich-rules
复制代码
以换行符分隔的列表形式列出为地区添加的富语言规则。假如省略了--zone选项,将使用默认地区。
添加富语言规则
  1. firewall-cmd [--permanent] [--zone=zone] --add-rich-rule='rule' [--timeout=timeval]
复制代码
为地区添加富语言规则'rule'。此选项可以多次指定。假如省略了地区,将使用默认地区。假如提供了--timeout,则该规则将在指定的超时时间内处于活动状态,超时之后将自动删除。timeval是一个数字(秒)或数字后跟一个字符s(秒)、m(分钟)、h(小时),比方20m或1h。
--timeout选项不能与--permanent选项组合使用。
删除富语言规则
  1. firewall-cmd  [--permanent] [--zone=zone] --remove-rich-rule='rule'
复制代码
从地区中删除富语言规则'rule'。此选项可以多次指定。假如省略了地区,将使用默认地区。
查询富语言规则
  1. firewall-cmd  [--permanent] [--zone=zone] --query-rich-rule='rule'
复制代码
返回是否为地区添加了富语言规则'rule'。假如省略了--zone,将使用默认地区。假如为真,则返回0,否则返回1。
例子

例子:允许 IP 192.168.50.182 长期访问public地区tcp协议端口15672
  1. # firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.50.182" port protocol="tcp" port="15672" accept'
  2. # firewall-cmd --reload
复制代码
例子:取消 IP 192.168.50.182 长期访问public地区tcp协议端口15672的许可
  1. # firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.50.182" port protocol="tcp" port="15672" accept'
  2. success
  3. # firewall-cmd --reload
复制代码
例子:禁止 IP 192.168.50.182 长期访问public地区
  1. # firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.50.182" reject'
  2. # firewall-cmd --reload
复制代码
留意:添加访问限制前,建议先移除之前的访问许可设置,否则大概导致当前规则不起作用。此外,这里的reject也可以替换为drop,即直接丢弃来访哀求数据包。
例子:取消禁止 IP 192.168.50.182 长期访问public地区限制
  1. # firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.50.182" reject'
  2. # firewall-cmd --reload
复制代码

例子:检察当前设置的富语言规则
  1. # firewall-cmd --list-rich-rules
  2. rule family="ipv4" source address="192.168.50.182" reject
复制代码
列出为地区启用或添加的所有内容
  1. firewall-cmd[--permanent] [--zone=zone] --list-all
复制代码
列出为地区添加或启用的所有内容。假如省略了--zone选项设置,则将使用默认地区。
例子:
  1. # firewall-cmd --list-all
  2. public (active)
  3.   target: default
  4.   icmp-block-inversion: no
  5.   interfaces: ens33
  6.   sources:
  7.   services: dhcpv6-client ssh
  8.   ports: 15672/tcp
  9.   protocols:
  10.   masquerade: no
  11.   forward-ports:
  12.   source-ports:
  13.   icmp-blocks:
  14.   rich rules:
复制代码
保存当前运行时设置为长期设置
  1. # firewall-cmd --runtime-to-permanent
复制代码
保存活动运行时设置并用它覆盖长期设置。
参考链接

https://firewalld.org/documentation/concepts.html

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

不到断气不罢休

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表