Защищаем Linux систему – Part 1

Дополнение: Как защитить систему от несанкционированного доступа через SSH
По чистой случайности, когда прогуливаться по местному ТЦ набрел на магазин и фотолабораторию по совместительству. Заинтересовался и решил зайти. Магазин изобиловал разного рода товарами и девайсами, начиная от профессиональных фотокамер и заканчивая рамками и чехлами. Там же стояло штук шесть компьютеров к которым были подключены картридеры и любой желающий мог подойти и проверить, что у него на карточке, я решил проверить свою карточку с телефона. Станции конечно же подоконные. Не успел я вставить свою SD в картридер, как установленный в тамошней системе NOD 32 начал ругаться на чем свет стоит. Как выяснилось на карте было штуки три разного рода вирусов. Первой моей реакцией было – злорадство. Я нарочно не стал удалять вирусы с карты, а придя дамой и врубив карту, поклацал по ним пока душа не успокоилась и благополучно снес.

К чему такое вступление? Отчасти мне стало жаль тех админов, которые занимаются там этими станциями, которые уязвимы настолько, что даже ребенок может вывести ее из строя без проблем. Однако это заставило меня задуматься, а насколько хорошо защищена моя Linux система? Понятно, что вирусы тут бессильны.
Однако по мимо вирусов, есть еще люди. А так как я часто работаю в открытых Wi-Fi сетях, и на моей машине крутиться сразу SSH, SAMBA, FTP, http сервера моя система может быть атакована из вне, используя известные уязвимости.

Вопросам безопасности, я посвещу целый цикл подробных статей, описывающий как сделать вашу систему максимально защищенной. И первая статья будет посвящена защите GRUB загрузчика.

Что такое Grub?
GRand Unified Boot Loader – программа-загрузчик для UNIX-подобных операционных систем (GNU/Linux, Solaris, BSD и другие).

Для чего используется Grub?
Grub – используется для загрузки операционной системы. Сейчас, Grub может загрузить практически любую ОС, имеющуюся на вашем компьютере, а также в сети и на CD/DVD дисках.

Как сконфигурировать Grub?
Grub конфигурируется файлом настройки, в Ubuntu его можно найти в /boot/grub/menu.lst. Загружаясь, Grub находит этот файл и выполняет указанные в нем настройки. Так же вы можете настравивать Grub во время загрузки основного меню.

Для чего защищать Grub?
Если вам часто доводиться оставлять ваш компьютер (чаще ноутбук) без присмотра, на рабочем месте в офисе или в студенческом общежитии. Не защищенный Grub представляет собой большую дыру в безопасности. Так как например посторонний сможет загрузиться с Recovery mode и сбросить root’овский пароль.

Как защитить Grub?
Установить шифрованный пароль, без которого будет закрыт доступ как к редактированию так и к процессу загрузки ОС.
Становимся суперпользователем

su -

Заходим в Grub

grub

Утилита для генерации пароля

grub> md5crypt

Появиться предложение ввести пароль, введите пароль и нажмите Enter.
Вы должны увидеть примерно следующее:

grub> md5crypt
Password: **********
Encrypted: $1$bfb2v$uiU8GI3DFnV9D6oC1IVIz1

Скопируйте полученный md5-шифр.
Выполните бэкап файла menu.lst

cp /boot/grub/menu.lst /boot/grub/menu.lst_backup

Откройте конфигурационный файл

nano /boot/grub/menu.lst

Найдите в файле блок с похожим содержанием

............
## password ['--md5'] passwd
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line)  and entries protected by the
# command 'lock'
# e.g. password topsecret
# password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
# password topsecret
............

Расскоментируйте строчку password заменив пример md5-шифра на свой

password --md5 $1$bfb2v$uiU8GI3DFnV9D6oC1IVIz1

Далее в секции меню, после команды title можно ставить команду lock – пароль тогда будет запрашиваться при выборе этой позиции меню. Вместо lock можно ставить и password, что даёт возможность иметь разные пароли для разных вариантов загрузки. При этом у нас должна быть строка password в главном блоке.
Вот так это должно выглядеть

title           Ubuntu 8.10, kernel 2.6.27-11-generic
lock
uuid            c1b0bbc2-d433-40e2-942e-1c3478566ef2
kernel         /boot/vmlinuz-2.6.27-11-generic root=UUID=c1b0bbc2-d433-40e2-94$
initrd           /boot/initrd.img-2.6.27-11-generic
quiet

title           Ubuntu 8.10, kernel 2.6.27-11-generic (recovery mode)
lock
uuid           c1b0bbc2-d433-40e2-942e-1c3478566ef2
kernel        /boot/vmlinuz-2.6.27-11-generic root=UUID=c1b0bbc2-d433-40e2-94$
initrd          /boot/initrd.img-2.6.27-11-generic

Если вы обновлялись, то можете просто закомментировать старые версии ядер. Что-бы они даже не высвечивались в меню.

Urgent note: После перезагрузки, при выборе одной из секций, вам напишет Not autonificated. Please enter any key. При этом вы не увидите не какого запроса пароля. Что-бы авторизоваться, нажмите клавишу p вы увидете предложение ввести пароль. После чего спокойно сможете загрузиться.

Живой результат работы описанного выше, вы можете увидеть на видео

Если вам это показалось слишком сложным, то выполнить все вышеперечисленные действия вы сможете с помощью графической утилиты StartUp Manager.
Установить ее можно командой

sudo aptitude install startupmanager

После установки найти программу можно “Система” -> “Администрирование” -> “StartUp Manager”
При запуске, программа потребует ввода пароля.

Итоги
Выполнив действия описанные выше, ваш загрузчик будет надежно защищен от постороннего посягательства. Злоумышленник в ваше отсутствие даже не сможет загрузит систему. А уровень вашей защиты сильно возрастет. Давайте посчитаем, что-бы нарушить целостность системы локально, злоумышленнику придется:
1) Ввести пароль в Grub для загрузки ОС.
(на разные ОС и режимы мы можем выставить разные пароли)
2) После загрузки ОС ввести в окне приветствия ваш ЛогинПароль.
3) Что-бы повредить систему ввести в терминале su и указать пароль root’a.

Понятно, что такая цепочка действий, при условии, что все три пароля разные, не выполнима.
Теперь ваш компьютер, в абсолютной локальной безопасности.

Как дополнительно усилить безопасность, читайте в следующей статье.