Блокировка анонимайзеров

Задался я намедни этим вопросом. Например, на прокси-сервере мы блокируем доступ к популярным сайтам типа одноклассников и вконтакте для сотрудников конторы и живем спокойно. Через некоторое время узаем, что пользователи как посещали эти сайты так и продолжают посещать в обход наших блокировок. И не потому что у нас руки кривые и блокировки плохо работают, а потому, что пользователям в интернете доступны новые сервисы — анонимайзеры. Сегодня мы разберем возможные способы блокировки анонимайзеров.

Принцип работы анонимайзера примерно такой: вы заходите на его сайт, там есть строка, куда нужно написать URL сайта, куда хотим попасть. Вводим URL, нажимаем рядом кнопочку Go, после чего сервер анонимайзера выкачивает страницу по введенному URL и уже готовую переправляет нам от своего имени. Прокси-сервер естественно это не блокирует, т.к. сотрудник обращается непосредственно только к сайту анонимайзера, а не к целевому сайту.

Как показывает практика, блокировать эти анонимайзеры занятие очень бестолковое. В интернете их сейчас пруд-пруди и стоит только заблокировать один, через 10 минут пользователь найдет другой.

Однако, некотрое решение для блокировки этого безобразия есть и оно вполне простое. Для начала мы обратимя к спецификации протокола HTTP, а именно к методам протокола. Я приведу лишь краткую выдержку, которая будет нам необходима в рамках решения поставленной задачи, а всем желающим узнать все методы можной пойти по ссылке.

Итак, суть в том, что протокол HTTP передает данные несколькими способами. Вот особо распространенные:
GET — метод для запроса содержимого сайта. Этим методом загружаются все страницы.
POST — метод для отправки каких-либо данных на сайт, например данные форм, логины с паролями, посты на форумах, закачка файлов и т.д.
CONNECT — метод, преобразующий HTTP запрос в прозрачный TCP-туннель. Например, в клиенте ICQ в параметрах прокси-сервера можно выбрать тип HTTP. При таком выборе аська как раз работает по методу CONNECT.

Прокси-сервера по умолчанию разрешают прохождение все перечисленных методов, а мы изменим эти настройки и тем самым порежем много всякой бяки.
Если мы хотим использовать прокси-сервер только для сайтов, а не для работы различных программ типа ICQ, то нужно запретить метод CONNECT для всех портов кроме 443. По 443 порту ходит SSL и для организации шифрования этот метод необходим.

Метод GET мы оставляем без изменений, а вот метод POST запрещаем для всех сайтов кроме списка, назовем его, например, «post_allow». В список «post_allow» нужно добавить те сайты, куда необходимо заходить людям используя авторизацию. Например, если доступ к личной почте с рабочего места не запрещен, то можно разрешить этот метод для сайтов типа mail.ru. Кароче говоря, создать список «post_allow» из 10-50 сайтов намного проще, чем каждый раз анализировуать логи на предмет появления нового анонимайзера и составлять бесконечные списки блокировок. Эффект от представленой блокировки метода POST будет такой, что сотрудник просто не сможет логиниться на те сайты, которые не добавлены в список «post_allow». Путь дальше пытаются пользоваться анонимайзерами :).

Кстати говоря, некоторые продвинутые анонимайзеры работают по портам 443, где у нас разрешен метод CONNECT. Для полного контроля над ситуацией, можно запретить CONNECT куда угодно, а за исключением списка «ssl_allow», в который добавить нужные сайты, требующие работы по HTTPS.