今回の環境、背景
今回設定した環境は若干古い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”,
“[email protected]”, 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,[email protected]
ここから問題のある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,[email protected],
hmac-ripemd160,hmac-sha1-96,hmac-md5-96,
hmac-sha2-256,hmac-sha2-512,[email protected]
これも同様に表示されているものから引き算して設定を実施。前項で行った暗号化方式の設定の下に記載します。
MACs hmac-sha1,[email protected],hmac-ripemd160,hmac-sha2-256,hmac-sha2-512,[email protected]
適応作業の実施
適応作業を行う前に、ざっくりとした確認は行っておきましょう。リモートで設定している以上、二度と繋がらなくなるサーバになる可能性もあるため、sshd
に内蔵されているコンフィグの確認ツールを利用し、プロセスを再起動します。確認ツールでなにか表示された場合は設定ミスがあるため、修正して再度コマンドを実行します。
# sshd -t
# service restart sshd
SSH越しで設定を行っている場合は、別の端末(ターミナル)から該当のサーバに接続試験を行い、問題なく接続できればOK。文法チェックを行っているため、接続できなくなるリスクは比較的低いと思います。
まとめ
あまり意識しないSSHの設定ですが、やっておいて損はないと思います。当然、個人であればやっておくべき設定ですが、会社などであればIPアドレス制限を設定していると思います。偽装された場合などもあるかもしれないですが、制限を行っているのであれば、ある程度リスクは低いと思います。また、パスワード認証をできないようにする、といったことも大切であるため、基本を怠らないことが大事です。