headermask image


Advertisement

Защита Linux от несанкционированного консольного доступа

Есть две вечные темы, о которых пишет почти каждый автор “блога про linux” — туннели в ssh и сброс пароля root путём загрузки в режиме single user. Как правило, второй рецепт провоцирует обширные обсуждения на тему незащищённости Linux от действий злоумышленников при наличии физического доступа к компьютеру.

Вот несколько простых шагов, которые создадут серьёзные препятствия для злоумышленника, просто подошедшего к консоли в отсутствие хозяина. В качестве примера можно представить шаловливого племянника, зашедшего в гости, или зловредных коллег, собирающихся подменить заставку на рабочем столе. Однако следует понимать, что при наличии времени всегда есть возможность просто вытащить винчестер и подсмотреть интересующую информацию на другом компьютере, или же подложить руткит. Поэтому если вы всерьёз озабочены проблемой безопасности своего сервера, необходимо подумать о более серьёзных мероприятиях по его защите, таких, как шифрование дисков, установка полноценных систем предотвращения и обнаружения вторжений (IDS) и т.д. Не забывайте и про стандартные средства обеспечения безопасности в офисе или дата-центре: видеонаблюдение, надежная пропускная система, проинструктированная охрана… Полноценное описание этих мер выходит далеко за рамки данной статьи.

Итак, как же можно минимально обезопасить свой компьютер?

  1. Отключите загрузку с CD-ROM и флэшек и установите пароль на BIOS. Это не позволит злоумышленнику изменить порядок загрузки устройств и загрузиться со своей флэшки или компакт-диска. Однако всегда можно сбросить память BIOS, выковыряв батарейку из материнской платы, поэтому не следует полагаться на пароль BIOS’а в долгосрочной перспективе.
  2. Установите пароль на редактирование параметров загрузки grub. Система будет загружаться в обычном порядке, но никто не сможет изменить параметры загрузки, выбрав вариант загрузки и нажав кнопку “e”:
    1. сгенерируйте пароль с помощью утилиты grub-md5-crypt:
      $ grub-md5-crypt
      
      Password:
      
      Retype password:
      
      $1$0/Zwx$i0LAHSrpXKfT.JBZHCXpf1
    2. Добавьте получившийся пароль в общий раздел /boot/grub/menu.lst в виде строки:
      password --md5 $1$0/Zwx$i0LAHSrpXKfT.JBZHCXpf1
    3. Если у вас есть небезопасные дополнительные режимы загрузки (например, альтернативные операционные системы типа windows, или загрузка с параметром single), можно в описание этих режимов добавить параметр lock, который запретит пользователям выбирать этот вариант загрузки без ввода пароля. Пароль можно задать в этом же разделе, или оставить общий.
    4. Обратите внимание, что если файл menu.lst генерируется программой update-grub, как это сделано в Debian или Ubuntu, то вместо указания директивы lock в каждом варианте загрузки необходимо установить специальные параметры в разделе настройки upgrade-grub: lockalternative, lockold или kopt. Формат этих параметров и механизм работы update-grub подробно описаны в /boot/grub/menu.lst и man update-grub.
  3. Если у пользователя root на вашей машине есть пароль, пусть система запрашивает этот пароль при входе в single-user mode. Если в вашем дистрибутиве используется старый стиль инициализации через inittab (к таким системам относится большая часть дистрибутивов, кроме последних версий Ubuntu, Fedora и Debian, перешедших на Upstart), убедитесь, что в /etc/inittab присутствует строчка, подобная следующей:
    ~~:S:wait:/sbin/sulogin

    Эта инструкция говорит процессу init, что в однопользовательском режиме необходимо запускать программу /sbin/sulogin, которая запрашивает пароль суперпользователя. Но если пароль у root’а отсутствует, как, например, в Ubuntu, то sulogin пропускает в систему без запроса пароля. Поэтому обладателям современных дистрибутивов остаётся утешаться тем, что через пароль grub довольно сложно прорваться.

  4. Отключите интерактивную загрузку. В системах, основанных на RedHat (RHEL, Centos, Fedora), пользователь может нажать I перед началом загрузки сервисов и rc.sysinit при старте каждого сервиса будет спрашивать, нужно ли стартовать этот сервис. Эта фича отключается в файле /etc/sysconfig/init исправлением/добавлением параметра PROMPT:
    PROMPT=no
  5. Отключите 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 никаких уведомлений об изменении конфигурации не нужно.

  6. Установите таймаут для логина в консоли. В оболочке 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). Однако мне кажется, что подобные фокусы могут лишь раздражать вас и ваших пользователей, не принося реальной пользы, и стоит ограничиться установкой такого таймаута только для логинов с консоли.

  7. Установите vlock и приучите себя и коллег использовать его перед тем, как отлучиться от консоли более чем на 30 секунд. Команда vlock блокирует текущую виртуальную консоль; чтобы разблокировать ее, нужно ввести пароль пользователя или root’а (если он есть, конечно). vlock -a вообще запрещает переключаться на другие консоли (например, с помощью комбинации Alt+F7).
  8. Не забывайте о блокировке графического интерфейса.
    1. установите разумный период бездействия (5 — 10 минут), по истечении которого запускается хранитель экрана
    2. установите пароль на хранитель экрана
    3. выведите ярлык блокировки на видное место
    4. назначьте и запомните сочетание клавиш для блокировки экрана (в Gnome это Ctrl+Alt+L)

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

О разном

Хочу купить себе часы наручные, и просто глаза разбегаются. Пока остановлся на швейцарских часах от Candino.

Смотри фильмы онлайн без тормозов!

Комментарии

Your email is never published nor shared. Required fields are marked *

*
*