施工管理職から転職し2年目になります。
実現したいこと:VPSサーバからWindows PCにsshでアクセスをできるようにして、ローカルにバックアップを取りたい。 シャチ 駆け出しインフラエンジニアの備忘録です。▷情報処理所持資格[基本情報技術者][情報セキ[…]
sshd_configファイルの設定
・Open SSH serverの設定”sshd_config”でポート番号の変更。
Port番号は任意の番号を指定。
cd /etc/ssh/ cp -p sshd_config sshd_config.bk #設定ファイルのbackup vi sshd_config -- 設定変更 -- 17 Port 10022 #Portをdefault"22"から変更
・Open SSH serverをrestartし、設定を反映させる。
systemctl restart sshd #Open SSH serverの開始 systemctl status sshd #Open SSH serverが正常に起動したか確認
・firewall public ruleにrich ruleでポート10022の許可設定を追加。
firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.10.0/24 port protocol="tcp" port="10022" accept' --permanent firewall-cmd --reload firewall-cmd --list-all
ssh -p 10022 192.168.10.XXX
いつもならサクッとsshでログインできるはずが、この時点でははじかれてしまう。
ssコマンドや外部からのncコマンドでも確かにポートが開いていない。
サーバー設定がうまくいかない時は、SELinuxを確認
#getenforce Enforcing
Red Hatのドキュメントを見ると、”enforcing – SELinux security policy is enforced.”
つまり、SELinuxのセキュリティポリシーが適用されているとのこと。
・SELinuxで許可されているsshポート番号を確認。
#semanage port -l | grep ssh ssh_port_t tcp 22
上記の出力結果から、sshd.confでポート番号を変更しfirewalldでは10022を許可したものの、SELinuxのssh許可ポートでは22しか許可されていなかった。
結果として、SELinuxのssh許可ポートで10022を追加する必要があるということだった。
#semanage port -a -t ssh_port_t -p tcp 10022 #semanage port -l | grep ssh ssh_port_t tcp 10022, 22
・ちなみにデフォルトのポート22は不要なため、SELinuxの許可ポートから削除しようとすると、エラーが出る。
#semanage port -d -t ssh_port_t -p tcp 22 ValueError: Port tcp/22 is defined in policy, cannot be deleted
ポリシーで定義されているため、削除できないとのことのよう。
これにて、外部からサーバーへ10022でsshが可能になったため、設定完了。
まとめ:sshのポート変更でポートが開放されない場合|SELinuxが無効化か確認
サーバーの設定をするときはSELinuxのステータスを確認。
設定手順
- SELinuxのステータス確認
- sshd.confの設定変更
- firewalldの設定変更
- SELinuxの設定変更
SELinuxを有効にしている時は、設定手順にSELinuxの設定手順を組み込む必要があるということですね。
SELinuxはOS起動時にデフォルトで有効化になっているようなので、ステータスを気にしたことがなかったです、、