SELinuxを有効化したFedora31でSSHの待受ポートを変更する

アイキャッチはSELinuxのロゴ。

SSHの待受ポートを初期設定の22番のままにしておくと、ありえない量の不正アクセスが世界中から飛んできます。私はVPS等で使い始めの儀式としてこのポート変更を毎回行っていますが、SELinuxが有効化されていると手順が1つ増えるのでメモしておきます。

やること

今回は待受ポートを22番->2345番にする。

  • sshdの待受ポートを22番から2345番に変更する
  • ファイアウォールで22番を閉じて2345番を開く
  • SELinuxにssh用ポートとして2345番を追加

以下で書いてるコマンド類はrootが必要なことが多いと思うので、適宜読み替えてください。

sshdのポートを変更

sshd_configファイルを編集してポートを変更する。SSH接続中なら、2345番の追加だけで、22番は2345番で接続できてから閉じる。

vim /etc/ssh/sshd_config 

- Port 22 
+ Port 2345 

systemctl restart sshd

ファイアウォールの設定

今回はfirewalldを使用する。SSH経由で設定している場合、締め出されるかもなので閉じるタイミングには注意。

ファイアウォールを開ける

firewalldのサービスを作成する。最初からあるfirewalldのSSHサービスファイルは/usr/lib/firewalld/services/ssh.xmlにある。ユーザーが追加する場合、/etc/firewalld/services以下にssh-2345.xmlというファイルを作成して、ポート番号と説明部分を適当に変えておく。

あと、zoneはデフォルトのままでいいので、明示的に設定はしない。

cp /usr/lib/firewalld/services/ssh.xml  /etc/firewalld/services/ssh-2345.xml
vim /etc/firewalld/services/ssh-2345.xml
firewall-cmd --add-service=ssh-2345 --permanent
firewall-cmd reload

ファイアウォールを閉じる

こっちはもともと開いてるのを閉じてるだけなので簡単。

firewall-cmd --remove-service-ssh --permanent
firewall-cmd reload

SELinuxにポート変更を通知

どうやるんだろう、って思ってけど、実はFedora31だとsshd_configファイルのPortの上に書いてある。

# 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 port -a -t ssh_port_t -p tcp 2345

できてるか確認

こんな感じで確認。

[root@host ~]# semanage port -l |grep sshd
ssh_port_t                     tcp      2345, 22

22番ポートが残ってるのが気になったので、RHELのページを確認。

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/managing_confined_services/sect-managing_confined_services-configuration_examples-changing_port_numbers

semanage port -d -t ssh_port_t -p tcp 22 で消せる?って思ったけど、「ValueError: ポート tcp/22 はポリシー内で定義されているため削除できません」って出てくる。 ファイアウォールでも弾いてsshdでも触ってないしいいのかなぁ…

おわり

SELinuxを有効化していても、デフォルトでポリシーが設定されているSSHのようなものの場合は、数コマンドでかなり簡単にできることがわかった。

まだまだSELinuxはよくわかってないので、勉強していきたい。

かず猫

インターネット初心者です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください