[CentOS 7] firewalld
CentOS7のファイアウォール機能の実装としては、これまで通りiptablesを利用しているが、iptablesの設定はiptablesサービスの代わりにfirewalldサービスを利用して行う。
firewalldサービスの代わりに、これまで通りiptablesサービスを利用してiptablesの設定をすることも可能。
iptablesの稼働状況の確認
iptablesサービスとfirewalldサービスは併用できないため。
iptables/ip6tablesサービスが稼働している場合は停止する。
# systemctl status iptables iptables.service Loaded: not-found (Reason: No such file or directory) Active: inactive (dead) # systemctl status ip6tables ip6tables.service Loaded: not-found (Reason: No such file or directory) Active: inactive (dead)
firewalldサービスの起動設定と稼働状態の確認
# systemctl status firewalld.service firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled) Active: active (running) since Wed 2016-01-06 15:26:22 JST; 1h 1min ago Main PID: 612 (firewalld) CGroup: /system.slice/firewalld.service `-612 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
稼働状態については以下のコマンドでも確認できる
# firewall-cmd --state running
現在の設定の確認
# firewall-cmd --list-all-zones block interfaces: sources: services: ports: masquerade: no forward-ports: icmp-blocks: rich rules: dmz interfaces: sources: services: ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: drop interfaces: sources: services: ports: masquerade: no forward-ports: icmp-blocks: rich rules: external interfaces: sources: services: ssh ports: masquerade: yes forward-ports: icmp-blocks: rich rules: home interfaces: sources: services: dhcpv6-client ipp-client mdns samba-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: internal interfaces: sources: services: dhcpv6-client ipp-client mdns samba-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: public (default, active) interfaces: ens32 sources: services: dhcpv6-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: trusted interfaces: sources: services: ports: masquerade: no forward-ports: icmp-blocks: rich rules: work interfaces: sources: services: dhcpv6-client ipp-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:
アクティブな設定のみ確認
# firewall-cmd --list-all public (default, active) interfaces: ens32 sources: services: dhcpv6-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:
設定変更
デフォルトの設定ではすべての送信元からのSSHが許可されているが、特定の送信元からのみ許可するように変更する。
# firewall-cmd --permanent --zone=public --remove-service=ssh # firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept" # firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.2.0/24" port protocol="tcp" port="22" accept" # firewall-cmd --reload # firewall-cmd --list-all public (default, active) interfaces: ens32 sources: services: dhcpv6-client ports: masquerade: no forward-ports: icmp-blocks: rich rules: rule family="ipv4" source address="192.168.1.0/24" port port="22" protocol="tcp" accept rule family="ipv4" source address="192.168.2.0/24" port port="22" protocol="tcp" accept
- 「--permanent」オプションを指定することで再起動後も設定が有効になる。
- 「--add-rich-rule」オプションを利用することで指定したソースIPアドレスからのみに限定するなど、きめ細かい設定を行うことが可能になる。