質問: 公開しているWEBサーバーに対して、指定時間毎に不正なパラメータをURLに付与したアクセスがあります。 iptablesを使用しIPではじくことは出来たのですが、特定のIPではない為、アクセスされているURLで制御を行うため 以下のように設定を行いましたがうまくアクセス拒否を行うことが出来ません。 -A RH-Firewall-1-INPUT -m string --algo bm --string "XXX" -j DROP 上記を指定することでアクセスされたURLに「XXX」文字列が存在した場合に アクセスが拒否されると認識しているのですがまちがっているのでしょうか。 以下のようなURLが全てはじかれるつもりで記載しています。 http://aaa.com/XXX/ http://aaa.com/top/?a=XXX http://aaa.com/top/?XXX= 漠然とした質問で申し訳ありませんがよろしくお願いします。 ■iptablesファイルの中身(抜粋) *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT :RH-Firewall-1-OUTPUT - [0:0] -A OUTPUT -j RH-Firewall-1-OUTPUT 不正アクセス防止 -A RH-Firewall-1-INPUT -m string --algo bm --string "XXXXXX" -j DROP HTTP -A RH-Firewall-1-INPUT -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-OUTPUT -p tcp --sport 80 -j ACCEPT HTTPS -A RH-Firewall-1-INPUT -p tcp --dport 443 -j ACCEPT -A RH-Firewall-1-OUTPUT -p tcp --sport 443 -j ACCEPT ■環境 環境:さくらのVPS OS:CentOS release 6.9 (Final) iptables:v1.4.7
回答: 思いついた原因を書いてみます。 https 通信をはじこうとしている。 URLエンコードされる文字列を考慮していない ルールの順序が適当でない IPv6でアクセスされている どのルールが適用されて通信されているかカウンターを確認しながらテストしてますでしょうか?