Оглавление Оглавление 1

Вид материалаДокументы

Содержание


Решения Решение 1 : Следуйте инструкциям из этой главы Установка прокси-сервера
Настройка Squid
Списки контроля доступа (Access Control Lists)
Прозрачный прокси-сервер Squid, установленный на маршрутизаторе
Прозрачный прокси-сервер Squid, установленный на отдельном компьютере
Подобный материал:
1   ...   11   12   13   14   15   16   17   18   ...   29

Упражнения


Упражнение 1 :
  • Настройте в Apache виртуальные сервера, определяемые по имени
  • Настройте в Apache виртуальные сервера, определяемые по IP-адресу
  • Установите и настройте модуль SSL для web-сервера Apache
      1. Решения


Решение 1 :
  • Следуйте инструкциям из этой главы
    1. Установка прокси-сервера

                  1. Ключевые файлы, термины и утилиты:

squid.conf
acl
http_access
      1. Настройка Squid

Вступление


Squid – это кэширующий прокси-сервер для систем на базе Unix.

Он может выступать в качестве прозрачного прокси-сервера, поддерживает кэширование протоколов HTTP, FTP и других, а так же SSL и SNMP. Squid может настраиваться с помощью гибких списков контроля доступа (ACL). Он даже умеет кэшировать DNS-запросы.


Прокси-сервер Squid может существенно увеличить скорость web-серфинга, кроме того его можно использовать вместе с утилитами вроде SquidGuard для фильтрации URL.


HTTP прокси может работать двумя способами:
  • нормальная работа

Адрес прокси-сервера и его порт устанавливаются в настройках web-браузера.
  • прозрачный прокси-сервер

Брандмауэр или маршрутизатор перенаправляет весь HTTP-трафик (или трафик данных, передаваемых по другим протоколам) на прокси-сервер.


В случае прозрачного прокси-сервера существуют два разных случая:
  • Squid на маршрутизаторе
  • Squid установлен на отдельном от маршрутизатора компьютере.




Настройка


Основной файл настройки – это /etc/squid/squid.conf.


Он содержит огромнейшее число параметров, большая часть которых установлена по умолчанию. Squid прокси прекрасно работает в таком режиме.


Вам необходимо установить параметр visible_hostname, или Squid не запустится.


visible_hostname test.domain.org


Для запуска Squid выполните следующую команду:

[root@test root]# /etc/init.d/squid start

init_cache_dir /var/spool/squid... Starting squid: [ OK ]

[root@test root]#



Списки контроля доступа (Access Control Lists)


Списки контроля доступа (ACLs) позволяют вам ограничить доступ к прокси-серверу.


Общий формат ACL правила такой:

# acl название_правила тип_правила строка_1 строка_2 ...


Примеры различных типов правил ACL:

# acl aclname src ip-address/netmask ... (clients IP address)

# (IP-адрес клиента)

# acl aclname src addr1-addr2/netmask ... (range of addresses)

# (диапазон IP-адресов)

# acl aclname dst ip-address/netmask ... (URL host's IP address)

# (IP-адрес хоста, к которому обращается клиент)

# acl aclname myip ip-address/netmask ... (local socket IP address)

# (локальный IP-адрес)

#

# acl aclname srcdomain .foo.com ... # reverse lookup, client IP

# (домен, определяется по IP клиента)

# acl aclname dstdomain .foo.com ... # Destination server from URL

# (имя сервера)

# acl aclname srcdom_regex [-i] xxx ... # regex matching client name

# (регулярное выражение, применяемое к домену клиента)

# acl aclname dstdom_regex [-i] xxx ... # regex matching server

# (регулярное выражение, применяемое к имени сервера)

# # For dstdomain and dstdom_regex a reverse lookup is tried if a IP

# # based URL is used. The name "none" is used if the reverse lookup

# # fails.

# # ( Если установлены правила dstdomain и dstdom_regex, а клиент

# # запрашивает ресурс по его IP-адресу, то прокси-сервер

# # выполняет поиск DNS-имени по IP. Если поиск оказывается

# # безуспешным, то используется имя "none". )

#

# acl aclname time [day-abbrevs] [h1:m1-h2:m2]

# day-abbrevs:

# S - Sunday

# M - Monday

# T - Tuesday

# W - Wednesday

# H - Thursday

# F – Friday


etc...


Примеры ACL:

acl all src 0.0.0.0/0.0.0.0

acl manager proto cache_object

acl localhost src 127.0.0.1/255.255.255.255

acl to_localhost dst 127.0.0.0/8

acl SSL_ports port 443 563

acl Safe_ports port 80 # http

acl Safe_ports port 21 # ftp

acl Safe_ports port 443 563 # https, snews

acl Safe_ports port 70 # gopher

acl Safe_ports port 210 # wais

acl Safe_ports port 1025-65535 # unregistered ports

acl Safe_ports port 280 # http-mgmt

acl Safe_ports port 488 # gss-http

acl Safe_ports port 591 # filemaker

acl Safe_ports port 777 # multiling http

acl CONNECT method CONNECT


Затем мы определяем параметр http_access, используя названия ACL:

# Only allow cachemgr access from localhost

http_access allow manager localhost

http_access deny manager

# Deny requests to unknown ports

http_access deny !Safe_ports

# Deny CONNECT to other than SSL ports

http_access deny CONNECT !SSL_ports


Эти строки определяют, что можно и что нельзя делать в процессе использования этого сервера как прокси.


Еще один пример ограничения доступа (полезный) :

acl our_networks src 192.168.0.0/24

http_access allow our_networks





Прозрачный прокси-сервер Squid, установленный на маршрутизаторе


Нам нужно перенаправить весь web-трафик (всё, что поступает на 80 порт) на стандартный порт Squid (3128).


Это можно сделать с помощью следующих правил iptables:

[root@test root]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

[root@test root]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3128

[root@test root]#


Здесь eth0 выступает в качестве интерфейса, через который клиенты обращаются к маршрутизатору.




Прозрачный прокси-сервер Squid, установленный на отдельном компьютере


Если Squid запущен на отдельном компьютере, то мы должны указать межсетевому экрану или маршрутизатору на необходимость перенаправления обращения к сервисам на компьютер, на котором установлен Squid:


Добавьте следующие правила iptables на межсетевом экране или маршрутизаторе:

[root@test root]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.0.42:3128

[root@test root]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 192.168.0.42:3128

[root@test root]#


Здесь eth0 выступает в качестве интерфейса, через который клиенты обращаются к маршрутизатору, а 192.168.0.42 - это IP-адрес прокси-сервера.