Ответы на вопросы

  Авторы: © The Answer Gang
Перевод: © Сергей Скороходов.


 

Крякеры идут!

Спрашивает Джордж Хоторн (George Hawthorn)

Отвечают Бен Окопник (Ben Okopnik), Хизер Стерн (Heather Stern)

Ребята, ответьте!

Я обшарил все сайты о Linux'е, которые смог найти пытаясь понять как это так получилось, что после месяцев безупречной работы я не могу с терминала войти на мой сервер с RH 7.0. Все работает отлично: веб, ftp, рутер, просто ни я, никто другой не могут войти в систему под root'ом. Загрузится в 'linux single' — пожалуйста, но если нормально ввести 'root' -- выкидывает обратно в 'login prompt'. Я понимаю, что здесь не место для таких вопросов, но я просто начинаю впадать в отчаяние…

Еще раз простите, что отнимаю время.

Джордж Хоторн

[Бен] Сначала рассмотрим простую возможность. Взгляните мою статью '"Cannot execute /bin/bash: Permission denied" - solved!' в 52-ом номере Linux Gazette. Возможно, там ответ уже есть. Обратите внимание: раз ftp и другие сервисы работают, то войти в систему можно, с очень ограниченными правами (как "nobody" или "ftp"), но можно.

[Хизер] Есть еще более простая (ну, может, столь же простая) возможность — вы случаем PAM недавно не обновляли? Файлы, которые PAM ставит при обновлении обычно сильно отличаются от Ваших рабочих политик. Однажды у меня осталась единственная возможность для входа в систему — через ssh… да и то лишь потому, что мой ключ уже был в системе и она не "сваливалась" в стандартную аутентификацию.

[Бен] Второе, как выглядит система, когда Вы заходите через 'single'? Изменились ли файлы паролей? (Совет: по уму надо хранить "снимки" содержимого "/etc" при периодическом backup'е системы; tar.gz архив помещается на дискете) Попытайтесь сделать копию "/etc/passwd" (или "/etc/shadow", если пароли у Вас "затенены"), и удалите из нее хеш пароля для root'а —

root:1XaFDYn7EapuP:0:0:root:/root:/bin/bash

Просто "убейте" второе поле вот так:

root::0:0:root:/root:/bin/bash

При следующем входе в систему пароль для root'а не потребуется, только не забудьте сразу же установить новый. Если же и после этого войти в систему не получается, то в ней и впрямь что-то сломалось. Опять же могу посоветовать — читайте упомянутую статью.

Если говорить о причинах, то первое, что приходит в голову: очевидной, хотя пугающей причиной может быть то, что некий "скрипток с ноготок" пролез к Вам на сервер и "походил" по нему. Паниковать не стоит — если Вы правильно и регулярно делаете резервное копирование, то все можно исправить (а если Вы не делаете резервного копирования на доступном извне сервере, то, боюсь, я уже ничем не смогу Вам помочь). Возможно, что какая-то установленная Вами программа — не слышал о таких прогах в известных дистрибутивах, а вот "закидывание" в систему случайного tarball'а очень даже может к этому привести — "помесила" библиотеки или важные системные файлы.

Мой опыт работы с Linux'ом научил меня, что, в отличие от MS Windows или OS/2, просто так само по себе ничего не случается. Всегда есть причина — или дыра в безопасности, вызванная нечаянно разрешенным сервисом в "/etc/intd.conf" (очень рекомендую: если не читали Security-HOWTO, то прочтите), или установка "проблемной" программы — таковую причину надо отследить и устранить. Особенно, если имел место взлом — Вы же не хотите, чтобы он повторился.

Удачи

... Джордж рассказывает подробности ...

Бен,

Спасибо за быстрый ответ. Я собираюсь "проштудировать" Ваше письмо. Могу сообщить, что несколько месяцев я ничего особенного с сервером не делал: принимал файлы по FTP, подключался по Telnet'у, добавил пару пользователей и т.д. С августа месяца он работал прекрасно, так что непохоже, чтобы это я чего-то напортачил. Дополнительных программ не устанавливал. Что касается безопасности, о ней я забочусь в первую очередь. Меня очень хочется знать: вдруг некто "влез" ко мне и что-то там "подправил". В lastb я видел пару-другую неудавшихся попыток войти в систему. Все важные файлы у меня сохранены, так что я могу просто переустановить ОС, но это мало что даст … останется только ждать, когда то же самое случиться еще раз. Если найду причину, то дам Вам знать.

... и, по совету Бена, проводить более тщательное исследование ...

Бен, пользуясь советами Вашей статьи в номере 52, я изучил /bin/login (зайдя в linux single) и обнаружил, что им владеет root и lp (понятия не имею, что это за lp … похоже не очередь печати).

[Бен] Есть догадка — я ничего не знаю о Ваше системе — взломщик действительно мог зайти через систему удаленной печати: есть такие возможности [exploits] (если я ничего не путаю), т.к. доступ к аппаратным портам требует больших прав. Я бы по меньшей мере проверил безопасность системы печати — для начала я бы убедился, что для удаленной печати используется либо "rlpr", либо "lprng". Второе, что я бы сделал — поискал бы в COTSE http://www.cotse.com/unix.htm, Insecure.org http://www.insecure.org/sploits_linux.html или на NetworkICE http://www.networkice.com/advice/Exploits про известные exploit'ы для всего софта, который использую.

I booted up another pc with RH 7.0 and noticed that its /bin/login ownership is root and root. I tried chown root.root login, but get the 'permission denied response'. I also edited /etc/shadow with no luck. I agree with your theory that reinstalling teaches you nothing. My master plan was to FTP the login "program" from a working pc to the server in the hope that login is somehow corrupted on the server. Я загрузил другой писюк с RH 7.0 и увидел, что в нем владельцем /bin/login является root и root. Попытался выполнить 'chown root.root login', но получил 'permission denied'. Еще я безуспешно отредактировал /etc/shadow. Согласен, что переустановка "ничему не учит". Я планирую отправить выполнимый файл login'а через FTP, зайдя на сервер с рабочего компьютера под логином "program", в надежде, что на сервере этот файл просто "попорчен".

[Бен] При поисках следов "вторжения" "/bin/login" и "/bin/bash" — первые кандидаты, особенно если "/bin/bash" был установлен SUID (что означает, что любой, выполняющий этот скрипт имеет все права root'а!). То, что у Вас не прошла команда 'chown login' свидетельствует о том, что пересылка "хорошего" login'а по FTP не поможет — Вам, вероятно, не удастся удалить старый файл. Это, как раз, очень наводит на мысли, что…

Перезагрузил сервер под linux single, а затем сделал su root. Просмотрел историю команд и с удивлением обнаружил в ней много того, чего я не делал. Кто-то создал пользователя "Poped" (насколько я могу судить), а потом вводил команды наподобие

rm -f /bin/login chattr -i /bin/login

Кажется, кто-то получил доступ к системе. Как Вы думаете?

[Бен] … кто-то влез. Полагаю, что нет нужды говорить, что Вам необходимо немедленно отключить систему от сети — поскольку у этого "кто-то" права root'а, он может легко "грохнуть" все подряд.

Полагаю, хотя Вы об этом не упоминали, что по установленному "нарушителями" "/bin/login" был "применен 'chattr +i'" , именно поэтому Вам и не удается его удалить. Выполнив "chattr -i /bin/login", Вы можете снять с "/bin/login" флаг "immutable" — это даст возможность удалить и заменить его на нормальный, не из rootkit'а.

Между прочим, факт подмены проще всего установить по размеру файла. Поскольку выполнимые файлы из 'rootkit' не могут линковаться динамически (они должны работать даже в системах, где нет необходимых библиотек), они как правило гораздо больше "нормальных".

В определенном смысле Вам повезло — более знающий взломщик заменил бы Ваш "/sbin/syslogd" и очистил бы логи. Вы бы никогда не узнали, что кто-то к Вам влезал. Кроме того, то, что он до такой степени "порушил" login, показывает, что он любитель — настоящий удавшийся взлом системы никогда не бывает столь очевидным и грубым.

И еще раз — настоятельно советую прочесть Security-HOWTO и в каждом подозрительном случае выполнять определенный объем исследований. Не подключайте систему к сети до тех пор, пока 1) Вы поняли, как взломщик проник внутрь, 2) надежно заделали дыру, и 3) выполнили общую проверку безопасности и сочли ее результаты приемлемыми. Если Вы устанавливаете сервер публичного доступа и не изучили вопросы безопасности, Вы сами призываете кучу неприятностей на собственную голову — в чем Вы уже убедились.

Thanks for any help. Спасибо за помощь.

P.S. и еще за мой firewall.

[Бен] Не за что, просто больше читайте! Установка брандмауэра вовсе не такая "автоматическая", как думают многие. В большинстве случаев это не слишком трудно, но и тогда нужно быть внимательным и сначала научиться. Посмотрите (сюрприз) Firewall-HOWTO.

... Джорджа отпустило ...

Бен, очень Вам признателен за классные ответы. Они ну очень помогли и я непременно последую Вашим советам. Я уже купил "Установка брандмауэра под Linux и Open BSD" [Building Linux and Open BSD Firewalls] несколько месяцев назад и теперь буду "грызть гранит науки" еще сильнее.

С Рождеством и еще раз спасибо.

[Бен] Рад, что смог быть Вам полезен, Джордж, Вы идете верным курсом. Счастливого Рождества и большой удачи.

 


Copyright © 2000, The Answer Gang.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 61 of Linux Gazette, January 2001

Вернуться на главную страницу