SSH を安全にするたった一つの冴えたやり方

Posted by
ぴろり
Posted at
2009/02/28 18:45
Trackbacks
関連記事 (0)
Post Comment
コメントできます
Category
電算室 カテゴリ

 …って書く程でもないですけどね。しかも「たった一つ」じゃないし! SSH がアタックされてログが酷いことになってるよー(泣)とお嘆きのサーバ管理者は多いと思います。簡単にできてその割りに効果的な対策は一つ。SSH のポート番号を変えてやることです。アタックされること自体が大きく減るので、確率的にもセキュリティは破られにくくなります。ついでにログの増加量も劇的に削減できるのでオススメです。

このエントリーをはてなブックマークに追加  

 クラッカーが使用するアタック プログラムは 22 番ポートが空いていない時点で大抵諦めてくれるので(自分だったらそうプログラムする)、ポート番号を変えるだけで効果は絶大です。ところで SSH は複数のポートで待ち受けできるので、私の場合、自宅のサーバでは 3022 番と 22 番の両方のポートを SSH 用に開けていて、外向けルータの NAT 設定で 3022 番ポートだけをサーバに向けてあります。これで、自宅内では普通に 22 番ポートで、そして外からは 3022 番ポートを使って SSH にアクセスできるようにしています。

root でのログインを禁止する

 しかし、それでも中には暇なクラッカーが居て、ポート スキャンを行って SSH のポートを探し出し、果敢にアタックしてくる連中が少数ながら居ます。そんな時、UNIX では必ず存在するユーザ名 root は格好の標的になります。アクセス ログに残ったアタックの形跡を見ると、大抵、ユーザ名 root に対してパスワードの辞書攻撃、もしくはブルート フォース攻撃を仕掛けてくることがわかっています。そこで、SSH でログインできるユーザ名を限定し、root でのログインはできないようにすると安全です。

PermitRootLogin no
AllowUsers username

公開鍵認証方式の採用

 更に、root 以外のユーザ名の辞書攻撃を防ぐためにも、通常のユーザ名+パスワードによる認証自体を使用不可にし、公開鍵認証のみのログインに切り替えておくことで安全にすることができます。これで辞書攻撃もブルート フォース攻撃も一切通用しなくなります。

PasswordAuthentication no
PubkeyAuthentication yes
RhostsRSAAuthentication no

接続数による制限

 SSH へのアタックは、アタック プログラムを利用して短時間に多数の接続要求を送ってくることが一般的です。そこで、SSH の設定で MaxStartups ディレクティブを設定するのが役立ちます。MaxStartups ディレクティブは、コロン区切りで 3 つの数字を設定します。

MaxStartups 3:50:10

 これで同時に 3 つまでの接続要求は通常通り処理しますが、4 つを超える接続要求は 50% の確率でこれを拒否し、10 以上の接続要求は全て拒否する、という意味になります。接続するユーザが少人数に限られていたり、そもそも SSH でログインしての作業をあまり必要としないサーバでは、MaxStartups にはできるだけ小さい値を設定しておくのが良いでしょう。

このエントリーをはてなブックマークに追加  



関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。