January 28th, 2011

Как пролезали ко мне в серверы

Когда у тебя на серверах под 300 с гаком доменов, то, что к кому-то рано или поздно пролезут, практически неизбежно.

В сайты на моих серверах пролезали примерно семь раз.

Во ВСЕХ случаях, за исключением двух (о которых ниже) пролезали через дырявые сторонние PHP скрипты. Это WordPress, PHPBB, FormMail и прочие.

В одном случае дырявый PHP скрипт был производства внутреннего, а написал его один из придурков-программистов. Суть дырки была в том, что часть GET запроса -- интерпретировалась в SQL код. Товарищ крякер (товарищ был из Бразилии, кстати) не будь дурак, сделал запрос SELECT password FROM users; (а придурок-программист пароли, конечно, не хешировал) и получил контроль над админкой, которую программист-придурок написал. Речь не о том, что все программисты -- придурки. Но придурков, ненаученных думать о безопасности, среди них -- вагон и тележка. Вот ведь лень одолела человека -- не мог сделать паролю банальный MD5, и сличать хеши, а не пароли.

В другой раз влезли через вусмерть дырявый древний фтп сервер на сервере, работающем под RedHat 6.2 (это не я музей ограбил -- это мне такой сервер достался). Обновить это дело было невозможно, поэтому я заявил, что я за поломку сервера не отвечаю. С него сняли всё серьёзное, оставили пару статических сайтов, и сервер тихо проработал, пока его не взломали крякеры. Взломали -- и фиг с ним, сайты перетащили на другой сервер, а его отправили на свалку.

Что они с этим делали? В шести случаях -- заливали свои скрипты, чтобы рассылать спам. В седьмом случае залили перловый скрипт, который явно кого-то DOS'ил. Узнал я об этом, когда заметил, что сервер медленно работает. Глянув в top -- офонарел, ибо *.pl отнимало более 50% процессора. Жаль, не сохранил я этот скриптец -- интересный он был.

Как я уже писал, не считай себя неуловимым Джо из-за того, что ты якобы никому не нужен. Увы, нужен. В мире дохрена козлов, рассылающих спам. И им нужен твой процессор. И твои реальные 100 мегабит.

Как всё это предотвратить? Предотвратить это при таком количестве доменов очень сложно -- за всеми банально не уследишь. Можно, конечно, запретить к чорту php и прочий скриптинг, но народ не поймёт -- и будет, в принципе, прав. Аудит кода тоже не сделаешь -- объёмы не те, да и не моя это работа -- программистский код проверять.

Можно сделать, правда, одну интересную штуку. Есть специальный софт, который может сканировать сервер на предмет дырок. Называется этот софт Nessus. В нём есть база данных о софте, который обычно стоит на серверах, и как их сканировать на предмет дырок. База данных, конечно, постоянно обновляется.

Таким образом можно худо-бедно, но сделать сайтам твоего сервера аудит на безопасность. Самая большая проблема -- это поддерживание списка сайтов, так как они постоянно добавляются. Но это уже задача на написание банального шелл или перл скрипта, а хотя бы одним из этих инструментов приличный сисадмин обязан владеть в совершенстве.

Вот и весна!

Зимняя погода закончилась. Впереди -- тёплые, солнечные дни в температурой днём в 55-60 градусов (13-16 по Цельсию). Потом примерно в конце марта наступит лето, с температурами в 68-75 градусов (20-25 по Цельсию).

А вы спрашиваете -- нахрена мне кабриолет.