Проблема защиты своего родного Web-сервера
всегда остро стояла и стоит перед
администраторами. Традиционные методы
защиты файрволом не всегда подходят по
целому ряду причин. Ниже будет рассмотрена
работа широко известного прокси-сервера Squid
в качестве защищающего Web-сервер прокси.

Squid как Reverse прокси

Такой метод работы прокси-сервера еще
называют Web Server Acceleration, заключается он в
расположении прокси между Интернетом и
сервером. Таким образом он меняет принцип
своей работы на обратный - вместо выпуска
пользователей в Инет он впускает Интернет
пользователей на сайт.

Преимущества такой цепочки очевидны -
ускорение работы (в случае статических
страниц), более безопасная работа Web-сервера
и возможность углубленной настройки промежуточного звена, но бишь
прокси-сервера. Процедуры настройки
кэширования данных в общем говоря ничем не
отличаются от традиционных (forward прокси),
главное отличие само собой скрывается в настройке ACL
(access control lists). 

Установка

Все относится к Squid 2.х, на настоящий момент
доступна для работы версия 2.5 STABLE 4, ее и
юзайте. Скачать Squid можно с http://www.squid-cache.org,
установка думаю не вызовет у вас
трудности: 

распаковка -  ./configure с нужными опциями -
make - make install

Создается пользователь, меняем права на
каталог .../squid/var, дав возможность писать
туда пользователю под которым работает Squid.

Настройка

Отредактируйте дефолтовую конфигурацию
etc/squid.conf. Наиболее важные опции для работы
обратного прокси таковы:

http_port 80
icp_port 0
#######--
acl all_src_ip src 0/0
no_cache deny all_src_ip
cache_dir null /tmp
#######-----
hosts_file /home/packages/squid/etc/hosts
cache_effective_user squid
visible_hostname www.server.com
######--->Reverse proxy related-----
#httpd_accel_host 10.0.0.1
#httpd_accel_port 80
#### OR using virtual host option. ####
httpd_accel_host virtual
httpd_accel_uses_host_header on #required for virtual hosts
#-----

Разберем более менее что к чему. Http_port
говорит прокси на каком порту ловить
входящие соединения, для нашей работы
интересен 80, порт на котором работает Web-сервер;
icp_port - отключаем за ненадобностью;
следующие три строчки определяют
отсутствие кэша в работе Reverse прокси; hosts_file
определяет привязку IP - имя, в нашем случае
DNS привязывает адрес www.server.com к адресу Squid-а,
а тот в свою очередь перенаправляет запросы
к настоящему Web-серверу (рекомендуется
разделить host сервера и системный /etc/hosts); cache_effective_user - от
какого имени сервер обрабатывает запросы,
создан при установке; visible_hostname - строка для
ответов сервера, может быть произвольной;
httpd_accel_host - адрес или имя настоящего сервера,
который прикрывается Squid-ом; httpd_accel_port -
соответственно порт сервера, может быть
отличен от порта Squid-а. Две следующие
строчки - для работы прокси с несколькими
серверами.

Удостоверьтесь, что все запросы
к вашему Web-серверу разрешены (пока, потом мы
этот недостаток конечно устраним). Если
надо добавьте http_access allow all в
конфигурационный файл. если нужен кэш -
создайте его структуру запуском Squid-а с
ключом -z. Если кэш не планируется делать
этого само собой не надо.

Для теста
попробуйте обратится к вашем серверу через
Squid. Если надо - запустите сервер с debug режиме
для записи детализированных логов (они
будут хранится в /var/logs в каталогеSquid):

squid -d
100

(Продолжение следует)

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии