Можно использовать для telegram.
В качестве дистрибутива - debian 9 stretch, пути все для него. Установлен на виртуалке с eth0 в интернете.
Ставим софт:
# apt-get install dante-server libpam-modules db5.3-util
Проверяем:
# dpkg -l dante-server libpam-modules db5.3-util
ii dante-server 1.4.1+dfsg-5 amd64 SOCKS (v4 and v5) proxy daemon (danted)
ii db5.3-util 5.3.28-12+deb9u1 amd64 Berkeley v5.3 Database Utilities
ii libpam-modules:amd64 1.1.8-3.6 amd64 Pluggable Authentication Modules for PAM
Конфигурируем. В инете много рецептов, как сконфигурировать и использовать в качестве авторизации системного пользователя. Несекьюрно, т.к. таким образом можно подобрать пароль рута. Мы пойдём другим путём - будем авторизовать с использованием
pam и модуля
pam_userdb, который проверяет пользователя по файлу. В качестве основы использована
статья про vsftpd.
Основной конфигурационный файл:
# cat /etc/danted.conf
logoutput: syslog /var/log/danted.log
internal: eth0 port = 1080
external: eth0
clientmethod: none
socksmethod: pam.username
#необходимы права рута, чтобы использовать pam
user.privileged: root
user.unprivileged: nobody
user.libwrap: nobody
#доступ к серверу разрешаем всем
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
}
#доступ к локалхосту блокируем с логированием
socks block {
from: 0.0.0.0/0 to: 127.0.0.0/8
libwrap: spawn finger @%a
log: connect error
}
#доступ к локальной сети блокируем с логированием
socks block {
from: 0.0.0.0/0 to: 172.16.0.0/12
libwrap: spawn finger @%a
log: connect error
}
#доступ в интернет разрешаем всем, кто авторизовался
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
command: bind connect udpassociate
log: error connect #disconnect iooperation
socksmethod: pam.username
#какой сервис pam вызываем - т.е. фактически - имя файла в /etc/pam.d/
pam.servicename: danted
}
Конфигурационный файл
pam, файл базы данных без расширения!
# cat /etc/pam.d/danted
auth required pam_userdb.so db=/etc/danted_users crypt=none icase
account required pam_userdb.so db=/etc/danted_users crypt=none icase
Pam проверяет пользователя по файлу базы данных /etc/danted_users.db, его необходимо сделать из текстового файла. Вот пример текстового файла и команда его перевода в базу данных - в файле пары строк. В первой строке из пары - имя пользователя, во второй - пароль пользователя:
# cat /etc/danted_users.txt
user1
password1
user2
password2
# db5.3_load -T -t hash -f /etc/danted_users.txt /etc/danted_users.db
Подправим права:
# chmod 0600 /etc/danted_users*
Перезапустим socks сервер:
# systemctl restart danted
В настройках межсетевого экрана не забудьте открыть порт 1080.
Логи работы можно посмотреть в /var/log/danted.log
Для ротации логов можно использовать logrotate:
#cat /etc/logrotate.d/danted
/var/log/danted.log {
weekly
rotate 4
compress
missingok
postrotate
kill -HUP `cat /var/run/danted.pid`
endscript
}