見出し画像

WEBシステム道 ep.06改 【リベンジ編】SSHのセキュリティ対策

ここは、新しいWEBシステムを開発していく記録にしたい、と考えて作った研究室(ブログページ)です。
今回は、前回からの続きで、セキュリティレベルを上げるための設定をしていきたいと思います。

※前回からかなり期間空いてしまいました。。

ポート番号の変更

ここまでは、特に問題ないところだったのですが、ついにここからが勝負です。
セキュリティレベルを上げるために、通常のポート番号22は使えないようにして、違う番号で接続するように設定したいと思います。慎重に

なので、いったん、元々のポート番号22は残したまま、新しいポート番号を追加して、接続確認後に元の22を消すようにします。

参考、にはなりませんが、前回失敗した回です。

サーバ起動&SSH接続

まずは、前回サーバを一旦停止していたので、GCPのページからサーバを起動します。
いつもどおり、Compute Engineのページに入って、サーバをチェックONにしてから、ページ上の再生ボタンを押します。

画像1

その後Terminusでサーバに接続します。
IPアドレスが変わっているので、サーバ起動したあとに表示される外部IPの値をTerminusの設定画面で再設定します。
設定の仕方は、以前の記事を参照してください。

ここで、前回は、ポート番号22の設定を書き換えてしまったために、もとに戻せなくなったので、今回は、ポート番号22の設定を残したまま、新しいポート番号を追加しようと思います。

ここで設定しなければならないポイントをもう一度調べたところ、4点ありました。
 1.SSHが利用するポート番号の設定
 2.SELinuxの設定
 3.CentOS側のファイアウォールの設定
 4.GCPとしてのファイアウォールの設定
順番に設定していきます。

ファイアウォールの設定1

SSHとして利用するポート番号を設定します。

sudo vi /etc/ssh/sshd_config

このファイルの先頭のコメントを過ぎた下あたりのところにある下記の箇所に、新たなポート番号の設定を追加します。

画像10

Port 22
Port 32322

このような設定を追加します。

その後viを終了し、下記コマンドでSSHを再起動します。

sudo systemctl restart sshd

ファイアウォールの設定2

先の設定で通常はOKなのですが、CentOSの初期状態でSELinuxが動いている状態らしく、このファイル修正だけだとうまく効かないようです。
※SELinuxはセキュリティ上厳しい設定になっているイメージのようです。

その場合の設定方法は、先の/etc/ssh/sshd_configの先頭に載っていました。​

画像4

上の赤丸の部分です。

これをコマンドとして実行しようとしたのですが、semanageが実行できないというエラーとなりました。ネットで原因を調べたところ、policycoreutils-pythonというパッケージが入っていないことのようです。

なので、下記コマンドでインストールします。(どちらか)

sudo dnf -y install policycoreutils-python-utils

で、本来のコマンドを実行します。

sudo semanage port -a -t ssh_port_t -p tcp 32322

下記コマンドで、新しいポート32322が表示されていればOKです。

sudo semanage port -l | grep ssh

ファイアウォールの設定3

次に、CentOS側でのファイアウォールの設定をしておきます。

sudo firewall-cmd --add-port=32322/tcp --zone=public --permanent

「--add-port」で新しく使っていいポート番号を設定しています。
「--zone=public」は外部に対しての設定ということで、「--permanent」は再起動時も有効ということのようです。
「success」と返ってきたら成功です。

このあと、firewallを再読込します。

sudo firewall-cmd --reload

ファイアウォールの設定4

最後に、GCP側のファイアウォールの設定を変更します。元々、SSH接続用の22番が外部に対して開いているのですが、さっき設定した新しいポート番号(今回は「32322」)も開けます。

まずは、GCPのプロジェクトのダッシュボードページから、「Compute Engineに移動」をクリック(今回の記事の請求レポートを設定するところと同じ手順)して、画面下の「ファイアウォールルールの設定」をクリックします。

画像2

すると、前回作成した設定が残っていたので、これを使うことにします。

画像3

ちなみに、前回はこちら。

この設定をVMインスタンスに紐付けていきたいと思います。
まず、GCPのホーム画面のComputeEngineのところから入って、VMイメージの選択画面を表示します。
そして、対象のインスタンス名のところをクリックします。

画像5

その後、編集ボタンを押して、VMインスタンスの設定画面へ移動します。

画像6

設定画面の真ん中あたりにファイアウォールの設定箇所がありますので、そこに、先程確認したファイアウォールの設定の名前を入力します。

画像7

で、最後に画面一番下にスクロールして、保存ボタンを押します。
これで、一通りの設定は完了です。

接続の確認

Terminusで新しいポート番号で接続できるか確認したいと思います。

Terminusを起動して、すでに作成済みの設定をコピーして、ポート番号を修正します。
まず、作成済みの設定の左の丸をクリックして緑色に変化させたあと、画面右上の・・・をクリックします。

画像8

表示されたメニューの一番下のDuplicateをクリックします。

画像9

表示される画面のPortのところを新しいポート番号(今回は32322)に変更して、画面右上のチェックをクリックすると完了です。
※一番上のAliasも変更しておくと前作成したものと違いができるので、わかりやすいです。

ちょっといっぷく

これで接続できれば問題ないです。
なかなか慣れないと難しいです。
が、なんとか、ネット情報を頼りにここまでたどり着けました。(昔は、ネットの情報などなく、書籍などからの情報しかなかったので、それからするとかなり調べやすくなりました。その分、いろいろな手法も増えたのですが・・)

接続が成功したら、GCPのファイアウォールの設定(4番目のところ)で、本来のポート番号22のほう(default-ssh)を使用不可に設定すれば、新しいポート番号のみの接続になり、セキュリティレベルは上がることになります。

※Google および Google ロゴは Google Inc. の登録商標であり、同社の許可を得て使用しています。

次回は

GCPの方から連絡があり、無料枠で使える場所が変わったということなので、お引越し(もしくは再構築)を実施したいと思います。

では。次回もよろしくお願いします。


#WEBアプリ開発 #IT