RTFM.WIKI

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

Инструменты пользователя

Инструменты сайта


Stylesheet conf/userstyle.css not found, please contact the developer of "dokuwiki_2024" template.
linux:dante

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

linux:dante [2019/01/30 14:50] – внешнее изменение 127.0.0.1linux:dante [2021/06/23 15:32] (текущий) dx
Строка 1: Строка 1:
 +{{fl>debian?48&align=right}}
  
 +====== Установка SOCKS5 сервера Dante ======
 +
 +  * [[https://www.inet.no/dante/| Домашняя страница]]
 +  * [[https://github.com/notpeter/dante|Github]]
 +  * [[https://www.inet.no/dante/doc/| Документация]]
 +
 +Я очень огорчен очередным абсурдным и вредным шагом со стороны органов власти РФ в попытке ввести цензуру в сети.
 +
 +Короткая инструкция по установке socks-сервера для обхода блокировок (в первую очередь Telegram).
 +
 +В данном примере используется Debian 9.
 +
 +Также можно воспользоваться скриптом для автоматической установки
 +  * [[https://github.com/Lozy/danted|github]] - CentOS 6, CentOS 7, Debian 7, Debian 8, Ubuntu 14.04, Ubuntu 16.10, 
 +  * https://selivan.github.io/socks/ - CentOS 7, Ubuntu 16.04, Ubuntu 18.04 U+1F44D
 +
 +<note>
 +Dante это только SOCKS сервер. Если дополнительна нужна поддержка HTTP-прокси, то используйте [[linux:3proxy|3proxy]]\\
 +\\
 +Далеко не все программы имеют поддержку SOCKS. Для перенаправления трафика ваших приложений на socks-сервер понадобится установка дополнительной программы (проксификатор). Для Windows это Freecap/Widecap.
 +</note>
 +
 +**Шаг 1. Установка Dante**
 +
 +<code cli># apt-get install dante-server</code>
 +
 +Версия **1.4.1+dfsg-5** содержит ошибку (подробности в [[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=862988|багтрекере Debian]])
 +
 +При старте будет что-то такое
 +
 +<code>
 +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
 +</code>
 +
 +Можно смело пропустить эту ошибку
 +
 +<note>
 +Примечание для Ubuntu\\
 +\\
 +Свежая версия Dante в Ubuntu появилась только в версии 18.04. Если у вас 16.04, то вам пригодится статья по самостоятельной сборке deb пакета - [[https://bvn13.tk/posts/dante-server-on-ubuntu-16-04-lts]]
 +</note>
 +
 +**Шаг 2. Основные настройки**
 +
 +Конфигурационный файл ''/etc/danted.conf''
 +
 +Ниже представлена типовая конфигурация
 +
 +<code>
 +# Путь к лог файлу
 +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
 +}
 +</code>
 +
 +Подробнее об уровнях логированиях на сайте Dante смотрите в разделе [[https://www.inet.no/dante/doc/1.4.x/config/logging.html|Server logging]]
 +
 +**Шаг 3. Логины/пароли**
 +
 +Добавим нового пользователя **rootwelt** для работы с socks сервером.
 +
 +<code>
 +# useradd --shell /usr/sbin/nologin rootwelt
 +# passwd rootwelt
 +</code>
 +
 +При этом у пользователя не будет доступа к SSH, т.к. в качестве шелла указан nologin.
 +
 +**Шаг 4.**
 +
 +Добавляем сервис в автозагрузку и запускаем его
 +
 +<code>
 +# systemctl enable danted
 +# systemctl start danted
 +</code>
 +
 +Проверка (с локального Linux хоста; A.C.A.B здесь это IP адрес VPS)
 +
 +<code>
 +curl --socks5 rootwelt:[email protected]:1080 check-host.net/ip
 +curl --socks5 rootwelt:[email protected]:1080 ident.me; echo
 +</code>
 +
 +Хабр подсказал, что можно создать для удобства ''~/.curlrc''
 +
 +<code>
 +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"
 +</code>
 +
 +===== Немного о безопасности =====
 +
 +Вместо системных пользователей можно использовать [[https://www.inet.no/dante/doc/1.4.x/config/auth_pam.html|PAM файл]] с логинами и паролями (похоже на htpasswd).
 +
 +Для этого необходимо дополнительно установить пакет **libpam-pwdfile**, а также заменить строку
 +
 +<code>socksmethod: username</code>
 +
 +на эту
 +
 +<code>socksmethod: pam.username</code>
 +
 +В файл ''/etc/pam.d/sockd'' добавляем
 +
 +<code>
 +auth required pam_pwdfile.so pwdfile /etc/dante.passwd
 +account required pam_permit.so
 +</code>
 +
 +В некоторых howto также советуют установить **apache2-utils** и создавать логин/пароль через утилиту **htpasswd**
 +
 +<code>htpasswd -b -d -c /etc/dante.passwd username password</code>
 +
 +Но лучше использовать **mkpasswd** (входит в состав пакета **whois**)
 +
 +<code>mkpasswd --method=md5 password</code>
 +
 +Логин и зашифрованный пароль следует теперь добавить в файле ''/etc/dante.passwd''
 +
 +<code>rootwelt:$1$3fg9NXcJ$tw3x1l8XepEcAdKtkMDyA0</code>
 +
 +Подробнее в статье на Habr'е - [[https://habr.com/post/354274/|Использование libpam при настройке SOCKS сервера Dante]]
 +
 +===== Веб-интерфейс для администрирования =====
 +
 +Код на Github - https://github.com/IvanDanilov/dante-gui
 +
 +===== Плагин для браузера =====
 +
 +Так как браузеры не поддерживают авторизацию на socks-сервере, то необходима установка дополнительных плагинов. Для Firefox рекомендуем [[https://addons.mozilla.org/ru/firefox/addon/foxyproxy-standard/|FoxyProxy]]. 
 +
 +Для Google Chrome в сети рекомендуют использовать [[https://chrome.google.com/webstore/detail/proxy-helper/|Proxy Helper]], но к сожалению он не работает - [[https://bugs.chromium.org/p/chromium/issues/detail?id=256785|SOCKS Authentication is not implemented in Chrome]].
 +
 +===== Тест скорости через socks-сервер в браузере =====
 +
 +{{https://www.speedtest.net/result/7320163010.png}}
 +
 +{{https://www.speedtest.net/result/7320172722.png}}
 +
 +{{https://www.speedtest.net/result/7320175370.png}}
 +
 +===== Делимся ссылкой в Telegram =====
 +
 +Формат следующий - https://t.me/socks?server=IP&port=PORT&user=USERNAME&pass=PASSWORD
 +
 +===== БОНУС =====
 +
 +Можно использовать socks **только** для доступа к Telegram. Для этого необходимо изменить конфиг следующим образом ([[https://weril.me/index.php/2018/04/13/installation_and_using_dante_as_socks5_proxy_on_ubuntu_16/|via]])
 +
 +Список подсетей Telegram лучше всего смотреть на сайте https://bgp.he.net/
 +
 +<code>
 +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
 +}
 +</code>
 +
 +{{tag>Linux Debian Dante Proxy Socks РКН Блокировки rootwelt}}