По эту сторону взлома

Блин, неприятно оказываться взломанным… Злые хацкеры из Бразилии поломали мне хостинги – дефейснули, точнее, через очередную дырку в пхп-софте клиентов, в принципе, это фигня, но вот дальнейший разбор полетов показал, что взлом зашел слишком далеко – на серваке обнаружился rootkit. Штука весьма неприятная, но тоже лечимая – поскольку удалось вычислить кто и как им управляет и я это дело быстренько закрыл, но потом оказалось, что половина системных файлов уже пропатчена для того, чтобы руткит нельзя было вычислить. Помогла штука под названием busybox – она включает в себя практически все файлы, которые обычно подменяются. С ее помощью я начал вычищать и восстанавливать файлы. Хакеры (или руткит) использовали очень интересную штуку – аттрибуты файлов (у ext2 файловой системы есть набор некоторых аттрибутов, которые так просто и не увидишь). Когда я пытался удалить “зараженный” файл, система сообщала мне, что Operation not permitted. И это при том, что я был рутом! Спасли команды lsattr, chattr – которые как раз и показывают и меняют эти хитрые аттрибуты. В общем процесс более-менее наладился, пока я не напоролся на файл ifconfig – он не удалялся никак… Дальнейшие проверки показали, что файловая система повреждена – inode файла был отрицательным. Я попробовал запустить fsck – меня предупредили о неприятностях и я ребутнул машину. Больше я ее удаленно не видел. Звонок к провайдеру обрадовал – на консоли висела надпись Unable to mount root file system.
Пришлось ехать на площадку к провайдеру, большое спасибо товарищу apl, за содействие в последующем. На месте оказалось, что fsck после 2х часовой работы не принес никаких результатов и linux пришлось снести… Хорошо, что были бэкапы юзерских данных и конфигов. Правда я уже вторые сутки занимаюсь восстановлением сервера и спал за это время только часа четыре, но все-равно, могло быть и хуже.
Теперь там вместо линукса стоит FreeBSD и я надеюсь, что с безопасностью будет полегче, все ж под фрю ставить необходимый софт и его потом апдейтить значительно легче, чем под линух. Да и саму фрю держать в свежем виде легче.
Из всего произошедшего можно сделать следующие выводы:
-Паранойя в среде админов – это правильное явление.
-Самое большое внимание надо уделять php – именно тудой происходит большинство “пролезаний” в систему.
-Нужно ставить системы мониторинга целостности системы и регулярно читать их отчеты.
-Вполне неплохим решением может быть установка системы обнаружения проникновения или осуществления попыток.
-Фаерволл должен находится в режиме default to deny и держать открытым ограниченное количество портов. В идеале не должны быть вообще доступны непривилегированные порты.
-/tmp должна быть отдельной системой, смонтированной как nodev, nosuid, noexec – т.е. даже если “плохие парни” выполнят код, скачают в темп какой-нить эксплойт, то запустить его им не удастся.
Наверняка найдется еще куча советов, но сейчас я очень хочу спать и вряд ли их вспомню 🙂

Vi iMproved

Напишу-ка я про один из самых интересных текстовых редакторов. Идея появилась после того, как я нашел аддин – интегрирующий основную функциональность в студию.
http://viemu.com/
В связи с моим администраторским увлечением (я занимаюсь небольшим саппортом нескольких серверов фирмы моих знакомых) мне пришлось познакомиться с консолью юникса, а там и с текстовыми редакторами – конфиги-то надо править 🙂
Почитав доки я узнал, что один из самых используемых редакторов – это vi (vim). Запустил я vim httpd.conf, после нескольких нажатий кнопок на клавиатуре я чуть не угробил весь конфиг и крыл матом весь свет – они вызывали совсем не те действия, о которых я думал. С горем пополам я вышел из редактора и решил сначала прочесть по нему доку. Прошло некоторое время и я понял, что для технической работы с текстом – это просто лучшее что есть в мире 🙂
У него есть два режима работы – командный и непосредственно ввод текста.
Первый режим – это именно то, что в виндовсе мы делаем при помощи мышки и иногда клавиатуры – перемещение по тексту, поиск фрагментов, замена, разметка и еще множество всего. Второй режим – это привычный всем ввод текста.
Вся прелесть редактора именно в этом первом режиме. Нажатиями нескольких кнопок можно сделать огромное количество действий, с мышкой – это займет больше времени.
Небольшой пример:
У меня курсор стоит на названии переменной m_vertex; и тут я понимаю, что мне бы хотелось заменить его на m_firstVertex.
Все просто, я нажимаю : и вписываю: %s/m_vertex/m_firstVertex/g
В обычном случае мне пришлось бы сделать следующее: Ctrl-H, клик мышкой в поле ввода искомого текста, ввод слова, Tab, ввод слова, .
Минус второго способа не только в том, что надо работать обоими инструментами ввода, но и в том, что кнопки, которые надо нажимать расположены не очень удобно и по этому приходится отвлекать руки от привычного положения (начальная позиция).
Или очень тривиальный пример. Надо добавить две переменные:
float m_dx;
float m_dy;

в vim – надо набрать первую строку
float m_dx;

перейти в командный режим и нажать yyp (скопировать в буфер строку и вставить ее следующей)
float m_dx;
float m_dx;

после этого перейти в конец слова m_dx и заменить на m_dy.

Подведя итог скажу, что в большинстве своем набор текста программы – это постоянные повторения и замены, используя vim с ними можно справиться значительно быстрее чем используя мышку с клавиатурой в обычном режиме.
Кстати, плюсом этого плагина еще и является то, что можно использовать и привычные средства, которые есть в студии (Ctrl-C, Ctrl-V итд).
Стоимость плагина правда впечатляет, но пока что evaluation period, а там посмотрим 🙂

Многопоточность

Я всегда боялся многопоточности, старался избегать ее всеми возможными путями. Еще в институте, когда у нас на занятиях по программированию началось изучение оной, я старался избежать расплаты 🙂 страшные названия мьютекс, семафор, критическая секция и прочие ввергали меня в панику.
Это первая часть вступления, теперь вторая 🙂
Меня давно манили сети, те, которые компьютерные, мне было интересно читать рассказы про хакеров, описания эксплойтов и прочую “околобезопасностную” байду, возможно именно поэтому я когда-то согласился саппортить несколько юникс-серверов. Я изучал юникс, сетевую безопасность и вообще работу сетей на практике, и наверно это и пнуло меня согласиться на участие в разработке сетевой части в нашем текущем проекте. И тут я понял – сетевой код без многопоточности – это практически нонсенс… И мне пришлось изучать потоки и все те страшные вещи, которых я так боялся. Результат меня несколько поразил – оказывается, насколько проще можно было бы реализовать то многое, что я когда-то делал, если делать его в несколько потоков. Многопоточность – это очень полезный инструмент и теперь я его пытаюсь ткнуть куда только можно, пройдет некоторое время и придет понимание – где это надо, а где нет 🙂

Собсно выводом из этого всего можно сделать следующее: “Знание сила, и если есть возможность что-то узнать или чему-то научиться, то надо это сделать”. Не надо бояться или говорить “я как-нить без этого справлюсь”, как вы можете так утверждать, если вы этого не знаете, или не умеете? 🙂

Реконструкция ВОВ

Побывал я в воскресенье на реконструкции войны – интересная штука оказалась. Собралась огромная куча народа, которые были одеты в униформу того времени (замечу, что они тратят кучу денег и времени на поиск действительно тех вещей), выкопали траншеи и начали воевать 🙂 Ну точнее, когда я там появился, то все уже было подготовлено.
Имитировался 45 год, Зейдельские высоты, наши наступают и бьют немцев.


Фрагмент поля боя, если присмотреться, то даже видно танк 🙂

Зрелище действительно завораживающее – немцы сидят в окопах, наши идут, ползут, перебегают и выбивают немцев из первой линии обороны, после этого положение улучшается, так как в окопах не только немцы 🙂
Через некоторое время наши забрасывают дымовыми шашками немецкий дот, после чего подползли и подожгли его. А потом подъехали танки… Когда стреляет танк – это писец… Срабатывали все сигнализации у всех машин, если бы танк был не в 600, а в 100 метрах, то можно было бы и оглохнуть.
Замечу что пальба стояла невероятная, а когда начинал строчить пулемет, то понимаешь, насколько страшным изобретением он стал в свое время 🙂


А это я с stalker_rkka

Сумбур

Что-то давно не писал я, мысли вроде бы появляются, но потом хлоп – и нету 🙂
Съездил на праздники к бабушке в Ульяновку, что в 250 км от Киева. Прикольно там, спокойно, компов практически нету. С другой стороны, делать там, по большому счету, нечего. Вот народ и спивается потихоньку, или женится.
Для меня было несколько культурным шоком, что один мой друг, с которым я там даже в школе поучился, женился и даже уже имеет 10 месячного ребенка.
Когда тебе об этом рассказывают по телефону, то воспринимается это как-то так – формально, а вот когда ты заходишь к нему в гости, а там жена, ребенок, которому надо периодически пожрать дать, покачать на руках и еще как-то поразвлекать, внезапно что-то понимаешь…
Хотя сложно осознать, что чувак, с которым мы вместе прятались за столяркой покурить, ходили-бухали и вапще просто дружили, стал главой семейства.
Молод я и глуп еще, наверно 🙂