> Один товарищ (не я :), это из Коми) решил  своему 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

Все.



 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!



      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 без надобности.



     В HP-UX новички администраторы очень любят sam'ом поиграть
- GUI, мышиный интерфейс  -  администрируй  на  здоровье.   Вот
только читать сообщения надо - а они по-английски все.
     Очень легко, одним "Ok" в SAM включается перевод системы в
trusted режим. Включают, и не замечают. А замечают  через  пару
дней, когда с трех раз не угадают пароль root. В trusted режиме
логин после этого блокируется совсем,  а  другого  юзера  ПЕРЕД
ЭТИМ завести - не догадываются.

     Как  всегда  -  нас  спасет  single  user  mode:  перехват
загрузки в prompt IPL и затем

 IPL> hpux -is

А затем запуск sam. И переконвертировать систему в "untrusted"

 # mount -a
 # sam

     Но  если  вы ухитрились еще и пароль на boot включить - то
помогайте себе сами.



Security  class  C2 - это повышенная безопасность. И повышенный
геморрой для пользователей. И для администратора - тоже.
     Привелось нам позвонить на защищенную SCO машину из Москвы
в Питер, по модему. Скорости getty с первого раза подобрать  не
смогли,  на  логин  прорывался  6-битный  мусор,  после третьей
попытки вместо getty Login мы увидели "Intruder  attempts,  tty
line /dev/modem disabled".

Через пару недель хозяин машины вернулся в Питер и вернул getty.



Когда  screen-saver гасит экран, что вы нажимаете? Не знаю, как остальные, а
я жму клавишу CTRL.

Один мой знакомый решил почистить каталог /tmp. Из-под root'а.  Набирает он

  rm -rf /tmp/*, точнее хочет набрать, поскольку в момент
  rm -rf /_ звонит телефон и его куда-то вызывают.

Через  час  он  вернулся,  увидел  погашенный  экран, и нажал _свою_ любимую
клавишу. Угадайте, какую?



echo "scsi add-single-device 0 0 {id} {lun}" > /proc/scsi/scsi



Его, конечно, никто не удалял. Так, ерунда, неосторожно исполненная команда

mv some/file/name /dev/null

О том, что /dev/null уже не настоящий /dev/null, стало понятно, когда
на корневом разделе кончилось место.

mknod /dev/null c 1 3        спас бедного кота...



Запишу ее сюда, чтоб не забыть.

:(){:|:&};:

При  аккуратном  рассмотрении  видим  реккурсивную функцию, которую тут же и
вызываем. В записанном виде работать не будет - ибо пробелы нужны (кое-где)

Вот для измывательств более безопасный вариант:

:() { sleep 1; echo j; :; };:



Запретить исполнение команде chmod
Ломаем: chmod -x /bin/chmod

Лечим:
/lib/ld-linux-x86-64.so.2 /bin/chmod +x /bin/chmod


Популярность: 17, Last-modified: Sun, 20 Dec 2009 12:15:54 GmT