Тематические термины: 3proxy , Ubuntu , прокси-сервер , SOCKS .
Настройка брандмауэра
Установка
Настройка браузера и проверка
Автозапуск 3proxy
Настройка аутентификации
SOCKS
Анонимность
Дополнительные настройки
Настройка портов и прокси-интерфейсов
Ограничение пропускной способности
Ограничения доступа
Решение проблем
По умолчанию, в Ubuntu брандмауэр разрешает все подключения. Однако, если у нас настроен фаервол для запрета лишних соединений, необходимо открыть порт для прокси.
а) если используем Iptables.
iptables -I INPUT 1 -p tcp —dport 3128 -j ACCEPT
netfilter-persistent save
* если система вернет ошибку при вводе команды для сохранения правил, устанавливаем пакет командой apt-get install iptables-persistent .
б) если у нас firewalld.
firewall-cmd —permanent —add-port=3128/tcp
firewall-cmd —reload
* 3128 — порт по умолчанию, по которому работает 3proxy в режиме прокси;
3proxy отсутствует в репозиториях Ubuntu, поэтому для установки сначала необходимо скачать его исходник.
Для начала устанавливаем пакет программ для компиляции пакетов:
apt-get install build-essential
Переходим на официальную страницу загрузки 3proxy и копируем ссылку на версию пакета для Linux:
… используя ссылку, скачиваем пакет:
wget https://github.com/z3APA3A/3proxy/archive/0.9.3.tar.gz
* в моем случае будет скачена версия 0.9.3.
Распакуем скачанный архив:
tar xzf 0.9.3.tar.gz
Переходим в распакованный каталог:
cd 3proxy-*
Запускаем компиляцию 3proxy:
make -f Makefile.Linux
Создаем системную учетную запись:
adduser —system —disabled-login —no-create-home —group proxy3
Создаем каталоги и копируем файл 3proxy в /usr/bin:
mkdir -p /var/log/3proxy /etc/3proxy
cp bin/3proxy /usr/bin/
Задаем права на созданные каталоги:
chown proxy3:proxy3 -R /etc/3proxy /usr/bin/3proxy /var/log/3proxy
Смотрим uid и gid созданной учетной записи:
id proxy3
Получим, примерно, такой результат:
uid=109(proxy3) gid=113(proxy3) groups=113(proxy3)
* где 109 — идентификатор пользователя; 113 — идентификатор для группы.
Создаем конфигурационный файл:
vi /etc/3proxy/3proxy.cfg
setuid 109
setgid 113
nserver 77.88.8.8
nserver 8.8.8.8
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
external 111.111.111.111
internal 111.111.111.111
daemon
log /var/log/3proxy/3proxy.log D
logformat «- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T»
rotate 30
auth none
allow * * * 80-88,8080-8088 HTTP
allow * * * 443,8443 HTTPS
proxy -n
* необходимо обратить внимание на настройки setuid и setgid — это должны быть значения для созданной нами учетной записи; external и internal — внешний и внутренний интерфейсы (если наш прокси работает на одном адресе, то IP-адреса должны совпадать).
Запускаем 3proxy:
/usr/bin/3proxy /etc/3proxy/3proxy.cfg
Проверяем работоспособность нашего 3proxy. Для этого настраиваем браузер для работы через прокси-сервер, например, Mozilla Firefox:
… пробуем открыть сайты.
Для автозагрузки 3proxy настроим его как сервис. Создаем файл в systemd:
vi /etc/systemd/system/3proxy.service
[Unit]
Description=3proxy Proxy Server
[Service]
User=proxy3
Group=proxy3
Type=simple
ExecStart=/usr/bin/3proxy /etc/3proxy/3proxy.cfg
ExecStop=/bin/kill `/usr/bin/pgrep -u proxy3`
RemainAfterExit=yes
Restart=on-failure
[Install]
WantedBy=multi-user.target
Обновляем конфигурацию systemd:
systemctl daemon-reload
Разрешаем запуск сервиса и стартуем его:
systemctl enable 3proxy
systemctl start 3proxy
Для редактирования настроек открываем конфигурационный файл:
vi /etc/3proxy/3proxy.cfg
Добавляем опции users и добавляем пользователей:
users 3APA3A:CL:3apa3a
users remontka1:CL:password
users «remontka2:CR:$1$UsbY5l$ufEATFfFVL3xZieuMtmqC0»
* в данном примере мы добавили 3-х пользователей: 3APA3A с паролем 3apa3a , remontka1 с открытым паролем password и remontka2 с паролем remontka2 в виде md5 и солью UsbY5l (Для получения хэша пароля можно воспользоваться командой openssl passwd -1 -salt UsbY5l , где в качестве соли можно использовать любую комбинацию).
* обратите внимание, при использовании знака $ , строчка пишется в кавычках.
* возможные типы паролей:
Чтобы включить запрос логина, необходимо поменять значение для опции auth на strong :
…
auth strong
…
* возможные варианты для auth :
Также можно использовать двойную авторизацию, например:
auth nbname strong
После внесения изменений, перезапускаем службу:
systemctl restart 3proxy
Для прозрачного прохождения пакетов через прокси можно настроить SOCKS5. В конфигурационном файле добавляем:
vi /etc/3proxy/3proxy.cfg
socks
* запускаем socks на порту 1080 .
Или:
socks -p8083 -i192.168.1.23 -e111.111.111.111
* запускаем socks на порту 8083; внутренний интерфейс — 192.168.1.23 , внешний — 111.111.111.111 .
После перезапускаем сервис:
systemctl restart 3proxy
Для обеспечения полной анонимности при использовании прокси-сервера, делаем дополнительные настройки.
1. Меняем порты, которые используются по умолчанию — 3128, 1080. Данные порты известны, как порты для прокси. Открываем конфигурационный файл 3proxy:
vi /etc/3proxy/3proxy.cfg
Меняем порты:
socks -p1088
proxy -n -p3111
* в данном примере мы укажем серверу работать на портах 3111 и 1088 .
После перезапускаем сервис:
systemctl restart 3proxy
2. Необходимо, чтобы время на сервере совпадало с временем на компьютере.
На стороне сервера необходимо задать часовой пояс, например, если наш прокси находится в Германии, вводим:
timedatectl set-timezone Europe/Berlin
На стороне клиента либо меняем часовой пояс в системе, либо устанавливаем плагин для браузера, например, для Mozilla Firefox и меняем часовой пояс уже в нем.
3. Отключение icmp. По времени ответа на ping можно определить отдаленноесть клиента от прокси. Чтобы проверку нельзя было выполнить, отключаем на сервере icmp. Для этого создаем правило в брандмауэре:
iptables -I INPUT -p icmp —icmp-type 8 -j REJECT
И применяем настройку:
netfilter-persistent save
4. Проверяем настройки.
Открываем браузер, который работает через прокси и переходим на страницу 2ip.ru/privacy — кликаем по Проверить :
Будет выполнена проверка анонимности нашего сервера.
Настройки, которые могут не понадобиться. Но они позволят настроить дополнительные возможности прокси-сервера.
При необходимости, можно настроить 3proxy на использование разных интерфейсов на разных портах:
vi /etc/3proxy/3proxy.cfg
proxy -n -a -p3128 -i192.168.0.23 -e222.222.222.222
proxy -n -a -p8080 -i192.168.1.23 -e111.111.111.111
* 3proxy будет слушать на порту 3128 с внутреннего интерфейса 192.168.0.23 и направлять пакеты в сеть Интернет через внешний интерфейс 222.222.222.222 , а также, на порту 8080 для внутреннего и внешнего интерфейсов 192.168.1.23 и 111.111.111.111 соответственно.
* не забываем также настраивать брандмауэр (вначале инструкции мы открывали только 3128 порт).
systemctl restart 3proxy
При необходимости, можно ограничить скорость.
vi /etc/3proxy/3proxy.cfg
bandlimin 1000000 user1,user3
bandlimin 5000000 user2,user4
* в данном примере пользователям user1 и user3 установлено ограничение в 1000000 бит/сек (1 мбит); для user2 и user4 — 5 мбит/сек.
systemctl restart 3proxy
Можно ограничить доступ и разрешить только для определенных портов, сетей и пользователей.
vi /etc/3proxy/3proxy.cfg
Синтаксис:
allow <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist> <weekdays> <timeperiodslist>
deny <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist> <weekdays> <timeperiodslist>
* где:
Примеры:
allow * * * 80 HTTP
allow * * * 443,8443 HTTPS
allow * * * 21 FTP
* в данном примере пользователям user1 и user3 установлено ограничение в 1000000 бит/сек (1 мбит); для user2 и user4 — 5 мбит/сек.
Также, ограничить доступ можно по количеству одновременных соединений для каждой службы:
maxconn 700
proxy -n -a -p3128 -i192.168.0.23 -e222.222.222.222
proxy -n -a -p8080 -i192.168.1.23 -e111.111.111.111
* таким образом, мы установим 700 максимальных соединений для прокси на порту 3128 и 700 — для proxy на порту 8080 .
systemctl restart 3proxy
Рассмотрим ошибки, с которыми можно столкнуться при настройке 3proxy.
Ошибка появляется при попытке запустить 3proxy.
Причина: до ввода команды setgid должна быть введена команда setuid. Ошибка возникает, если в конфигурационном файле наружен порядок.
Решение: откроем конфигурационный файл:
vi /etc/3proxy/3proxy.cfg
Убедимся, что сначала идет setgid , а за ним setuid :
setgid …
setuid …
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…