|
|
Модуль поиска не установлен. |
Оптимизируй это! Часть III
09.09.2008
Все мы помним, как Тиль Уленшпигель бежал по улице, крича во все горло: «Т’брандт! Т’брандт!». «Пожар!» то есть, по-нашему. Каждый пожарный обязан знать, где находится брандмауэр. Этим словом немцы называли сплошную каменную стену без проемов, разделяющую части здания, подобно переборкам в трюме корабля, чтобы огонь не охватил весь дом в случае пожара. Есть и английский аналог этого понятия, куда ж без него. Файрволл – «огненная стена». Брандмауэр
О вкусах не спорят, есть тысяча мнений… Меня, как и многих других пользователей, вполне устраивает «Agnitum Outpost» (www.agnitum.ru). Помимо множества бесспорных достоинств, подкупает модульность этого брандмауэра и возможность управлять его запуском и остановкой из командной строки, а не только вручную.
Модульность дает вполне реальный выигрыш, позволяя запускать лишь те компоненты ПО, которые нам необходимы, и только тогда, когда в них есть нужда. «Agnitum Outpost» можно разделить на следующие модули: собственно брандмауэр (служба «Agnitum Client Security Service»), интерфейс к нему и приложение, ответственное за обновление продукта и связь пользователей с разработчиками (feedback).
После обычной установки Outpost нам потребуется немножечко его подкрутить, чтобы сделать более сговорчивым в плане управляемости. Для этого:
во-первых, те, кто не желает, чтобы в Agnitum автоматически отправлялись сведения с их компьютеров, могут отключить автоматический запуск процесса «feedback» (с помощью «Пуск/Выполнить/msconfig/Автозагрузка») – это уже упомянутый компонент обратной связи;
во-вторых, там же следует отключить запуск процесса «op_mon» – интерфейс к службе брандмауэра – мы намерены запускать его не при запуске Windows, а по необходимости;
в-третьих, Outpost будет сопротивляться тому, чтобы его отключали, и это понятно: Agnitum заботится о нашей безопасности. Вот только мы уже не дети и вполне в состоянии позаботиться о себе сами, поэтому все же укажем брандмауэру, что нуждаемся в его услугах, а не опеке. На рис. 1 выделены параметры, которым надо установить именно те значения, что показаны;

в-четвертых, службу «Agnitum Client Security Service» следует перевести в ручной режим запуска – см. рис. 2.

Наш компьютер изначально чист, как слеза ребенка, мы спокойны и уверены в своих силах, поэтому брандмауэр, как и антивирус, нужен нам не всегда, а только при подключении к Интернету. Продолжим реализацию наших идей. Пишем задания для управления брандмауэром.
Первое задание (листинг 1) запускает брандмауэр. Запускать интерфейс (значок со щитом в трее) или нет – личное дело каждого, и регулируется этот вопрос в задании «outpost_start» одною из двух строк:
START-APP: "C:\Program Files\Agnitum\Outpost Firewall Pro\op_mon.exe" /tray
\ START-APP: net start "Agnitum Client Security Service"
Первая из них запустит как службу, так и интерфейс к ней, вторая – только службу. По умолчанию, работает первый вариант запуска, второй закомментирован.
Второе задание (листинг 2) останавливает брандмауэр в два приема. Сначала останавливается служба, затем «срубается» интерфейс управления. Как мы помним, это отдельное приложение, и после вдумчивой настройки файрволла его, в принципе, можно и не запускать. Мы живем в свободной стране. Реализуем свободу выбора: возможность быстрого запуска или убивания интерфейса к брандмауэру вручную. Повесим это дело на горячую кнопку «Ctrl-O» – см. листинг 3.
#( outpost_start
NoLog
NoDel
AsLoggedUser
LoadProfile
Time: 41 16 18 10 * 2007
Action:
SWHide NormalPriority
PROC-EXIST: "acs.exe" NOT
IF
FILE-EXIST: "C:\Program Files\Agnitum\Outpost Firewall Pro\op_mon.exe"
IF
START-APP: "C:\Program Files\Agnitum\Outpost Firewall Pro\op_mon.exe" /tray
\ START-APP: net start "Agnitum Client Security Service"
THEN
THEN
)#
Листинг 1
#( outpost_stop
NoLog
RunOnce
Time: 41 16 18 10 * 2007
NoDel
AsLoggedUser
LoadProfile
Action:
SWHide NormalPriority
PROC-EXIST: "acs.exe"
IF
START-APP: net stop "Agnitum Client Security Service"
THEN
PROC-EXIST: "op_mon.exe"
IF
KILL: "op_mon.exe"
THEN
PAUSE: 100
TRAY-REFRESH
)#
Листинг 2
#( opmon
NoLog
NoDel
AsLoggedUser
LoadProfile
WatchHotKey: "^@o"
Action:
ShowMinimized NormalPriority
PROC-EXIST: "op_mon.exe"
IF
KILL: "op_mon.exe"
PAUSE: 100
TRAY-REFRESH
ELSE
START-APP: "C:\Program Files\Agnitum\Outpost Firewall Pro\op_mon.exe" /tray
THEN
)#
Листинг 3
Несмотря на усталость, продолжаем – стрижка только начата. В листинге 4 приведено задание для nnCron, которое будет возводить все нужные нам защитные редуты в момент соединения с Интернетом. Как видно из текста, будет запущен брандмауэр, антивирусный файловый монитор (DrWeb Spider NT) и, если почтовый клиент работает, почтовый монитор (DrWeb Spider Mail).
Мы все учились понемногу, чему-нибудь и как-нибудь. Встречая на вечеринке стоматолога, мы понимаем, что давно уже пора заняться своими зубами. Познакомившись со слесарем-водопроводчиком, вспоминаем, что неплохо бы заменить прокладки в кранах. А когда шапочные знакомцы узнают, что мы что-то смыслим в компьютерах, они стараются залучить нас к себе домой – помочь в их сложных и порой неоднозначных отношениях с железным другом. Ничего не попишешь, карма такая. Слава умельца бежит впереди нас.
Мастер отличается от простого смертного тем, что в его багаже есть как зарекомендовавшие себя методы, так и инструменты, их реализующие. Чтобы хоть как-то разгрузить свою насыщенную жизнь от проблем полузнакомцев, удобно использовать удаленное управление их компьютерами. Утилита «rAdmin» – как раз из этой серии. В процессе «окучивания» компьютера очередного клиента я устанавливаю на нем серверную часть rAdmin’а. После установки rAdmin службу его, «rAdmin server», перевожу в ручной режим запуска с тем, чтобы она не болталась в памяти и не отнимала ее у очень важных приложений типа «Counter Strike». А вот при соединении с Интернетом пусть запускается, а уж мы, при необходимости, удаленно, попивая дома кофеек, разберемся с ведомым компьютером.
Естественно, при разрыве соединения служба будет остановлена. Два соответствующих задания приведены в листинге 5.
Последние закомментированные строки в задании «OnBeginConnect» запускают менеджер закачек «ReGet», если очередь закачек не пустая. Тот же самый финт несложно проделать и с любым другим менеджером.
#( OnBeginConnect
NoLog
AsLoggedUser
WatchWinCreate: "Установка связи*"
Action:
SWHide NormalPriority
outpost_start RUN
spidernt_start RUN
PROC-EXIST: "OUTLOOK.EXE"
IF
spiderml_start RUN
THEN
\ rAdmin_start RUN
\ ShowNormal NormalPriority
\
\ \ Если очередь закачек не пустая, запустить ReGet
\ 2300. FILE-SIZE: "C:\Program Files\ReGet Software\ReGet Deluxe\Queue.wjr" D<
\ IF
\ START-APP: "C:\Program Files\ReGet Software\ReGet Deluxe\ReGetDx.exe"
\ THEN
)#
Листинг 4
#( rAdmin_start
NoLog
NoDel
AsLoggedUser
LoadProfile
RunOnce
Time: 41 16 18 10 * 2007
Action:
SWHide NormalPriority
\ Если rAdmin еще не запущен,
PROC-EXIST: "rserver3.exe" NOT
IF
\ и он, собственно, установлен на компе,
FILE-EXIST: "C:\WINDOWS\system32\rserver30\newtstop.ini"
IF
\ Приказать ему спрятать иконку
S" C:\WINDOWS\system32\rserver30\newtstop.ini" INI-FILENAME
S" options" INI-SECTION
S" hide_tray_icon" S" 1" INI-SET-VALUE
\ Запустить службу "rAdmin server"
START-APP: net start "Radmin Server V3"
THEN
THEN
)#
#( rAdmin_stop
NoLog
NoDel
AsLoggedUser
LoadProfile
RunOnce
Time: 41 16 18 10 * 2007
Action:
SWHide NormalPriority
\ Если rAdmin запущен
PROC-EXIST: "rserver3.exe"
IF
\ Остановить службу "rAdmin server"
START-APP: net stop "Radmin Server V3"
THEN
)#
Листинг 5
Продолжаем. Ежику понятно, что поздно пить боржоми в известных случаях. Поэтому редуты следует возводить не по факту соединения с Интернетом, а при старте процесса.
Если вы пользуетесь модемным соединением (dial-up), то при начале соединения, когда модем хрипит и пищит, на экране появляется окошко с заголовком «Установка связи…» и индикатором процесса. Вот на это окошко и реагирует наш планировщик, запуская задание «OnBeginConnect».
Если же вы счастливый обладатель выделенки, то при подключении к Интернету через локальную сеть появится окошко с заголовком «Подключение по локальной…». Умница nnCron и на него среагирует благодаря заданию «OnNetConnect» из листинга 6.
Наконец, если вы вчера выключили компьютер, не отсоединившись от Сети, то при сегодняшнем включении соединение будет активным, и нам нельзя оставить этот факт без внимания. Надо запустить все те же защитные механизмы при старте системы, иначе мы рискуем подцепить что-то нехорошее… За этим следит задание OnLogon.
В самом начале этого задания есть механизмы работы с eBoost, но их мы обсудим попозже.
#( OnNetConnect
NoLog
AsLoggedUser
LoadProfile
WatchWinCreate: "Подключение по локальной*"
Action:
SWHide NormalPriority
OnBeginConnect RUN
)#
#( OnLogon
NoLog
AsLoggedUser
LoadProfile
WatchLogon: "*"
Action:
SWHide NormalPriority
\ Если вставлена флешка, содержащая файл кэша для eBoostr
FILE-EXIST: "%eBoostr_Letter%:\eboostr.dat"
IF eBoostr_start RUN THEN
HOST-EXIST: "rbc.ru"
IF
\ Если защиты нет, включить ее
PROC-EXIST: "acs.exe" NOT
IF
OnBeginConnect RUN
THEN
THEN
)#
Листинг 6
Вспомним термины из предыдущей статьи. «Манипуляторы» – задания для планировщика, что-то запускающие и выполняющие. «Нервные импульсы», управляющие «манипуляторами» – задания, реагирующие на происходящие в системе события и заставляющие компьютер шевелить клешнями, то бишь, «манипуляторами».
В соответствии с этой классификацией, задания «rAdmin_start» и «rAdmin_stop» являются манипуляторами, «OnBeginConnect» сочетает в себе признаки как «манипулятора», так и «нервного импульса» (реагирует на событие «старт соединения через dial-up»), а «OnNetConnect», «OnLogon» – однозначно «импульсы», чистая идея, так сказать.
Итак, с запуском защиты мы разобрались. Займемся ее остановкой. Импульс-манипулятор «OnDisConnect» из седьмого листинга реагирует на разрыв модемного соединения. Он останавливает и выгружает из памяти все, что можно: брандмауэр, все модули антивируса, менеджер закачек, rAdmin.
А вот установление/разрыв связи через локальную сеть обнаружить не так легко, как в случае с dial-up. У nnCron просто отсутствуют обработчики соответствующих событий, поэтому придется изощряться. В листинге 8 приведено задание «Ежеминутно»; в нем организован цикл, в теле которого и выполняется вся работа. Таким образом, на самом деле nnCron выполняет это задание каждые 10 секунд. Вполне достаточно для оперативного реагирования на изменение ситуации со связью.
Если выход в большой мир есть (доступен сайт www.rbc.ru; можно использовать любой другой, например, mail.ru), а защиты нет, компьютер быстренько исправит оплошность, запустив все, что требуется.
Напротив, если связи нет и нет процесса ее установления (соответствующих окошек), запускается «OnDisconnect», возвращающий все ресурсы компьютера сидящему за ним хозяину.
Таким образом, наш компьютер, как мы и планировали, становится все более разумным и услужливым, предоставляя всю свою мощь пользователю и не снижая при этом степени защищенности.
#( OnDisconnect
NoLog
AsLoggedUser
LoadProfile
WatchDisconnect
VARIABLE DISCONN
Action:
SWHide NormalPriority
DISCONN GET
FILE-EXIST: "%TEMP%\connected.ok"
IF
FILE-DELETE: "%TEMP%\connected.ok"
PLAY-SOUND: "Windows XP – извлечение оборудования.wav"
THEN
PROC-EXIST: "ftp.exe"
IF
KILL: ftp.exe
THEN
spiderml_stop RUN
spidernt_stop RUN
outpost_stop RUN
PROC-EXIST: "ReGetDx.exe"
IF
KILL: "ReGetDx.exe"
TRAY-REFRESH
THEN
\ rAdmin_stop RUN
DISCONN RELEASE
)#
Листинг 7
#( Ежеминутно
NoLog
NoDel
AsLoggedUser
LoadProfile
VARIABLE EVERY_MIN
Action:
SWHide NormalPriority
\ 6 итераций цикла с паузой в 10 секунд
6 0 DO
EVERY_MIN GET
\ Если флешка с еБустером "отвалилась", остановить службу
FILE-EXIST: "%eBoostr_Letter%:\eboostr.dat" NOT
IF
eBoostr_stop RUN
THEN
\ Если связь с Интернетом есть
HOST-EXIST: "rbc.ru"
IF
\ Если защиты нет, включить ее
PROC-EXIST: "acs.exe" NOT
IF
OnBeginConnect RUN
THEN
ELSE
WIN-EXIST: "Установка связи*"
IF
ELSE
WIN-EXIST: "Подключение по локальной*"
IF
ELSE
OnDisconnect RUN
THEN
THEN
THEN
PAUSE: 10000
EVERY_MIN RELEASE
LOOP
)#
Листинг 8
Под занавес позволю себе порассуждать об антивирусах и брандмауэрах.
Конечно же, пользоваться следует продуктами известных производителей. Хотя бы потому, что их безнадежная борьба с хаосом весьма ресурсоемка. Не думаю, что малоизвестные производители бесплатных антивирусов способны организовать и годами поддерживать круглосуточную работу службы мониторинга и реагирования на новые вирусы. Ведь обновления антивирусных баз от крупных производителей выпускаются многажды каждый день! Способны на это умники, родившие бесплатные чудеса? Сомневаюсь…
В последнее время стало модным все пихать «в один флакон». Флаконная экономика, так сказать… Производители антивирусов клепают монстров, включающих антивирус, антиспам, брандмауэр, планировщик. Производители брандмауэров проснулись и кинулись вдогонку давно ушедшему поезду, спешно лепя антивирусы. Интересно, как у них со службой мониторинга обстоит?
Может, я не прав, но мне удобнее в качестве антивируса использовать именно антивирус, в качестве сетевого экрана – хороший файрволл, а не непонятные конгломераты.
Антиспам
Пару слов о спаме. Имея свой сайт, я получаю от 20 до 90 спамерских посланий ежедневно. Понятно, что выгребать из этого хлама нормальные письма трудновато. Вручную разгребать все это барахло через web-интерфейс мне лениво. Хочется нажать кнопку в почтовике, принять всю почту, и чтобы зерна от плевел самостоятельно отделились, да еще спинку кто бы почесал… В общем, нужен персональный антиспам.
Начал с бесплатного продукта «Agnitum Spam Terrier». Вроде бы все опрятно и прилично, интерфейс радует, можно задавать как уровень реагирования, так и указывать «терьеру», что является спамом, а что нет, – «натаскивать» его. Запускал его только при старте MS Outlook, при закрытии Outlook выгружал и «терьера». Все шло хорошо. Месяца два-три. А потом что-то в нем переглючило, и при очередном старте «терьерчик», пытаясь переиндексировать свою базочку, занимал все 100% процессорного времени. И конца-края этому не было видно. Снес. Удалил базу. Поставил заново. Через пару месяцев – та же история. Удалил к чертовой бабушке. Брандмауэр у них отличный…
Следующим кандидатом был «DrWeb» – версия, включающая в себя модуль антиспама. Ну, это что-то! Это чудо принципиально необучаемое, ему даже не подскажешь, что письмо-таки легитимное. Повлиять на правильность распознавания можно, только переслав письмо, на котором DrWeb-антиспам ложно сработал, даниловским ребятам и попросив их учесть это в дальнейшем. Как вы думаете, учтут?
К тому же, через пару дней использования этот «продукт» стал валить в папку спама вообще все письма, невзирая ни на что. Снес. Так и вспоминается фраза японца из анекдота: «Дети у вас хорошие. Но все, что вы делаете руками…». Ну и как после этого сомневаться в библейском «оставьте богу богово, а кесарю – кесарево»?
Очередным кандидатом в помощники был «SPAMfighter». Продукт великолепный, ложных срабатываний очень мало, настраивается чувствительность, поддается обучению, интерфейс и статистика – выше всяких похвал. Вы еще не побежали на их сайт вприпрыжку? Конечно же, к этой бочке меда полагается своя ложка дегтя. Ребята хотят денег. По завершении триального периода снижается функциональность и в отправляемые вами письма добавляются глупые рекламные фразочки. Пусть их, конечно… Но я сын своего времени и своего народа. При нашей-то страсти к халяве мне предлагают такое! Снес.
Наверное, многие из вас могут порекомендовать свой любимый продукт, но у меня на тот момент желание «бороться и искать, найти и не сдаваться» упало ниже плинтуса. Обратил взгляд на родные свойства MS Outlook. Оказалось, что все не так уж плохо. Достаточно заблокировать нежелательные кодировки и домены типа азиатских (см. рис. 3), и дышать становится значительно легче. Плюс вдумчивое создание полутора десятков правил в MS Outlook, отфильтровывающих всякую галиматью по формальным признакам.

В общем, остановился пока на этом варианте. Процентов 90-95 спама отсеивается, 3-5 процентов легитимных писем ошибочно валятся в спам-папку, но не удаляются бесследно, их можно оттуда выудить.
|