Одной из основных предпосылок в компьютерной безопасности является практически полная невозможность обеспечить защиту системы, к которой у атакующего есть физический доступ.
Невозможно охватить все возможные варианты событий, но можно внести небольшие изменения в систему для контроля за наиболее очевидными путями нарушения безопасности.
Рассмотрим методы защиты от несанкционированных перезагрузок систем.
Мало ли для чего, может пригодится;)...
Каждый, кто подойдет к клавиатуре Linux-машины, может нажать клавиши Ctrl-Alt-Del и перезагрузить систему без входа в нее, в то время как машины под управлением Windows, если они заблокированы, требуют корректной регистрации (либо текущего пользователя, либо пользователя с административными привилегиями) перед тем, как вы сможете перезагрузить систему. И это даже не обязательно должно использоваться со злым умыслом: часто люди, привыкшие к Windows NT/2000/XP и иже с ними, нажимают Ctrl-Alt-Del в сессии X-Windows для блокировки экрана или для доступа к менеджеру задач, а вместо этого видят ужасное сообщение "The system is going down for reboot NOW!" и последующее уничтожение их работы, которую они не успели сохранить.
Во многих дистрибутивах Linux клавиатурная комбинация Ctrl-Alt-Del настроена на перезагрузку системы. И если это приемлемо для однопользовательской домашней системы, то для рабочего места в офисе или даже серверов представляет ненужный риск, поскольку не требует корректной регистрации пользователя.
Для предотвращения такого поведения мы будем перехватывать нажатия Ctrl-Alt-Del и вместо перезагрузки выполнять свой собственный скрипт. Он будет контролировать несанкционированные попытки перезагрузки и протоколировать их.
Для этого нужно написать небольшой скрипт и внести изменения в конфигурационный файл '/etc/inittab', после этого остается добавить ротацию файла журнала (если вы пользуетесь 'logrotate'), чтобы все было в порядке.
Скрипт для интерпретатора bash, который выполняет всю необходимую работу, назовем 'audit_cad.sh':
Он может вызываться в двух вариантах. С параметром '-c' он проверит наличие всех необходимых ему программ. Это наилучший метод убедиться, что ваша система удовлетворяет всем требованиям.
Если какая-то из проверок не сработает, скрипт выведет на экран сообщение об ошибке и имя отсутствующей программы. После этого скрипт продолжит проверку. Если какая-либо необходимая программа не найдена, после завершения выполнения скрипта будет возвращен код
1. Вот список необходимых для работы программ:
— /usr/bin/logger
— /usr/bin/tr
—· /bin/date
— /usr/bin/basename
Из них всех ручного редактирования может потребовать только программа basename, которая часто находится либо в каталоге '/usr/bin', либо в каталоге '/bin'. Обычно скрипт в режиме проверки запускается при установке в систему для того, чтобы убедиться, все ли в порядке. Поскольку скрипт выполняется от пользователя root, стоит проверить права доступа. В идеале они должны быть равными -rwx------. Чтобы установить их, введите команду 'chmod 0700 audit_cad.sh'.
Если же скрипт вызывается без параметров, он делает запись в общесистемном журнале ('syslog') с указанными пользователем уровнем и типом и в отдельном файле '/var/log/ shutattempt'. Это вариант, вызывающийся при нажатии Ctrl-Alt-Del.
Будем считать, что наш скрипт находится в каталоге '/usr/local/sbin/', куда мы его и помещаем. Если вы хотите изменить эти или другие параметры, просто откройте скрипт в редакторе и вносите необходимые изменения. Все настройки описаны в комментариях.
Теперь, когда скрипт настроен и находится на своем месте, нужно изменить обработчик события Ctrl-Alt-Del в файле '/etc/inittab'. Нас интересует строка, говорящая процессу 'init', как обрабатывать нажатие Ctrl-Alt-Del. В большинстве дистрибутивов идентификатор этого события обозначается как 'ca', а вся строка выглядит примерно так: "ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now". Важной частью этой записи является последнее поле, начинающееся с '/sbin/shutdown'. Чтобы изменить поведение системы, замените значение этого поля на полное имя скрипта 'audit_cad.sh'. Должно получиться что-то вроде "ca:12345:ctrlaltdel:/usr/local/sbin/audit_cad.sh".
После внесения указанных изменений нужно сообщить процессу 'init' об изменениях в его конфигурации. Проще всего это сделать, выполнив команду 'telinit q', которая заставляет процесс 'init' перечитать свою конфигурацию.
Теперь можно проверить наши изменения. Перед этим вам следует закрыть все пользовательские приложения — например, редакторы. Если вы где-то допустили ошибку при редактировании, система перезагрузится, поэтому лучше быть уверенным, что ваша работа не исчезнет. Когда будете готовы, нажмите Ctrl-Alt-Del, и никакой видимой реакции быть не должно.
Если ваша система продолжает работать, проверьте системный журнал (обычно это файл '/var/log/messages' или '/var/log/syslog') и отдельный журнальный файл скрипта 'audit_cad.sh', чтобы убедиться в правильном протоколировании события. Если же ваша машина таки перезагрузилась — проверьте все изменения и повторите попытку.
Когда у вас все заработает, останется последнее: автоматизировать обработку журнального файла. Все это может различаться: от настройки программ 'SWATCH' или 'logwatch' для посылки автоматических отчетов до настройки ротации журнального файла.
Ниже приведен простой пример настройки системы 'logrotate' (подходит как для Redhat, так и для Debian):