パスワードがインターネット上でプレーンテキストとして送信されるWebページへのアクセスをブロックまたは制限する方法を見つけたいのですが。
すべてのWebページで同じパスワードを使用している場合、iptablesでこれを設定することは可能ですか?もしそうなら、どのように?
私は非常に新しいLinuxユーザーです。ご協力ありがとうございました。:)
必要なルールは次のとおりです。
iptables -A OUTPUT -s match --string "password" --dport 80 -p tcp -j DROP
内訳は次のとおりです。TCPを使用してポート80に向かうものをすべて出力チェーンに追加します。これには、文字列「password」が含まれます。これは、暗号化された接続の種類をチェックしないため、パスワードはプレーンテキストで送信され、パケットをドロップします。
IPtablesの使用に熱心ですが、オープンソースのModsecurityのようなWeb Application Firewallを使用することをお勧めします。 Modsecurityは、ネットワークレイヤーファイアウォールであるIPtablesに比べて、はるかに高い粒度を提供します。さらに、パスワード保護ルールの簡単な例を示したので、さらに詳しく調べることができます。ネットワーク層でアプリケーション層の問題を解決しようとすると、多くの問題があります。
<LocationMatch "^/exchweb/bin/auth/owaauth.dll$">
SecDefaultAction "log,deny,t:lowercase"
SecRule REQUEST_METHOD !POST
SecRule ARGS:destination " URL" "t:urlDecode"
SecRule ARGS:flags "[0-9]{1,2}"
SecRule ARGS:username "[0-9a-zA-Z].{256,}"
SecRule ARGS:password ".{256,}"
SecRule ARGS:SubmitCreds "!Log.On"
SecRule ARGS:trusted "!(0|4)"
</LocationMatch>
入力がURLエンコード、小文字、16進エンコードなどの変換の一部を使用している可能性があるIPtablesルールにはさらに問題があり、単純な文字列マッチングルールが機能しない場合があります。
IPTablesがこの問題に取り組む最良の方法ではない可能性が高いと思います。ネットワークレベルのファイアウォールを使用する場合の問題は、実行していることのコンテキストに対する十分な洞察が不足していることです(たとえば、何が実行されているのか分からないHTMLをテキストの文字列として表示するだけです)。
したがって、文字列の照合などの問題は、多くの誤検知(ページが実際にパスワード送信フォームではない文字列に言及している領域)と誤検知(明示的に文字列を持たないログインページ)が表示されることです。それらの上に)。
これにアプローチするより良い方法は、 HTTPS everywhere のようなブラウザ拡張を使用することかもしれません。これにより、ログインしようとしているサイトのHTTPsバージョンにリダイレクトするように明示的に構成できます(サービスにコースがあることを前提としています)。