Proxy server linux centos

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

Подготовка сервера

Настраиваем правило для брандмауэра:

firewall-cmd —permanent —add-port=3128/tcp

firewall-cmd —permanent —add-port=1080/tcp

* 3128 — порт по умолчанию, по которому работает 3proxy в режиме прокси; 1080 — порт по умолчанию для SOCKS.

Установка

Сначала устанавливаем расширенный репозиторий epel:

yum install epel-release

После устанавливаем сам 3proxy:

yum install 3proxy

Для автоматического запуска разрешаем сервис:

systemctl enable 3proxy

И запускаем его:

systemctl start 3proxy

Базовая настройка

Открываем конфигурационный файл 3proxy:

1. Прописываем серверы NS:

nserver 77.88.8.8
nserver 8.8.8.8

* в данном примере, мы используем публичные DNS Яндекса (77.88.8.8) и Google (8.8.8.8). Можно также использовать свои собственные или от провайдера.

2. Задаем IP-адрес внешнего интерфейса:

* где 192.168.0.23 — адрес интерфейса, через который осуществляется выход в Интернет. Это может быть, как внутренний адрес локальной сети, так и внешний при непосредственном подключении сервера к сети Интернет.

3. Указываем адрес внутреннего интерфейса:

* в случае использования одного интерфейса, внутренний и внешний IP-адреса будут совпадать.

systemctl restart 3proxy

Открываем браузер и прописываем в качестве прокси наш сервер. Пробуем открыть любой сайт, будет запрошен логин и пароль — вводим логин 3APA3A и пароль 3apa3a.

Настройка аутентификации

По умолчанию, 3proxy настроен на использование логина 3APA3A и пароля 3apa3a. Для редактирования настроек открываем конфигурационный файл:

Находим опцию users и добавляем пользователей:

#users 3APA3A:CL:3apa3a «test:CR:$1$qwer$CHFTUFGqkjue9HyhcMHEe1»
users dmosk1:CL:password
users «dmosk2:CR:$1$UsbY5l$ufEATFfFVL3xZieuMtmqC0»

* в данном примере мы закомментировали пользователей по умолчанию и добавили 2-х новых: dmosk1 с открытым паролем password и dmosk2 с паролем dmosk2 в виде md5 и солью UsbY5l (Для получения хэша пароля можно воспользоваться командой openssl passwd -1 -salt UsbY5l, где в качестве соли можно использовать любую комбинацию).
* обратите внимание, при использовании знака $, строчка пишется в кавычках.

* возможные типы паролей:

  • CL — текстовый пароль
  • CR — зашифрованный пароль (md5)
  • NT — пароль в формате NT.

Чтобы отключить запрос логина, необходимо задать значение для опции auth в none. Однако, опций auth в конфигурационном файле несколько. Нужно найти ту, что отвечает за авторизацию службы proxy:

auth none
# We want to protect internal interface
deny * * 127.0.0.1,192.168.1.1
# and llow HTTP and HTTPS traffic.
allow * * * 80-88,8080-8088 HTTP
allow * * * 443,8443 HTTPS
proxy -n

* в данном примере, мы поменяли auth на none, чтобы отключить запрос пароля.

* возможные варианты для auth:

  • none — без авторизации.
  • iponly — авторизация по IP-адресу клиента.
  • nbname — по Netbios имени.
  • strong — по логину и паролю.

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

Читайте также:  Back door with windows

auth nbname strong

После внесения изменений, перезапускаем службу:

systemctl restart 3proxy

SOCKS

Для прозрачного прохождения пакетов через прокси можно настроить SOCKS5. В конфигурационном файле добавляем:

* запускаем socks на порту 8083.

socks -p8083 -i192.168.1.23 -e111.111.111.111

* запускаем socks на порту 8083; внутренний интерфейс — 192.168.1.23, внешний — 111.111.111.111.

auth none
# We want to protect internal interface
deny * * 127.0.0.1,192.168.1.1
# and llow HTTP and HTTPS traffic.
allow * * * 80-88,8080-8088 HTTP
allow * * * 443,8443 HTTPS
proxy -n
socks

* в данном примере мы настроили 3proxy, который не будет требовать аутентификации, и будет работать в режиме прокси на порту 3128 (порт прокси по умолчанию) и по SOCKS на порту 1080 (порт socks по умолчанию).

Дополнительные настройки

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

Настройка портов и прокси-интерфейсов

При необходимости, можно настроить 3proxy на использование разных интерфейсов на разных портах:

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

Ограничение пропускной способности

При необходимости, можно ограничить скорость.

bandlimin 1000000 user1,user3
bandlimin 5000000 user2,user4

* в данном примере пользователям user1 и user3 установлено ограничение в 1000000 бит/сек (1 мбит); для user2 и user4 — 5 мбит/сек.

systemctl restart 3proxy

Ограничения доступа

Можно ограничить доступ и разрешить только для определенных портов, сетей и пользователей.

  • userlist — список пользователей через запятую.
  • sourcelist — сети клиентов через запятую.
  • targetlist — сети назначения через запятую.
  • targetportlist — порты назначения через запятую.
  • commandlist — команды, к которым применяется правило.
  • weekdays — в какие дни недели работает правило. 0 — 6 — Пн — Вс, 7 — тоже Вс.
  • 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.

Источник

Установка и настройка Squid на CentOS

В данной инструкции рассмотрена установка Squid на систему Linux CentOS 7 или 8.

Подготовка CentOS

1. Обновляем систему:

2. Добавляем правило в firewalld:

firewall-cmd —permanent —add-port=3128/tcp

* где 3128 — порт, на котором будет настроен наш прокси-сервер.

и перезапускаем firewalld:

3. Настраиваем время. Для этого сначала задаем корректный часовой пояс:

timedatectl set-timezone Europe/Moscow

После ставим утилиту для синхронизации времени:

yum install chrony

И запускаем ее для работы в качестве сервиса:

systemctl enable chronyd —now

Установка и настройка Squid

Устанавливаем прокси-сервер следующей командой:

yum install squid

Читайте также:  Wayland linux что это

И открываем на редактирование конфигурационный файл:

Если сеть клиентских компьютеров отличается от стандартной (192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8), необходимо ее добавить в acl, например:

acl localnet src 217.66.157.0/24

acl localnet src «/etc/squid/acl_localnet»

* кавычки обязательны
** после необходимо создать файл /etc/squid/acl_localnet и с каждой строчки перечислить разрешенные IP-адреса.

Чтобы разрешить весь трафик, добавляем следующую строчку:

http_access allow all

* важно, чтобы она была выше запрещающей — http_access deny all

Настраиваем директорию для кэша:

cache_dir ufs /var/spool/squid 4096 32 256

* где ufs — файловая система (ufs для SQUID является самой подходящей); /var/spool/squid — директория хранения кэша; 4096 — объем пространства в мегабайтах, которое будет выделено под кэш; 32 — количество каталого первого уровня, которое будет создано для размещение кэша; 256 — количество каталого второго уровня, которое будет создано для размещение кэша.

Теперь создаем структуру папок под кэш следующей командой:

И уже можно запускать squid:

systemctl enable squid —now

Проверка

Заходим в настройки браузера и настраиваем использование прокси-сервера. Например, в Mozilla Firefox настройки нужно выставить такими:

* где 192.168.163.166 — IP-адрес моего прокси-сервера.

Теперь открываем сайт 2ip.ru. После его загрузки мы увидем внешний IP-адрес — он должен соответствовать той сети, от которой работает настроенный SQUID.

Прозрачный прокси

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

Открываем конфигурационный файл:

И приводим ее к следующему виду:

http_port 3128 transparent

И перезагружаем squid:

systemctl restart squid

Squid + HTTPS

Специально настраивать https для squid в CentOS мне не пришлось — все заработало по умолчанию.

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

Открываем конфигурационный файл:

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/auth_users
auth_param basic children 25
auth_param basic realm SQUID PROXY
auth_param basic credentialsttl 3 hours
acl auth_users proxy_auth REQUIRED

* где /usr/lib64/squid/basic_ncsa_auth — расположение ncsa_auth (в зависимости от системы может находиться в другом каталоге); /etc/squid/auth_users — файл с логинами и паролями; children 25 разрешает 25 одновременных подключений; SQUID PROXY — произвольная фраза для приветствия; credentialsttl 3 hours будет держать сессию 3 часа, после потребуется повторный ввод логина и пароля.

http_access deny !Safe_ports

http_access allow auth_users

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

htpasswd -c /etc/squid/auth_users user1

* если система вернет ошибку «bash: htpasswd: command not found» установим htpasswd командой yum install httpd-tools

Создаем второго пользователя:

htpasswd /etc/squid/auth_users user2

И перезагружаем squid:

systemctl restart squid

Исходящий сетевой интерфейс

На нашем сервере может быть несколько внешний IP-адресов. По умолчанию, все исходящие запросы будут работать через интерфейс со шлюзом по умолчанию. Чтобы иметь возможность работы со squid через разные интерфейсы в настройку вносим:

acl 217_66_157_33 localip 217.66.157.33
tcp_outgoing_address 217.66.157.33 217_66_157_33

acl 217_66_157_34 localip 217.66.157.34
tcp_outgoing_address 217.66.157.34 217_66_157_34

* в данном примере, при подключении к прокси через IP 217.66.157.33, исходящие пакеты будут от IP 217.66.157.33; аналогично для IP 217.66.157.34.

Контроль доступа к сайтам

С помощью прокси-сервера SQUID мы можем разрешать и запрещать доступ к определенным сайтам. Рассмотрим два сценария — запретить определенные сайты или разрешить только конкретные сайты.

Разрешаем все, кроме определенного списка

Открываем конфигурационный файл:

В разделе с acl добавим строку:

Читайте также:  Windows 10 убрать автозапуск скайпа

acl BLOCKED url_regex -i «/etc/squid/denysite»

* в данном примере мы создаем acl с названием BLOCKED — по сути, список, который будет читаться из файла /etc/squid/denysite.

Выше разрешающих правил добавляем строку:

http_access deny BLOCKED
.
http_access allow localnet
http_access allow localhost

* данная строка указывает прокси-серверу на блокироку acl с названием BLOCKED.

Создаем файл со списком запрещенных сайтов:

web\.whatsapp\.com
facebook\.com
^(www\.)?vk\.com

* в данном примере мы запретили доступ к сайтам web.whatsapp.com, facebook.com и всем их поддоменам, а также к vk.com (поддомены vk.com разрешены).

systemctl reload squid

Запретить все, кроме некоторых сайтов

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

В разделе с acl добавим строку:

acl ALLOWED url_regex -i «/etc/squid/allowsite»

* в данном примере мы создаем acl с названием ALLOWED — список, который будет читаться из файла /etc/squid/allowsite.

Комментируем все разрешающие правила и добавляем строку с ALLOWED:

.
#http_access allow localnet
#http_access allow localhost
http_access allow ALLOWED

* в нашей конфигурации используется только эти разрешающие правила на пользователей, но в вашей конфигурации их может быть больше.

Создаем файл со списком разрешенных сайтов:

dmosk\.ru
mail\.ru
^fonts\.googleapis\.com/*

Источник

How to Configure Proxy in CentOS/RHEL/Fedora

What is a Proxy Server

A proxy server is a server that acts as an intermediary for requests from clients seeking resources on the internet or an external network. Think of it as a go-between who makes requests on behalf of the client, ensuring that anyone outside of your network does not know the details of the requesting host.

Verify if proxy is set on the server

This command will show if there is a proxy server configured on the system:

Setting Proxy for Command line programs

The http_proxy environment variable is used to specify proxy settings to client programs such as curl and wget. Below are the various examples of using proxy for commandline programs:

1. No username and password required:

To configure proxy without username and password:

2. Username and password authentication:

To configure the proxy server with username and password authentication:

3. Domain, username and password required:

To configure proxy with username/password authentication along with the Domain name:

Special character handling

Literal backslash characters (\) need to be doubled escape them as shown below.

When the username or password uses the @ symbol, add a backslash (\) before the @ – for example:

Configuring Proxy in CentOS/RHEL 7 permanently (for processes without shell)

Define the environment variables in /etc/environment file if you want to add a permanent proxy in the CentOS/RHEL 7.

Note that unlike a shell script in /etc/profile.d described in the next section, the /etc/environment file is NOT a shell script and applies to all processes without a shell.

Configuring proxy for processes with SHELL

For bash and sh users, add the export line given above into a new file called /etc/profile.d/http_proxy.sh file:

For csh and tcsh users, use the following command to set the http_proxy variable in a new file called /etc/profile.d/http_proxy.csh file:

The extension of these files determines which shell will read them. The commands are not interchangeable.

Источник

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