DD-WRTおよびSSL証明書

みなさんこんにちは!



この出版物では、ルーターでDD-WRTを使用する際のいくつかの明白な点について説明します。 おそらく、DD-WRTのレギュラーはここで明確になるでしょうが、初めて賭けをする人にとっては多くの有用なものがあるでしょう。



説明されているすべてを実行するには、DD-WRT、多少なりとも最新のディストリビューション(Debian Wheezyがあります)および新しい知識への渇望を持つLinuxコンピューターでサポートされているルーターが必要です。



だから、ついにDD-WRTのかなり古いLinkSys E4200ファームウェアを手に入れました。 LinkSysの古いオリジナルファームウェアについて多くの苦情がありました。 特に:



1)すべてのUSB大容量ストレージで動作しませんでした。

2)HTTPS経由で入力すると、最悪のWebUIブレーキ。

3)SSL証明書に対するブラウザの絶え間ない悪用。これは新しいセッションごとに生成されるようです。 したがって、例外の追加は機能しませんでした。

4)ローカルDNSがない。

5)さて、他の多くの不具合。



一般的に、ある日曜日の夕方、DD-WRTに記入することにしました。 ルーターでWikiに記述されているとおりにすべてを実行しました。つまり、最初にミニバージョンをアップロードし、次にメガにアップグレードしました。 ビルド自体は、ルーターデータベースページ、つまりアセンブリ21061から取得されました。



次のジャムが見つかりました:



1)Chrome 39は、HTTPS経由のルーターへのアクセスを拒否しました。

2)Firefox 33には、HTTPSに関する奇妙な問題もありました。

3)新しいIEは、自己署名証明書の例外の作成を拒否しました。

4)Chromium 38は、HTTPSを介したルーターへのアクセスも拒否しました。

5)SSHは機能しませんでした。 ログインしようとすると、「接続は192.168.1.1によって閉じられました」という応答を受け取りました。



一般に、HTTPSを使用してルーターに正常にアクセスするには、Konquerorを使用する必要があります。



さらに選択すると、次の問題が明らかになりました。ルーターのWebサーバーはTLS1を認識していませんでした。 また、ブラウザの新しいバージョンでは、しばらく前に発見されたSSL3 POODLEの脆弱性により、SSL3は完全に無効になっているようです。 Linux Chromiumでは、自分で無効にしました。



さらに、HTTPSの「すぐに使える」DD-WRTの使用は非常に奇妙です。これは、キー自体がファームウェアにオープンな形式で格納されているためです (実際に見ていきます)。



したがって、DD-WRTを使用する際に最初に知っておくべきことは、ルーターデータベースが提供するファームウェアバージョンについて気にしないでください 。 代わりに、 ここでルーターの最新のビルドを見つけてください。



バージョンを最新に更新した後、私はすぐに2つの問題を解決しました。



1)SSHを獲得しました。 彼は元のビルドで壊れていたことがわかりました。

2)ルーターのWebサーバーはTLS 1.2をサポートし始めました。これにより、Firefox 33(これは34で修正されました)およびIEおよびChromeを除くすべてのブラウザーからアクセスできるようになりました。サイト証明書の問題を無視します。



残っている問題は1つだけです。ファームウェアの安全でない証明書です。 それを治すには、ファームウェアをファイルに解析し、証明書とその中のキーを置き換え、ファームウェアを1つのファイルに戻す必要があります。 ソースからファームウェアをコンパイルしません。



この目的のために、Firmware Modification Kitと呼ばれる優れたユーティリティがあります 。ソースはこちらからダウンロードできます。 ユーティリティは、コマンドの標準シーケンスでアセンブルする必要があります。

$ ./configure

$ make





さらに、firmware-mod-kitがあるディレクトリには、extract-firmware.shとbuild-firmware.shの2つのスクリプトがあります。 以下を開始します。

$ ./extract-firmware.sh〜/ダウンロード/ dd-wrt.v24-25408_NEWD-2_K2.6_mega-nv60k.bin

ファームウェアファイルがここに示されていることは明らかです。 ファームウェアをfmkディレクトリに解凍します。



次に、fmk / rootfs / etcディレクトリに移動し、証明書cert.pemを自分の目で確認します。これは、ルーターがHTTPS経由で入力するときに提示し、そのキーが平文で保存されているkey.pemから取得します。 privkey.pemファイルがあります-これは、パスワード「pass:password」で暗号化されたkey.pemと同じです。 そして、このファームウェアをダウンロードする人なら誰でも利用できます。



したがって、私たちのタスクは、独自のキーと証明書を生成することです。 私はこれをしました:私は自分の認証局(CA)を生成しました-同じルーターでOpenVPNをセットアップするときにそれがまだ必要です。 次に、ルーターのWebサーバーのキーと証明書のペアを生成し、CAで署名し、証明書を受け取って、指定されたファームウェアの場所にキーを配置しました。 そして、自分のすべてのコンピューターで信頼できるものとして認証局を追加しました。



これを行う方法を2回書かないように、CAと証明書を使用したアクティビティに関するHabréのすばらしい記事を参照します。 重要な点は2つだけです。

1)この記事へのコメントには、複数のドメインまたはIPアドレスの証明書を生成する方法の説明があります。 アドレス192.168.1.1、amber.locドメイン(これはLAN内のルーターの名前です)、外部IPアドレス(ある場合)、および外部DNS名(動的DNS名を取得できます)の証明書を生成しました。

2)生成されたキーはパスワードなしで実行する必要があります。 *パラノイドモードON *ファームウェアを作成してアップロードした後、キーとファームウェアファイルの両方を破棄します。 *パラノイドモードOFF * 。 ファームウェアのパスワードで保護されたprivkey.pemキーは使用されません。



ファームウェア内の指定されたファイルを置き換えた後、スクリプトを実行します。

$ ./build-firmware.sh fmk /

そして、ルーターにアップロードする新しいファームウェアnew-firmware.binをfmkディレクトリに取得します。



以上です。



All Articles