SSH サーバ運用上の注意点
2021.10.22
研究室にある Linux ホストや MacOS ホストに遠隔からログインするために ssh を利用していますか?
昨今、ssh サーバを狙ったアカウント/パスワード総当り攻撃 (Brute Force Attack) が頻繁に行われています。この攻撃により、研究室内のホストに侵入された場合には、ホスト内にあるデータや機密情報を抜き取られるのみならず、他の研究室や組織に対する攻撃の踏み台として利用されます。
つまり、被害者である一方で、侵入されたホストが踏み台として利用されることで、加害者にもなってしまう危険性があります。
ssh 総当り (Brute Force) 攻撃とは
ssh はネットワークを通じて遠隔からホストにログインするためのプロトコル (ソフトウェア) です。UNIX 系の OS (Linux や MacOS) に遠隔からログインするために利用されています。
ssh において遠隔からログインを行う際は、認証が必要となります。この認証として一番簡易に利用できるのが、ユーザ名とパスワードによる認証です。ユーザ名とパスワードの組み合わせは無限にあるように思えますが、よくある単語や短いパスワードを利用していると、攻撃者によって短時間で不正にログインされてしまいます。これは、考えられる文字列のユーザ名とパスワードを使って、攻撃者はひたすらログイン試行を遠隔から行うことができるためです。長いパスワードを利用していたとしても、数日間かけて考えられる文字列での総当りを行うことが可能です。このような攻撃は Brute Force Attack (ブルートフォースアタック) とも呼ばれており、ssh のみならず Web サイトへのログイン攻撃にも使われています。
対策
ユーザ名とパスワードで認証している限りは、攻撃者によって有限時間で侵入される可能性があります。ですので、ユーザ名とパスワードによる認証はお勧めできません。そこで、ssh を利用した遠隔ログインを利用する場合には、以下の対策が考えられます。
(2)ssh で遠隔ログインを許可する IP アドレス範囲を限定する
(3)同一 IP アドレスから頻繁にログイン試行があった場合には、その IP アドレスを拒否するような仕組みを導入する
(1) はユーザ名とパスワード総当り攻撃を防ぐ一番有効な手段です。SSH サーバを設置する場合には、必ず実施するように心がけてください。秘密鍵と公開鍵を用いた認証は、パスワードによる認証に比べひと手間かかることは事実ですが、そのひと手間によりセキュリティレベルが確実に向上します。
(2) も一般的には有効な対策となりますが、ログインを許可した IP アドレス範囲内に、対策を施していない脆弱な ssh ホストがあり、その ssh ホストが攻撃者によって乗っ取られ踏み台として利用された場合には、意味を成さない対策となります。できれば (2) のみの対策は避けて頂くほうが安全です。もちろん、(1) とあわせて (2) の対策を実施した場合には、(1) よりも強力な対策となります。
(3) に関しては、攻撃者による攻撃を一定時間で遮断することができるため、効果の高い対策となります。Linux の場合には firewalld (https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/security_guide/sec-using_firewalls#sec-Getting_started_with_firewalld) や fail2ban (https://www.fail2ban.org/wiki/index.php/Main_Page) といったソフトウェアを導入し、適切な設定を行うことで実現できます。
まとめ
まとめますと、(1) の対策はほぼ必須要件です。遠隔からログインできる ssh サーバを設置する場合には、必ず (1) の対策を行ってください。それに加えて、(2) や (3) の対応は安全性を向上させるために有用な手段となります。
リファレンス
- ブルートフォースアタックとは?実験から分かる危険性と有効な4つの対策(https://japan.norton.com/brute-force-attack-9215)
- Install Fail2ban On Centos 7 To Protect SSH Via Firewalld
(https://devops.ionos.com/tutorials/install-fail2ban-on-centos-7-to-protect-ssh-via-firewalld/) - How to Install and Configure Fail2ban on Ubuntu 20.04
(https://linuxize.com/post/install-configure-fail2ban-on-ubuntu-20-04/) - Ubuntu 20.04でSSHの鍵をセットアップする方法
(https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys-on-ubuntu-20-04-ja) - Ubuntu 20.04 LTS : OpenSSH : SSH 鍵認証 – Server World
(https://www.server-world.info/query?os=Ubuntu_20.04&p=ssh&f=4)
SI センター
関谷 勇司