Home

среда, 28 октября 2009 г.

Постоянные правила firewall

В предыдущей статье был дан ряд советов по настройке правил firewall-а. Однако раз установленные, они не переживают перезагрузку системы и приходится устанавливать их вручную. Те, кто не приобрел еще себе серверную версию Mac mini с Leopard X Server в комплекте, могут последовать моему совету.

Для начала откроем терминал и выпросим себе прав

sudo bash

Теперь создадим в текущем каталоге скрипт и назовем его rc.firewall

#!/bin/sh

IPFW=/sbin/ipfw
CONFIG=/etc/ipfilter/ipfw.conf

. /etc/rc.common

ConsoleMessage "Configuring Firewall"

if [ -f $CONFIG ] ; then
 $IPFW $CONFIG
fi

Сделаем его исполняемым и скопируем в каталог /etc

chmod a+x rc.firewall cp rc.firewall /etc/

Данный скрипт будет искать файл конфигурации файервола /etc/ipfilter/ipfw.conf, и, если таковой есть, заставит ipfw вычитать свои правила из конфигурации.

Остается намекнуть системе на необходимость запуска rc.firewall при старте. Пойдем современным путем и переложим заботу на плечи launchd, как завещает нам великий Яббл. Для этого в текущем каталоге создадим текстовый plist файл com.tsybulin.firewall.plist (наименование можете изменить по вкусу) следующего содержания

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Label</key>
	<string>com.tsybulin.firewall</string>
	<key>ProgramArguments</key>
	<array>
		<string>/etc/rc.firewall</string>
	</array>
	<key>RunAtLoad</key>
	<true/>
	<key>UserName</key>
	<string>root</string>
	<key>GroupName</key>
	<string>wheel</string>
</dict>
</plist>

Идентификатор com.tsybulin.firewall можно изменить на более любимый
Теперь изменим владельца файла на root из группы wheel и скопируем его в системную директорию к другим настройкам.

chown root:wheel com.tsybulin.firewall.plist
cp com.tsybulin.firewall.plist /System/Library/LaunchDaemons/

Теперь, чтобы лишний раз не перезагружаться, проверим работу launchd и вызов rc.firewall

launchctl load /System/Library/LaunchDaemons/com.tsybulin.firewall.plist

Если все хорошо, в Console.app можно увидеть запись в журнале:
com.tsybulin.firewall: Configuring Firewall, а по

launchctl list

Можно увидеть в списке задачу com.tsybulin.firewall
Остается создать файл настроек. Он по синтаксису очень похож на команды, только сам вызов /sbin/ipfw нужно убрать.
Пример

add 5 pipe 10 ip from any to any via en1
pipe 10 config bw 1Mbit/s

Сохраняем в текущем каталоге, копируем на место

mkdir -p /etc/ipfilter
cp ipfw.conf /etc/ipfilter/

Ой.

6 коммент.:

Denegday комментирует...

Что-то бродкастит в сеть с порта 2223. Поиск в сети вроде как дружно указывает на MS Office 2008. Советуют заблокировать порт. Делаю:
sudo /sbin/ipfw add 0 deny all from any to any 2223
Но после перезагрузки компа (утром лаптоп приносится в офис и втыкается в сеть) файрфол рапортует что массированный бродкастинг продолжается.
Посоветуй[те], пожалуйста, как правильно настроить, можно ли просто последовательность команд из терминала?
Спасибо!

tsybulin комментирует...

Ну так введенные правила после перезагрузки не восстанавливаются.
Попробуйте сделать так, как описано в статье

Denegday комментирует...

Написано: "Теперь создадим в текущем каталоге скрипт и назовем его rc.firewall". Туплю, но - а какой программой создавать скрипт? В каком формате? Если SimpleText то к названию файла цепляется расширение .txt, видно из терминала по ls

tsybulin комментирует...

Если вам удобнее текстовый редактор, убедитесь, что в меню он переключен в режим простого текста (Plain text), затем в терминале
переименуйте файл

mv rc.firewall.txt rc.firewall

Denegday комментирует...

Последний вопрос - как подчистить кроме удаления созданных фалов? Порекомендуй[те], пожалуйста, терминальные команды, останавливающие работу фильтра на "как было". Спасибо!

tsybulin комментирует...

трубы: ipfw pipe flush
очереди: ipfw queue flush
правила: ipfw flush

Отправить комментарий