SSH用ポートの設定(CentOS8)
ポート/サービスの管理はiptablesはレガシー、firewalldで管理するのが最新らしい。
firewalld
firewalld は firewalld-cmd コマンドと設定ファイルによってポート及びサービスを管理している。
# firewalld-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens3
sources:
services: dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
↑ firewall-cmd コマンドの --list-all オプションを用いて現在のファイアウォールの設定状況を確認できる。
ここでは、サービスとしてはdhcpv6-clientのみを許可している。
サービスの追加
firewalld に追加でサービス許可を行う場合、--add-service オプションを使う。 ( --permanentオプションで永続化 )
# firewall-cmd --add-service=ssh --permanent
success
# firewall-cmd --reload
success
※削除は --remove-service=ssh
尚、=sshとしたがこれはデフォルト提供されているサービスの場合の設定方法であり、/usr/lib/firewalld/services 配下にデフォルト提供の各サービスの設定ファイルが格納されている。
# ls -l /usr/lib/firewalld/services/ | grep ssh
-rw-r--r-- 1 root root 463 Aug 12 2020 ssh.xml
# cat /usr/lib/firewalld/services/ssh.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>SSH</short>
<description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
<port protocol="tcp" port="22"/>
</service>
**<port protocol="tcp" port="22"/>**という記載からも分かる通り、TCP通信をポート22番で許可している。
つまり、この部分を変更すれば、各サービスで使用するプロトコルやポート番号を変更することが可能だ。(でも↓)
##ユーザ定義サービスの追加
XMLファイルを /etc/firewalld/services 配下にすることでサービスをユーザ定義することが可能なため、テンプレ自体に変更を加えるよりもテンプレをコピーして新規でユーザ定義サービスを作成した方が良い。(と思う。)
# cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh_alter.xml
# vi /etc/firewalld/services/ssh_alter
# cat /etc/firewalld/services/ssh_manual.xml | grep port=
<port protocol="tcp" port="2222"/>
/etc/ssh/sshd_config の Port 設定変更も忘れずに。↓
# vi /etc/ssh/sshd_config
# cat /etc/ssh/sshd_config |grep "Port 2222"
Port 2222
最後に作成したサービスを firewalld に登録して、firewalld と sshd を再読み込みして設定完了。
# firewalld-cmd --add-service=ssh_alter --permanent
# firewalld-cmd --reload
# systemctl restart sshd
その他サービス(httpやsmtp)の設定も同様の方法で設定可能。