Собственный Proxy-сервер

zodiak

Пользователь
Регистрация
11.12.16
Сообщения
236
Реакции
191
Баллы
63
Нарушения
0 / 5
Собственный Proxy-сервер



Мы будем делать SOCKS5 Proxy

В отличие от HTTP прокси-серверов, SOCKS передаёт все данные от клиента, ничего не добавляя от себя, то есть с точки зрения конечного сервера, данные, полученные им от SOCKS-прокси, идентичны данным, которые клиент передал бы напрямую, без проксирования. SOCKS более универсален, он не зависит от конкретных протоколов уровня приложений (7-го уровня модели OSI) и оперирует на уровне TCP-соединений (4‑й уровень модели OSI). SOCKS 5-й версии поддерживает аутентификацию пользователя.



Таким образом мы получаем:

  • Постоянный и Надежный Proxy сервер. Уверенность в том что наши данные на другом конце провода не будут кем-то расшифровываться.
  • Производительность - высокая пропускная способность и низкое время отклика.
  • Полный контроль.


Ну что же, начнем

Два основных компонента рассматриваемых в этой статье это: Debian 9 и Dante-Server. В место Debian у вас может быть любая Linux OS, а Dante был выбран за не имением достойной альтернативы на мой взгляд.

Поехали, первым делом подключаемся по SSH к нашему серверу. В своих предыдущих статьях я показывал аренду и настройку VPS.



Обновляем систему и пакеты.

apt update && apt dist-upgrade



И ставим Dante-Server

apt install dante-server



Сразу же после установки открываем и правим конфигурационный файл.

vi /etc/danted.conf
logoutput: stderr
internal: eth0 port = 8467
external: eth0
socksmethod: username

user.privileged: root
user.unprivileged: nobody
user.libwrap: nobody

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



4e76bbc66d85157312950.png

logoutput: stderr - программ будет писать логи только о критических ошибках. Для отладки можно добавить параметр syslog чтобы ввелись логи подключения в /etc/log/syslog.

internal: eth0 port = 8467 - листенер сервера на нестандартном порту на eth0.

external: eth0 - исходящий трафик будет проходить через интерфейс eth0.

socksmethod: username - для авторизации по локальному пользователю.

user.privileged: root - чтобы dante-server смогла читать файл /etc/passwd для авторизации пользователей.

client pass и socks pass - доступ ото всюду, куда угодно.

Подробнее о директивах конфигурации можете прочитать в самом файле или в сети.

Добавим пользователя для установки соединения с нашим proxy, чтобы не использовать рабочих системных пользователей.

useradd -s /bin/false codebyuser && passwd codebyuser



Разрешаем TCP порт 8467 который должен слушаться.

#Если вы пользуетесь iptables:
iptables -A INPUT -p tcp --dport 8467 -j ACCEPT

#Если UFW
ufw allow 8467/tcp



Запускаем dante-server и добавляем в авто-загрузку.

systemctl restart danted
systemctl enable danted



Проверяем соединение с proxy на нашей локальной Linux машине:

curl --socks5 codebyuser:[email protected]:8467 ident.me; echo



Вместо нашего реального адреса, команда должна выдать IP прокси сервера.

316415a8edd989cc0e08f.png

e1e08d2a838859d8e58e7.png

Как видно все работает. Можно смело прописывать конфиг в приложение на котором требуется использование прокси.
 
Назад
Верх Низ