この出版物では、ルーターで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ディレクトリに取得します。
以上です。