Смекни!
smekni.com

Firewall (стр. 4 из 6)

На самом компьютере с Firewall должно быть разрешено перенаправление, которое позволит пакетам проходить из одной сетевой карты в другую. Чтобы включить эту возможность, нужно записать в файл /proc/sys/net/ipv4/ip_forward число 1 (по умолчанию там может быть 0) или выполнить команду:

echo I > /proc/sys/net/ipv4/ip_forward

Для обеспечения переадресации между сетевыми интерфейсами ядро опера­ционной системы должно быть скомпилировано с соответствующей под­держкой, потому что перенаправление происходит именно на этом уровне. Помимо этого, нужно изменить параметр net.ipv4.ip_forward в файле /etc/sysctl.conf на 1.

Сетевой экран может не только проверять пакеты на соответствие опреде­ленным фильтрам, но и прятать IP-адреса компьютеров сети. Это происходит следующим образом:

1. Клиент направляет пакет в сеть, и до сетевого экрана он будет идти со своим IP-адресом.

2. Сетевой экран меняет IP-адрес отправителя на свой и направляет пакет дальше от своего имени.

Таким образом, в Интернете все пакеты будут видны, как будто их отправлял Firewall, а не компьютеры внутри сети. Это позволяет скрыть от злоумыш­ленника внутреннюю организацию сети и экономить IP-адреса. Внутри сети пользователь сам может раздавать адреса из зарезервированного диапазона, и только сетевой экран будет иметь реальный IP-адрес. При такой адресации из Интернета нельзя будет напрямую подклю­читься к компьютерам сети. Это значит, что злоумышленнику придется взламы­вать сначала машину с сетевым экраном и только потом компьютеры сети. Тем самым значительно усложнили задачу взломщика. Неопытные злоумышленники никогда не связываются с сетевыми экранами, потому что для такого про­никновения нужны не только широкие знания принципов безопасности, но и большой опыт.

Пример, который разрешает переадресацию на внешний интер­фейс из локальной сети:

ipchains -A forward -i eth1 -s 192.168.1.0/24 -j MASQ

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

Далее идет ссылка на интерфейс eth1 (сетевая карта, которая смотрит в Ин­тернет). Диапазон адресов соответствует всей сети 192.168.1.x. В качестве разрешения используется значение MASQ, что соответствует маски­рованию адреса, т. е. адрес клиента будет заменен на адрес компьютера, на котором работает Firewall.

Данное разрешение позволяет только передавать пакеты с адресов 192.168.1.x на сетевой интерфейс eth1. Но это еще не значит, что трафик поступит и сможет выйти в Интернет. Чтобы пакеты пользователей были приняты сете­вым экраном, должно быть разрешение ACCEPT примерно следующего вида:

ipchains -A input -i eth0 -s 192.168.1.0/24 -j ACCEPT

В этом фильтре открыт доступ на сетевой интерфейс eth0 любым паке­там с адресов 192.168.1.x. Разрешение дано на порты, поэтому адрес отправи­теля пакета может быть любым из сети 192.168.1.x.

Осталось только разрешить таким же образом пакетам выходить из eth1, и можно считать, что все компьютеры сети уже полу­чили доступ в Интернет. Только на всех клиентских машинах необходимо указать в качестве шлюза по умолчанию IP-адрес компьютера с сетевым ин­терфейсом, и все пакеты найдут своего адресата.

Если структура сети напоминает рис 3, то переадресация должна быть включена на обоих сетевых экранах. А вот маскировку адреса лучше всего сделать на двух Firewall. В этом случае второй сетевой экран будет скрывать ло­кальную сеть даже от публичного сервера.

Зачастую в качестве второго сетевого устройства выступает не карта, а мо­дем. В этом случае правило для перенаправления будет выглядеть следую­щим образом:

ipchains -A forward -i ppp0 -s 192.168.1.0/24 -j MASQ

Здесь перенаправление идет на интерфейс одного из модемов, имена которых имеют вид рррх.

Чаще всего необходимо, чтобы клиенты имели доступ к ресурсам Ин­тернета, а обратное подсоединение было невозможно. Когда по протоколу TCP запрашивается подключение к удаленному компьютеру, то посылается пакет с установленным битом syn. В простых пакетах такого бита не должно быть. Таким образом, достаточно запретить ТСР-пакеты с этим флагом, и удаленный компьютер не сможет подключиться ни к одному ресурсу компьютера или сети. Это можно реализовать следующим образом:

ipchains -I input 1 -i ppp0 -p tcp – syn -j DENY

В данной строке вставляется новое правило в цепочку проверки входящих пакетов. Контролируются пакеты TCP, у которых установлен флаг syn (об этом говорит ключ – syn). Если такой пакет получен, то он удаляется. Для использования маскировки IP-адреса ядро операционной системы долж­но быть скомпилировано с соответствующей поддержкой, потому что подме­на адреса происходит на уровне ядра.

4.2. Сохранение фильтра

Если попробовать сейчас перезагрузить систему и просмотреть цепочки сете­вого экрана, то все изменения исчезнут. Проблема в том, что операционная система авто­матически их не запоминает, и пользователю самому нужно позаботиться о сохранении правил. Для этого существует утилита ipchain-save. Ее нужно выполнять сле­дующим образом:

ipchain-save > файл

Сохранение цепочек можно сделать автоматическим, но лучше сделать все вручную, так будет надежнее.

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

ipchain-restore < файл

Это очень удобно. Допустим, что пользователь хочет протестировать новые правила, но боится испортить уже отлаженные цепочки. Для этого нужно сохранить в каком-нибудь файле текущее состояние и можно изменять что угодно и как угодно. В любой мо­мент можно вернуться к исходной точке, выполнив одну команду восстанов­ления.

5. Iptables

Iptables – это логическое развитие ipchains. Взяли все лучшее модифицировали, развили в сторону гибкости, надежности и производительности. В современных дистрибутивах iptables является неотъемлемой частью системы и ядро скомпилировано с учетом требований iptables.

Программа iptables является новой разработкой по управлению фильтрами и обеспечению безопасности. С помощью iptables пользователь также может редактировать цепочки правил input, output и forward.

Сходство между ipchains и iptables прослеживается уже при взгляде на пара­метры:

-A цепочка правило – добавить правило в конец цепочки. В качестве параметра указывается имя цепочки INPUT, OUTPUT или FORVARD;

-D цепочка номер – удалить правило с указанным номером из заданной цепочки;

-R цепочка номер правило – заменить правило с указанным номером в цепочке;

-I цепочка номер правило – вставить правило в указанную первым ар­гументом цепочку под номером, заданным во втором параметре. Если но­мер равен 1, то правило станет первым в цепочке;

-L цепочка – просмотреть содержимое указанной цепочки;

-F цепочка – удалить все правила из цепочки;

-p протокол – определяет протокол, на который воздействует правило;

-i интерфейс – определяет сетевой интерфейс, с которого данные были получены. Здесь можно использовать INPUT, FORVARD или PREROUTING;

-о интерфейс – задает интерфейс, на который направляется пакет. Здесь можно указывать OUTPUT, FORVARD или PREROUTING;

-j действие – операция, которая должна быть выполнена над пакетом. В качестве аргументов можно указать следующие значения:

• LOG – поместить в журнал запись о получении пакета;

• REGECT – отправителю будет направлено сообщение об ошибке;

• DROP – удалить пакет;

• BLOCK – блокировать пакеты;

-s адрес – IP-адрес отправителя пакета. Как и в случае с iptables, после адреса можно задать маску в виде /mask и знак отрицания "!", что будет соответствовать любым адресам, кроме указанных;

-d адрес – адрес назначения пакета.

Большинство параметров абсолютно идентичны программе ipchains. Но есть важные и очень мощные отли­чия. Например, с помощью ключей -о и -i очень просто указывать, с какого на какой интерфейс направляется пакет.

В данном обзоре ключей затронуты только основы, но если посмотреть файл документации, то можно увидеть еще много вариантов работы с ключом -j, т. е. существуют большие возможности по управлению пакетом, если он со­ответствует правилам.

Настройка цепочек iptables не сильно отличается от ipchains. Начать фор­мирование цепочки нужно с очистки всего содержимого. Двигаться необхо­димо от полного запрета и разрешать только то, что не нанесет вреда серверу. Сервисы, которые могут оказаться опасными, должны быть доступны только тем, кому это необходимо, или тем, кому можно доверять.

Для сохранения изменений в iptables также надо выполнить специализиро­ванную команду:

service iptables save

5.1. Переадресация

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

iptables -A FORWARD -о ррр0 -j MASQUERADE

В данной строке позволяется переадресация на интерфейс ррр0. С помощью параметра -j таким образом пользователь требует прятать IP-адрес отправителя, т. е. включает маскарадинг.

Если он использует трансляцию сетевых адресов (NAT, Network Address Translation), то команда может выглядеть следующим образом:

iptables -t nat -A FORWARD -о ррр0 -j MASQUERADE

Ключ -t nat указывает на необходимость загрузить модуль iptablenat. Если он не загружен, то это легко сделать вручную с помощью следующей команды:

modprobe iptable_nat

iptabie_nat — это модуль ядра, который позволяет сетевому экрану работать с NAT.

6. Установка, настройка Firewall

Пользователю для начала нужно выбрать дистрибутив на котором он будет работать. Debian GNU/Linux 5.0 неплохо подходит для этого. Этот дистрибутив достаточно распространенный. У Debian GNU/Linux одно из самых больших сообществ, так же периодически выходят все более новые версии пакетов, которые легко загрузить через интернет.

Для организации Firewall в GNU/Linux используется программа iptables, которая, как правило, сразу инсталлируется при установке большинства дистрибутивов. В Debian GNU/Linux проверить это можно, запустив с правами администратора aptitude. При необходимости – нужно установить iptables.