Носки бывают чрезвычайно полезны. Сейчас мы расскажем, как правильно настроить их на роутере MikroTik. Итак, поговорим о SOCKS?
Предисловие
SOCKS (SOCKet Secure) – это сетевой протокол, с помощью которого можно обеспечивать прохождение TCP пакетов в обход блокирующих правил Firewall’а. Это реализуется за счёт proxy-сервера (также называют SOCKS-сервер), который контролирует подключение внутренних клиентов и их права на доступ к внешним ресурсам или же наоборот – внешних клиентов, к ресурсам внутри сети. SOCKS работает на сеансовом уровне, поэтому с помощью него можно проксировать FTP, HTTP, Telnet и другие верхнеуровневые протоколы. В то время как HTTP-прокси, как правило, позволяет проксировать только GET и POST запросы.
Установление соединения
Когда клиент хочет получить доступ к внешнему ресурсу, который блокирует Firewall, то соединение происходит следующим образом:
- Клиент подключается к proxy-серверу (обычно используется TCP порт 1080);
- Сервер проверяет список доступа и выясняет, есть ли у клиента права на доступ к внешним ресурсам;
- Если клиент имеет такие права, то proxy-сервер пересылает пакет на внешний ресурс, к которому хочет получить доступ клиент;
- Сервер создаёт сессию между клиентом и внешним ресурсом и между ними начинается обмен пакетами верхнеуровневых протоколов. После установления соединения можно передавать и UDP пакеты.
В настоящее время, MikroTik поддерживает SOCKS версии 4 при указании внешнего ресурса он понимает только IP-адрес. Версия SOCKS4a – может резолвить доменные имена внешних ресурсов. Более поздняя версия протокола – SOCKS5 включает расширенную поддержку аутентификации, подключение по UDP и IPv6.
На сегодняшний день, протокол SOCKS5 пока не поддерживается на устройствах MikroTik. Хотя пользователи очень просят разработчиков включить поддержку SOCKS5 в новые релизы RouterOS вот уже 8 лет. Поэтому при работе с SOCKS совместно с MikroTik, клиент также должен иметь 4 версию.
Необходимо очень тщательно настроить Firewall'ьные правила и список доступа SOCKS чтобы исключить нежелательный доступ извне. Как правило, скомпрометированные через уязвимости SOCKS устройства, используются для рассылки спама и фишинговых писем.
Перейдём к настройкам SOCKS-сервера на MikroTik:
Параметры настройки через WinBox
Параметры настройки SOCKS сервера в WinBox находятся в IP → Socks:
Как только вы поставите галочку напротив Enabled сервер станет активным. Далее, необходимо настроить списки доступа, для этого нажимаем на кнопку Access:
Активные SOCKS сессии, проходящие через сервер можно отслеживать на вкладке Connections
Параметры настройки через Termial
Для того, чтобы настроить SOCKS через терминал нужно также сначала настроить параметры сервера. Настройка проводится через команду ip socks set
, доступы следующие параметры:
- enabled - включает функционал SOCKS proxy-сервера (yes - включен, no - выключен);
- port - номер порта, на котором сервер будет слушать SOCKS запросы. По умолчанию - 1080
- connection-idle-timeout - время, через которое будут сброшены неактивные сессии (по умолчанию – 2 минуты (2m));
- max-connections - максимальное число одновременных подключений (по умолчанию - 200)
Посмотреть текущие или настроенные параметры можно командой:
/ip socks print
Далее необходимо настроить правила, по которым будет осуществляться контроль доступа к серверу SOCKS. Для этого вводим команду /ip socks access set
, доступны следующие параметры:
- action - действие, которое будет предпринято при соответствии критериев данного правила:
- allow - разрешить прохождение трафика по данному правилу;
- deny - запретить прохождение трафика по данному правилу.
- dst-address - адрес сервера назначения;
- dst-port - TCP порт назначения, на котором удаленный сервер слушает SOCKS
- src-address - адрес источника пакетов (клиент);
- src-port - TCP порт источника
Практическое применение
Допустим злой сисадмин заблокировал наш любимый wiki.merionet.ru, выяснил адрес и забанил.
О том, как настраивать правила Firewall в MikroTik читайте здесь
Но одному нашему сотруднику обязательно нужно иметь доступ к данному ресурсу. Поэтому сисадмин открывает активирует SOCKS сервер и настраивает список доступа.
В качестве адреса клиента указывается IP адрес компьютера сотрудника, которому нужно открыть доступ (в нашем случае 192.168.11.48), в качестве порта источника – любой TCP порт от 1024 до 65535. В качестве адреса назначения – IP адрес ресурса wiki.merionet.ru и порт 80 (http).
Та же самая настройка через терминал выглядит следующим образом:
ip socks> set enabled=yes ip socks access> add src-address=192.168.11.48 src-port=1024-65535 dst-address=212.193.249.136 dst-port=80 ... action=allow
Готово, теперь дело за клиентом, который должен настроить сотрудник. Покажем настройку на примере браузера Google Chrome. Открываем Settings → Advanced → Confidentiality and Security, крутим в самый низ до пункта System и выбираем Proxy settings. В появившемся окне выбираем LAN settings → ставим галку напротив Use a proxy server for your LAN и заходим в Advanced. В появившемся окне вбиваем параметры нашего SOCKS сервера в строку Socks (в нашем случае 192.168.11.1 и порт 1080) и применяем настройки:
Теперь обновляем страничку wiki.merionet.ru и ву-а-ля, всё заработало! В окне Connections видны соединения с нашего компьютера до IP адреса wiki.merionet.ru.
Послесловие
Данная статья носит исключительно образовательный характер и не ставит своей целью научить кого-либо обходить правила Firewall. Протокол SOCKS 4 устарел, не поддерживает аутентификацию и не может резолвить доменные адреса. В целях безопасности, мы не рекомендуем использовать этот протокол вообще и в том числе – настраивать его на MikroTik.
По умолчанию – сервер SOCKS на роутерах MikroTik отключен. Если Вы обнаружили, что он активирован, то это может быть признаком того, что Ваш роутер был скомпрометирован злоумышленниками. Об этом мы подробнее расскажем в следующих статьях.