Оптимизируй это! или как нам обустроить компьютер |
|
|
Часть IIIБрандмауэрВсе мы помним, как Тиль Уленшпигель бежал по улице, крича во всё горло: «Т’брандт! Т’брандт!». «Пожар!», то есть, по-нашему. Каждый пожарный обязан знать, где стоит брандмауэр. Этим словом немцы назвали сплошную каменную стену без проёмов, разделяющую части здания, подобно переборкам в трюме корабля, - чтобы огонь не охватил весь дом в случае пожара. Есть и английский аналог этого понятия, куда ж без него. Файрволл – «огненная стена». Меня, как и многих других пользователей, вполне устраивает «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 до 200 спамерских посланий ежедневно. Понятно, что выгребать из этого хлама нормальные письма трудновато. Вручную разгребать всё это барахло через web-интерфейс мне лениво. Хочется нажать кнопку в почтовике, принять всю почту, да ещё что бы зёрна от плевел самостоятельно отделились, да ещё кто бы спинку почесал… В-общем, нужен персональный антиспам. Начал с бесплатного продукта «Agnitum Spam Terrier». Вроде бы всё опрятненько и прилично, интерфейс радует, можно задавать как уровень реагирования, так и указывать «терьеру», что является спамом, а что нет, – «натаскивать» его. В лучших своих традициях, запускал его только при старте MS Outlook, при закрытии Outlook выгружал и «терьера». Всё шло хорошо. Месяца два-три. А потом что-то в нём переглючило, и при очередном старте «терьерчик», пытаясь переиндексировать свою базочку, занимал все 100% процессорного времени. И конца-края этому не было видно. Снёс. Удалил базу. Поставил заново. Через пару месяцев – та же история. Удалил к чёртовой бабушке. Брандмауэр у них отличный… Следующим кандидатом был «DrWeb» - версия, включающая в себя модуль антиспама. Ну, это что-то! Это чудо принципиально необучаемое, ему даже не подскажешь, что письмо таки легитимное. Повлиять на правильность распознавания можно, только переслав письмо, на котором DrWeb-антиспам ложно сработал, даниловским ребятам и попросив их учесть это в дальнейшем. Как вы думаете, учтут? К тому же, через пару дней использования этот «продукт» стал валить в папку спама вообще все мои письма, невзирая ни на что. Снёс, дрожа от нетерпения. Так и вспоминается фраза японца из анекдота: «Дети у вас хорошие. Но всё, что вы делаете руками…». Очередным кандидатом в помощники был «SPAMfighter». Продукт великолепный, ложных срабатываний очень мало, настраивается чувствительность, поддаётся обучению, интерфейс и статистика – выше всяких похвал. Вы ещё не побежали на их сайт вприпрыжку? Конечно же, к этой бочке мёда полагается своя ложка дёгтя. Ребята хотят денег. По завершении триального периода снижается функциональность и в отправляемые вами письма добавляются глупые рекламные фразочки. Я не против, конечно, пусть их… Но я сын своего времени и своего народа. При нашей-то страсти к халяве мне предлагают такое! Снёс. Наверное, многие из вас могут порекомендовать свой любимый продукт, но у меня на тот момент желание «бороться и искать, найти и не сдаваться» упало ниже плинтуса. Обратил взгляд на родные свойства MS Outlook. Оказалось, не так уж плохо. Достаточно заблокировать нежелательные кодировки и домены типа азиатских (см. рис. 3), и дышать становится значительно легче. Плюс вдумчивое создание полутора десятков правил в MS Outlook, отфильтровывающих всякую галиматью по формальным признакам. В-общем, пока остановился на этом варианте. Процентов 90-95 спама отсеивается, 3-5 процентов легитимных писем ошибочно валятся в спам-папку, но не удаляются бесследно, их можно оттуда выудить.
рис. 1
рис. 2
рис. 3 |
|
|