読者です 読者をやめる 読者になる 読者になる

めもぶろぐ

お勉強したこと、趣味なんかを適当に書いてます。。。

CENTOS7 firewallsの設定

Linux

せっかくiptablesを覚えたんだけど、CENTOS7からは標準のパケットフィルタがfirewalldというデーモンになりました。

 

ということで触りだけメモ。

systemctl status firewalldでステータス確認。

[root@centos-btrfs ~]# systemctl status firewalld.service

firewalld.service - firewalld - dynamic firewall daemon

   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled)

   Active: active (running) since 水 2016-10-12 22:01:58 JST; 32min ago

 Main PID: 7798 (firewalld)

   CGroup: /system.slice/firewalld.service

           └─7798 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

 

10月 12 22:01:57 centos-btrfs systemd[1]: Starting firewalld - dynamic firewall daemon...

10月 12 22:01:58 centos-btrfs systemd[1]: Started firewalld - dynamic firewall daemon.

[root@centos-btrfs ~]# 

 

サービス停止中はinactiveになっています。

[root@centos-btrfs ~]# systemctl stop firewalld.service 

[root@centos-btrfs ~]# systemctl status firewalld.service

firewalld.service - firewalld - dynamic firewall daemon

   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled)

   Active: inactive (dead)

 

10月 12 22:01:57 centos-btrfs systemd[1]: Starting firewalld - dynamic firewall daemon...

10月 12 22:01:58 centos-btrfs systemd[1]: Started firewalld - dynamic firewall daemon.

10月 12 22:34:57 centos-btrfs systemd[1]: Stopping firewalld - dynamic firewall daemon...

10月 12 22:34:58 centos-btrfs systemd[1]: Stopped firewalld - dynamic firewall daemon.

[root@centos-btrfs ~]# 

 

systemctl start firewalld.serviceで起動します。自動起動設定をする場合は

systemctl enable firwealld.service (--now)

※--nowは7.2あたりから使えます。自動起動の設定をすると同時にstartもできるオプションです。今回は7.1なので認識されませんでした。

[root@centos-btrfs ~]# systemctl enable firewalld.service --now

systemctl: オプション '--now' を認識できません

 

 

[root@centos-btrfs ~]# man systemctl

[root@centos-btrfs ~]# hostnamectl 

   Static hostname: centos-btrfs

         Icon name: computer-vm

           Chassis: vm

        Machine ID: 0e3ed4ddb29b4798ab2b48258e3ea1a5

           Boot ID: 06466c6f954244e7842cf961f7654d5e

    Virtualization: kvm

  Operating System: CentOS Linux 7 (Core)

       CPE OS Name: cpe:/o:centos:centos:7

            Kernel: Linux 3.10.0-229.el7.x86_64

      Architecture: x86_64

[root@centos-btrfs ~]# cat /etc/redhat-release 

CentOS Linux release 7.1.1503 (Core) 

[root@centos-btrfs ~]# 

 

systemctl enableをするとわかるのですが、symlinkを作成していますね。

[root@centos-btrfs ~]# systemctl enable firewalld.service 

ln -s '/usr/lib/systemd/system/firewalld.service' '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'

ln -s '/usr/lib/systemd/system/firewalld.service' '/etc/systemd/system/basic.target.wants/firewalld.service'

[root@centos-btrfs ~]# systemctl start firewalld.service

[root@centos-btrfs ~]# 

[root@centos-btrfs ~]# systemctl status firewalld.service 

firewalld.service - firewalld - dynamic firewall daemon

   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)

   Active: active (running) since 水 2016-10-12 22:38:12 JST; 37s ago

 Main PID: 9611 (firewalld)

   CGroup: /system.slice/firewalld.service

           └─9611 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

 

10月 12 22:38:12 centos-btrfs systemd[1]: Started firewalld - dynamic firewall daemon.

10月 12 22:38:23 centos-btrfs systemd[1]: Started firewalld - dynamic firewall daemon.

10月 12 22:38:42 centos-btrfs systemd[1]: Started firewalld - dynamic firewall daemon.

[root@centos-btrfs ~]# 

 

ためしに設定したいところなのですが以下、コマンドのみメモです。

 

有効になっているゾーン設定を表示します。

[root@centos-btrfs ~]# firewall-cmd --list-all

public (default)

  interfaces: 

  sources: 

  services: dhcpv6-client ssh

  ports

  masquerade: no

  forward-ports

  icmp-blocks: 

  rich rules: 

 

[root@centos-btrfs ~]# 

 

すべてのゾーン設定を表示します。

[root@centos-btrfs ~]# 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)

  interfaces: 

  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: 

 

[root@centos-btrfs ~]# 

interfacesのところは下記のコマンドを実行するとNICのデバイス名が表示されます。

あ、ためしにtrustedに設定します。ここはすべての通信を許可するゾーンになっていますので、ココに使用しているNICを設定します。

 

firewall-cmd --add-interface=NICname --zone=ZONEname

これは即時反映ですが一時的な設定となります。永続的に反映したい場合は--permanentを指定する必要があります。そうすると設定ファイル()にも書き込まれます。

 

NICのZONEを変更する場合は

firewall-cmd --change-interface=enp0s3 --zone=public

とかで変えていきます。

[root@centos-btrfs ~]# firewall-cmd --add-interface=enp0s3 --zone=trusted 

success

[root@centos-btrfs ~]# 

 

インターフェースを指定するとtrustedがactiveになって、ゾーンに属しているNICが表示されます。

[root@centos-btrfs ~]# firewall-cmd --list-all --zone=trusted 

trusted (active)

  interfaces: enp0s3

  sources: 

  services: 

  ports

  masquerade: no

  forward-ports

  icmp-blocks: 

  rich rules: 

 

 

--permanentを指定した場合は即時反映されません。

[root@centos-btrfs ~]# firewall-cmd --permanent --add-interface=enp0s9 --zone=trusted 

success

[root@centos-btrfs ~]# firewall-cmd --list-all --zone=trusted 

trusted (active)

  interfaces: enp0s3

  sources: 

  services: 

  ports

  masquerade: no

  forward-ports

  icmp-blocks: 

  rich rules: 

 

[root@centos-btrfs ~]# 

 

 

なので、firewall-cmd --reloadを実行して設定を反映します。--permanent指定時は設定ファイルに書き込みになるので、設定ファイルの再読込が必要なため--reloadしないと反映されません。

[root@centos-btrfs ~]# firewall-cmd --reload 

success

[root@centos-btrfs ~]# firewall-cmd --list-all --zone=trusted 

trusted (active)

  interfaces: enp0s3 enp0s9

  sources: 

  services: 

  ports

  masquerade: no

  forward-ports

  icmp-blocks: 

  rich rules: 

 

[root@centos-btrfs ~]# 

 

--permanent指定したNICはenp0s9だけなので設定ファイルを確認すると下記のとおりです。

[root@centos-btrfs ~]# cat /etc/firewalld/zones/trusted.xml 

<?xml version="1.0" encoding="utf-8"?>

<zone target="ACCEPT">

  <short>Trusted</short>

  <description>All network connections are accepted.</description>

  <interface name="enp0s9"/>

</zone>

[root@centos-btrfs ~]# 

 

最後にrich rulesを設定します。いい加減な設定ですが、あくまで設定方法の紹介です。

--add-rich-ruleでzoneに対して個別のフィルタ設定をすることができます。logアクションを指定するとログが取得できます。

[root@centos-btrfs ~]# firewall-cmd --zone=trusted --add-rich-rule='rule family=ipv4 source address=0.0.0.0 accept log'

success

[root@centos-btrfs ~]# firewall-cmd --list-all --zone=trusted 

trusted (active)

  interfaces: enp0s3 enp0s9

  sources: 

  services: 

  ports

  masquerade: no

  forward-ports

  icmp-blocks: 

  rich rules: 

rule family="ipv4" source address="0.0.0.0" log accept

[root@centos-btrfs ~]# 

 

いらん一時設定はfirewalld-cmd --reloadで設定ファイルを再読込してもとに戻します。

[root@centos-btrfs ~]# firewall-cmd --reload 

success

[root@centos-btrfs ~]# 

[root@centos-btrfs ~]# firewall-cmd --list-all --zone=trusted 

trusted (active)

  interfaces: enp0s3 enp0s9

  sources: 

  services: 

  ports

  masquerade: no

  forward-ports

  icmp-blocks: 

  rich rules: 

 

rich rulesを削除するときは下記を実行し、'rich rules entries'の部分はfirewall-cmdで表示されたrich rulesのエントリーをコピペすればOKです。

 

firewall-cmd --remove-rich-rule='rich rules entries'

 

 

 

おわり

 

 

 

 

 

 

 

 

広告を非表示にする