среда, 7 декабря 2011 г.

Еще раз о Kido

Интересная, вообще говоря, штука - Kido. Казалось бы, информация уже устарела, так как Касперский давно, вроде бы, проблему решил. Однако, всегда случается так, что она всплывает вновь и вновь. Причин для этого на нашем заводе оказалось всего две - пользователи по-прежнему заносят его откуда попало, а жесткие  меры контроля легко разбиваются об какую-нибудь служебку начальника отдела, подписанную аж генеральным директором - со списком пользователей, которым жутко необходимо для работы дать права локального администратора. Как ни ругайся, не понимают, приходится давать. Я вообще бы на уровне общероссийского законодательства запретил предоставлять такие права и вообще разрешать в России программное обеспечение, требующее для обычного пользователя компьютера непременно админских прав! А вторая причина - ребята из нашей техподдержки привыкли запускать KidoKiller без всяких опций, если компьютер поступает к ним на лечение. А без опций выполняется только проверка системных разделов, а не всех дисков вообще. Так что лежит себе кидошка где-нибудь в каталогах в пассивном виде, пока пользователь с локальными админскими правами туда не залезет - и все началось по-новой...
Воевать с некомпетентностью я устал и просто сделал обходное решение. А именно - скрипт, который копирует KidoKiller на диск пользователя и запускает его в режиме мониторинга. При этом сканируются потоки, сервисы и задания планировщика, если что-то вылезло - тут же запускается лечение. Таким образом, не обязательно постоянно лечить компьютеры, просто само распространение kido пресекается и пакостить он уже практически не может. Конечно, при этом отъедается от оперативной памяти несколько мегабайт - от 2 до 8, я наблюдал на разных рабочих станциях. Однако, может еще напугать, что с запущенным процессом KK.exe периодически диспетчер показывает, как будто этот процесс подскакивает до 20-50 процентов использования процессорного времени, но я при этом не заметил никакого ощутимого падения производительности или зависания других приложений, и потому сделал вывод, что скачки очень кратковренные, а видим мы их только из-за инерции отображения в диспетчере задач.
Скрип очень простой:

copy \\server\kklogs\kk.exe  %SYSTEMDRIVE%\  /Y  &&  %SYSTEMDRIVE%\kk.exe -m -s -l \\server\kklogs\%COMPUTERNAME%_kklog.txt


Опции вполне понятны - запуск в режиме мониторинга, тихий (то есть без открытия окна и уведомлений), лог файл пишется на сервер, чтобы централизованно отслеживать, где были срабатывания. Добавлю только, что скрипт не нужно запускать как скрипт автозапуска, потому что учетная запись SYSTEM не увидит общих папок на серверах, и скрипт не отработает. Я добавил его в логон-скрипты, то есть при входе пользователя в систему он запускается, а ресурс \\server\kklogs просто сделал доступным на запись пользователям домена - это не опасно в данном случае, так как логон информация не критична, она постоянно обновляется.
По этой информации в первый же день работы было выловлено 10 компьютеров, на которых было таки заражение, лечение запустилось автоматически, и на следующий день на этих компьютерах kido уже не светился. KidoKiller, оказалось, прекрасно отрабатывает под правами обычного пользователя. Причем, даже если пролечиваются только избранные источники кидо в отдельных каталогах, это не страшно, если где-то кидо еще лежит в пассивном виде у пользователя. Снова будет обнаружен и обезврежен при активации. А вот если компьютер такого пользователя пролечить полностью - то есть все жесткие диски, то это займет изрядное время, хотя загружается не оперативная память и процессор в основном, а система ввода-вывода HDD. Проблема решена с умеренными затратами при достаточной эффективности.

вторник, 30 августа 2011 г.

Установка и настройка ejabberd на ubuntu-server 11.04

     И вот наступил этот страшный момент - осознание того, что нужно избавляться от тяжкого наследия прошлых времен :) Ну, если конкретно, то на нашем заводе довольно давно уже воткнули программулину такую - спикерфон, чтобы пользователи могли в реальном времени общаться между собой почти так же, как в привычной и понятной аське, но не могли при этом отвлекаться на внешние разговоры. ICQ на предприятии, понятное дело, запрещена всем, кроме небольшой группы избранных. Претензий к спикерфону было всего две, но существенные. Первая - бесплатная версия программы позволяет пользователю как угодно записывать свой никнейм, и тут уж у нас постарались все, кто во что горазд. В результате - никого невозможно найти по его настоящему имени и номеру отдела или цеха, где он работает. Бардак, одним словом, Гуляй-Поле и махновщина. Платную же покупать не хотелось, да и тестирование ее выявило кучу проблем с настройками и интерфейсом. И вторая проблема, еще более неприятная - бесплатная версия пользуется широковещательными рассылками, которые шлет туда-сюда практически постоянно. Сам-то спикерфон, хоть и нагружает таким образом сеть, но не слишком чрезмерно, хотя и этой полосы пропускания жалко в принципе, уж лучше пусть полезные программы ее отъедают в сети. Беда в том, что есть и куча другого самописного и проприетарного софта, в равной степени криворуко написанного, независимо от платности или бесплатности, а также не очень исправного оборудования, которое к тому же имеет тенденцию и далее иногда ломаться. Что очень забивает сеть всяким мусором. И вот чтобы от этого мусора страдать поменьше и чтобы легче было локализовывать проблемы, буде они появятся, очень захотелось мне сегментировать сеть. Ну то есть ничего нового я не придумал - обычное классическое решение, всем известное. И поскольку в узлах у меня стоят далеко не циски, то есть всяких сетевых хелперов для проброски избранных пакетов мне не сделать, понятно, что как только я сеть сегментирую, спикерфон тут же сдохнет - ну то есть не совсем сдохнет, но общее пространство развалится на несколько сегментов, пользователи в которых болтать друг с другом не смогут. Да и вообще - глючная виндовская муть этот спикерфон.
     Надо сказать, что раньше я его никогда не ставил - ну вот не довелось, и все. Везде, где работал, не юзали его, вот и получился пробел в знаниях. Ну да не беда, я уже привык ставить и настраивать все, что угодно, даже незнакомое - великий и ужасный Гугль всегда под рукой, найдем все, что угодно и сделаем. Ну да так оно и оказалось, за исключение двух мелких граблей - одни совсем смешные, маленькие такие детские грабельки, а другие - не то, чтобы страшные, но пришлось поискать в инете, да и самому головой покумекать.
Классически под рутом или под sudo делаем
 apt-get install ejabberd
 - в результате сервер уже встал, но еще не настроен.
Открываем конфигурационный файл /etc/ejabberd/ejabberd.cfg и вносим в него небольшие изменения.
override_local.
{acl, admin, {user, "admin", "server_name"}}.
{hosts, ["server-name"].
     Эти строки обычно уже есть всегда, нужно их только раскомментировать и изменить данные администратора и имя сервера на собственные. Ну а дальше уж меняем настройки, кто во что горазд. Собственно, тут даже и man не особенно нужен, и Google тоже - в конфиге все комментарии есть, просто выбираем и меняем то, что нам нужно.
     Обычно юзерам позволяют самостоятельно регистрироваться, расскомментируя и меняя строку в правилах
{access, register, [{allow, all}]}.
     Как бы не так - это как раз то, чего мне даром не надо, оставляю закомментированной. Теперь юзеров могу добавлять только я, и соответственно, только я же могу править ростер, назначать никнеймы и все такое прочее. Только так можно гарантировать порядок.
     Назначаю язык по умолчанию:
{language, "ru"}
     Теперь регистрирую себя
ejabbderdctl register admin server_name password
     Перезапускаю сервер, все - в принципе по минимуму все работает.
     Все, да не все. На предприятии пользователю незачем самому заполнять ростер - мне нужно, чтобы у каждого сразу появлялся список всех пользователей предприятия. Значит, ростер нужно сделать общим. Снова в конфиг - раскомментируем строку:
{mod_shared_roster, []}.
     Сохраняем конфиг и снова перезапускаем сервис командой
/etc/init.d/ejabberd restart
     У меня все пользователи в одной группе, так что захожу в админку по адресу http://server_name:5280/admin и делаю группу общих контактов одну на всех - в поле члены для этого нужно прописать @all@, а в поле видимые группы пишу саму же эту группу.
     Позже я обнаружил, что если создавать еще группы и прописать юзера в другую группу, то из предыдущей он исчезает, даже если это группа @all@ - это в ejabberd недоработочка получилась нехорошая такая. Дело в том, что мне нужны групповые рассылки, и куда хардварнее тыкнуть при рассылке в одну группу, чем в несколько, когда нужно отправить сообщение всем. Для меня это неактуально - группа-то одна, но кому-то это может помешать. Так что я не стал искать в Google как это поправить, а просто плюнул и забыл.
     Ну конечно, я много чего еще поправил в конфиге под свои специфические нужды, но это уже не принципиально и никому не интересно - каждый может сделать это сам.
     Вот тут-то мне и попались первые детские грабельки. В ростере вместо никнейма отображался у всех jid (ну то есть, попросту, логин). Я вначале долго гуглил, изучал, как это поправить, нашел кучу рецептов, и только хотел было их начать пробовать, как мне пришла в голову счастливая мысль - что-то рецепты эти все попадаются довольно старые - несколько лет выдержки, а потом как будто отрезало, никто их не рерайтит, никто не комментирует... А не исправили ли уже все это. И точно. Стоило просто заполнить никнейм в vCard пользователя, как он тут же ( ну не совсем тут же, а после реконнекта клиента к серверу) высветился в ростере.
     Тут встал вопрос, который мой начальник ставит мне регулярно при запуске каждого сервера - а не интегрируешь ли ты его, дорогой, в Active Directory? Чтоб не париться потом, а заводить юзеров а домене и все будет сразу появляться. Отговорил - понимаю, что не так красиво смотрится. Но - домен иногда, хоть и крайне редко, но все же падает, пусть бы джаббер работал независимо от него. Во-вторых, не так давно я провел миграцию на уровень домена 2008 и обнаружил, что все рецепты интеграции ldap с  AD, которые прекрасно работали с Windows Server 2003 на 2008 почему-то благополучно сдохли. И забил на это, не стал пока допиливать проблему. Пусть это остается на совести мелкомягких - поменять детали протоколов, это их обычный способ мешать работать *nix серверам. Да и в AD хоть и поправил слегка бардак, оставшийся с прошлых времен, но все же не все данные вполне консистенты. Так что завел я пользователей и больше проблем не имею.
     Но тут настало время вторых грабель - посерьезнее. Безопасники, да и начальство, да и я сам, в общем, все - очень хотим иметь возможность читать логи сервера. Почему по умолчанию  этого модуля не включено - не понятно, казалось бы, нормальная вещь, всегда должна быть. Ан нет. Нужно ставить модуль mod_logxml. Здесь есть прекрасная инструкция, сработавшая почти без проблем, так что я отсылаю желающих к ней - Инструкция по установке модуля mod_logxml . Что я имел ввиду, когда сказал "почти" - при попытке установки вылетает ошибка, о которой я так ничего и не нашел в интернете по ее описанию, и кстати, забыл как она выглядела  в точности, а история команд к настоящему времени у меня уже затерлась черезчур далеко. Но подумав немного, я вспомнил, что ejabberd написан на erlang, и потому встроить новый модуль без пакета erlang не получится, хотя сам ejabberd без полного пакета прекрасно работает, видимо, ему достаточно только какого-то минимального интерпретатора, или что-то в этом роде. Так что я кликнул apt-get install erlang, поставив весь пакет, чтоб не думать слишком долго - и о чудо! - после чего build модуля сработал и логи послушно пошли ложиться в заданную папку. Но модули, однако, все xml, так что читать их не очень удобно. Тут я понял, что сам я парсер не напишу - не такой умный однако, потому нашел в инете прекрасную ссылку Парсер логов ejabberd от konsul и слезно попросил выслать мне файлик, на что любезный разработчик немедленно откликнулся. После чего я просто воткнул на сервер ejabberd еще и apache и поставил парсер - теперь логи можно видеть в браузере, не слишком упорядоченно, но раздражающие взгляд теги удалены, однако - все легче и удобнее, да и начальнику и безопасникам такой доступ уже можно давать. Понятно, что автора парсера я пока не спрашивал разрешения на его свободное распространение, потому, как честный человек, выложить его не могу. Но желающие могут сами его получить тем же способом, что и я - попросив в комментариях на том же сайте. И автору парсера будет приятно :)
     Ну вот, в общем-то и все. Ничего сложного нет, работает отлично, без сбоев. Тем более, что я поставил все на маленький такой выделенный сервачок на виртуальной машине Citrix XenServer и запасся резервными копиями. При минимальном опыте работы с серверами *nix работы немного и по установке, и по поддержанию. Если кто-то успешно интегрировал ejabberd с Windows Server 2008  и 2008 R2, прошу вас откликнуться в комментариях и выйти на связь - мне это очень любопытно.

вторник, 9 августа 2011 г.

Платформа, HDD и блок питания - три тормоза в развитии компьютеров

Все мы трепетно наблюдаем развитие новых технологий и ждем, когда наконец они начнут пробиваться на рынок. Уже начали, но увы, недостаточно быстро и очень в большой диспропорции между истинными потребностями пользователей и возможностями этих технологий. Конечно, вряд ли мое сообщение что-нибудь изменит в политике ведущих производителей - "голос единицы тоньше писка", как говаривал поэт Маяковский. Но все же - вдруг каким-то чудом какой-нибудь новый (или прежний :) ) Шаттлворт заглянет на эту страничку и вдохновится тем, что я скажу. А скажу я следующее.
Успехи в процессорной гонке и разработке новых спецификаций оперативной памяти, конечно же, впечатляющи. Но вот уже долгое время практически на всех компьютерах, на которых мне приходилось работать, как на рабочих станциях, так и на серверах, я наблюдаю одно и то же - неравномерную загрузку, а точнее, недогрузку практически всех компонентов компьютера, кроме какого-нибудь одного. Либо процессор взлетает под 100% (хотя это все реже и реже наблюдается, даже на высоконагруженных приложениях), либо оперативная память загружается под завязку (что происходит чаще, например, при работе с базами данных). Только не надо мне напоминать про оптимизацию, утечки и ошибки программного обеспечения - я имею ввиду, что именно в нормальных режимах происходит такое. Ну с процом и оперативкой все просто - если все, что можно, оптимизировано, то можно провести апгрейд. Это не самая сложная проблема. Сложнее, когда платформа сильно отстает по возможностям от процессора и оперативной памяти, а точнее - пропускная способность компонентов материнских плат оставляет желать лучшего, плетясь в хвосте у главных компонентов. Жесткий диск вообще упоминать даже не хочется - скорости чтения-записи так убоги, что хоть плачь. Даже у лучших самых скоростных. На предприятии все понятно - RAID с высокой избыточностью, и все летает. Но ведь это в разы удорожает всю систему! А что делать дома? Я ведь и дома хочу работать с личным сервером для хостинга моих же сайтов и прочее такое. SSD диски пока еще дороги и далеки от идеала. Конечно, они подешевеют года через два-три и все устаканится. Но и процессоры за это время уйдут вперед, и уже новую технологию придется искать для СХД! Возникшую некогда на заре развития компьютеров диспропорцию в пропускной способности компонентов компьютера так просто не исправить - нужен хороший рывок, направленный, сознательно нужно вбросить силы корпораций именно в этом направлении!
Ну мне, как потребителю, понятно, зачем это нужно - а зачем это самим корпорациям? Ну да все затем же, зачем они вообще существуют - для получения прибылей и сверхприбылей! Удешевление и улучшение компонентов с учетом устранения диспропорций позволит лучше работать компьютеру, полнее использовать другие недогружаемые сейчас компоненты, а значит - запускать более креативные игры, видео с лучшим качеством, новые сервисы и услуги и так далее, причем за ту же цену для потребителя. Помимо того, что в целом комп станет дешевле, доступнее для самых небогатых слоев покупателей, еще и число и качество сервисов вырастет на радость потребителю, а сервисы и ПО приносят прибыли, я предполагаю, гораздо больше, чем само железо! История показывает, что в лидеры продаж всегда выходят те, кто делает больше, лучше и дешевле, а не те, кто делает много, плохо и дорого! Не за счет заоблачных цен, а за счет заоблачных скоростей оборота средств всегда рождались и богатели лучшие финансовые империи!
Из тех миллиардов долларов, что тратятся на разработку железа, почему не выделить нужные суммы, чтобы:
1) резко удешевить и улушить SSD диски;
2) улучшить пропускную способность шин материнских плат на всех уровнях архитектуры;
3) договориться, наконец, ввести новый промышленный стандарт, и все же убрать из производства архаичные формы BIOS и все, с ними связанное, что тормозит скорость загрузки и ограничивает количество и виды разделов HDD;
4) разработать и удешевить наконец-то блоки питания компьютеров, сделав их полностью полупроводниковыми, бесшумными и нетепловыделяющими до такой степени - технологии для это существуют уже лет 30, только нужно сделать их дешевеле.
Господа производители!!! Сделайте все это и я гарантирую, что ваши продажи компьютеров взлетят до небес несмотря ни на какие финансовые кризисы! Не нужно сосредоточиваться только лишь на презентабельных красивостях новых потребительских устройств, безусловно, красивых и иногда даже удобных для простого юзера. Сделайте миру хорошо, и мир ответит вам тем же! :)