| Защищаем http-proxy от пробрасывания http-туннеля средствами iptables |
[исправить] |
При пробрасывании http-туннеля через http-прокси, http-заголовок пакета имеет
аномально маленький размер, порядка 80-90 байт, так как передается лишь
минимальный набор данных. Заголовок передаваемых браузером запросов обычно не
бывает меньше 350 байт. Основываясь на данной особенности можно отфильтровать
проброшенных поверх http-прокси туннели.
# политика по умолчанию
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# создаём новую цепочку LENGTH
iptables -N LENGTH
# проверяем длину пакета, если меньше 350 байт то блокируем
iptables -A LENGTH -p tcp --dport 3128 -m length --length :350 -j DROP
# если пакет больше 350 байт то пропускаем
iptables -A LENGTH -p tcp --dport 3128 -j ACCEPT
# разрешаем подключение на порт 3128
iptables -A INPUT -p tcp --syn --dport 3128 -j ACCEPT
# в установленом соединении проверяем пакеты на запрос GET --hex- string "|47 45 54 20|"
# если есть такой пакет то направляем его в цепочку LENGTH для проверки длины пакета
iptables -A INPUT -p tcp --dport 3128 -m state --state ESTABLISHED -m string --algo kmp \
--hex-string "|47 45 54 20|" --from 52 --to 56 -j LENGTH
iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Представленный пример опробован на httptunnel
|
| |
|
|
| Раздел: Корень / Администратору / Сетевые сервисы / Прокси сервер Squid / ACL, ограничения трафика и пользователей |