Ниже почти что готовое руководство к действию. Тем не менее, оно предполагает, что человек хотя бы поверхностно знаком с принципами функционирования Linux и основами IPv4-сетей.
Dante-server является одной из возможных реализаций протокола Socks4/5. Говорят, есть ещё 3proxy, но готового пакета в Debian/Ububtu нет, а собирать его мне, как всегда, лень. Поэтому взял dante. Но сперва пару слов о применимости и безопасности.
Socks — это о-о-о-очень старый протокол. Вышел в свет ажно в 1992-м году. Ясен пень, что в те далёкие времена ни о каком SSL никто ничего не слышал. Поэтому данные, в том числе логины и пароли на подключение к серверу всегда передаются открытым текстом. Далее, подняв такой прокси и передав доступ к нему всем желающим, вы несколько рискуете. Ведь если Вася подключится браузером или скайпом к вашему проксе, а потом сделает что-то нехорошее, то прилетит по шапке именно вам. Поэтому имеет смысл ограничивать сети с/на которые можно ходить, а также закрываться паролями. Правда, последнее тоже не является панацеей (см. выше). Наконец, dante написан таким образом, что умеет брать учётные записи только либо из системы (/etc/passwd), либо через PAM. Первое для работы требует прав суперпользователя, а второе означает дополнительный геморрой (хотя чисто технически в Linux-ах есть модуль "pam_userdb.so" для авторизации через BerkeleyDB-файл). Поэтому проще и лучше запускать dante в chroot-окружении.
Ещё стоит отметить, что Ubuntu LTS 16.04 поставляется с dante версии 1.1.19. В дистрибутив LTS 18.04, который должен выйти через неделю, упакуют версию 1.4.2. В стабильном Debian-е наблюдается версия 1.4.1. Всё бы ничего, но у них немного разный синтаксис конфига. Имейте это в виду.
Едем дальше. Ниже я выложу примерный конфиг для того и для другого с комментариями. Вам следует знать следующее об идеологии софтины. Во-первых, соединение состоит из двух этапов: "client to server", "socks to target". На первом этапе мы располагаем данными только об SRC IP клиента, больше ни о чём. Поскольку мы заранее не знаем кто и откуда возжелает подключиться, то соответствующая ACL-ка будет выглядеть как "разрешить всем всё". Во-вторых, правила в конфиге обрабатываются не по порядку, а по принципу "best match" (наилучшее соответствие). Это доставляет определённые неудобства, потому что приходится в каждой ACL-ке прописывать полный перечень всех условий. Но что поделать, такова жизнь.
[ Конфиг для 1.1.19]Конфиг для 1.1.19
[ Конфиг для 1.4.1]
Конфиг для 1.4.1
Как я уже выше упоминал, необходимо создать какого-нибудь системного пользователя с паролем, от имени которого и будут логиниться на SOCKS-сервер все страждущие.
В следующем выпуске журнала "Мурзилка" расскажу о том, как запускать dante-сервер в chroot-окружении.