2019-10-16-firewalld防火墙使用

firewalld动态防火墙

firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。

firewalld相关命令

systemctl start firewalld
systemctl stop firewalld
systemctl status firewalld
systemctl enable firewalld

firewall-cmd基本使用

firewall-cmd用来管理端口

firewall-cmd相关命令(对域操作)

firewall-cmd --state     //查看状态
firewall-cmd --zone=public --add-port=80/tcp --permanent //开启指定端口
firewall-cmd --reload //刷新,必要步骤
firewall-cmd --zone=public --list-ports //查看开放端口
firewall-cmd --zone=public --remove-port=80/tcp

两种管理方式

  1. zone域模式管理,包括9个等级的域
  2. service管理,内置了很多服务,以及配置了其对应端口,例如http的80端口,https的443端口
[root@localhost ~]# firewall-cmd --get-service
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry docker-swarm dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target jenkins kadmin kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls managesieve mdns minidlna mongodb mosh mountd ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius redis rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh syncthing syncthing-gui synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server
[root@localhost ~]#

9个域

  1. drop 任何接收到的网络数据都被丢弃,没有任何回复,公有发送出去的网络连接
  2. block 任何接收的网络连接都被IPV4 的icmp-host-prohibited信息和IPV6的icmp6-adm-prohibited信息所拒绝
  3. public 在公共区域内使用,不能相信网络内的其它计算机不会对你的计算机造成危害,只接收经过选取的连接
  4. external 特别是为路由器启用了伪装功能的外部网。你不能信任来自网络的其它计算,不能信任它们不会对你的计算机造成危害,只能接收经过选择的连接
  5. dmz 用于你的非军事区的电脑 ,此区域内可公开访问,可以有限的进入你的内部网络,仅接收经过选择的连接
  6. work 可以基本信任网络内的其它计算机不会危害你的计算机,仅接收经过选择的连接。
  7. home 用于家庭网络,可以基本信任网络内的其它计算机不会危害你的计算机,仅接收经过选择的连接。
  8. internal 用于内部网络,可以基本信任网络内的其它计算机不会危害你的计算机,仅接收经过选择的连接
  9. trusted 可接收所有的网络连接

直接修改配置文件管理端口

cat /etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
  <port protocol="tcp" port="80"/>
</zone>

相关目录

[root@localhost firewalld]# tree
.
├── firewalld.conf
├── helpers
├── icmptypes
├── ipsets
├── lockdown-whitelist.xml
├── services
└── zones
    ├── public.xml
    └── public.xml.old  //旧的配置文件,remove命令会还原

5 directories, 4 files
[root@localhost firewalld]# pwd
/etc/firewalld
[root@localhost firewalld]#

fierwall-cmd对service操作

fireall-cmd --get-services
firewall-cmd --list-service --zone=public
firewall-cmd --add-service=http --zone=public --permanent

开放和限制IP

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.200.1" port protocol="tcp" port="80" reject"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.200.1" port protocol="tcp" port="80" accept"
firewall-cmd --peranent --remove-rich-rule="rule family"... reject

执行后会在指定域的xml配置中定义:

# public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
  <service name="redis"/>
  <service name="http"/>
  <rule family="ipv4">
    <source address="192.168.200.1"/>
    <port protocol="tcp" port="80"/>
    <reject/>
  </rule>
</zone>

限制IP段

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="80" reject"

firewalld帮助文档

firewall-cmd帮助文档

PS: 其他命令 服务注册开机启动

systemctl enable nginx        //开启开机启动
systemctl is-enabled nginx    //状态查询

命令行输出到文件

 man firewall-cmd >> a.txt

本文链接:firewalld防火墙使用