GCPでsshのポートを変更する

sshでリモートからアクセス許可をしていると、なんとなく、攻撃されるんじゃないか?とか思いませんか?

キーペアでの認証にしていれば、まあ、普通は不正にログインされることはないと思います。でも、どうせならもう少し小細工してみよう、ということで、sshのポートを変更してみます。

GCP側で許可ポートを追加

VMインスタンスの詳細表示にある「ネットワークインタフェース」の詳細を表示を選びます。

すると、ネットワークに関するメニューへと移行します。ファイアウォールルールの設定画面へと進みます。

いくつかのパラメータ入力画面へ行きますので、必要な項目を入力します。最低限、これだけは入力してください。例として10022ポートを利用する場合として記載します。

  • 名前:ルールの名前です。ssh-10022とかでいいです。
  • トラフィック方向:上り
  • 一致したときのアクション:許可
  • ソースフィルタ:IP範囲
  • ソースIPの範囲:0.0.0.0/0  接続元IPアドレスが限定できるなら、そのIPアドレス。
  • プロトコルとポート:指定したプロトコルとポート
  • tcpにチェックをして10022
  • udpは利用しないのでチェックは不要

これで作成をします。

ssh-10022が追加され、通信可能になりました。default-allow-internalがあるから、設定いらなくね?と見えますが、ソースIPアドレスがローカルネットワークのものなので、グローバルから全開放ではありませんのでご安心を。ちなみにFirewalldは、コンソールのファイアウォール機能を使ってほしいためか、解放されてます(停止はしていないんだけど)。

sshdのポートを変更する

sshのポート変更をするために、システムへログインして/etc/ssh/sshd_configを開きます。


#Port 22

Port 10022 

#AddressFamily any 

#ListenAddress 0.0.0.0 

#ListenAddress ::


これで、sshdを再起動すれば10022へ切り替わるのですが、このまま、再起動しても立ち上がりません。

SELinuxでport 10022を許可する

世の中、SELinuxを全否定的にされる方が多いのですが、これに関してだけは、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で必要なポートをあけてね!

ということです。せっかくポート変更してセキュリティ対策しているのに、SElinuxをdisableにしてセキュリティレベルを下げていたら意味がないので、semanageを利用してポートにsshの権限を付与します。


# semanage port -a -t ssh_port_t -p tcp 10022


設定を確認すると、


# semanage port --list | grep ssh

ssh_port_t tcp 10022, 22


SELinuxのsshの利用可能ポートが追加されています。ここでsshdの再起動。このとき、今ログインしているsshの接続は切らないでください。もし、ミスっていた場合、ログインできなくなってしまうからです。今、sshでログインしているシェルは、すでにsshdの管理下からは切り離されているので、sshdを再起動しても影響はありません。


# systemctl restart sshd


TeraTermでport 10022を指定してログインしてみてください。接続できたでしょうか。

ここまでできたら、ファイアウォールの設定からPort 22の設定を消したりしてみましょう。Port 22のサービスは止めてしまっていますので、無理に閉じる必要はありませんが、気持ちの問題ですね。

適当に過ごす日常blog

50まじかになってフリーになったSEです。今までなんとか生きてこれたので、これからもなんとかなるかなーという適当な日々をつづります。

0コメント

  • 1000 / 1000