И все-таки он существует, нормальный firewall для windows. IPFW изначально написан для OS FreeBSD, но его портировали на windows и теперь его можно использовать в данной ОС.
Загрузить ipfw для windows можно тут: http://sourceforge.net/projects/wipfw/files
А тут http://wipfw.sourceforge.net/index-ru.html можно ознакомиться с ним подробнее
После того как архив скачан, нужно распаковать его в нужную директорию, в которой он и будет находиться.
Для установки необходимо запустить install-deny.cmd. Правда я не рекомендую сразу его запускать, ибо Вы отрубите все текущие соединения, т.е. если вы работаете удаленно, то потеряете хост. Есть просто install.cmd, но мне нужно было правило по умолчанию - deny. Далее подкладываем свой конфиг. У меня была стандартная задача с одного ip разрешить любой трафик, разрешить входящее соединение для подключения по RDP, а остальное все отключить, у меня получилась следующая конфигурация:
файл wipfw.conf:
-f flushadd allow ip from any to any via lo*add deny log ip from any to 127.0.0.0/8 inadd deny log ip from 127.0.0.0/8 to any inadd check-stateadd count log ip from any to anyadd allow tcp from any to me establishedadd allow tcp from me to any establishedadd allow ip from 10.8.1.160 to me inadd allow ip from me to 10.8.1.160 outadd allow tcp from 10.0.0.0/8 to me 3389 inadd deny ip from any to anyПосле запуска install-deny.cmd он установится, создастся соответствующая служба и будет прочитан файл wipfw.conf, после чего правила начнут работать. В моем случае я получил:
1. Правило, которое было по умолчанию для loopback я не трогал
2. для ip 10.8.1.160 у нас полный доступ;
3. разрешены соединения на порт 3389 с сети 10.0.0.0/8;
4. разрешены все, уже установленные, соединения
5. правило по умолчанию у нас deny, т.е. все остальное в сад.
6. все события логируются
Ipfw умеет и NAT и много чего, читайте документацию. Для просмотра правил можно использовать команду:
ipfw list, а если нужна более подробная инфа со счетчиками, то ipfw show,
ipfw умеет и по умолчанию ведет лог, эти правила можно удалить, но мне это оказалось нужным. Но вот проблема, дневной лог обычного компа, весит около 200 мегабайт, а логи складываются в C:\WINDOWS\security\logs, что может привести к переполнению диска C:\, поэтому я на скорую руку написал скрипт на VBScript для удаления старых файлов, у меня логи хранятся 5 дней.
'Log Rotate For ipfw v0.1 by Yury Konovalov aka Speccyfan 2012MyDirectory="C:\WINDOWS\security\logs"Set FSO = CreateObject("Scripting.FileSystemObject")Set Files = FSO.GetFolder(MyDirectory).Files'Читаем файлы и нужные выделяемFor Each File In Files mask=Left(File.Name,5) ext=Right(File.Name,3) if (mask = "wipfw" AND ext = "log") then 'если наш лог, то 'дату создания можно спросить у файловой системы, но мы возьмем из имени файла, на всякий 'случай y=mid(File.Name,6,4) m=mid(File.Name,10,2) d=mid(File.Name,12,2) DateFile = CDate(d&"."&m&"."&y) 'дата файла добытая из имени If DateDiff("d", DateFile, Date) => 5 Then 'старше 5 дней 'WScript.Echo File.Name FSO.DeleteFile (MyDirectory&"\"&File.Name) 'удаляем end if end ifNextВот такой примитивный logrotate, возможно в будущем сделаю скрипт с упаковкой старых логов.