今まで意識したこともなかったのですが、SSHの認証を行うにあたって、SSL同様認証するための暗号化方式があるようです。よくよく考えてみると、Secure Shellの略なので、当然と言われれば当然なのですが、設定したことがなかったのでメモ。

今回の環境、背景

今回設定した環境は若干古いCentOS 6の環境です。なお、この先の具体的な内容はOSによって異なる箇所もあるため、詳細な情報を確認した上で行ってください。

  • CentOS 6
  • OpenSSH 5.3p1

今回はSSHの設定ファイルを触るのにSSH経由で行いましたが、別の方法で接続したほうが良いと思います。VPSサービスであればコンソールが提供されていると思うので、そちらから行うのがオススメです。

また、この環境に関して、ここでは記載していませんが、当初からSSH v1などは無効化済みの環境です。経緯としては機械的な脆弱性診断を行った結果、設定漏れなどが発覚した箇所を修正している感じなので、深くは調べていません。焼け石に水ではないですが、リプレース計画も出ているということもあり、基本は対症療法です。

やったこと

今回やったことは以下の2点です。

  • 暗号化方式を見直し
  • MACアルゴリズムの指定

暗号化方式の見直し

まず、現状の設定を把握する必要があるため、設定ファイルである/etc/ssh/sshd_configを確認してどのようなデフォルト値が設定されるのかを確認します。Apacheなどであればほぼ書かれていることもあるため、見ていましたが標準では記載がされておらず。

色々と調べているうちに、manコマンドを利用して確認すれば良い、ということが発覚したため、man sshd_configで確認します。

開いた後は慣れ親しんでいる(だろうと思われる)Viのコマンドと同じような形なので、/Ciphersで検索を行います。今回の環境では以下のものがデフォルトで指定されているようでした。(抜粋)

$ man sshd_config
    Ciphers  
            Specifies the ciphers allowed for protocol version 2.  Multiple  
            ciphers must be comma-separated.  The supported ciphers are  
            “3des-cbc”, “aes128-cbc”, “aes192-cbc”, “aes256-cbc”,  
            “aes128-ctr”, “aes192-ctr”, “aes256-ctr”, “arcfour128”,  
            “arcfour256”, “arcfour”, “blowfish-cbc”,  
            “rijndael-cbc@lysator.liu.se”, and “cast128-cbc”.  The default  
            is:
    
            aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,  
            aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,  
            aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se  

ここから問題のあるSSHの暗号化方式を引き算して設定を実施。適当な箇所に追加しましたが、基本は一番下で問題ないと思います。

Ciphers aes128-ctr,aes192-ctr,aes256-ctr

MACアルゴリズムの指定

暗号化方式同様、現状の設定には記載がされていなかったため、同様にmanコマンドで確認を実施。当初、脆弱性のエラー文で調べていたのですが、こっちは何もヒットせず…。(日本語)

$ man sshd_config
     MACs    Specifies the available MAC (message authentication code) algo-
             rithms.  The MAC algorithm is used in protocol version 2 for data
             integrity protection.  Multiple algorithms must be comma-sepa-
             rated.  The default is:

                   hmac-md5,hmac-sha1,umac-64@openssh.com,
                   hmac-ripemd160,hmac-sha1-96,hmac-md5-96,
                   hmac-sha2-256,hmac-sha2-512,hmac-ripemd160@openssh.com

これも同様に表示されているものから引き算して設定を実施。前項で行った暗号化方式の設定の下に記載します。

MACs hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160@openssh.com

適応作業の実施

適応作業を行う前に、ざっくりとした確認は行っておきましょう。リモートで設定している以上、二度と繋がらなくなるサーバになる可能性もあるため、sshdに内蔵されているコンフィグの確認ツールを利用し、プロセスを再起動します。確認ツールでなにか表示された場合は設定ミスがあるため、修正して再度コマンドを実行します。

# sshd -t
# service restart sshd

SSH越しで設定を行っている場合は、別の端末(ターミナル)から該当のサーバに接続試験を行い、問題なく接続できればOK。文法チェックを行っているため、接続できなくなるリスクは比較的低いと思います。

まとめ

あまり意識しないSSHの設定ですが、やっておいて損はないと思います。当然、個人であればやっておくべき設定ですが、会社などであればIPアドレス制限を設定していると思います。偽装された場合などもあるかもしれないですが、制限を行っているのであれば、ある程度リスクは低いと思います。また、パスワード認証をできないようにする、といったことも大切であるため、基本を怠らないことが大事です。

参考