Добрый день!
Пытался сделать данное правило фильтрации, но у меня ничего не вышло, поэтому прошу помощи тут.
Задача состоит в следующем:
Дано: Система на которой стоит iptables, работающая как шлюз предоставляющая доступ в интернет для других пользователей.
Нужно получить: Блокировку различной мерзости которую могут сделать пользователи. Самый простой пример этого негатива «сканирование веб сайтов».
(Сканирование производится открытием нескольких http соединений). При добавлении правила на блок http соединений, у адекватных пользователей перестают грузится сайты. Например при открытии сайта, который обращается к другим серверам чтоб получить изображения , браузером пользователя создается ещё куча соединений, которые способствуют активации правила на iptables , и происходит DROP пакетов и ничего не грузится.
Подумав решил, что следует сделать так:
Дано:
IP пользователя выходящего в сеть - 192.168.1.30
1-Сервер к которому обращается пользователь - 12.12.12.11
2-Сервер к которому обращается пользователь - 12.12.12.12
Открываемый пользователем сайт на "1-сервер" обращается ещё к 100 различным серверам в диапазоне 11.11.11.0 - 11.11.11.100
Аналогично поступает и "2-сервер" но обращается к ip в диапазоне 22.22.22.0 - 22.22.2.100
Нужно сделать так:
При обращении пользователя к "1-сервер" должен запоминаться его ip, и соединение должно блокироваться только в том случае, если пользователь установил 20 соединений именно с этим сервером на этом ip адресе. И все остальные запросы, на адреса 11.11.11.0 - 11.11.11.100 должны без проблем отправляться в сеть.
Если пользователь скажем, установил с "1-сервер" 19-ть соединений, и обратился к "2-сервер" - который в свою очередь делает 100 запросов к разным серверам, то соединение пользователя не должно блокироваться.
Как должно выглядеть корректное правило для фильтра подобных запросов?