Настройка Dante Socks в Ubuntu Linux

25 Окт
2009

Прокси серверы имеют разное назначение. Они обеспечивают одновременный доступ к сервисам прикрыым firewall с нескольких адресов, скрывают IP-адрес обеспечивая анонимность пользователю, администратор получает удобсные инструменты контроля доступа, фильтрации контента. Обычно когда говорят о прокси в первую очередь вспонимают Squid.

Кроме него существует целый класс SOCKS proxy, имеющих интересные возможности.
Dante firewall/proxy уровня сессии — служит для обеспечения удобного и безопасного доступа к сервисам сети. Работа Dante может быть абсолютно прозрачной для клиентов, а администратор получает удобные средства контроля доступа и регистрации. Разработан Inferno Nettverk A/S и обычно является частью Inferno Nettverk firewall. Распространяется под BSD/CMU подобной лицензией с исходными кодами. Домашний сайт проекта http://www.inet.no/dante.
Стабильной на данный момент является версия 1.1.19 датированная еще 2006 годом. Также доступен пердрелиз 1.2.0-pre3 от 2009-10-09.
В репозитарии Ubuntu пакет Dаnte есть:

$ sudo apt-get update
$ sudo apt-cache search dante
dante-client - SOCKS wrapper for users behind a firewall
dante-server - SOCKS (v4 and v5) proxy daemon (danted)

Версия не самая последняя:

$ sudo apt-cache show dante-server | grep -i version
Version: 1.1.18.dfsg-0.1

Но будем ставить ее

$ sudo apt-get install dante-server dante-client

Самостоятельная установка не должна вызвать особых проблем:

$ wget ftp://ftp.inet.no/pub/socks/dante-1.1.19.tar.gz
$ tar zxvf dante-1.1.19.tar.gz
$ cd dante-1.1.19
$ ./configure
$ make
$ sudo make install

Или тоже девелоперская:

$ wget ftp://ftp.inet.no/pub/socks/dante-1.2.0-pre3.tar.gz

После установки сервера, скорее всего получим ошибку, связанную с тем, что демон не настроен:

Starting Dante SOCKS daemon: Sep 30 18:19:08 (1254320348) danted[0]: socks_seteuid(): old: 0, new: 13
Sep 30 18:19:08 (1254320348) danted[0]: socks_reseteuid(): current: 13, new: 0
Sep 30 18:19:08 (1254320348) danted[0]: socks_seteuid(): old: 0, new: 65534
Sep 30 18:19:08 (1254320348) danted[0]: socks_reseteuid(): current: 65534, new: 0
Sep 30 18:19:08 (1254320348) danted[0]: socks_seteuid(): old: 0, new: 65534
Sep 30 18:19:08 (1254320348) danted[0]: socks_reseteuid(): current: 65534, new: 0
Sep 30 18:19:08 (1254320348) danted[0]: fixsettings(): no internal address given
Sep 30 18:19:08 (1254320348) danted[0]: sockdexit(): terminating

Самое время перейти к настройкам. Посе установки имеем:
- сервер — бинарник /usr/sbin/danted, init скрипт /etc/init.d/danted и конфигурационный файл /etc/danted.conf.
- клиент — программа /usr/bin/socksify и конфигурационный файл /etc/dante.conf.

В /usr/share/doc в подкаталогах dante-server и dante-client имеются примеры. При установке из исходных текстов конфигурационный файл называется /etc/sockd.conf.
danted
Правим, подробности в man danted.conf:

$ sudo nano /etc/danted.conf
# куда пишем логи, по умолчанию в stderr
# выберем syslog и файл
logoutput: syslog /var/log/danted.log
# интерфейс для входящих и исходящих соединений
# можно использовать имя или IP-адрес
internal: eth0 port = 1080
#internal: 192.168.1.1 port = 1080
external: eth1
# метод аутентификации username, none, rfc931 и pam. 
method: username none #rfc931 pam
 
# далее идет настройка правил 
# разрешающих - pass и блокирующих - block.
# в правилах можно использовать такие ключевые слова: from, to, 
# command, method, protocol, proxyprotocol, user.
# и действия: bandwidth, libwrap, log и redirect.
 
# пример разрешающего правила
 
client pass {
from: 192.168.1.0/24 port 1-65535 to: 0.0.0.0/0
}
 
pass {
from: 192.168.1.0/24 to: 0.0.0.0/0
command: connect udpassociate
log: connect disconnect iooperation
}
 
# для примера заблокируем DNS запросы на внешний интерфейс
block {
       from: 0.0.0.0/0 to: 0.0.0.0/0
       command: bind
       log: connect error
}
 
# блокировка доступа к сайту example.com
block {
       from: 0.0.0.0/0 to: .example.com port = http
       log: connect error
}

После настроек запускаем сервер. Сначала в консоли:

$ sudo /usr/sbin/danted
Sep 30 18:55:00 (1254322500) danted[0]: socks_seteuid(): old: 0, new: 13
Sep 30 18:55:00 (1254322500) danted[0]: socks_reseteuid(): current: 13, new: 0
Sep 30 18:55:00 (1254322500) danted[0]: socks_seteuid(): old: 0, new: 65534
Sep 30 18:55:00 (1254322500) danted[0]: socks_reseteuid(): current: 65534, new: 0
Sep 30 18:55:00 (1254322500) danted[0]: socks_seteuid(): old: 0, new: 65534
Sep 30 18:55:00 (1254322500) danted[0]: socks_reseteuid(): current: 65534, new: 0
Sep 30 18:55:00 (1254322500) danted[1155]: created new negotiatorchild
Sep 30 18:55:00 (1254322500) danted[1156]: created new requestchild
Sep 30 18:55:00 (1254322500) danted[1157]: created new requestchild
Sep 30 18:55:00 (1254322500) danted[1158]: created new requestchild
Sep 30 18:55:00 (1254322500) danted[1159]: created new requestchild
Sep 30 18:55:00 (1254322500) danted[1160]: created new iochild
Sep 30 18:55:00 (1254322500) danted[1154]: dante/server v1.1.18 running

Если ошибок нет то уже через init скрипт:

$ sudo /etc/init.d/danted restart

Сервер готов принимать подключения.

Комментировать

Наверх