SSHといえば22番ポート、これ常識です。
だからダメです、今すぐ22番ポートから他のポートへ変えましょう!
- 何故22番ポートがダメなのかわかる!
- 実際に22番ポートから他のポートに変える手順が分かる!
22番ポートってダメなの?SSH=22番でしょ?
もう一度言います、だからダメなんです。
そう、あなたがSSH=22番ポートと認識しているようにこれは常識、デフォルトでそうなっています。
という事は設定を変えない限り、新規に立ち上げたサーバーは基本的に22番ポートが開放されています。
どのドアが開かれているかわかっている状態、どう考えても危険ですよね?
不正アクセス試行は秒単位
この画像、僕が契約しているあるVPSサーバーのログインに失敗した履歴です。
一番左にユーザー名、真ん中辺りにログイン試行したクライアントのIPアドレス。そして日付と時間。
なんと同じ日の19時00分から19時08分のわずか8分間に同じクライアントがユーザー名を変え合計26回もログインしようとしています。
IPアドレスからアクセス元を調べてみるとヨーロッパの方から試したようです。
もうわかりますよね、これは機械的に行われていてほとんどの場合人間の手によるものじゃありません。
我々人間より遥かに計算が早いコンピューターが休むこと無く常に侵入できる先を探しているんです、どう考えても危険ですよね。
ユーザー名は片っ端から試す
- admin
- user
- guest
- ftpuser
adminやuserなんかはルーターの初期設定ユーザー名で皆さんも目にした事があるかも知れません。
これらは僕のサーバー上には登録されていないユーザー名ですが、とにかくありそうなユーザー名は片っ端から試されます。
悪いやつに失うものなんてありませんから、ログインできればラッキーでとにかく何回も何回も試します。
そしていつの日か破られる日が来ます・・・。
だから早く22番の扉を閉めて、自分しか分からない番号の扉に変更する必要があります。
手っ取り早いのは何万とある扉のうち、どれが正解か分からなくする事ですからね!
では早速取り組んで行きましょう!
SSHのポート番号を22番から変更する
まずはローカルからサーバーへSSH接続して下さい。
ポート番号の変更は/etc/ssh/sshd_configという設定ファイルの編集で行えます。
sshd_configはrootユーザーのログイン制限をする時にも編集したファイルですね!
ポート番号を何番にするか決めておく
その前に、設定するポート番号を何番にするか決めておきましょう。
ポート番号というのは0番~65535番まで存在し、うち0番~1023番はよく使われるポート番号として様々なサービスに使われています(これをWell-known Portsと言います)。
- 21番(FTP)
- 22番(SSH)
- 25番(SMTP)
- 80番(HTTP)
- 110番(POP3)
- 123番(NTP)
なんとなく聞いたことあるようなのばっかりですよね?
FTPやHTTPはWebサイト制作でお馴染みですし、SMTPやPOP3はメール設定する時に目にします。
このように1023番以下は既に使われている物が多く、そこにバッティングしてしまったら困りものなので1023番以上、65535番以下にするのがベターです。
適当に思い当たる数字でも、例えば昭和60年1月30日生まれの方が60130番を選ぶとか、なんでも良いんで1個決めます。
そしてそのポートが今使われているかどうか調べ、使われていなければOKという事になります。
ポート番号が空いているかどうか調べるにはlsofコマンドを使います。
試しに80番ポートを調べてみましょう!
結果はこんな感じで、どうやらnginxというWebサーバーソフトウェアが使用しているようです。
僕は今回適当に51826番を選んだので、51826番がどうなっているか調べて行きます。
何も表示されませんでした。
何も表示されないという事は使用されていないという事です、無事変更できますね!
それでは僕は51826番にしていきますが、皆さんは自分で決めて確かめたポート番号を使用して下さい。
sshd_configの編集
それでは実際に空いている事が確認できたポート番号を設定ファイルに書き込んで行きましょう!
sshd_configファイルの編集を行っていきます。
/etc配下のファイルなので管理者権限が必要、という事でsudo管理者権限でviを使って編集して行きます。
パスワードを聞かれるので、ログインユーザー(今ログインしている一般ユーザー)のパスワードを入力して権限を貰います。
次の行を探して行きましょう!
バージョンによって多少変わりますが結構最初の方にあると思います。
先頭の#を削除し、22という数字を他の数字に変えていきます。
これだけでOK!
後は入力モードからコマンドモードに戻し、:wqで上書き保存して終了です。
最後にSSHサーバーの再起動をして、今編集した設定ファイルを読み込ませれば反映完了です。
これだけでOK!
変更後のポートでログインできるか試す
これで全ての設定が終わりました、それでは実際にこのポートでSSH接続できるか試して行きましょう。
22番ポートでログインできないか確認
その前に、きちんと22番ポートでログインができなくなっているか確認する必要があります。
一度サーバーからexitコマンドでログアウト後、いつものようにログインを試してみて下さい。
接続拒否されれば無事ポート番号の変更ができています!
Macユーザーの方はConnection refusedと出ればOK!
これは接続先のサーバーのSSHサーバーが見つけられなかった事を示しているので、=ログインできなかった事を意味しています。
新しいポート番号でログインできるか確認
では今度は指定した新しいポート番号でログインできるかの確認です。
やり方はいつもと同じで、SSH接続時のポート番号を22番から変更後のポート番号に変更するだけ。
Windows/Tera Termユーザーの方はログイン時のTCPポート欄を該当のポート番号に変更するだけでOK。
Macユーザーの方はコマンドの -p 22 を該当のポート番号に変更すればOKです。
ユーザー名やパスワード、秘密鍵のパスは今までと代わりありません。
Windows/Tera Termユーザーの方はポート番号が変わった事でこんな警告が出ますが、続行をクリックしてOKです。
どうでしょう、ログインできましたか?
ログインできれば大成功です!
どうしてもログインできない場合
どうしてもログイン出来ない場合は何らかの設定を間違えている可能性があります。
ConoHa VPSの場合、ConoHaにログインしサーバーリストから該当のサーバーのネームタグをクリックするとそのサーバーの詳細に入れます。
メニューの中にコンソールボタンがあり、ここからroot権限でログインできます。
再度viコマンドで/etc/ssh/sshd_configの編集をし一度22番に戻してからsystemctlでsshd.serviceの再読込を行って下さい。
改めてSSH接続を試してみてログインできるようであればポート番号記載や入力を間違えているだけの可能性があります。
また、ConoHa VPSの場合サーバー詳細のネットワーク情報欄にあるポート設定を確認してみて下さい。
ここが全て許可以外の状態だと、チェックが入っているポート以外はそもそも通信できません。
ファイアウォールを利用している場合
ファイアウォールを適切に設定している場合、ポート変更後のSSHポートをファイアウォールに適用させる必要があります。
詳しくは下記で確認して設定をし、デフォルトの22番ポートは塞いでおく事が望ましいですね。
ログイン出来たらログインを自動化しておこう!
無事ログインができたら、SSH接続を自動化しておくことをオススメします。
WindowsでTera Termユーザーの場合はTera Termのマクロ機能を使って便利にログイン出来るようになるので、合わせて以下の記事も確認してみて下さい!
ポート番号を変更して不正ログインの可能性を下げよう
SSHのポート番号を変更する事は、それそのものが大きなセキュリティ向上に繋がります。
もちろんどのポートが空いているか調べる方法はあるんですが、少なくともそういう挙動をしない不正プログラム(22番しか攻撃対象としないもの)のアクセスは一切を遮断する事ができます。
世の中には「どうせポートスキャンすれば関係ないんだから意味がない」という主張もありますが、可能性が1%でも下がるのであればサーバー管理者は積極的に採用すべきと思っています。
特にConoHa VPSでWordPressを運用するような方だと、サーバーそのものが記事をストックする資産です。
自分が書いた大切な記事やデータを守るために必ず実施しましょう!
ConoHa VPS+KUSANAGIで始めるWordPress超高速環境
当記事はWordPressを超高速化できるWordPress専用仮想マシンKUSANAGIをConoHa VPSで初心者でも簡単に導入できるというコンセプトの1記事です。
手順通りに行えば誰でもKUSANAGI環境が実現できる!を目指して作成しました。
是非合わせてお読み下さい!
コメント
ポートを変えるよりもパスワード認証を許可しないで鍵認証にすればいいのではないでしょうか?
おっしゃる通りです!
今回は1からVPSを触るユーザー向けにTipsという形で複数に分けて記事を書いているうちの1記事なのでとりあえずSSHポートをデフォルトで使う危険性を知って貰いたく執筆しています。
基本的にセキュリティにやりすぎは無いと思っているので、僕はポート塞いで変更の上秘密鍵認証オンリーにするのが最適だと思っています!