Максим Мошков. Истории из жизни администратора Unix, или Грабли
История 1 со счастливым концом. Испорченный /etc/passwd
> Один товарищ (не я :), это из Коми) решил своему root'y вместо положенного
> /sbin/sh сделать /bin/ksh
> Для чего отредактировал /etc/passwd, но неудачно, ошибся и назначил
> /sbin/ksh.
> Пробовали:
> $ su root -c /sbin/sh
> Не помогло. Теперь он горько плачет и хакера зовет.
> Можешь помочь, или суровое: переустанови юних?
Это мы проходили. Классика. Перво- наперво "никогда, НИКОГДА
не меняй shell у суперюзера..." :-)
0. Запустить shell из-под root'а все-таки можно: su root -m -s /bin/sh
Но если еще и пароль забыт, тогда - поможет загрузка в
single user mode или загрузка с CD/floppy/tape
1. Дать команду df, посмотреть минор/мажор у девайса, на
который монтируется корень, и затем почитать мануал по команде
mknod # mkdev, mknode, mksf - создать специальный файл
# или как там еще она называется
и записать на бумажке команду, которой создается
спец-файл /dev/root (или куда там монтируется "/"
mknod /dev/root b 3 0x000002 # примерно так
2. Загрузиться с инсталляционного стриммера/дискеты/CD.
и там где уход на install/update/system maintance пойти на
"system maintence" (это всего навсего root'вый shell)
Осталось смонтировать /dev/root на /mnt
и редактировать /mnt/etc/passwd
Засада No 1
Сразу после загрузки мини-системы специальных файлов
соответствующих жесткому диску нет (!). Сделать его ручками -
команда mknode уже записана на бумажке.
Засада No 2
Редактор vi не запускается (Нет terminfo) Ну и черт с ним.
Придумаешь что нибудь. Например
echo "toor::0:0:Yet another Super-User:/:" >> /mnt/etc/passwd
^^^^^^
обрати внимание что >> а не > (Угадай почему :-)
а можно и так:
PATH=$PATH:/mnt/bin:/mnt/usr/bin export PATH
TERMINFO=/mnt/usr/lib/terminfo # или где он там
Короче - ты дома потренируйся, а потом в Коми напиши точные
имена файлов и команд, а то боюсь необученный админ сможет
промахнуться пару раз, а здесь промахиваться нельзя.
Приложение: Обход root passwd в Motorola Unix SVR4/88.
1. Посмотреть major/minor для / и /usr
104 0 /dev/root
104 3 /dev/dsk/m197_c0d0s3
2. Загрузка с ленты, уход на maintance .
3. Подмонтировать разделы диска, соответствующие / и /usr, с
восстановлением файловой системы (т.к. система была выключена некорректно
при отсутствии root пароля).
mkdir /mnt
mknod /dev/rootn b 104 0
/etc/fs/ufs/fsck /dev/rootn
mount -F ufs /dev/rootn /mnt
аналогично для /usr
mknod /dev/usr3 b 104 3
/etc/fs/ufs/fsck /dev/usr3
mount -F ufs /dev/usr3 /mnt/usr
4. Отредактировать /etc/passwd, сделать беспарольного root
echo "toor::0:1:Adm:/:/sbin/sh" >> /mnt/etc/passwd
5. Cменить корень root'у (будет в /mnt)
chroot /mnt /sbin/sh
6. Обновить shadow
pwconv
Все.
История 2 почти о том же. Испорченный /etc/fstab
Date: 20 Apr 1997
From: Bernshtam Pavel (barnshte@CS.bgu.ac.il)
У меня тоже было - запортил я /etc/fstab и сделал reboot не
заметив ошибки - бабах - поднимается (а это был Axil с SunOS
4.1) в single user.
я делаю ls - Command not found - понятно - не замоунтил /usr
посмотрел я на другом SUN'е что есть в /sbin - нашел mount,
обрадовался - сделал /sbin/mount /usr.
Есть VI!
Помучался пока установил нужный set TERM с полчаса - запустил
VI. открываю fstab - фигня со строками (вот оно - не работайте
в PICO, учите VI !!!), исправил, save'лю - а root partition то
READ ONLY !!!
Делаю stop-A.
Слава богу, посоветовали мне, что в boot-мониторе можно сделать
b -rw (замаунтить с write), после этого я повторил всю
процедуру с mount и VI и исправил /etc/fstab.
а... еще забыл - VI не запускался пока я /var не замаунтил, т.к
/tmp - линк на /var/tmp , а VI без /tmp не идет.
/* а на Linux специальная команда есть - перемонтироваться на
read-write - ее из single-user-mode можно выполнить
mount -n -o remount /
*/
Ввиду того, что под шаблон ".*" подходит каталог ".."
НИКОГДА НЕ ДЕЛАЙТЕ КОМАНДЫ rm -r .*
(Большинство unix'ов прощают подобную ошибку, но НЕ ВСЕ)
From: Павел Северов
"... решил я на нашем SCO-шном сервере с Oraclовской базой
расчистить немного свободного места на диске..."
# cd /usr/tmp
# rm -rf *
гляжу, а там всякий хлам остался /usr/tmp/.X11-0 ну и т.п.
А я тогда
# rm -rf .* # ОЙ!
# du
ldd: Can not open file
# df
ldd: Can not open file
# ls -al
ldd: Can not open file
. . .
У этой истории грустный конец. Вы уже догадались, что
/usr/tmp/.* содержит в себе /usr/tmp/.. После reboot'а машина,
не найдя каталога /usr уже не ожила.
Удаленный доступ или "Запасной ключ от сейфа лежит в сейфе"
Хорошая штука, Unix + TCP/IP - можно отконфигурить машину
у черта на куличках не вставая с рабочего места и даже не
выходя из дома.
История 1. Вот и я однажды менял то ли IP-адрес, то ли
роутинг на удаленной машине... Короче - промахнулся, сказал
ifconfig eth0 down
Вот собственно и все. Сказать
ifconfig eth0 NEW-IP было уже некому.
Вы конечно догадались, что _НАДО БЫЛО_ одной строкой писать
ifconfig eth0 down ; ifconfig eth0 NEW-IP up ; route add ...
История 2. Захотелось повысить уровень security. Пишем
в /etc/hosts.deny
ALL:ALL
в /etc/hosts.allow
ALL:193.263.12.13
^^^ вроде бы маленькая ошибочка, цифры переставить, а
нельзя - я уже успел отлогиниться.
Удаленный "доступ" или "Ключа вообще нет"
Повис у нас однажды сервер, надо reset нажать,
перегрузить, а комната заперта, и ключи уже унесли. И telnet'ом
не войдешь - некуда.
Вырубили свет на всем этаже, включили вновь - voila!
Новая /lib/libc.so - апгрейд LIB C
Linux. 1993 год. Потребовалось подменить LibC. Ну, вперед,
делов-то - старую передвинуть, новую - на ее место.
cd lib
mv libc.so libc.so-old
mv libc.so-new libc.so
ldd: Can not execute, shared library not found
Finish.
Пришлось грузиться с дискеты, монтировать hd.
Но, как это ни смешно, в следующий раз те же команды,
записанные в одну строку, сработали. Или библиотечка в кэше
оказалась... Темна вода в Linuxе. Впрочем, файлы из каталога
/sbin - обычно staticaly-linked - им для работы разделяемая
libc без надобности.
История 3. Trusted mode - безопасность превыше всего
В HP-UX новички администраторы очень любят sam'ом поиграть
- GUI, мышиный интерфейс - администрируй на здоровье. Вот
только читать сообщения надо - а они по-английски все.
Очень легко, одним "Ok" в SAM включается перевод системы в
trusted режим. Включают, и не замечают. А замечают через пару
дней, когда с трех раз не угадают пароль root. В trusted режиме
логин после этого блокируется совсем, а другого юзера ПЕРЕД
ЭТИМ завести - не догадываются.
Как всегда - нас спасет single user mode: перехват
загрузки в prompt IPL и затем
IPL> hpux -is
А затем запуск sam. И переконвертировать систему в "untrusted"
# mount -a
# sam
Но если вы ухитрились еще и пароль на boot включить - то
помогайте себе сами.
История 4. Security class C2: о том же, но в SCO
Security class C2 - это повышенная безопасность. И повышенный
геморрой для пользователей. И для администратора - тоже.
Привелось нам позвонить на защищенную SCO машину из Москвы
в Питер, по модему. Скорости getty с первого раза подобрать не
смогли, на логин прорывался 6-битный мусор, после третьей
попытки вместо getty Login мы увидели "Intruder attempts, tty
line /dev/modem disabled".
Через пару недель хозяин машины вернулся в Питер и вернул getty.
Screen-сейвер и кнопка Enter
Когда screen-saver гасит экран, что вы нажимаете? Не знаю, как остальные, а
я жму клавишу CTRL.
Один мой знакомый решил почистить каталог /tmp. Из-под root'а. Набирает он
rm -rf /tmp/*, точнее хочет набрать, поскольку в момент
rm -rf /_ звонит телефон и его куда-то вызывают.
Через час он вернулся, увидел погашенный экран, и нажал _свою_ любимую
клавишу. Угадайте, какую?
Last-modified: Mon, 08 Aug 2005 06:33:52 GMT