четверг, 26 апреля 2018 г.

Настройка socks5 proxy на примере dante-server

Можно использовать для 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
}



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

Ярлыки