Статья Собственный SOCKS5 Proxy сервер

proxy_ss.gif

Введение
Приветствую всех на форуме. Решил написать небольшую статью про Proxy Server. Хочу вам продемонстрировать поднятие proxy сервера на своем выделенном сервере (VPS). Иногда бывает необходимо пропустить трафик одного приложения через удаленный сервер и использование VPN в таком случае не целесообразно и не удобно, тем более если это на постоянной основе. Гораздо легче один раз прописать в приложении идентификационные данные proxy сервера и забыть об этом. Так сказать Fire and Forget. Хотя в другой ситуации когда нам требуется перенаправить весь трафик - то VPN просто незаменим.

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

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

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

Обновляем систему и пакеты.
Bash:
apt update && apt dist-upgrade


И ставим Dante-Server
Bash:
apt install dante-server

Сразу же после установки открываем и правим конфигурационный файл.
Bash:
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
}

00001.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, чтобы не использовать рабочих системных пользователей.
Bash:
useradd -s /bin/false codebyuser && passwd codebyuser


Разрешаем TCP порт 8467 который должен слушаться.
Bash:
#Если вы пользуетесь iptables:
iptables -A INPUT -p tcp --dport 8467 -j ACCEPT

#Если UFW
ufw allow 8467/tcp

Запускаем dante-server и добавляем в авто-загрузку.
Bash:
systemctl restart danted
systemctl enable danted


Проверяем соединение с proxy на нашей локальной Linux машине:
Bash:
curl --socks5 codebyuser:codebypass@11.22.33.44:8467 ident.me; echo
Вместо нашего реального адреса, команда должна выдать IP прокси сервера.

00003.PNG

00002.PNG

Как видно все работает. Можно смело прописывать конфиг в приложение на котором требуется использование прокси.
На этом все, всем спасибо за внимание!
 
Последнее редактирование:
Спасибо. Актуально.
 
Полезная статья и расписано хорошо
 
Почему для поднятия соксов ты выбрал программу dante-server, а не более популярную 3proxy ?



Установка 3proxy на CentOS 7



Часть 1.
Аренда VDS.


Часть 2.
Подготовка VDS к установке 3proxy.

Итак, у нас имеется:
# uname -a
Linux zeroxzed.ru 3.10.0-123.20.1.el7.x86_64 #1 SMP Thu Jan 29 18:05:33 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Меняем имя хоста (при необходимости) :
Проверить какое у нас используется hostname можно командой:
# hostname
Изменить имя хоста можно следующей командой
Для CentOS 6 в файле /etc/sysconfig/network
HOSTNAME=example.com
Для CentOS 7 командой:
# hostnamectl set-hostname новое_имя_хоста
# hostnamectl set-hostname word-music.ru

Перезапустим сетевой интерфейс чтобы изменения вступили в силу:
# /etc/init.d/network restart
Проверяем работает ли у нас все:
# hostname

Первым делом обновим систему:
# yum -y update

Для удобства администрирования, я всегда устанавливаю Midnight Commander, или просто mc:
# yum -y install mc
Подсветка синтаксиса в Midnight Commander
Для подсветки файлов, у которых нет своих цветовых настроек:
# cp /usr/share/mc/syntax/cxx.syntax /usr/share/mc/syntax/unknown.syntax

Дальше нам пригодятся сетевые утилиты.
# yum -y install net-tools.x86_64


Отключаем SELinux.
# mcedit /etc/sysconfig/selinux
меняем значение
SELINUX=disabled
Чтобы изменения вступили в силу, перезагружаемся:
# reboot
Или примените исключение:
# setenforce 0

Отключить IPv6 везде где только можно:
В файл /etc/sysctl.conf
Добавляем следующие строки:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
# echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
# echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf

# mcedit /etc/sysconfig/network-scripts/ifcfg-eth0
IPV6INIT=no

# mcedit /etc/sysconfig/network
добавить
NETWORKING_IPV6=no
IPV6INIT=no

SSH:
/etc/ssh/sshd_config
до
#AddressFamily any
#ListenAddress 0.0.0.0
после
AddressFamily inet
ListenAddress 0.0.0.0


# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6


Перезагрузка и проверка:
# reboot
# netstat -tulnp
Все строки с ::: это ipv6 протокол


Удаляем NetworkManager в CentOS 7
Это программа, облегчающая определение и конфигурацию средств для автоматического подключения к сети.
Полезна она только для домашнего ПК или ноутбука, на сервере же может создавать проблемы с настройкой сети,
т.к. может самостоятельно менять настройки.
# systemctl stop NetworkManager && systemctl disable NetworkManager && systemctl restart network


Настраиваем время

Установим нужный часовой пояс:
# yum -y install tzdata
# mv /etc/localtime /etc/localtime.bak
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Синхронизируем время:

Можно запускать синхронизацию времени вручную:
# ntpdate pool.ntp.org

Или установить сервер ntp (настройки в файле /etc/ntp.conf):
# yum install ntp
# service ntpd start
# chkconfig ntpd on

Узнать, какое время на сервере можно с помощью команды date:
# date




Часть 3.
Установка программы 3proxy.

Устанавливаем нужные пакеты для компиляции
yum update && yum -y install wget gcc mc

Загружаем 3proxy
wget https://github.com/z3APA3A/3proxy/archive/0.8.10.tar.gz

Разархивируем скачанный архив командой
tar -xvzf 0.8.10.tar.gz

Переходим в папку с распакованными файлами:
# cd 3proxy-0.8.10

Перед компиляцией используя mcedit добавим одну строчку в src/proxy.h, чтобы сервер был анонимным
# mcedit /src/proxy.h
добавить пункт
#define ANONYMOUS 1
Можно добавить эту строку командой
# sed -i '1s/^/#define ANONYMOUS 1\n/' ./src/proxy.h


Компилируем:
make -f Makefile.Linux

Во время компиляции могут появляться следующие ошибки:
3proxy.c:1103: warning: pointer targets in passing argument 1 of …
Но они не критичны и их мы игнорируем

Создаем папки:
# mkdir /usr/local/etc/3proxy
# mkdir /usr/local/etc/3proxy/bin
# mkdir /usr/local/etc/3proxy/logs
# mkdir /usr/local/etc/3proxy/stat

яяяПереносим исполняемый файл
# cp src/3proxy /usr/local/etc/3proxy/bin

Переносим файл для автозапуска
# cp ./scripts/rc.d/proxy.sh /etc/init.d/3proxy
Ставим в автозагрузку:
/sbin/chkconfig 3proxy on
# systemctl enable 3proxy.service
Записываем информацию в файл автозагрузки CentOS
# chkconfig 3proxy on

Создаем новый конфигурационный файл
# touch /usr/local/etc/3proxy/3proxy.cfg
Или переносим из образца конфигурационный файл
# cp cfg/3proxy.cfg.sample /usr/local/etc/3proxy/3proxy.cfg


Редактируем 3proxy.cfg
# mcedit /usr/local/etc/3proxy/3proxy.cfg


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

поменять порт на 2110 и не забыть дать пользователям разрешение на этот нестандартный порт:
**********************************************
daemon
# IP адреса
# меняем 192.168.1.2 на ip адрес вашего сервера (internal и external)
internal 192.168.1.2
external 192.168.1.2
auth strong
users admin:CL:password
proxy -n -a -p2110 -ixxx.xxx.xxx.xxx -exxx.xxx.xxx.xxx
proxy -n -a -p3128 -iyyy.yyy.yyy.yyy -eyyy.yyy.yyy.yyy
# Конфигурация FTP (ftp и icq), Web-proxy (http и https), SOCKS5-proxy
flush
allow admin,vasyawww
maxconn 32
# разрешим использовать прокси только тем пользователям, которых добавили в самом начале конфига и с определенным IP
allow zerochaos,zchaos 192.168.1.4,95.95.95.95 * * *
# запустим ftp прокси на порту 3127
#ftppr -p3127
# запустим web прокси на порту 3128
proxy -p3128
# запустим socks прокси на порту 3129
#socks -p3129


***********************************************

Выставляем права
# chown -R nobody:nogroup /usr/local/etc/3proxy
- эта команда выдаёт ошибку о том, что инвалид-группа "nobody:nogroup " .
# chown -R root /usr/local/etc/3proxy
Даём разрешение на выполнение скрипта:
# chmod +x /etc/init.d/3proxy


Запускаем
# service 3proxy start

Проверить, запущена ли служба 3proxy можно командой
# systemctl status 3proxy.service

Дальше — настраиваем огненную стену:

# Открываем порт для http- и socks- прокси:
$ firewall-cmd --zone=public --add-port=2110/tcp --permanent
$ firewall-cmd --zone=public --add-port=3129/tcp --permanent
$ firewall-cmd --reload

# Блокируем ICMP трафик (echo-запросы) для того, чтоб наш сервер **не отвечал** на пинги:
# Проверяем состояние:
$ firewall-cmd --zone=public --query-icmp-block=echo-reply
$ firewall-cmd --zone=public --query-icmp-block=echo-request
# Блокируем:
$ firewall-cmd --zone=public --add-icmp-block=echo-reply --permanent
$ firewall-cmd --zone=public --add-icmp-block=echo-request --permanent
# Перечитаем правила:
$ firewall-cmd --reload
# И проверим теперь:
$ firewall-cmd --zone=public --query-icmp-block=echo-reply
$ firewall-cmd --zone=public --query-icmp-block=echo-request


Проверяем слушается ли наш порт:
# netstat -an | grep -i listen

# netstat -lnpt | grep 3128
# netstat -lnpt | grep 3129
Если утилита netstat не установлена, то установить её можно командой
# yum -y install net-tools

Проверим висит ли наш процесс:
ps ax | grep [3]proxy


****************************************************************
***************************************************************
Для применения настроек выполните команду:
# systemctl restart 3proxy



Перегружаем сервер командой reboot и проверяем работоспособность.

Часть 4.
Проверка работоспособности.


**************************************************************************************
2 СПОСОБ

Установка
yum install 3proxy -y
Отредактировать настройки
nano /etc/3proxy/3proxy.cfg
Запуск
/usr/local/etc/3proxy/bin/3proxy /usr/local/3proxy/3proxy.cfg
или
service 3proxy start


 
Почему для поднятия соксов ты выбрал программу dante-server, а не более популярную 3proxy ?



Установка 3proxy на CentOS 7



Часть 1.
Аренда VDS.


Часть 2.
Подготовка VDS к установке 3proxy.

Итак, у нас имеется:
# uname -a
Linux zeroxzed.ru 3.10.0-123.20.1.el7.x86_64 #1 SMP Thu Jan 29 18:05:33 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Меняем имя хоста (при необходимости) :
Проверить какое у нас используется hostname можно командой:
# hostname
Изменить имя хоста можно следующей командой
Для CentOS 6 в файле /etc/sysconfig/network
HOSTNAME=example.com
Для CentOS 7 командой:
# hostnamectl set-hostname новое_имя_хоста
# hostnamectl set-hostname word-music.ru

Перезапустим сетевой интерфейс чтобы изменения вступили в силу:
# /etc/init.d/network restart
Проверяем работает ли у нас все:
# hostname

Первым делом обновим систему:
# yum -y update

Для удобства администрирования, я всегда устанавливаю Midnight Commander, или просто mc:
# yum -y install mc
Подсветка синтаксиса в Midnight Commander
Для подсветки файлов, у которых нет своих цветовых настроек:
# cp /usr/share/mc/syntax/cxx.syntax /usr/share/mc/syntax/unknown.syntax

Дальше нам пригодятся сетевые утилиты.
# yum -y install net-tools.x86_64


Отключаем SELinux.
# mcedit /etc/sysconfig/selinux
меняем значение
SELINUX=disabled
Чтобы изменения вступили в силу, перезагружаемся:
# reboot
Или примените исключение:
# setenforce 0

Отключить IPv6 везде где только можно:
В файл /etc/sysctl.conf
Добавляем следующие строки:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
# echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
# echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf

# mcedit /etc/sysconfig/network-scripts/ifcfg-eth0
IPV6INIT=no

# mcedit /etc/sysconfig/network
добавить
NETWORKING_IPV6=no
IPV6INIT=no

SSH:
/etc/ssh/sshd_config
до
#AddressFamily any
#ListenAddress 0.0.0.0
после
AddressFamily inet
ListenAddress 0.0.0.0


# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6


Перезагрузка и проверка:
# reboot
# netstat -tulnp
Все строки с ::: это ipv6 протокол


Удаляем NetworkManager в CentOS 7
Это программа, облегчающая определение и конфигурацию средств для автоматического подключения к сети.
Полезна она только для домашнего ПК или ноутбука, на сервере же может создавать проблемы с настройкой сети,
т.к. может самостоятельно менять настройки.
# systemctl stop NetworkManager && systemctl disable NetworkManager && systemctl restart network


Настраиваем время

Установим нужный часовой пояс:
# yum -y install tzdata
# mv /etc/localtime /etc/localtime.bak
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Синхронизируем время:

Можно запускать синхронизацию времени вручную:
# ntpdate pool.ntp.org

Или установить сервер ntp (настройки в файле /etc/ntp.conf):
# yum install ntp
# service ntpd start
# chkconfig ntpd on

Узнать, какое время на сервере можно с помощью команды date:
# date




Часть 3.
Установка программы 3proxy.

Устанавливаем нужные пакеты для компиляции
yum update && yum -y install wget gcc mc

Загружаем 3proxy
wget https://github.com/z3APA3A/3proxy/archive/0.8.10.tar.gz

Разархивируем скачанный архив командой
tar -xvzf 0.8.10.tar.gz

Переходим в папку с распакованными файлами:
# cd 3proxy-0.8.10

Перед компиляцией используя mcedit добавим одну строчку в src/proxy.h, чтобы сервер был анонимным
# mcedit /src/proxy.h
добавить пункт
#define ANONYMOUS 1
Можно добавить эту строку командой
# sed -i '1s/^/#define ANONYMOUS 1\n/' ./src/proxy.h


Компилируем:
make -f Makefile.Linux

Во время компиляции могут появляться следующие ошибки:
3proxy.c:1103: warning: pointer targets in passing argument 1 of …
Но они не критичны и их мы игнорируем

Создаем папки:
# mkdir /usr/local/etc/3proxy
# mkdir /usr/local/etc/3proxy/bin
# mkdir /usr/local/etc/3proxy/logs
# mkdir /usr/local/etc/3proxy/stat

яяяПереносим исполняемый файл
# cp src/3proxy /usr/local/etc/3proxy/bin

Переносим файл для автозапуска
# cp ./scripts/rc.d/proxy.sh /etc/init.d/3proxy
Ставим в автозагрузку:
/sbin/chkconfig 3proxy on
# systemctl enable 3proxy.service
Записываем информацию в файл автозагрузки CentOS
# chkconfig 3proxy on

Создаем новый конфигурационный файл
# touch /usr/local/etc/3proxy/3proxy.cfg
Или переносим из образца конфигурационный файл
# cp cfg/3proxy.cfg.sample /usr/local/etc/3proxy/3proxy.cfg


Редактируем 3proxy.cfg
# mcedit /usr/local/etc/3proxy/3proxy.cfg


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

поменять порт на 2110 и не забыть дать пользователям разрешение на этот нестандартный порт:
**********************************************
daemon
# IP адреса
# меняем 192.168.1.2 на ip адрес вашего сервера (internal и external)
internal 192.168.1.2
external 192.168.1.2
auth strong
users admin:CL:password
proxy -n -a -p2110 -ixxx.xxx.xxx.xxx -exxx.xxx.xxx.xxx
proxy -n -a -p3128 -iyyy.yyy.yyy.yyy -eyyy.yyy.yyy.yyy
# Конфигурация FTP (ftp и icq), Web-proxy (http и https), SOCKS5-proxy
flush
allow admin,vasyawww
maxconn 32
# разрешим использовать прокси только тем пользователям, которых добавили в самом начале конфига и с определенным IP
allow zerochaos,zchaos 192.168.1.4,95.95.95.95 * * *
# запустим ftp прокси на порту 3127
#ftppr -p3127
# запустим web прокси на порту 3128
proxy -p3128
# запустим socks прокси на порту 3129
#socks -p3129


***********************************************

Выставляем права
# chown -R nobody:nogroup /usr/local/etc/3proxy
- эта команда выдаёт ошибку о том, что инвалид-группа "nobody:nogroup " .
# chown -R root /usr/local/etc/3proxy
Даём разрешение на выполнение скрипта:
# chmod +x /etc/init.d/3proxy


Запускаем
# service 3proxy start

Проверить, запущена ли служба 3proxy можно командой
# systemctl status 3proxy.service

Дальше — настраиваем огненную стену:

# Открываем порт для http- и socks- прокси:
$ firewall-cmd --zone=public --add-port=2110/tcp --permanent
$ firewall-cmd --zone=public --add-port=3129/tcp --permanent
$ firewall-cmd --reload

# Блокируем ICMP трафик (echo-запросы) для того, чтоб наш сервер **не отвечал** на пинги:
# Проверяем состояние:
$ firewall-cmd --zone=public --query-icmp-block=echo-reply
$ firewall-cmd --zone=public --query-icmp-block=echo-request
# Блокируем:
$ firewall-cmd --zone=public --add-icmp-block=echo-reply --permanent
$ firewall-cmd --zone=public --add-icmp-block=echo-request --permanent
# Перечитаем правила:
$ firewall-cmd --reload
# И проверим теперь:
$ firewall-cmd --zone=public --query-icmp-block=echo-reply
$ firewall-cmd --zone=public --query-icmp-block=echo-request


Проверяем слушается ли наш порт:
# netstat -an | grep -i listen

# netstat -lnpt | grep 3128
# netstat -lnpt | grep 3129
Если утилита netstat не установлена, то установить её можно командой
# yum -y install net-tools

Проверим висит ли наш процесс:
ps ax | grep [3]proxy


****************************************************************
***************************************************************
Для применения настроек выполните команду:
# systemctl restart 3proxy



Перегружаем сервер командой reboot и проверяем работоспособность.

Часть 4.
Проверка работоспособности.


**************************************************************************************
2 СПОСОБ

Установка
yum install 3proxy -y
Отредактировать настройки
nano /etc/3proxy/3proxy.cfg
Запуск
/usr/local/etc/3proxy/bin/3proxy /usr/local/3proxy/3proxy.cfg
или
service 3proxy start


Не нравится мне 3proxy.
 
  • Нравится
Реакции: Vertigo и n01n02h
 
Почему для поднятия соксов ты выбрал программу dante-server, а не более популярную 3proxy ?



Установка 3proxy на CentOS 7



Часть 1.
Аренда VDS.


Часть 2.
Подготовка VDS к установке 3proxy.

Итак, у нас имеется:
# uname -a
Linux zeroxzed.ru 3.10.0-123.20.1.el7.x86_64 #1 SMP Thu Jan 29 18:05:33 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Меняем имя хоста (при необходимости) :
Проверить какое у нас используется hostname можно командой:
# hostname
Изменить имя хоста можно следующей командой
Для CentOS 6 в файле /etc/sysconfig/network
HOSTNAME=example.com
Для CentOS 7 командой:
# hostnamectl set-hostname новое_имя_хоста
# hostnamectl set-hostname word-music.ru

Перезапустим сетевой интерфейс чтобы изменения вступили в силу:
# /etc/init.d/network restart
Проверяем работает ли у нас все:
# hostname

Первым делом обновим систему:
# yum -y update

Для удобства администрирования, я всегда устанавливаю Midnight Commander, или просто mc:
# yum -y install mc
Подсветка синтаксиса в Midnight Commander
Для подсветки файлов, у которых нет своих цветовых настроек:
# cp /usr/share/mc/syntax/cxx.syntax /usr/share/mc/syntax/unknown.syntax

Дальше нам пригодятся сетевые утилиты.
# yum -y install net-tools.x86_64


Отключаем SELinux.
# mcedit /etc/sysconfig/selinux
меняем значение
SELINUX=disabled
Чтобы изменения вступили в силу, перезагружаемся:
# reboot
Или примените исключение:
# setenforce 0

Отключить IPv6 везде где только можно:
В файл /etc/sysctl.conf
Добавляем следующие строки:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
# echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
# echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf

# mcedit /etc/sysconfig/network-scripts/ifcfg-eth0
IPV6INIT=no

# mcedit /etc/sysconfig/network
добавить
NETWORKING_IPV6=no
IPV6INIT=no

SSH:
/etc/ssh/sshd_config
до
#AddressFamily any
#ListenAddress 0.0.0.0
после
AddressFamily inet
ListenAddress 0.0.0.0


# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6


Перезагрузка и проверка:
# reboot
# netstat -tulnp
Все строки с ::: это ipv6 протокол


Удаляем NetworkManager в CentOS 7
Это программа, облегчающая определение и конфигурацию средств для автоматического подключения к сети.
Полезна она только для домашнего ПК или ноутбука, на сервере же может создавать проблемы с настройкой сети,
т.к. может самостоятельно менять настройки.
# systemctl stop NetworkManager && systemctl disable NetworkManager && systemctl restart network


Настраиваем время

Установим нужный часовой пояс:
# yum -y install tzdata
# mv /etc/localtime /etc/localtime.bak
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Синхронизируем время:

Можно запускать синхронизацию времени вручную:
# ntpdate pool.ntp.org

Или установить сервер ntp (настройки в файле /etc/ntp.conf):
# yum install ntp
# service ntpd start
# chkconfig ntpd on

Узнать, какое время на сервере можно с помощью команды date:
# date




Часть 3.
Установка программы 3proxy.

Устанавливаем нужные пакеты для компиляции
yum update && yum -y install wget gcc mc

Загружаем 3proxy
wget https://github.com/z3APA3A/3proxy/archive/0.8.10.tar.gz

Разархивируем скачанный архив командой
tar -xvzf 0.8.10.tar.gz

Переходим в папку с распакованными файлами:
# cd 3proxy-0.8.10

Перед компиляцией используя mcedit добавим одну строчку в src/proxy.h, чтобы сервер был анонимным
# mcedit /src/proxy.h
добавить пункт
#define ANONYMOUS 1
Можно добавить эту строку командой
# sed -i '1s/^/#define ANONYMOUS 1\n/' ./src/proxy.h


Компилируем:
make -f Makefile.Linux

Во время компиляции могут появляться следующие ошибки:
3proxy.c:1103: warning: pointer targets in passing argument 1 of …
Но они не критичны и их мы игнорируем

Создаем папки:
# mkdir /usr/local/etc/3proxy
# mkdir /usr/local/etc/3proxy/bin
# mkdir /usr/local/etc/3proxy/logs
# mkdir /usr/local/etc/3proxy/stat

яяяПереносим исполняемый файл
# cp src/3proxy /usr/local/etc/3proxy/bin

Переносим файл для автозапуска
# cp ./scripts/rc.d/proxy.sh /etc/init.d/3proxy
Ставим в автозагрузку:
/sbin/chkconfig 3proxy on
# systemctl enable 3proxy.service
Записываем информацию в файл автозагрузки CentOS
# chkconfig 3proxy on

Создаем новый конфигурационный файл
# touch /usr/local/etc/3proxy/3proxy.cfg
Или переносим из образца конфигурационный файл
# cp cfg/3proxy.cfg.sample /usr/local/etc/3proxy/3proxy.cfg


Редактируем 3proxy.cfg
# mcedit /usr/local/etc/3proxy/3proxy.cfg


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

поменять порт на 2110 и не забыть дать пользователям разрешение на этот нестандартный порт:
**********************************************
daemon
# IP адреса
# меняем 192.168.1.2 на ip адрес вашего сервера (internal и external)
internal 192.168.1.2
external 192.168.1.2
auth strong
users admin:CL:password
proxy -n -a -p2110 -ixxx.xxx.xxx.xxx -exxx.xxx.xxx.xxx
proxy -n -a -p3128 -iyyy.yyy.yyy.yyy -eyyy.yyy.yyy.yyy
# Конфигурация FTP (ftp и icq), Web-proxy (http и https), SOCKS5-proxy
flush
allow admin,vasyawww
maxconn 32
# разрешим использовать прокси только тем пользователям, которых добавили в самом начале конфига и с определенным IP
allow zerochaos,zchaos 192.168.1.4,95.95.95.95 * * *
# запустим ftp прокси на порту 3127
#ftppr -p3127
# запустим web прокси на порту 3128
proxy -p3128
# запустим socks прокси на порту 3129
#socks -p3129


***********************************************

Выставляем права
# chown -R nobody:nogroup /usr/local/etc/3proxy
- эта команда выдаёт ошибку о том, что инвалид-группа "nobody:nogroup " .
# chown -R root /usr/local/etc/3proxy
Даём разрешение на выполнение скрипта:
# chmod +x /etc/init.d/3proxy


Запускаем
# service 3proxy start

Проверить, запущена ли служба 3proxy можно командой
# systemctl status 3proxy.service

Дальше — настраиваем огненную стену:

# Открываем порт для http- и socks- прокси:
$ firewall-cmd --zone=public --add-port=2110/tcp --permanent
$ firewall-cmd --zone=public --add-port=3129/tcp --permanent
$ firewall-cmd --reload

# Блокируем ICMP трафик (echo-запросы) для того, чтоб наш сервер **не отвечал** на пинги:
# Проверяем состояние:
$ firewall-cmd --zone=public --query-icmp-block=echo-reply
$ firewall-cmd --zone=public --query-icmp-block=echo-request
# Блокируем:
$ firewall-cmd --zone=public --add-icmp-block=echo-reply --permanent
$ firewall-cmd --zone=public --add-icmp-block=echo-request --permanent
# Перечитаем правила:
$ firewall-cmd --reload
# И проверим теперь:
$ firewall-cmd --zone=public --query-icmp-block=echo-reply
$ firewall-cmd --zone=public --query-icmp-block=echo-request


Проверяем слушается ли наш порт:
# netstat -an | grep -i listen

# netstat -lnpt | grep 3128
# netstat -lnpt | grep 3129
Если утилита netstat не установлена, то установить её можно командой
# yum -y install net-tools

Проверим висит ли наш процесс:
ps ax | grep [3]proxy


****************************************************************
***************************************************************
Для применения настроек выполните команду:
# systemctl restart 3proxy



Перегружаем сервер командой reboot и проверяем работоспособность.

Часть 4.
Проверка работоспособности.


**************************************************************************************
2 СПОСОБ

Установка
yum install 3proxy -y
Отредактировать настройки
nano /etc/3proxy/3proxy.cfg
Запуск
/usr/local/etc/3proxy/bin/3proxy /usr/local/3proxy/3proxy.cfg
или
service 3proxy start


Прекрасно. Может вынесете в отдельную статью?
 
По поводу публичных телеграм проксей. В разных статьях предлагают поставить прокси сервер dante и включить вход по юзерам ОС. И следующей строчкой добавляют юзера, но (!) не отрубают ему доступ по SSH и всем раскидывают ссылки на свою проксю с логином и паролем. Итого - берем юзер:пароль, адрес прокси и логинимся по SSH.
 
По поводу публичных телеграм проксей. В разных статьях предлагают поставить прокси сервер dante и включить вход по юзерам ОС. И следующей строчкой добавляют юзера, но (!) не отрубают ему доступ по SSH и всем раскидывают ссылки на свою проксю с логином и паролем. Итого - берем юзер:пароль, адрес прокси и логинимся по SSH.
Юзер созданный с параметром -s /bin/false не сможет подключиться по ssh, потому что у него отсутсвует шелл. А нормальный адним, на сервере выключает аутентифткация по паролю в ssh.
 
А ещё собственный сокс или прокси можно "поднять" с помощью программы CCproxy в операционной системе Windows.
Это просто, удобно, не требует практически никаких знаний и навыков.
Нужно только скачать программу, установить её и произвести настройки, в которых разберётся даже "чайник".

CCproxy настройка 📢 Программа для создания прокси 📢
 
  • Нравится
Реакции: valerian38
А еще вот сокс на линукс в две команды
Код:
wget --no-check-certificate https://raw.github.com/h1777/3proxy-socks/master/3proxyinstaller.sh
chmod +x 3proxyinstaller.sh
./3proxyinstaller.sh

смена пароля
nano /etc/3proxy/.proxyauth

смена порта, по дефолту 3128
nano /etc/3proxy/3proxy.cfg

Запуск
/etc/init.d/3proxyinit start
Тест был на дебиан8 и убунту 16.04
 
А еще вот сокс на линукс в две команды

При этом способе установится программа 3proxy, рассмотренная выше, но при помощи скрипта.
Я не пробовала устанавливать 3 proxy при помощи скриптов, но уверена в том, что что-то пойдёт не так и редактирование конфигурационных файлов вручную - неизбежно. Тем более в Linux, в которой по дефолту постоянно что-то нужно настраивать ))
Так всегда бывает, когда пользуешься скриптами в Linux.
Более того, эти скрипты способны настолько увести мышление в сторону, что легче установить всё вручную :)

ИМХО.
 
При этом способе установится программа 3proxy, рассмотренная выше, но при помощи скрипта.
Я не пробовала устанавливать 3 proxy при помощи скриптов, но уверена в том, что что-то пойдёт не так и редактирование конфигурационных файлов вручную - неизбежно. Тем более в Linux, в которой по дефолту постоянно что-то нужно настраивать ))
Так всегда бывает, когда пользуешься скриптами в Linux.
Более того, эти скрипты способны настолько увести мышление в сторону, что легче установить всё вручную :)

ИМХО.
Редактировать придется, сменить пароль и порт)
На винде далеко не уедешь)
А при использовании вот этих виндовых программок твой vps в ботнете легко окажется) если конечно софт скачан не с оф сайт разраба)
Мое ИМХО)))

P.S.
Только что проверил скрипт, установка и запуск прокси заняло 3 минуты и никаких проблем не возникло)
 
Последнее редактирование модератором:
  • Нравится
Реакции: dominikanec и Vertigo
На винде далеко не уедешь)
Да, ладно ))
На чём основано это утверждение ? На мой взгляд, это мнение толпы, которое подхватывают различные тролли !
Уж извини, но я никак не могу понять, чем сокс на Linux лучше сокса на машине под управлением Windows.

Более, того, зачем для установки 3 proxy тебе нужен скрипт ?
Разве не проще и более грамотно установить программу из репозиториев ?
А если мы ведём речь на уровне "далеко не уедешь", то скомпилировать вручную из исходников ?

Твои аргументы о ботнетах - неубендительны.
Linux окажется в ботнете с такой-же вероятностью.
 
  • Нравится
Реакции: Flyga
Да, ладно ))
На чём основано это утверждение ? На мой взгляд, это мнение толпы, которое подхватывают различные тролли !
Уж извини, но я никак не могу понять, чем сокс на Linux лучше сокса на машине под управлением Windows.

Более, того, зачем для установки 3 proxy тебе нужен скрипт ?
Разве не проще и более грамотно установить программу из репозиториев ?
А если мы ведём речь на уровне "далеко не уедешь", то скомпилировать вручную из исходников ?

Твои аргументы о ботнетах - неубендительны.
Linux окажется в ботнете с такой-же вероятностью.
А где я говорил что прокси на линукс чем то лучше чем на винде?)
Ты показала софтину в которой прокси можно поднять без особых знаний и навыков, я так же предоставил скрипт с помощью которого поднятие прокси осуществляется без каких либо знаний и навыков)
Скрипт cкачивает с гитхаба и компилирует 3proxy.
О ботнетах, большинство виндового софта скачивается с торрентов, всяких сомнительных обменников, и прочих свалок, линукс же с оф реп или компилируется из исходников)
 
  • Нравится
Реакции: Vertigo и gushmazuko
О ботнетах, большинство виндового софта скачивается с торрентов, всяких сомнительных обменников, и прочих свалок, линукс же с оф реп или компилируется из исходников)
Ещё одно заблуждение, ну да ладно ))
Выходи уже из мира иллюзий, предрассудков.
Мы же в этой теме ведём речь не о каких-то торрентах, каких-то прочих свалках, а о конкретном софте и о "поднятии" soscks5 ))
Все программы имеют официальные сайты, с которых можно скачать инсталляторы от разработчиков.


Кстати, ты же сам предложил установку пограммы при помощи какого-то сомнительного скрипта ))
Я не разбирала построчно этот скрипт.
Но что мешает авторам подобных скриптов вставить туда одну-две строчки, которые нанесут ОС ущерб, гораздо более значимый, чем торренты ?
 
Ещё одно заблуждение, ну да ладно ))
Выходи уже из мира иллюзий, предрассудков.
Мы же в этой теме ведём речь не о каких-то торрентах, каких-то прочих свалках, а о конкретном софте и о "поднятии" soscks5 ))
Все программы имеют официальные сайты, с которых можно скачать инсталляторы от разработчиков.


Кстати, ты же сам предложил установку пограммы при помощи какого-то сомнительного скрипта ))
Я не разбирала построчно этот скрипт.
Но что мешает авторам подобных скриптов вставить туда одну-две строчки, которые нанесут ОС ущерб, гораздо более значимый, чем торренты ?
Код:
apt-get update && apt-get -y upgrade
apt-get install -y build-essential nano
wget --no-check-certificate https://github.com/z3APA3A/3proxy/archive/0.8.12.tar.gz
tar xzf 0.8.12.tar.gz
cd 3proxy-0.8.12
make -f Makefile.Linux
cd src
mkdir /etc/3proxy/
mv 3proxy /etc/3proxy/
cd /etc/3proxy/
wget --no-check-certificate https://raw.githubusercontent.com/h1777/3proxy-socks/master/3proxy.cfg
chmod 600 /etc/3proxy/3proxy.cfg
wget --no-check-certificate https://raw.githubusercontent.com/h1777/3proxy-socks/master/.proxyauth
chmod 600 /etc/3proxy/.proxyauth
cd /etc/init.d/
wget --no-check-certificate https://raw.githubusercontent.com/h1777/3proxy-socks/master/3proxyinit
chmod  +x /etc/init.d/3proxyinit
update-rc.d 3proxyinit defaults
Вот весь скрипт) он просто автоматизирует установку, не более, скачивает 3proxy оттуда же откуда ты скачивала выше)))

p.s.
Пожалуй останусь в мире иллюзий) мне тут как то больше нравится)
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab