概要
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 よく使うコマンド