Соответствие строки iptables принять соединение

У меня вопрос по iptables и сопоставлению строк. Большая часть того, что я читал, отбрасывает пакеты, соответствующие правилу. Когда я использую это, iptables сбрасывает любое соединение со строкой «тест».

iptables -A INPUT  -p tcp --dport 80 -m string --string ! "test" --algo bm -j LOG --log-prefix ' INPUT TCP--- ' --log-level 4
iptables -A INPUT -p tcp --dport 80 -m string --string ! "test" --algo bm  -j DROP

Поэтому, когда я захожу на http://www.abc.com/?test, соединение не устанавливается. проходить через.

Я хочу сделать наоборот, могу ли я использовать сопоставление строк для подтверждения соединения?

iptables -A INPUT  -p tcp --dport 80 -m string --string  "test" --algo bm -j LOG --log-prefix ' INPUT TCP--- ' --log-level 4
iptables -A INPUT -p tcp --dport 80 -m string --string  "test" --algo bm  -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP

Я хочу разрешить подключения только к порту 80, в котором есть слово test, что-то вроде этого... http://www.abc.com/?test

Можно ли это сделать?

Спасибо за помощь, голгиаппаратус


person golgiapparatus    schedule 08.01.2014    source источник


Ответы (1)


Правильный способ сделать что-то подобное — использовать прокси. Есть способ сделать это с помощью iptables, но точно не лучшее решение.

Вы не можете разрешить соединения с указанной строкой, потому что данные появятся после того, как соединение будет установлено. Таким образом, вы должны включить все пакеты для рукопожатия TCP, а затем вы должны разрешить пакеты со строкой. С этим решением у вас будет большой список разорванных соединений :)

person Diego Woitasen    schedule 08.01.2014
comment
Можете ли вы объяснить, как настроить прокси для этого? - person user969622; 16.12.2015
comment
используя Squid: acl blocktest url_regex test http_access deny blocktest - person Diego Woitasen; 16.12.2015
comment
Рекомендую открыть новый вопрос :) - person Diego Woitasen; 16.12.2015