Дальнейшие операции над пакетом вы уже определите сами, с помощью опции –j. Если же вам нужно выделить все пакеты, кроме тех, которые присылает вам узел с МАС-адресом 11:12:13:14:15:16, то нужно использовать отрицание — !
Допустим, что теперь вам нужно ограничить число пакетов, присылаемым узлом с МАС-адресом 11:12:13:14:15:16, например, не более 10 пакетов в минуту. Делается это следующим образом: iptables –A INPUT –ra limit —limit 10/minute. Промежуток времени можно указать в секундах (second), минутах (minute) и часах (hour).
IPTables позволяет выделять (а потом производить с ними операции) пакеты одновременно, указав несколько портов, например:
iptables -A INPUT –p tcp -m multiport -source-port 22,53,80,110
Порты указываются через запятую. Вы можете указать максимум 15 портов. Вместо портов источника вы можете указать порты назначения, используя опцию —destination-port. Если вы хотите одновременно указать как порты источника, так и порты назначения, используйте опцию —port:
iptables -A INPUT –p tcp -m multiport -port 22,53,80,110
Теперь уже перейдем на более высокий уровень. Если раньше мы могли отфильтровывать пакеты, исходящие от определенного компьютера, то теперь мы можем выделять пакеты отдельных пользователей. Например, вам нужно выделить все исходящие от пользователя с UID 500 пакеты. Это можно сделать с помощью команды:
iptables -A OUTPUT -m owner -uid-owner 500
Естественно, вы сможете это сделать только для исходящих пакетов, поскольку вы не знаете, какой UID имеет пользователь другой системы, тем более, что информация об этом не передается по протоколу TCP.
Аналогично вы можете ограничивать исходящие пакеты группы или процесса:
iptables -A OUTPUT -m owner -gid-owner 0
iptables -A OUTPUT -m owner -pid-owner 78
Пакетный фильтр IPTables обладает значительно большими возможностями по сравнению с IPChains, но на практике вы вряд ли будете их использовать: в основном используются возможности IPChains, описанные в п. 14.1…14.4.
SQUID — это программа, которая получает HTTP/FTP-запросы клиентов и по ним обращается к ресурсам Интернет. Применение прокси-сервера (squid) дает возможность использовать фиктивные IP-адреса во внутренней сети (Masquerading — маскарадинг), увеличивает скорость обработки запроса при повторном обращении (кэширование), а также обеспечивает дополнительную безопасность.
Нет смысла устанавливать прокси на своей домашней машине, так как функции кэширования выполняет браузер. Прокси-сервер стоит применять лишь в том случае, если в вашей сети три-четыре компьютера, которым нужен выход в Интернет. В этом случае запрос от браузера к прокси-серверу обрабатывается быстрее, чем от браузера к ресурсам Интернет, и таким образом увеличивается производительность. При этом можно смело установить размер кэша в браузерах клиентов равным нулю.
SQUID — это нечто большее, чем просто прокси-сервер. Это своеобразный стандарт кэширования информации в сети Интернет. В силу повсеместной распространенности SQUID, в книге я уделил его конфигурированию большое внимание.
Прокси-сервер Squid образуется несколькими программами, в числе которых: сама программа сервера squid, а также программа dnsserver — программа обработки DNS-запросов. Когда запускается программа squid, то она сначала запускает заданное количество процессов dnsserver, каждый из которых работает самостоятельно и может осуществлять только один поиск в системе DNS. За счет этого уменьшается общее время ожидания ответа DNS.
SQUID может быть установлен из исходных текстов или в виде RPM-пакета. Установка RPM-пакета SQUID очень проста — для этого нужно ввести команду
rpm –ih squid-2.3.STABLE2-3mdk.i586.rpm
Я использую версию squid 2.3. Более новая версия доступна в виде исходных кодов. Исходники можно получить по адресу ftp://ftp.squid.org. Для распаковки исходных кодов, выполните следующие команды:
cd /usr/src/
gunzip squid-2.3.STABLE2-3-src.tar.gz
tar xvf squid-2.3.STABLE2-3-src.tar.gz
cd squid
Теперь перейдем непосредственно к установке:
./configure --prefix=/usr/local/squid
make all
make install
SQUID будет установлен в каталог, заданный ключом prefix — /usr/local/squid. Помимо prefix можно пользоваться ключами, представленными в табл. 15.1.
Ключи сценария configure Таблица 15.1
Ключ Описание --enable-icmp Измерять путь до каждого HTTP-сервера при запросах с помощью ICMP --enable-snmp Включить SNMP-мониторинг --enable-delay-pools Управление трафиком --disable-wccp Отключить Web Cache Coordination Protocol --enable-kill-parent-hack Более корректный shutdown --enable-splaytree Позволяет увеличить скорость обработки ACL
Сервер SQUID использует файл конфигурации squid.conf, который обычно располагается в каталоге /etc/squid (или /usr/local/squid/etc — более ранние версии). Откройте его в любом текстовом редакторе, например, joe/usr/local/squid/etc/squid.conf. Далее выполните следующую последовательность действий:
1. Укажите прокси провайдера:
cache_peer proxy.isp.ru
В данном случает proxy .isp.ru становится нашим «соседом» (neighbour, peer).
2. Установите объем памяти, доступный squid, и каталог для кэша:
cache_mem 6553 6
cache_dir /usr/local/squid/cache 1024 16 256
где: 65536 — объем оперативной памяти в байтах, который можно использовать под кэш;
1024 — количество мегабайт, отводимое на диске в указанном каталоге под кэш. В этом каталоге будут храниться кэшированные файлы. Стоит ли говорить, что если у вас несколько жестких дисков, то кэш нужно разместить на самом быстром из них.
3. Укажите хосты, которым разрешен доступ к прокси-серверу:
acl allowed hosts src 192.168.1.0/255.255.255.0
acl localhost src 127.0.0.1/255.255.255.255
4. Укажите разрешенные SSL-порты:
acl SSL_ports port 443 563
5. Запретите метод CONNECT для всех портов, кроме указанных в acl SSL_ports:
http_access deny CONNECT !SSL_ports
и запретите доступ всем, кроме тех, кому можно:
http_access allow localhost
http_access allow allowed_hosts
http_access allow SSL_ports
http_access deny all
6. Пропишите пользователей, которым разрешено пользоваться squid (в рассматриваемом примере это den, admin, developer):
ident_lookup on
acl allowed_users user den admin developer
http_access allow allowed_users
http_access deny all
Тэги maxium_object_size и maxium_object устанавливают ограничения на размер передаваемых объектов.
Ниже приведен пример запрета доступа к любому URL, который соответствует шаблону games и разрешения доступа ко всем остальным:
acl GaMS url_regex games
http_access deny GaMS
http_access allow all
Теперь, когда вы выполнили базовую настройку SQUID, его нужно запустить: /usr/local/squid/bin/squid –z
Параметр –z необходим для создания (обнуления) каталога, содержащего кэш. Обычно этот параметр нужен только при первом запуске. Некоторые другие полезные параметры SQUID представлены в табл. 15.2.
Параметры SQUID Таблица 15.2
Параметр Описание -а порт Задает порт для входящих HTTP-запросов -d Включает режим вывода отладочной информации в стандартный поток ошибок (на stderr) -f файл Задает файл конфигурации -h Выдает справочную информацию -k reconfigure Посылает сигнал HUP -k shutdown Завершение работы прокси-сервера -k kill Завершение без закрытия журналов -u порт Задает порт для входящих IСР-запросов -s Включает журналирование с помощью syslog -v Выдает информацию о версии SQUID -D Не делать DNS-тест при запуске -N Не становиться демоном (фоновым процессом) -Y Более быстрое восстановление после сбоев
15.5. Формат файла squid.conf