Proxy server linux ubuntu server

Боевой прокси-сервер Squid 5.2 с нуля

Всем привет. Появилась необходимость сменить в компании старичка Squid 3.5 с NTLM на FreeBSD, трудящегося с лохматых годов, так как как он не управлял скоростями и функционал работал криво. Было решено ставить Squid 5.2 с авторизацией по Kerberos на Ubuntu 22.04. Конфиг от 3.5 не подходит для 5 версии, поэтому все писалось с нуля. Для удобства чтения настройка будет разбита не несколько статей:

  1. Серверная часть и настройка авторизации Kerberos (Active Directory)
  2. Настройка файла конфигурации Squid
  3. Настройка доступов и скоростей

Немного теории для тех, кто вообще не знает, что это и с чем «едят» кальмара..

Гугл говорит нам замысловато..

Squid — программный пакет, реализующий функцию кэширующего прокси-сервера для протоколов HTTP, FTP, Gopher и HTTPS. Разработан сообществом как программа с открытым исходным кодом. Все запросы выполняет как один неблокируемый процесс ввода-вывода.

Для новичка может быть вообще ничего непонятно. Проще говоря прокси-сервер встраивается между конечным сайтом и пользователем. Кэширует данные с сайтов, «режет» скорость и позволяет правильно распределить нагрузки на интернет-канал, предоставляет или наоборот закрывает доступы к разным сайтам, например соц.сетям, магазинам и т.п., чтобы ничего не отвлекало наших сотрудников от выполнения их обязанностей 😊

Hidden text

Постарался все максимально объяснить с разных сторон, чтобы было понятно даже человеку, который делает это впервые. Надеюсь знания окажутся полезными.

Обозначения:

yourdomain.com – вместо этого подставляйте свой домен.

user-px – пользователь от которого запускается squid.

proxy_comp — имя прокси сервера в DNS.

proxy_k – пользователь для Squid в Active Directory.

dc01 – Active Directory 1 сервер.

dc02 — Active Directory 2 сервер (может и не быть в компании).

192.168.10.100 – сервер прокси (у вас будет свой).

192.168.10.1 – шлюз (у вас будет свой).

192.168.10.9 — DNS (у вас будет свой).

192.168.10.10 – DNS (у вас будет свой).

192.168.10.222 — IP нашего админского компа.

Переходим к базовой настройке сервера Ubuntu 22.04

Устанавливаем актуальную версию Ubuntu server LTS отсюда:

Настраиваем статический ip адрес в sudo vim /etc/netplan/00-installer-config.yaml

# This is the network config written by ‘subiquity’

Источник

Установка и настройка прокси-сервера 3proxy на Debian/Ubuntu

В этой статье мы расскажем, как установить и настроить прокси-сервер. Прокси-сервер (от англ. proxy — «представитель, уполномоченный») выступает в роли посредника в коммуникациях между вашим ПК/мобильным и интернетом.

Читайте также:  Yandex ios android windows google linux cms

Причин использовать его может быть множество, включая:

  • обход ограничений доступа к определенным веб-ресурсам установленным администратором локальной сети;
  • обход региональных ограничений доступа у определенных веб-ресурсов;
  • анонимный доступ к веб-ресурсам путем сокрытия реального IP-адреса.

Среди всего многообразия прокси-серверов остановим свой выбор на открытом бесплатном кроссплатформенном сервере 3proxy, опубликованном под BSD-подобной лицензией. Официальный сайт — http://3proxy.ru/.

3proxy включает в себя:

  • HTTP прокси с поддержкой HTTPS и FTP.
  • SOCKSv4/SOCKSv4.5/SOCKSv5 прокси.
  • POP3 прокси.
  • SMTP прокси.
  • AIM/ICQ прокси.
  • MSN messenger / Live messenger прокси.
  • FTP прокси.
  • Кэширующий DNS прокси.
  • TCP и UDP портмапперы.

Также доступны дополнительные возможности, такие как:

  • Управление доступом.
  • Ограничение ширины потребляемого канала.
  • Ограничение трафика на день, неделю и месяц.
  • Перенаправление соединений.
  • Построение цепочек соединений.
  • Ротация лог-файлов.
  • Ведение журналов через ODBC и syslog.
  • Поддержка IPv6.

К недостаткам можно отнести:

  • Отсутствие поддержки кеширования веб-страниц.
  • Отсутствие в официальных репозиториях некоторых linux-дистрибутивов (включая Debian и Ubuntu), но в репозиториях Gentoo, RedHat, Alt Linux присутствует.

Технические требования

  • Операционная система Debian GNU/Linux (версии с 9 по 11) или Ubuntu (версии с 18.04 по 21.10) любой разрядности (32/64 бита).
  • Пользователь с привилегиями root (как вариант доступ через sudo).

Шаг 1. Подготавливаем инфраструктуру

Установку и настройку 3proxy мы будем показывать на примере виртуальной машины на платформе Selectel.

В панели управления платформой заходим в раздел «Облачная платформа» — «Серверы», нажимаем кнопку «Создать сервер».

Выберем ОС — Ubuntu 20.04, фиксированную конфигурацию — 1 vCPU, 1 ГБ оперативной памяти и 5 ГБ диска. В разделе «Сеть» выберем или создадим подсеть с публичным IP-адресом, чтобы к машине можно было подключаться из интернета. Также проверьте раздел «Доступ»: нужно либо записать пароль от root-пользователя, либо выбрать SSH-ключ.

Когда виртуальная машина будет готова, скопируйте ее IP-адрес:

Чтобы подключиться к машине, выполните команду, подставив ваш IP-адрес:

Если вы указали SSH-ключ, то подключиться можно без пароля:

Шаг 2. Подготавливаем инструментарий

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

sudo apt-get install -y build-essential 

Шаг 3. Скачиваем и распаковываем исходники

Последняя версия 0.9.3 (на момент написания руководства). Узнать последнюю версию можно на официальном сайте, при необходимости просто замените цифры на необходимые в следующих командах:

wget https://github.com/z3APA3A/3proxy/archive/0.9.3.tar.gz 

Шаг 4. Компилируем

sudo make -f Makefile.Linux 

Шаг 5. Устанавливаем

Копируем получившийся бинарный файл:

Создадим отдельного системного пользователя proxy3, от имени которого и будет работать сервер:

sudo adduser --system --no-create-home --disabled-login --group proxy3 

Узнаем UID и GID пользователя командой:

uid=109(proxy3) gid=115(proxy3) groups=115(proxy3) 
sudo nano /etc/3proxy/3proxy.cfg 

Вставляем в него следующий код:

# Запускаем сервер от пользователя proxy3 # (возможно в вашей ОС uid и gid пользователя proxy3 # будут другими. Для их определения воспользуйтесь командой id proxy3) setgid 115 setuid 109 # # Пропишите правильные серверы имен посмотрев их # на своем сервере в /etc/resolv.conf nserver 188.93.16.19 nserver 188.93.17.19 # # Оставьте размер кэша для запросов DNS по умолчанию nscache 65536 # # Равно как и таймауты timeouts 1 5 30 60 180 1800 15 60 # # Если несколько IP на одном сервере, указываем тот, # через который будем ходить во внешний мир. # Иначе эту строку игнорируем #external # Тоже самое, только указываем IP, который надо слушать # Если проигнорировать, то прокси слушает все адреса на сервере #internal # # Указываем на расположение файла с пользователями и паролями users $/etc/3proxy/.proxyauth # # укажите режим запуска как deamon daemon # # путь к логам и формат лога, к имени лога будет добавляться дата создания log /var/log/3proxy/3proxy.log D logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T" # # Включаем авторизацию по логинам и паролям auth cache strong # # Конфигурация http(s) proxy # Запускаем анонимный (-a) HTTP-proxy на порту (-p) 3128 и # c отключенной NTLM-авторизацией (-n) proxy -n -p3128 -a 

Комментарии начинаются со знака # и допустимы только с начала строки. Рекомендуется также использовать другой порт вместо стандартного 3128 для прокси серверов, лучше всего из диапазона 49152–65535.

Читайте также:  Multi booting in linux

Пример с другой конфигурацией

nano ~/3proxy-0.9.3/cfg/3proxy.cfg.sample 
nano ~/3proxy-0.9.3/doc/ru/example1.txt 

или же в одном из следующих руководств, на которые ссылается официальный сайт:

Вот пример конфигурации без ведения логов:

setgid 115 setuid 109 nserver 8.8.8.8 nserver 77.88.8.8 nscache 65536 timeouts 1 5 30 60 180 1800 15 60 users $/etc/3proxy/.proxyauth daemon auth cache strong proxy -n -p3128 -a 

Создаем файл с пользователями и паролями:

sudo nano /etc/3proxy/.proxyauth 

Вставляем в него следующий код:

## addusers in this format: #user:CL:password ##see for documentation: http://www.3proxy.ru/howtoe.asp#USERS username:CL:strongpassword 

Где логин username и пароль strongpassword следует изменить на свои. Каждый новый пользователь указывается с новой строки. Выставляем права доступа к файлам прокси-сервера:

sudo chown proxy3:proxy3 -R /etc/3proxy 
sudo chown proxy3:proxy3 /usr/bin/3proxy 
sudo chmod 444 /etc/3proxy/3proxy.cfg 
sudo chmod 400 /etc/3proxy/.proxyauth 

Создаем папку для ведения логов и назначаем права на нее:

sudo chown proxy3:proxy3 /var/log/3proxy 

В случае наличия IPv6 на сервере, рекомендуем запускать прокси со следующей строкой в /etc/3proxy/3proxy.cfg:

proxy -46 -n -p3128 -a -i95.213.255.16 -e95.213.255.16 -e2002:5fd5:ff010::1 

Для сервера с IPv4:95.213.255.16 и IPv6:2002:5fd5:ff010::1 у вас же они будут иные. В таком случае будет поддержка IPv6 на выходе с прокси, например, https://yandex.ru/internet отобразит оба адреса.

Шаг 6. Добавляем в автозагрузку и запускаем прокси-сервер

Создаем файл-инициализации для systemd:

sudo nano/etc/systemd/system/3proxy.service 

Вставляем в него следующий код:

[Unit] Description=3proxy Proxy Server After=network.target [Service] 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 

Еще один вариант скрипта инициализации:

nano ~/3proxy-0.9.3/scripts/3proxy.service 

Теперь нужно обновить конфигурацию systemd:

sudo systemctl daemon-reload 
sudo systemctl enable 3proxy 
sudo systemctl start 3proxy 

Если с первого раза сервис не запустился, проверьте наличие ошибок:

systemctl status 3proxy.service 

Проблемы с запуском чаще всего связаны с файлом /etc/3proxy/3proxy.cfg. При возникновении ошибки обычно указан порядковый номер проблемной строки.

Читайте также:  How install pycharm on linux

Также мы увидим его в списке запущенных процессов в ответе на команду:

Шаг 7. Открываем порт

Открываем порт (3128/tcp) на сервере. Либо указываем свой, который указан в файле /etc/3proxy/3proxy.cfg.

При использовании iptables:

sudo iptables -I INPUT -p tcp -m tcp --dport 3128 -j ACCEPT 

Шаг 8. Настраиваем окружение

Множество программ (включая веб-браузеры) поддерживают работу через прокси по умолчанию. Интерфейс настроек у каждой свой.

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

Либо использование программы проксификатора.

Для подключения к сети Google Chrome использует системные настройки прокси-сервера.

В случае Microsoft Windows это настройки можно также найти в Internet Explorer / MS Edge.

Форма с предложением ввода логина и пароля (username:strongpassword) появится, после первой попытки открытия любой веб-страницы.

Затем любые сервисы по проверки IP-адреса, например, такие как:

сообщат IP-адрес вашего сервера вместо текущего.

Шаг 9. Удаляем временные файлы

Шаг 10. Удаляем 3Proxy (опционально)

Так как установка осуществлялась из исходников, то пакетный менеджер операционной системы бесполезен. Для удаления выполните следующие команды:

sudo systemctl stop 3proxy.service 
sudo rm /etc/systemd/system/3proxy.service 
sudo systemctl daemon-reload 

Заключение

Мы рассмотрели установку и базовую настройку 3proxy. Безусловно у данного прокси-сервера есть еще множество настроек, которые мы не затронули, в том числе настройку SOCKS-прокси, построение цепочек соединений, управление доступом, ограничение ширины потребляемого канала, ограничение трафика по времени, но это тема уже для отдельного руководства.

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

3proxy может выступать в роли высоко анонимного прокси-сервера. Признаком использования подобного может быть лишь принадлежность выходного IP-адреса сервера к пулу адресов, закрепленных за хостинговой компанией при просмотре WHOIS-данных и PTR-записи. В целом он хорош тем, что является маленьким и простым, но в то же время функциональным.

Зарегистрируйтесь в панели управления

И уже через пару минут сможете арендовать сервер, развернуть базы данных или обеспечить быструю доставку контента.

Источник

Оцените статью
Adblock
detector