2019年3月10日日曜日

FreeBSD を 12.0-RELEASE に上げたら,ssh でログインできなくなって困った件

 久しぶりに書き込むような気がするが,それは置いておいて,今回の話題について書こう。

 今回は FreeBSD の OS のバージョンを 11.2-RELEASE から 12.0-RELEASE に上げた,というお話。 12.0-RELEASE に上げる事自体はうまくいったのだが,その後,ssh でリモートからログインできなくなってしまった。 そのことに着いて書こうと思う。

 始まりは FreeBSD の stable バージョンが 12.0-RELEASE になっていることに気づいたことから始まる。 基本的に OS のバージョンは最新のものの方がいいと思っている。 ただし,メジャーバージョンが上がるとトラブルも多いので,すぐにはアップグレードしない,というのが平民の考え方なのだが,12.0-RELEASE になってからはかなり時間が経っているので,今回はいいかなぁ?と思ってアップグレードしてみた。

 そこで,いつものように freebsd-update を使って,バージョンを上げてみた。 まずは,下記の2個のコマンドでカーネルのアップグレードを行った。いつものように結構時間がかかる。
# freebsd-update upgrade -r 12.0-RELEASE
# /usr/sbin/freebsd-update install
それから,再起動して,もう一度
# /usr/sbin/freebsd-update install
でその他のソフトウェアのアップグレードを行う。
 その後に,pkg のアップグレードのために,「pkg」アプリ自体をアップグレードしてから,パッケージを作り直す。
# pkg-static install -f pkg
# pkg upgrade -y
というのが,いつもの手順。

 しかし,今回は,再起動後にリモートで (ssh で) ログインできなくなってしまった。 jail 環境へのログインはできるのに,host 環境へはログインできなかった。 そこで,仕方なくコンソールの前に座って,直接ログインして作業することにした。

 まずは,etc/hosts.allow の書き換えで間違えたのか?と思ったので,hosts.allow の ssh の行を全て許可してみた。 しかし,ログインできない。
次に,カーネル等のアップグレードで ipfw の設定が不適切になったのか,とも思ったが,「ipfw -a list」とするとちゃんと ssh のポートにアクセスされているのわかった(パケット数が増えたので)。 となると,sshd の問題しか考えられない。

 そこで,/etc/ssh/sshd_config を見直してみた。 少なくとも読み取りポートやらは以前の設定のままで,おかしいとは思われなかった。 普段の ssh のログインには RSA 認証を使ってパスワード認証は許可してないのだが,認証の問題か?と思ったので,パスワード認証を復活させたみた。 設定を書き換えて,ssh を再起動するとやっと問題が見えてきた。
# service sshd restart

 まず,ssh のサービスが起動していなかった。 なんとも衝撃的だった。ssh が起動してないなんて…。 でも,ssh が起動していない,というのは設定にミスがあるから,のはず。 事実,起動させようとすると,以下のようなエラーが出た。
sshd_config line 30: Bad SSH2 cipher spec 'aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,arcfour'.
こんな行書いたっけ?と思って,設定を見てみると,確かに書いてあった。
# Ciphers and keying
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,arcfour
MACs hmac-sha1,hmac-ripemd160
どうやら,この「Cipherの指定項目」が不適切みたいだった。 ネットでゴソゴソ調べてみると,以前からある「cbc,ssh1,64bit」を含む「Cipher」は指定するな,というもの以外に,「arcfor」を含むものも指定してはいけない,とどっかに書いてあった。 以下に書いてあった:https://ja.wikipedia.org/wiki/RC4

 そこで,Cipher の行を「Ciphers aes128-ctr,aes192-ctr,aes256-ctr」としてみた。すると上記のエラーメッセージはでなくなった。 しかし,今度は以下のようなエラーメッセージが出てきた。
/etc/ssh/sshd_config line 32: Bad SSH2 mac spec 'hmac-sha1,hmac-ripemd160'.
上記の Cipher の行のすぐ下の「MACs」という行も不適切みたい。 これもネットでゴソゴソ調べてみたが,いまいちこれにしなさい,という記述が見つけられなかった。 で,めんどくさいので,行全部をコメントアウトしてみた。 そしたらうまく ssh が起動できた。 どうも,security 上のリスクがあるので,「Cipher」と「MACs」の制限が厳しくなったみたい。

 最終的に sshd_config の Ciphers と MACs の部分は以下のようにして,sshd を再起動するとうまくログインすることができた。
# Ciphers and keying
Ciphers aes128-ctr,aes192-ctr,aes256-ctr
#MACs hmac-sha1,hmac-ripemd160
しかし,こんな設定いつの間に入れたんやろ?全然記憶にない…。どっかの段階で入れた方がいいというのをどっかで聞いて入れたのかも…。

 その後,「pkg upgrade -y」としたのだが,その時に多くのアプリケーションソフトが消されてしまった。 そのためにいくつかを入れ直さないといけなかった。

0 件のコメント: