WebWost WebWostbeta

Dante Proxy

Создание своего Proxy сервера с использованием Dante

Al-Sher

Всем привет. Тема прокси до сих пор не теряет своей популярности, поэтому я решил добавить еще и статью про настройку Dante. Напомню, что недавно я уже рассказывал про установку 3Proxy, ну а сегодня мы посмотрим на его альтернативу. Сразу скажу, что Dante используется для поднятия Socks proxy и является достаточно гибким.

Установка.

Итак, для начала скачем Dante к нам на сервер:

wget https://www.inet.no/dante/files/dante-1.4.2.tar.gz

Распакуем архив и зайдем в него:

tar -xvf dante-1.4.2.tar.gz && cd dante-1.4.2

Установим необходимые нам пакеты:

Собираем проект:

./configure --with-sockd-conf=/etc/danted/sbin/sockd --prefix=/etc/danted

Устанавливаем:

make && make install

Создаем ссылку на исполняемый файл для запуска Dante:

ln -s /etc/danted/sbin/sockd /usr/bin/sockd

Создаем сервис для Dante в файле /lib/systemd/system/sockd.service со следующим содержимым:

[Unit]
Description=Dante Socks5
After=multi-user.target

[Service]
ExecStart=/etc/danted/sbin/sockd -f /etc/danted/sockd.conf
ExecReload=/bin/kill -HUP $MAINPID
PIDFile=/var/run/sockd.pid
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target
Alias=sockd.service

Конфигурация.

Теперь перейдем к конфигурации. В настройках сервиса, мы указали, что конфигурация расположена по пути /etc/danted/sockd.conf. Следовательно, нам нужно создать такой файл, добавив в него необходимые строки. Пример конфигурации:

logoutput: stderr
#debug: 1

internal: 0.0.0.0 port = 1080
external: eth0

user.privileged: root

socksmethod: username

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

socks pass {
        from: 0/0 to: 0/0
        log: error
}

Это самая простая конфигурация, разрешающая авторизацию по системным пользователям и доступ ко всей сети. Данный вариант не является безопасным, поэтому, чуть ниже, мы рассмотрим реализацию по логину-паролю из файла. Сейчас же мы попробуем разобрать конфигурацию. Для начала вывод - мы говорим выводить всё в консоль. Можно изменить, например, направив всё логирование в файл. Для этого нам необходимо заменить stderr на путь до файла. Далее мы указываем, что необходимо слушать сетевой интерфейс с именем eth0 по всем доступным IP адресам(0.0.0.0) и порт 1080. user.privileged указывает на то, от чьего имени мы запускаем Proxy сервер. socksmethod отвечает за принцип авторизации. Как видно, в нашем конфиге установлено значение username. Именно оно и говорит серверу, что авторизация проходит по системным пользователям. В конце конфигурации мы указываем правила перенаправления трафика. Таким образом, мы разрешаем каждому авторизованному пользователю ходить куда угодно.

Авторизация по логину и паролю из файла.

Итак, теперь разберем авторизацию по логину и паролю из файла. Для начала нам необходимо установить libpam-pwdfile и whois(для получения пароля):

Если на CentOS у вас не нашелся данный пакет, то необходимо выполнить следующие команды для CentOS 6:

curl -O http://springdale.math.ias.edu/data/puias/unsupported/6/x86_64/pam_pwdfile-0.99-1.puias6.x86_64.rpm 
rpm -Uvh pam_pwdfile-0.99-1.puias6.x86_64.rpm 

И для CentOS 7:

curl -O http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/pam_pwdfile-0.99-1.puias6.x86_64.rpm 
rpm -Uvh pam_pwdfile-0.99-1.puias6.x86_64.rpm 

Далее нам необходимо создать файл /etc/pam.d/socksd со следующим содержанием:

auth required pam_pwdfile.so pwdfile /etc/danted/sockd.passwd
account required pam_permit.so

Далее создадим пользователя в файле /etc/danted/sockd.passwd по следующему формату:

username:$1$IggJL.zb$AVJLJ1BuPJk4rpogGbXew/

Где username - имя пользователя, а $1$IggJL.zb$AVJLJ1BuPJk4rpogGbXew/ - пароль. Для генерации такого пароля мы воспользуемся утилитой из пакета whois, который установили ранее:

mkpasswd --method=md5 password

Где password - пароль. Итак, мы создали файл с пользователями, осталось лишь подправить конфигурацию и перезагрузить proxy. Нам необходимо изменить socksmethod из файла /etc/danted/sockd.conf на pam.username. Перезагружаем сервис:

systemctl restart sockd

Заключение.

На этом я заканчиваю инструкцию по настройке Dante. Надеюсь, у вас всё получилось и не возникло никаких сложностей. Как можно было увидеть, я не стал писать в этот раз про настройку портов. Связано это с тем, что данная информация уже была в прошлой статье по настройке 3Proxy, тут необходимо лишь заменить порт 3128 на 1080. Так же надеюсь, что всё работает на CentOS. К сожалению, в данный момент у меня был лишь Debian и я не мог протестировать работу на CentOS.

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

Новый комментарий