Бруй В.В., Карлов С.В. - Linux-сервер - пошаговые инструкции - инсталляции и настройки (1077321), страница 39
Текст из файла (страница 39)
TARGET – имя концепции (например, ACCESS или DROP).Для добавления нового правила к цепочке используется опция –A. Для определения протокола, к которому относится опция, используется опция –p. Для определения IP-адреса отправителя и получателя –опции –s и –d, соответственно. Для ограничения диапазона портов отправителя и получателя, к которымприменимо правило – опции --sport и –-dport, соответственно. Определение, какие сетевые устройстваиспользуются для входящих и исходящих пакетов, осуществляется с помощью опций –i и –o, соответственно.Для работы подсистемы классификации соединений создайте правила, запрещающие доступ входящих и исходящих пакетов через внешний интерфейс к Web-серверу. Для этого добавьте к цепочке правилдля входящих пакетов (-A INPUT) новое правило, которое запретит доступ всех пакетов (-J DROP) черезинтерфейс eth0 (-i eth0) c использованием протокола TCP (-p tcp) со всех адресов (-s 0.0.0.0) в1024:65535) на IP-адрес внешнего интерфейсадиапазоне номеров портов 1024…65535 (--sport212.45.28.122 (-d 212.45.28.122) к порту службы httpd (--dport 80):[root@bastion /]# /sbin/iptables -A INPUT -i eth0 -p TCP -s 0.0.0.0 -sport 1024:65535 -d 212.45.28.122 --dport 80 -j DROPДобавьте к цепочке правил для исходящих пакетов (-A OUTPUT) новое правило, которое запретитотправку всех пакетов (-J DROP) через интерфейс eth0 (-i eth0) c использованием протокола TCP (-ptcp), с адреса (-s 212.45.28.122) порта 80 (--sport 80) на любой IP-адрес (-d 0.0.0.0) в диапазоне портов 1024…65535 (--dport 1024:65535):[root@bastion /]# /sbin/iptables -A OUTPUT -o eth0 -p tcp -s212.45.28.122 --sport 80 -d 0.0.0.0 --dport 1024:65535 -j DROPПодсистема мониторинга подключений отслеживает соединения и позволяет селектировать принадлежность пакетов к следующим типам соединений:• вновь устанавливаемым;• уже установленным;• создаваемым с уже установленными соединениями;• не установленной принадлежности.В правилах IPTables для характеристики каждого из типов пакетов, соответственно, используютсяопции NEW, ESTABLISH, RELATED и INVALID.Для иллюстрации работы подсистемы мониторинга соединений создайте правила:• разрешающие прием пакетов для устанавливаемых новых соединений;• разрешающие прием пакетов, принадлежащих уже установленным соединениям;• разрешающие отправку исходящих пакетов только для уже существующих соединений.Для этого добавьте к цепочке правил для входящих пакетов (-A INPUT) новое правило, котороеразрешает прием всех пакетов (-J АССЕРТ), которые устанавливают новые соединения, инициализируемые вашей системой, или уже связаны с установленными соединениями (-m state --state NEW,ESTABLISHED) через интерфейс eth0 (-i eth0) c использованием протокола TCP (-p tcp) со всех адре1024:65535) на IP-адрессов (-s 0.0.0.0) в диапазоне номеров портов 1024…65535 (--sportвнешнего интерфейса 212.45.28.122 (-d 212.45.28.122) к порту службы httpd (--dport 80):[root@bastion /]# /sbin/iptables -A INPUT -i eth0 -p TCP -s 0.0.0.0 -sport 1024:65535 -d 212.45.28.122 --dport 80 -m state --state NEW,ESTABLISHED -j АССЕРТГлава 9.
Основные положения системы сетевой защиты (Firewall)135Добавьте к цепочке правил для входящих пакетов (-A OUTPUT) новое правило, которое разрешаетотправление всех пакетов (-J АССЕРТ), которые связаны с существующими соединениями (-m state -state ESTABLISHED) с интерфейса eth0 (-i eth0) c использованием протокола TCP (-p tcp) с адреса1024:65535) на любой IP-адрес (-d212.45.28.122 (-s 212.45.28.122) порта 80 (--sport0.0.0.0) в диапазоне номеров портов 1024…65535 (--sport 1024:65535):[root@bastion /]# /sbin/iptables -A OUTPUT -o eth0 -p TCP -s212.45.28.122 --sport 80 -d 0.0.0.0 --dport 1024:65535 -m state --stateESTABLISHED -j АССЕРТПодсистема трансляции сетевых адресов транслирует IP-адреса локальной сети в адреса внешней сети.
Например, она используется для организации шлюзов, в том числе, и поддерживающих, так называемый,маскарадинг, для более эффективного распределения нагрузки на системы сети и т. п. Подсистема трансляции адресов содержит две цепочки правил PREROUTING и POSTROUTING. Первая из них содержит наборправил для входящих пакетов, вторая для исходящих.Для иллюстрации работы подсистемы трансляции адресов создайте правило, которое маскирует всепакеты, исходящие из вашей внутренней сети под пакеты, якобы отправленные с наружного интерфейса.Для наружного интерфейса – сетевой карты (eth0) – в таблицу NAT (-t nat) добавьте к цепочке правилисходящих пакетов (-A POSTROUTING) через сетевой интерфейс eth0 (–o eth0) маскарадинг (–jMASQUERADE):[root@bastion /]# /sbin/iptables –t nat –A POSTROUTING –o eth0 –jMASQUERADEДля наружного интерфейса – ppp0 (создаваемого при установке VPN-соединения по протоколу PPTPили модемном соединении со шлюзом провайдера) – в таблицу NAT (-t nat) добавьте к цепочке правилисходящих пакетов (-A POSTROUTING) через сетевой интерфейс ppp0 (–o ppp0) маскарадинг (–jMASQUERADE):[root@bastion /]# /sbin/iptables –t nat –A POSTROUTING –o ppp0 –jMASQUERADEДля перенаправления входящих пакетов на компьютер, находящийся во внутренней сети, создайтеправило в таблицу NAT (-t nat), добавьте к цепочке правил входящих пакетов (-A PREROUTING) на IPадрес 212.45.28.122 (-d 212.45.28.122) для протокола TCP (-p tcp) порта 80 (--dport 80) перенаправление (-j DNAT) на IP-адрес 172.16.181.102 порта 8001(--to 172.16.181.102:8001):Теперь, если вы хотите отправить информацию о порте, например, его значении, с TCP-пакетами,входящими на внешний интерфейс по IP-адресу 207.35.78.2 на порту 8080 так, чтобы их отображение адресата на локальный интерфейс было по IP-адресу 192.168.1.1 на порту 80, тогда вы могли бы использоватьследующие правила:[root@bastion /]# /sbin/iptables -t nat -A PREROUTING -d 212.45.28.122 -ptcp --dport 80 -j DNAT --to 172.16.181.102:8001Проверка настроек сетевой защитыДля просмотра всех правил во всех цепочках используйте команду:[root@bastion /]# iptables -LДля вывода всех правил в некоторой цепочке используйте, например, команду INPUT:[root@bastion/ ] # iptables -L INPUTЕсли вы предпочитаете числовой формат отображения информации, то используйте опцию –n, например:[root@bastion /]# iptables –nLЗАМЕЧАНИЕ Команда iptables имеет большое число опций, которые позволяют создавать правила,удовлетворяющие практически любым требованиям пользователей к системе сетевой защиты, и осуществлять диагностику работы этой системы.
Описание всех возможных и даже типовых конфигураций системы сетевой защиты выходит за рамки этой главы и книги. Поэтому перед применением на практике рекомендаций,изложенных в настоящей главе, авторы рекомендуют изучить страницы руководства, связанные с IPTables, идокумент IPTables Tutorial.136Часть 2. Система сетевой защитыГлава 10GIPTables Firewall - программное обеспечение для настройки IPTablesВ этой главе:1.
Ограничения и допущения2. Пакеты3. Компиляция, оптимизация и инсталляция GIPTables Firewall4. Настройка GIPTables5. Конфигурационный файл /etc/giptables.conf6. Конфигурирование совместной работы GIPTables Firewall с различными службами7. Настройка GIPTables Firewall для шлюза (прокси-сервера)Глава 10. GIPTables Firewall – программное обеспечение для настройки IPTables137Программный продукт GIPTables Firewall, разработанный Адрианом Паскалау (Adrian Pascalau),представляет собой свободно распространяемые скрипты, позволяющие автоматически создавать правиладля сетевой защиты IPTables на Linux-системах с ядром версии 2.4.x с одной или двумя сетевыми картами.Программа проста в установке и конфигурировании.Ограничения и допущенияИсходные коды находятся в каталоге /var/tmp.Все операции выполняются пользователем с учетной записью root.Используется дистрибутив ASPLinux 7.3 (Vostok).Используется ядро версии 2.4.х., настроенное и откомпилированное в соответствии с рекомендациями глав 6 и 9.Установлена система сетевой защиты IPTables.Процедуры, описанные в этой главе, могут оказаться применимыми для других дистрибутивов Linux,но авторы этого не проверяли.ПакетыПоследующие рекомендации основаны на информации, полученной с домашней страницы проектаGIPTablesFirewalот01.02.2003.Регулярнопосещайтедомашнююстраницупроектаhttp://www.giptables.org и отслеживайте обновления.Исходные коды GIPTables Firewall содержатся в архиве gip-tables-version.tar.gz (последняя доступная на момент написания главы версия gip-tables-1.1.tar.gz).Компиляция, оптимизация и инсталляция GIPTables FirewallШаг 1Распакуйте архив с пакетом gip-tables-1.1.tar.gz в каталоге /var/tmp:[root@bastion tmp]# tar -xzpf gip-tables-1.1.tar.gzШаг 2Перейдите в каталог /var/tmp/gip-tables-1.1:[root@bastion tmp]# cd /var/tmp/gip-tables-1.1Установите gip-tables-1.1:[root@bastion gip-tables-1.1]# find /* > /root/gip-tables1.txt[root@bastion gip-tables-1.1]# ./install.shСоздайте и сохраните в надежном месте список файлов gip-tables-1.1, установленных на системе:[root@bastion gip-tables-1.1]# find /* > /root/gip-tables2.txt[root@bastion gip-tables-1.1]# diff /root/gip-tables1.txt /root/giptables2.txt > /root/gip-tables.installed.txt[root@bastion gip-tables-1.1]# mv gip-tables.installed.txt /very reliable_place/gip-tables.installed.YYYYMMDD.txtШаг 3Удалите каталоги с исходными кодами gip-tables-1.1 и архив:root@bastion gip-tables-1.1]# rm –rf /var/tmp/gip-tables-1.1/root@bastion gip-tables-1.1]# rm –f /var/tmp/gip-tables-1.1.tar.gzНастройка GIPTablesВ процессе установки GIPTables Firewall в каталог /lib/giptables/conf устанавливаются следующие конфигурационные файлы.