1 はじめに
sshdのポート番号を22番(デフォルト)から22222番に変更してみます。 ここでは、例として22222番ポートを使用してみます。 ポート番号変更は、セキュリティ対策が主な目的です。
2 検証環境
CentOS版数は以下のとおりです。
[root@server ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)
カーネル版数は以下のとおりです。
[root@server ~]# uname -r 3.10.0-1160.el7.x86_64
SELinuxは、サーバ/クライアントともに有効にしています。
[root@server ~]# getenforce Enforcing
3 サーバの設定変更
3.1 空きポート番号の確認
lsofコマンドを実行します。22222番ポートが使用されていないことを確認します。 もし他のアプリが22222番ポートを使用していたら、使用していないポート番号をlsofコマンドで探してください。 他のアプリが使用するポート番号と重複しないように注意してください。 なお、lsofコマンドの使い方は、lsofコマンドの使い方 - hana_shinのLinux技術ブログを参照してください。
[root@server ~]# lsof -i:22222 [root@server ~]#
3.2 sshdの設定ファイル変更
sshdの設定ファイル(sshd_config)を以下のように変更します。 ポート番号をデフォルトの22番から22222番に変更します。
[root@server ~]# cat /etc/ssh/sshd_config #Port 22 Port 22222
設定ファイルの構文チェックをします。
[root@server ~]# sshd -t [root@server ~]#
3.3 SELinuxの設定変更
設定ファイルに下記説明があります。
[root@server ~]# cat /etc/ssh/sshd_config # If you want to change the port on a SELinux system, you have to tell # SELinux about this change. # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER #
上記説明にしたがって、ポート番号を変更したら、semanageコマンドを実行します。
[root@server ~]# semanage port -a -t ssh_port_t -p tcp 22222 [root@server ~]#
3.4 設定ファイルの再読み込み
設定ファイルを変更したので、設定ファイルを再読み込みします。
[root@server ~]# systemctl reload sshd.service
sshdのポート番号を確認します。 sshdが22222番ポートでListenしていることがわかります。
[root@server ~]# lsof -i4:22222 -a -P COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 1084 root 3u IPv4 46759 0t0 TCP *:22222 (LISTEN)
3.5 ポートの開放
新しく定義した22222番ポートへのアクセスを許可するため、 firewall-cmdコマンドを使って、22222番ポートを開放します。
[root@server ~]# firewall-cmd --permanent --add-port=22222/tcp success
次に、パーマネントルールをランタイムルールに展開します。
[root@server ~]# firewall-cmd --reload success
最後に、ポート番号を確認します。 22222番ポートへのアクセスが許可されていることがわかります。
[root@server ~]# firewall-cmd --list-ports 22222/tcp
3.6 ポートのクローズ
sshdのポート番号を確認します。sshdはデフォルトで22番ポートを使用しています。
[root@server ~]# firewall-cmd --list-services dhcpv6-client ssh
なお、dhcpv6-clientやsshはサービス名です。 サービス名は/etc/servicesで確認することができます。 たとえば、sshは以下のように定義されています。
[root@server ~]# cat /etc/services ssh 22/tcp # The Secure Shell (SSH) Protocol
22番ポートは、もう必要ないのでクローズします。
[root@server ~]# firewall-cmd --remove-service=ssh success
ポート番号を確認します。
[root@server ~]# firewall-cmd --list-services dhcpv6-client
4 サーバにsshでログイン
4.1 その1(-p ポート番号)
[root@client ~]# ssh -p 22222 root@192.168.2.100 root@192.168.2.100's password: Last login: Thu Dec 23 18:34:40 2021 from desktop-mb6g4ki [root@server ~]#
サーバ側でTCPコネクションの状態を確認してみます。 クライントがサーバの22222番ポートでTCPコネクションを確立していることがわかります。
[root@server ~]# lsof -i:22222 -a -nP COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 1084 root 3u IPv4 46759 0t0 TCP *:22222 (LISTEN) sshd 1084 root 4u IPv6 46761 0t0 TCP *:22222 (LISTEN) sshd 3299 root 3u IPv4 47023 0t0 TCP 192.168.2.100:22222->192.168.2.105:38496 (ESTABLISHED)
4.2 その2(-o Port=ポート番号)
[root@client ~]# ssh -o Port=22222 root@192.168.2.100 root@192.168.2.100's password: Last login: Thu Dec 23 20:21:45 2021 from 192.168.2.105 [root@server ~]#
Z 参考情報
私が業務や記事執筆で参考にした書籍を以下のページに記載します。 Linux技術のスキルアップをしよう! - hana_shinのLinux技術ブログ