Возрождение брандмауэра IPFW в Leopard


Если вам недостаточно возможностей встроенного брандмауэра Mac OS X с графическим интерфейсом или Little Snitch 2, то вы не одиноки. Есть немало опытных хакеров, которым не нравится новый брандмауэр Leopard, и они хотят иметь больше возможностей по контролю за трафиком, нежели предоставляемые стандартным брандмауэром.Если вы готовы работать из командной строки в Terminal ради того, чтобы получить больше возможностей по контролю за вашими портами, вы будете вознаграждены. Для этого вам потребуется сконфигурировать IPFW — брандмауэр уровня ядра, входящий в состав Mac OS X. IPFW, брандмауэр, входивший в состав версий Mac OS X, предшествующих Leopard, пришел в мир Mac из BSD UNIX. IPFW работает на уровне ядра, в отличие от встроенного брандмауэра Leopard, работающего на прикладном уровне. IPFW представляет собой очень серьезный брандмауэр, который выдержал испытание временем в мире UNIX/Linux, и он еще послужит вам для защиты вашего Mac от некоторых видов сетевых атак и атак через Интернет.

Сказав все это, необходимо упомянуть, что IPFW будет работать настолько хорошо, насколько хорошо вы сконфигурируете его и зададите его правила. Кроме того, даже это — не причина и для того, чтобы отказываться от нового брандмауэра Leopard, который может работать параллельно с IPFW и дополнять его возможности. Я действительно считаю, что Apple следовало разработать новый брандмауэр для Leopard с тем, чтобы он работал таким образом. Только время покажет, какое из этих двух средств работает для вас наиболее эффективно. Тем не менее, хотя этот вопрос пока остается открытым, давайте обсудим, как обеспечить максимально строгие правила безопасности за счет возрождения старого брандмауэра IPFW.

Далее в этой статье будут приведены пошаговые инструкции по настройке IPFW. Мы последовательно проделаем следующие операции:

1. Конфигурирование IPFW для использования в Mac OS X 10.4 Tiger и 10.5 Leopard.
2. Установку брандмауэра IPFW для работы в качестве командного сценария (shell script).
3. Добавление сценария IPFW в список программ, автоматически стартующих при запуске.

Если вы проделаете все в точном соответствии с приведенными здесь инструкциями, то IPFW будет работать так, как и ожидалось — без проблем. Кстати, текст сценария (если вы хотите избежать опечаток при его вводе) можно скачать с Web-сайта: http://macsecuritypro.com/2007/11/17/ressurecting-the-ipfw-firewall-in-leopard.

Если вы зададитесь вопросом о том, можно ли сконфигурировать IPFW через графический пользовательский интерфейс Aqua, то ответ будет отрицательным. Я старался сделать это руководство по возможности простым, так что вам нет необходимости писать какой бы то ни было код или чересчур переутомляться. Если вы будете внимательны и в точности выполните все указания, то проблем у вас не возникнет.

Часть I: Конфигурирование сценария

Сценарий, приведенный в листинге 6.2, не делает ничего лишнего — он просто выполняет задачи по конфигурированию IPFW. Работать он может под управлением как Mac OS X 10.4 Tiger, так и под управлением Mac OS 10.5 Leopard. Вам потребуется выполнить настройки на основании списка сервисов, которые должны работать на вашем Mac. Значок # в начале некоторых строк говорит о том, что данная строка представляет собой комментарий и должна игнорироваться. Комментарии, как вы, безусловно, знаете, добавляются в целях пояснений действий, выполняемых той или иной командой, а также для временного отключения некоторых команд.


Я сконфигурировал этот скрипт таким образом, чтобы он устанавливал правила, достаточно строгие, но в то же время разумные и подходящие для большинства пользователей. Однако вам может потребоваться запускать, например, Web-сервер, почтовый сервер, применять совместный доступ к файлам, пользоваться возможностью удаленной регистрации и бог знает, чем еще. Поэтому, если вам, например, хочется осуществлять удаленную регистрацию через стандартный порт SSH 22, вам достаточно будет просто удалить значок # из первой позиции строки, содержащей следующую подстроку: dst-port 22. В результате нужный порт будет открыт для приема запросов на удаленную регистрацию после исполнения сценария. Редактировать следует только те разделы, которым предшествует строка Optional. Скрипт, конфигурирующий брандмауэр IPFW, приведен в листинге 1. Внимательно просмотрите его и примите решение о том, какие порты вам требуется открыть. Номера портов указываются после строки add каждой из команд.

1234567891011121314151617181920212223242526272829303132333435363738//Листинг 1. Конфигурационный скрипт IPFW#!/bin/sh## ipfw script for Mac OS X 10.4 Tiger and 10.5 Leopard# Created for MacSecurityPro.com# Created by John E. 11.05.2007# Enable Logging ***Do NOT Change This Section****if [ `/usr/sbin/sysctl -n net.inet.ip.fw.verbose` == 0 ] ; then/usr/sbin/sysctl -w net.inet.ip.fw.verbose=2Fi# Use flush to remove any existing firewall rules/sbin/ipfw -f flush# Establish rules for localhost ***Do NOT Change This Section****/sbin/ipfw -f add 00010 divert 8668 ip from any to any via en0/sbin/ipfw -f add 02000 allow ip from any to any via lo*/sbin/ipfw -f add 02010 deny log ip from 127.0.0.0/8 to any in/sbin/ipfw -f add 02020 deny log ip from any to 127.0.0.0/8 in/sbin/ipfw -f add 02030 deny log ip from 224.0.0.0/3 to any in/sbin/ipfw -f add 02040 deny log tcp from any to 224.0.0.0/3 in/sbin/ipfw -f add 02041 allow tcp from any to any dst-port 427 in# Check states, ****Do NOT Change This Section*******/sbin/ipfw -f add 02047 allow tcp from any to any out/sbin/ipfw -f add 02050 allow tcp from any to any established/sbin/ipfw -f add 02055 allow udp from any to any out/sbin/ipfw -f add 02065 allow tcp from any to any frag# Optional- Open port for «Remote Login» a.k.a SSH Connections#/sbin/ipfw -f add 02075 allow tcp from any to any dst-port 22 in# Optional- Open ports for Apple File Sharing (AFP)#/sbin/ipfw -f add 02080 allow tcp from any to any dst-port 548 in# Optional- Open port for Internet Sharing(Encrypt your signal)#/sbin/ipfw -f add 02090 allow tcp from any to any in via en1# Optional- Open ports for web server a.k.a web sharing#/sbin/ipfw -f add 02100 allow tcp from any to any dst-port 80 in#/sbin/ipfw -f add 02110 allow tcp from any to any dst-port 443 in# Deny all other ***Do NOT Change This Section****/sbin/ipfw -f add 12190 deny log tcp from any to any/sbin/ipfw -f add 20000 deny log icmp from any to me in icmptypes 8/sbin/ipfw -f add 65535 allow ip from any to any

Теперь этот сценарий необходимо создать и установить. Чтобы сделать это, вам потребуются административные права. В первую очередь, запустите приложение Terminal. В командной строке, начинающейся с символа $ (это, как вы помните, приглашение командной строки), введите следующую команду, чтобы перейти в каталог /Library/StartupItems, где мы будем создавать и устанавливать новый сценарий.

1$ cd /Library/StartupItems

Не забывайте завершать ввод каждой команды нажатием клавиши Enter. Кроме того, для получения административных привилегий вам потребуется команда sudo, после чего система предложит вам ввести пароль администратора.

12Создайте новый каталог для брандмауэра, дав следующую команду:$ sudo mkdir /Library/StartupItems/Firewall

Теперь создадим сценарий для конфигурирования брандмауэра с помощью редактора vi (листинг 2).

123// Листинг 2. Создание сценария для конфигурирования IPFW$ cd Firewall$ sudo vi Firewall

Когда редактор запустится, нажмите на клавиатуре клавишу I и начинайте вводить текст (рис. 6.20).

Рис. 6.20. Ввод текста сценария в редакторе Vi
Рис. 6.20. Ввод текста сценария в редакторе Vi

Как уже говорилось ранее, вы можете просто скачать текст скрипта с моего Web-сайта, а затем просто скопировать его и вставить в редакторе vi (щелкните правой кнопкой мыши и выберите команду Paste). Убедитесь в том, что в текст вставлены все строки, которые должны там присутствовать. Если все выполнено правильно, нажмите клавишу , а затем введите команду :wq.

Наконец, нажмите клавишу . Теперь ваш скрипт создан, но еще не является исполняемым файлом. Чтобы сделать его исполняемым, дайте следующую команду:

1$ sudo chmod +x /Library/StartupItems/firewall/Firewall

Наконец, нажмите клавишу Enter. Теперь ваш скрипт создан, но еще не является исполняемым файлом. Чтобы сделать его исполняемым, дайте следующую команду:

1$ sudo chmod +x /Library/StartupItems/firewall/Firewall

Часть II: Установка скрипта для конфигурирования IPFW

Ваша цель почти достигнута. Осталось выполнить лишь несколько завершающих шагов. Во-первых, нам необходимо создать файл списка свойств (.plist-файл) в каталоге StartupItems, чтобы наш сценарий запускался автоматически каждый раз при загрузке операционной системы. Если .plist-файл не создать, то брандмауэр не будет запускаться при загрузке ОС, и вам потребуется запускать его вручную. С точки зрения безопасности это не очень хорошо.

Я создал следующий .plist-файл, который вы также можете скопировать и вставить без модификации. Просто откройте окно редактора vi и укажите имя для файла: StartupParameters.plist.

1$ sudo vi StartupParameters.plist

Нажмите клавишу , а затем скопируйте и вставьте в редактор этот код (листинг 3).

1234//Создание .plist-файла для автоматического запуска сценария конфигурации IPFW{ Description = «Firewall»; Provides = («Firewall»); Requires = («Network»);OrderPreference = «None»; Messages = { start = «Starting NAT/Firewall»; stop =»Stopping NAT/Firewall»; }; }

Снова нажмите клавишу Esc и введите команду: :wq. Теперь нажмите клавишу Enter. Вот теперь можно запустить наш брандмауэр. Прежде чем это делать, я бы рекомендовал отключить новый брандмауэр Leopard. Делается это через панель предпочтительных параметров безопасности брандмауэра Leopard. Просто установите брандмауэр так, чтобы все соединения были разрешены. Как только вы это сделаете, переключитесь в окно Terminal и введите следующую команду, чтобы запустить брандмауэр IPFW. Когда вам будет предложено, введите пароль администратора.

1$ sudo ./Firewall

Теперь следует убедиться в том, что правила брандмауэра вошли в силу и действуют. Для этого дайте следующую команду:

1$ sudo ipfw list

После этого вы должны увидеть список всех правил, которые соответствуют всем незакомментированным строкам скрипта конфигурации брандмауэра (см. листинг 6.20 и рис. 6.21). Если все в порядке, то это означает, что брандмауэр работает, а вы почти добились своей цели.

Последнее, что вам останется выполнить — это перезагрузить компьютер и убедиться в том, что брандмауэр запускается автоматически. Чтобы сделать это, перезагрузите компьютер, а затем откройте окно Terminal и из командной строки введите только что приведенную команду. Она должна дать тот же результат, что и до перезагрузки. Так, теперь можно перевести дыхание… Вы сконфигурировали брандмауэр, он работает, а вы — в безопасности.

Рис. 6.21. Новые правила брандмауэра
Рис. 6.21. Новые правила брандмауэра

Это замечание предоставляется специально для пользователей Mac OS X 10.4.x Tiger. Если вы установите этот скрипт, вы больше не сможете конфигурировать брандмауэр через панель параметров предпочтительной настройки — до тех пор, пока этот скрипт работает. Если вы хотите вернуться к прежнему брандмауэру Apple, удалите скрипт IPFW и соответствующий ему .plist-файл (/Library/StartupItems/Firewall/StartupParameters.plist). После этого перезагрузите компьютер. Настройки брандмауэра будут возвращены к стандартным значениям.