firewalldの考え方として、デフォルト動作(特に指定していない場合、REJECT)があって、その上にzoneが積み重なっていく形になります。
デフォルトだと、public zoneのみアクティブなので、「public」(ssh・dhcpv6-client・cockpitが許可)それ以外の場合、デフォルト動作へ判断を委ねる。(デフォルト動作がREJECTなので、応答ありの拒否になる)
管理用にzoneを追加するなど様々な設定がありますが、例として、以下のような基本的設定のみ紹介します。
- http/httpsを通信できるようにします。
- sshのポート番号を「22」から「50022」に変更して通信できるようにします。
- Webmin用にポート番号を「50000」で通信できるようにします。
1.firewalldをインストールして、自動起動を有効化の上、起動します。
[root@server ~]# dnf install firewalld
[root@server ~]# systemctl enable --now firewalld
2.現在の設定を確認します。
[root@server ~]# firewall-cmd --get-active-zones
public
interfaces: eth0
[root@server ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
3.sshとWebmin用にservicesファイルを用意します。
[root@server ~]# cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-50022.xml
[root@server ~]# vi /etc/firewalld/services/ssh-50022.xml
- <port protocol="tcp" port="22"/>
+ <port protocol="tcp" port="50022"/>
[root@server ~]# vi /etc/firewalld/services/webmin.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>WEBMIN</short>
<description>Webmin</description>
<port protocol="tcp" port="50000"/>
<port protocol="udp" port="50000"/>
</service>
4.許可するサービスを追加します。(http・https・ssh-50022・webmin)
[root@server ~]# firewall-cmd --permanent --add-service=http
success
[root@server ~]# firewall-cmd --permanent --add-service=https
success
[root@server ~]# firewall-cmd --permanent --add-service=ssh-50022
success
[root@server ~]# firewall-cmd --permanent --add-service=webmin
success
[root@server ~]# firewall-cmd --reload
success
5.最後に反映されているか確認します。
[root@server ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: cockpit dhcpv6-client http https ssh ssh-50022 webmin
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
なお、元のssh(ポート番号:22)は、通信確認後に削除しましょう。