1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【CentOS7】SSHのセキュリティ設定/firewall

Last updated at Posted at 2022-08-02

概要

CentOS7でSSHを使用するにあたり、最低限必要なセキュリティ設定の内容を記述します。(学習ログ)
その中でも今回は、前回sshd_configに追加したポートをfirewall-cmdで追加、解放する手順を記述していきます。
※ローカルマシンはmacOSを使用しています。

他記事に関して
【CentOS7】SSH公開鍵認証設定/鍵生成〜サーバーへの転送
【ContOS7】SSHのセキュリティ設定/sshd_config

新しく追加したSSHのポート番号を解放する

まずは、以下のコマンドで、デフォルトゾーンの設定を出力してみます。

sudo firewall-cmd --list-all

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

services: dhcpv6-client sshの箇所が、現在解放されているSSHのポート(デフォルト:22番)の状態です。
こちらに、新たに追加したポート番号を追加し、変更後のポート番号でsshログインできるようにします。

ssh.xmlのコピー、編集

まず、既存のfirewallに対するsshの設定が記述された、ssh.xmlをコピーします。

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-49152.xml

※ファイル名の「49152」は、前回sshd_configに追加した新しいポート番号になります。
まだsshd_configの設定を終えていない方は、前回の記事 【ContOS7】SSHのセキュリティ設定/sshd_config をご参照ください。

(注) /usr/lib/firewalld/以下にはシステムデフォルトの設定ファイルが置かれているため、こちらは基本的にはいじってはいけません。
設定を変更する際には必ず、/etc/firewalld/にコピーしてから編集するようにしてください。
/etc/firewalld/以下にファイルが存在する場合は、それによってシステム設定が上書きされます。
参考記事:CentOS7のfirewalldでsshのポート番号を変更する方法

設定ファイルの編集

先ほどコピーしてきたssh-49152.xmlファイルを編集します。
以下のように修正してください。

sudo vim /etc/firewalld/services/ssh-49152.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>

(編集後)
<?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="49152"/> ←ここを修正
</service>

編集が完了したら、vimを保存して終了します。 :wq

firewallの設定を反映させる

# リロード
sudo firewall-cmd --reload
success

# 設定の反映(ここで追加したポート番号「49152」をfirewallに追加します)
sudo firewall-cmd --permanent --add-service=ssh-49152
success

sudo firewall-cmd --reload
success

変更後の状態を確認

sudo firewall-cmd --list-all

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh ssh-49152 ←追加されていればOK
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

動作確認

追加したポート番号でsshログインできるか確認します。
万が一設定がミスっていたなどの理由でログインできなかった時のために、別タブで動作確認することをオススメします。

ssh -p 49152 -i ~/.ssh/{key_name} {user_name}@{ip_address}

ここでログインに失敗した方はもう一度firewallの設定を見直してみてください。
それでもダメならsshd_configの設定も見直すことをオススメします。
【ContOS7】SSHのセキュリティ設定/sshd_config

デフォルトのポート番号を削除する

sshd_config

変更後のポート番号でsshログインできることが確認できたら、次はデフォルトのポート番号を閉じる設定に映ります。
まずはsshd_configに残っている設定を削除します。

sudo vim /etc/ssh/sshd_config
# (変更前)
Port 22
Port 49152

# (変更後)
Port 49152

sshd_configファイルの反映

sudo systemctl restart sshd

firewall

次に、firewallの設定から、デフォルトのポート番号を削除します。
まずは現在の設定内容を確認します。

sudo firewall-cmd --list-all

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh ssh-49152
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

以下のコマンドでデフォルトのポート番号(ssh)を削除します。

sudo firewall-cmd --permanent --remove-service=ssh
success

確認

sudo firewall-cmd --list-all

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh-49152 ←sshが消えていることを確認
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

終わり

以上になります。
一応ログアウト後に、22番ポートでsshログインできないこと。および、変更後のポート番号でログインできることの動作確認を行うようにしてください。

参考・関連記事

【CentOS7】SSH公開鍵認証設定/鍵生成〜サーバーへの転送
【ContOS7】SSHのセキュリティ設定/sshd_config

CentOS7のfirewalldでsshのポート番号を変更する方法
CentOS 7 firewalld よく使うコマンド

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?