Есть две вечные темы, о которых пишет почти каждый автор “блога про linux” — туннели в ssh и сброс пароля root путём загрузки в режиме single user. Как правило, второй рецепт провоцирует обширные обсуждения на тему незащищённости Linux от действий злоумышленников при наличии физического доступа к компьютеру.
Вот несколько простых шагов, которые создадут серьёзные препятствия для злоумышленника, просто подошедшего к консоли в отсутствие хозяина. В качестве примера можно представить шаловливого племянника, зашедшего в гости, или зловредных коллег, собирающихся подменить заставку на рабочем столе. Однако следует понимать, что при наличии времени всегда есть возможность просто вытащить винчестер и подсмотреть интересующую информацию на другом компьютере, или же подложить руткит. Поэтому если вы всерьёз озабочены проблемой безопасности своего сервера, необходимо подумать о более серьёзных мероприятиях по его защите, таких, как шифрование дисков, установка полноценных систем предотвращения и обнаружения вторжений (IDS) и т.д. Не забывайте и про стандартные средства обеспечения безопасности в офисе или дата-центре: видеонаблюдение, надежная пропускная система, проинструктированная охрана… Полноценное описание этих мер выходит далеко за рамки данной статьи.
Итак, как же можно минимально обезопасить свой компьютер?
- Отключите загрузку с CD-ROM и флэшек и установите пароль на BIOS. Это не позволит злоумышленнику изменить порядок загрузки устройств и загрузиться со своей флэшки или компакт-диска. Однако всегда можно сбросить память BIOS, выковыряв батарейку из материнской платы, поэтому не следует полагаться на пароль BIOS’а в долгосрочной перспективе.
- Установите пароль на редактирование параметров загрузки grub. Система будет загружаться в обычном порядке, но никто не сможет изменить параметры загрузки, выбрав вариант загрузки и нажав кнопку “e”:
- сгенерируйте пароль с помощью утилиты grub-md5-crypt:
$ grub-md5-crypt Password: Retype password: $1$0/Zwx$i0LAHSrpXKfT.JBZHCXpf1
- Добавьте получившийся пароль в общий раздел /boot/grub/menu.lst в виде строки:
password --md5 $1$0/Zwx$i0LAHSrpXKfT.JBZHCXpf1
- Если у вас есть небезопасные дополнительные режимы загрузки (например, альтернативные операционные системы типа windows, или загрузка с параметром single), можно в описание этих режимов добавить параметр lock, который запретит пользователям выбирать этот вариант загрузки без ввода пароля. Пароль можно задать в этом же разделе, или оставить общий.
- Обратите внимание, что если файл menu.lst генерируется программой update-grub, как это сделано в Debian или Ubuntu, то вместо указания директивы lock в каждом варианте загрузки необходимо установить специальные параметры в разделе настройки upgrade-grub: lockalternative, lockold или kopt. Формат этих параметров и механизм работы update-grub подробно описаны в /boot/grub/menu.lst и man update-grub.
- сгенерируйте пароль с помощью утилиты grub-md5-crypt:
- Если у пользователя root на вашей машине есть пароль, пусть система запрашивает этот пароль при входе в single-user mode. Если в вашем дистрибутиве используется старый стиль инициализации через inittab (к таким системам относится большая часть дистрибутивов, кроме последних версий Ubuntu, Fedora и Debian, перешедших на Upstart), убедитесь, что в /etc/inittab присутствует строчка, подобная следующей:
~~:S:wait:/sbin/sulogin
Эта инструкция говорит процессу init, что в однопользовательском режиме необходимо запускать программу /sbin/sulogin, которая запрашивает пароль суперпользователя. Но если пароль у root’а отсутствует, как, например, в Ubuntu, то sulogin пропускает в систему без запроса пароля. Поэтому обладателям современных дистрибутивов остаётся утешаться тем, что через пароль grub довольно сложно прорваться.
- Отключите интерактивную загрузку. В системах, основанных на RedHat (RHEL, Centos, Fedora), пользователь может нажать I перед началом загрузки сервисов и rc.sysinit при старте каждого сервиса будет спрашивать, нужно ли стартовать этот сервис. Эта фича отключается в файле /etc/sysconfig/init исправлением/добавлением параметра PROMPT:
PROMPT=no
- Отключите Ctrl+Alt+Del. Любой бездельник может перезагрузить ваш компьютер (и испортить uptime), просто перейдя на виртуальную консоль и нажав три заветные кнопки. Этого риска можно избежать, настроив свой /etc/inittab или, в случае использования upstart, соответствующий файл в /etc/event.d (у меня этот файл так и называется — control-alt-delete). Необходимо просто закомментировать строчку, содержащую описание действия для события ctrlaltdel (или control-alt-delete в Upstart.). Или заменить это действие на команду отправки сообщения в syslog:
/usr/bin/logger -p auth.info "Ctrl+Alt+Del pressed
После внесения изменения в /etc/inittab нужно послать процессу init сигнал перечитать этот файл:
init q
Для Upstart никаких уведомлений об изменении конфигурации не нужно.
- Установите таймаут для логина в консоли. В оболочке bash есть переменная окружения TMOUT, которая устанавливает период неактивности (в секундах) — если от пользователя не поступило никакого ввода в течение указанного времени, процесс bash самоубивается. В /etc/profile.d можно поместить исполняемый файл logintimeout.sh примерно следующего содержания:
if [ x"$SSH_REMOTE_USER" = x ] ; then TMOUT=300 export TMOUT fi
Таким образом, консольные пользователи будут “выкидываться” через 5 минут бездействия. Подобным образом можно установить период неактивности в других шеллах, а также в ssh (параметр ClientInactiveTimeout в sshd_config). Однако мне кажется, что подобные фокусы могут лишь раздражать вас и ваших пользователей, не принося реальной пользы, и стоит ограничиться установкой такого таймаута только для логинов с консоли.
- Установите vlock и приучите себя и коллег использовать его перед тем, как отлучиться от консоли более чем на 30 секунд. Команда vlock блокирует текущую виртуальную консоль; чтобы разблокировать ее, нужно ввести пароль пользователя или root’а (если он есть, конечно). vlock -a вообще запрещает переключаться на другие консоли (например, с помощью комбинации Alt+F7).
- Не забывайте о блокировке графического интерфейса.
- установите разумный период бездействия (5 — 10 минут), по истечении которого запускается хранитель экрана
- установите пароль на хранитель экрана
- выведите ярлык блокировки на видное место
- назначьте и запомните сочетание клавиш для блокировки экрана (в Gnome это Ctrl+Alt+L)
Выполнение хотя бы половины из этих действий добавит вам немного спокойствия, но, еще раз повторюсь, не гарантирует абсолютной безопасности. Будьте внимательны.
О разном
Хочу купить себе часы наручные, и просто глаза разбегаются. Пока остановлся на швейцарских часах от Candino.
Смотри фильмы онлайн без тормозов!