RTFM.WIKI

Ordnung muß sein. Ordnung über alles (18+)

User Tools

Site Tools


Sidebar


Навигация

Линкшэринг

ALARM!

Добавить новую страницу

You are not allowed to add pages
linux:dante

Установка SOCKS5 сервера Dante

Я очень огорчен очередным абсурдным и вредным шагом со стороны органов власти РФ в попытке ввести цензуру в сети.

Короткая инструкция по установке socks-сервера для обхода блокировок (в первую очередь Telegram).

В данном примере используется Debian 9.

Также можно воспользоваться скриптом для автоматической установки

Dante это только SOCKS сервер. Если дополнительна нужна поддержка HTTP-прокси, то используйте 3proxy

Далеко не все программы имеют поддержку SOCKS. Для перенаправления трафика ваших приложений на socks-сервер понадобится установка дополнительной программы (проксификатор). Для Windows это Freecap/Widecap.

Шаг 1. Установка Dante

# apt-get install dante-server

Версия 1.4.1+dfsg-5 содержит ошибку (подробности в багтрекере Debian)

При старте будет что-то такое

warning: checkconfig(): no socks authentication methods enabled.  This means all socks requests will be blocked
error: checkconfig(): no internal address given for server to listen for clients

Можно смело пропустить эту ошибку

Примечание для Ubuntu

Свежая версия Dante в Ubuntu появилась только в версии 18.04. Если у вас 16.04, то вам пригодится статья по самостоятельной сборке deb пакета - https://bvn13.tk/posts/dante-server-on-ubuntu-16-04-lts

Шаг 2. Основные настройки

Конфигурационный файл /etc/danted.conf

Ниже представлена типовая конфигурация

# Путь к лог файлу
logoutput: /var/log/socks.log
# Можно задать отдельный лог файл для ошибок
# errorlog: /var/log/socks_error.log

internal: eth0 port = 1080
external: eth0

# Авторизация по локальным/системным пользователям
socksmethod: username

# Мы используем системных пользователей, поэтому нужны права на чтение passwd
user.privileged: root
user.unprivileged: nobody
user.libwrap: nobody

# Разрешить подключения с любых IP всем пользователям прошедшим авторизацию
client pass {
        from: 0/0 to: 0/0
        log: connect disconnect error ioop
}

socks pass {
        from: 0/0 to: 0/0
        log: connect disconnect error ioop
}

Подробнее об уровнях логированиях на сайте Dante смотрите в разделе Server logging

Шаг 3. Логины/пароли

Добавим нового пользователя rootwelt для работы с socks сервером.

# useradd --shell /usr/sbin/nologin rootwelt
# passwd rootwelt

При этом у пользователя не будет доступа к SSH, т.к. в качестве шелла указан nologin.

Шаг 4.

Добавляем сервис в автозагрузку и запускаем его

# systemctl enable danted
# systemctl start danted

Проверка (с локального Linux хоста; A.C.A.B здесь это IP адрес VPS)

curl --socks5 rootwelt:password@A.C.A.B:1080 check-host.net/ip
curl --socks5 rootwelt:password@A.C.A.B:1080 ident.me; echo

Хабр подсказал, что можно создать для удобства ~/.curlrc

socks5 = A.C.A.B:1080
proxy-user = rootwelt:password
user-agent = "Mozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"

Немного о безопасности

Вместо системных пользователей можно использовать PAM файл с логинами и паролями (похоже на htpasswd).

Для этого необходимо дополнительно установить пакет libpam-pwdfile, а также заменить строку

socksmethod: username

на эту

socksmethod: pam.username

В файл /etc/pam.d/sockd добавляем

auth required pam_pwdfile.so pwdfile /etc/dante.passwd
account required pam_permit.so

В некоторых howto также советуют установить apache2-utils и создавать логин/пароль через утилиту htpasswd

htpasswd -b -d -c /etc/dante.passwd username password

Но лучше использовать mkpasswd (входит в состав пакета whois)

mkpasswd --method=md5 password

Логин и зашифрованный пароль следует теперь добавить в файле /etc/dante.passwd

rootwelt:$1$3fg9NXcJ$tw3x1l8XepEcAdKtkMDyA0

Подробнее в статье на Habr'е - Использование libpam при настройке SOCKS сервера Dante

Веб-интерфейс для администрирования

Плагин для браузера

Так как браузеры не поддерживают авторизацию на socks-сервере, то необходима установка дополнительных плагинов. Для Firefox рекомендуем FoxyProxy.

Для Google Chrome в сети рекомендуют использовать Proxy Helper, но к сожалению он не работает - SOCKS Authentication is not implemented in Chrome.

Тест скорости через socks-сервер в браузере

Делимся ссылкой в Telegram

БОНУС

Можно использовать socks только для доступа к Telegram. Для этого необходимо изменить конфиг следующим образом (via)

Список подсетей Telegram лучше всего смотреть на сайте https://bgp.he.net/

client pass {
        from: 0.0.0.0/0 to: 0.0.0.0/0
        log: error
}

socks pass {
 from: 0.0.0.0/0 to: 149.154.160.0/20
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: 0.0.0.0/0 to: 149.154.164.0/22
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: 0.0.0.0/0 to: 91.108.4.0/22
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: 0.0.0.0/0 to: 91.108.8.0/22
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: 0.0.0.0/0 to: 91.108.56.0/22
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: ::/0 to: 2001:67c:4e8::/48
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: 0.0.0.0/0 to: 91.108.20.0/22
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: 0.0.0.0/0 to: 91.108.36.0/23
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: 0.0.0.0/0 to: 91.108.38.0/23
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: ::/0 to: 2001:b28:f23c::/48
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: 0.0.0.0/0 to: 149.154.168.0/22
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: 0.0.0.0/0 to: 91.108.16.0/22
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: 0.0.0.0/0 to: 91.108.56.0/23
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: ::/0 to: 2001:b28:f23f::/48
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: 0.0.0.0/0 to: 149.154.172.0/22
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: 0.0.0.0/0 to: 91.108.12.0/22
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: ::/0 to: 2001:b28:f23d::/48
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: 0.0.0.0/0 to: 149.154.167.0/22
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: 0.0.0.0/0 to: 149.154.174.0/22
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: 0.0.0.0/0 to: .telegram.org
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: 0.0.0.0/0 to: .stel.com
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: 0.0.0.0/0 to: .t.me
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: 0.0.0.0/0 to: .telegram.me
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: 0.0.0.0/0 to: .telegram.dog
 log: connect disconnect error
 socksmethod: username
}
socks pass {
 from: 0.0.0.0/0 to: .telegra.ph
 log: connect disconnect error
 socksmethod: username
}
socks block {
 from: 0.0.0.0/0 to: 0.0.0.0/0
 log: connect disconnect error
 socksmethod: username
}

Discussion

Enter your comment. Wiki syntax is allowed:
 
linux/dante.txt · Last modified: 2019/01/30 14:50 (external edit)