ネットワークに侵入する方法、パート2:VPNを保護する(DD-WRT)
ルーターの「Port Knocking」を使ってリモートでWOLをトリガーする方法を紹介しました。この記事では、それを使ってVPNサービスを保護する方法を説明します。.
Aviad Raviv&bfickによる画像.
序文
DD-WRTのVPN機能を使用したことがある場合、またはネットワークに別のVPNサーバーがある場合は、ノックシーケンスの背後に隠してブルートフォース攻撃から保護することができます。これを行うことによって、あなたはあなたのネットワークにアクセスしようとしているスクリプトキディを除外します。とは言っても、前の記事で述べたように、ポートノッキングは良いパスワードやセキュリティポリシーの代わりにはなりません。十分な忍耐力を持って攻撃者はシーケンスを発見してリプレイ攻撃を実行できることを覚えておいてください.
また、これを実装することの欠点は、VPNクライアントが接続したいときに、ノックシーケンスをトリガーしなければならないことです。 予め また、何らかの理由でシーケンスを完了できないと、まったくVPN接続できなくなります。.
概要
VPNサービスを保護するために、インスタンス化用の1723ポートをブロックすることによって、VPNサービスとの通信をすべて無効にします。この目的を達成するために、iptablesを使用します。これは、それが、最近のほとんどのLinux / GNUディストリビューション全般、特にDD-WRTでのコミュニケーションのフィルタリング方法であるためです。 iptablesについてもっと知りたいのであれば、そのウィキエントリをチェックして、この件に関する以前の記事をご覧ください。サービスが保護されたら、VPNインスタンス化ポートを一時的に開き、設定された時間が経過すると自動的に閉じるようにして、すでに確立されているVPNセッションを接続したままにするノックシーケンスを作成します。.
注:このガイドでは、例としてPPTP VPNサービスを使用しています。そうは言っても、同じ方法を他のVPNタイプにも使用できます。ブロックされたポートや通信タイプを変更するだけです。.
前提条件、前提および推奨事項
- Opkg対応のDD-WRTルーターがあることが前提/必須です.
- 「ネットワークに接続する方法(DD-WRT)」ガイドの手順を既に実行していることが前提となります。.
- ある程度のネットワーク知識があることが前提.
割れることができます.
デフォルト DD-WRTの「新しいVPNをブロックする」ルール
以下の「コード」の断片は、Linux / GNUディストリビューションを使用しているすべての自尊心のあるiptablesでおそらくうまくいくでしょう。望めば、VPNボックスに直接実装することを妨げるものは何もありません。ただし、その方法はこのガイドの範囲外です。.
ルータのファイアウォールを増強したいので、「ファイアウォール」スクリプトに追加するのは当然のことです。そうすることで、ファイアウォールが更新されるたびにiptablesコマンドが実行されるようになります。.
DD-WRTのWeb-GUIから:
- 「管理」 - >「コマンド」に進みます。.
- 以下の「コード」をテキストボックスに入力してください。
inline = "$(iptables -L入力-n | grep -n"状態関連、確立 "| awk -F:'print $ 1')"; inline = $(($ inline-2 + 1)); iptables -I入力 "$インライン" -p tcp --dport 1723 -j DROP
- 「Save Firewall」をクリックしてください。.
- 完了.
この“ Voodoo”コマンドとは何ですか?
上記の「voodoo magic」コマンドは次のことを行います。
- すでに確立されている通信を通過させるiptable行がどこにあるかを見つけます。 A. DD-WRTルーターでは、VPNサービスが有効になっている場合はこの境界線のすぐ下に配置されます。ノッキングイベント.
- リスト・コマンドの出力から2を差し引いて、情報列ヘッダーによって生じたオフセットを考慮します。それが終わったら、上記の数に1を加えて、私たちが挿入している規則がすでに確立された通信を許可する規則の直後に来るようにします。 「非常に単純な「数学の問題」をここに残しました。「追加するのではなく、なぜルールの場所から縮小する必要があるのか」という論理を明確にするためです。.
KnockDの設定
新しいVPN接続を作成できるようにするための新しいトリガーシーケンスを作成する必要があります。これを行うには、端末で発行してknockd.confファイルを編集します。
vi /opt/etc/knockd.conf
既存の設定に追加します。
[VPNを有効にする]
sequence = 02,02,02,01,01,01,2010,2010,2010
seq_timeout = 60
start_command = iptables -I入力1 -s%IP%-p tcp --dport 1723 -j ACCEPT
cmd_timeout = 20
stop_command = iptables -D入力-s%IP%-p tcp --dport 1723 -j ACCEPT
この構成は以下のようになります。
- シーケンスを完了する機会のウィンドウを60秒に設定します。 (できるだけ短くすることをお勧めします)
- ポート2、1、2010での3回のノックの連続を聞いてください(この順番はポートスキャナを軌道から外すためのものです)。.
- シーケンスが検出されたら、“ start_command”を実行してください。この「iptables」コマンドは、「ノックが発生した場所からのポート1723宛てのトラフィックを受け入れる」をファイアウォールルールの一番上に配置します。 (%IP%ディレクティブはKnockDによって特別に扱われ、ノックの発生源のIPに置き換えられます).
- “ stop_command”を発行する前に20秒間待ってください.
- “ stop_command”を実行してください。この「iptables」コマンドが上記の逆を行い、通信を許可する規則を削除しているところ.
著者のヒント
あなたはすべて設定する必要がありますが、私は言及する必要があると感じるいくつかのポイントがあります.
- トラブルシューティング。問題がある場合は、最初の記事の最後にある「トラブルシューティング」セグメントを最初に見てください。.
- 必要に応じて、 "start / stop"ディレクティブに複数のコマンドをセミコレン(;)またはスクリプトで区切って実行させることができます。そうすることで、気の利いたことができるようになります。たとえば、シーケンスがトリガされたことを知らせる*電子メールをどこから送信したのかをノックしました。.
- 「そのためのアプリがある」ということを忘れないでください。この記事では触れていませんが、StavFXのAndroidノッカープログラムを利用することをお勧めします。.
- Androidの話題にしながら、通常メーカーからOSに組み込まれているPPTP VPNクライアントがあることを忘れないでください.
- 最初に何かをブロックし、その後すでに確立された通信を許可し続ける方法は、実質的にTCPベースの通信で使用できます。実際にはDD-WRT 1〜6の映画のKnockdでは、私は昔のやり方でやり直しました、例としてポート3389を使うリモートデスクトッププロトコル(RDP)を使いました.
誰が私の眠りを乱す?