Gentoo Linux сборник статей


${IFACE} присваивается название запускаемого/останавливаемого интерфейса. •${IFVAR}



Pdf просмотр
страница29/79
Дата14.11.2016
Размер5.55 Mb.
Просмотров11550
Скачиваний1
1   ...   25   26   27   28   29   30   31   32   ...   79
${IFACE} присваивается название запускаемого/останавливаемого интерфейса.

${IFVAR} — это значение ${IFACE}, преобразованное в имя переменной, разрешенное в bash.
Листинг 1: Примеры функций до/после запуска/останова preup() {
306

Настольная книга Gentoo Linux x86
# Проверка соединения интерфейса перед его запуском. Она
# работает лишь с некоторыми сетевыми адаптерами и требует наличия
# установленного пакета mii-diag.
if mii-tool ${IFACE} 2> /dev/null | grep -q 'no link'; then ewarn "Интерфейс ${IFACE} не подключен, прерывание запуска"
return 1
fi
# Проверка соединения интерфейса перед его запуском. Она
# работает лишь с некоторыми сетевыми адаптерами и требует наличия
# установленного пакета ethtool.
if ethtool ${IFACE} | grep -q 'Link detected: no'; then ewarn "Интерфейс ${IFACE} не подключен, прерывание запуска"
return 1
fi
# Не забываем вернуть 0 при успехе return 0
}
predown() {
# Назначение этого сценария - проверить наличие корня NFS
# и в этом случае предотвратить останов интерфейсов. Заметьте, что
# определяя функцию predown(), вы отменяете существующую логику.
# Вот она, на случай если все же понадобится...
if is_net_fs /; then eerror "Корневая ФС смонтирована в сети - останов ${IFACE} невозможен"
return 1
fi
# Не забываем вернуть 0 при успехе return 0
}
postup() {
# Эту функцию можно использовать, например, для регистрации в
# службе динамического DNS. Другой пример - отправка/прием почты после
# запуска интерфейса.
return 0
}
postdown() {
# Эта функция приводится в основном для полноты... Я не придумал,
# что бы ценное в нее поместить ;-)
return 0
}
5.b. Функции-обработчики wireless tools
Примечание: Это не работает вместе с WPA Supplicant, но переменные ${ESSID} и ${ESSIDVAR} доступны в функции postup().
Можно определить две функции, вызываемые до и после функции подключения
(associate). При вызове им сначала передается название интерфейса, так что одна и та же функция может управлять несколькими адаптерами.
307

Настольная книга Gentoo Linux x86
Для указания на то, что запуск или останов интерфейса можно продолжать, возвращаемое значение функции preassociate() должно быть нулевым
(успешным). Если preassociate() возвращает ненулевое значение, запуск интерфейса прерывается.
Возвращаемое значение функции postassociate() игнорируется, так как показываемая ей ошибка не обрабатывается.
${ESSID} присваивается точный ESSID точки доступа, к которой вы подключаетесь. ${ESSIDVAR} — это ${ESSID}, преобразованный в имя переменной, разрешенное в bash.
Листинг 2: Функции до/после соединения preassociate() {
# Ниже добавляются две конфигурационных переменных, leap_user_ESSID
# и leap_pass_ESSID. Когда они обе настроены на подключаемый ESSID,
# мы запускаем сценарий CISCO LEAP
local user pass eval user=\"\$\{leap_user_${ESSIDVAR}\}\"
eval pass=\"\$\{leap_pass_${ESSIDVAR}\}\"
if [[ -n ${user} && -n ${pass} ]]; then if [[ ! -x /opt/cisco/bin/leapscript ]]; then eend "Для поддержки LEAP, выполните emerge net-misc/cisco-aironet-client-utils"
return 1
fi einfo "Ожидание допуска LEAP на \"${ESSID//\\\\//}\""
if /opt/cisco/bin/leapscript ${user} ${pass} | grep -q 'Login incorrect'; then ewarn "Вход пользователя ${user} не удался"
return 1
fi fi return 0
}
postassociate() {
# Эта функция приводится в основном для полноты... Я не придумал,
# что бы ценное в нее поместить ;-)
return 0
}
Примечание: ${ESSID} и ${ESSIDVAR} недоступны в функциях predown() и postdown().
6. Управление сетью
6.a. Управление сетью
Если вы часто берете компьютер в поездки, то у вас не всегда может быть
308

Настольная книга Gentoo Linux x86
возможность подключения к сети Ethernet или к беспроводной точке доступа. Но мы можем захотеть, чтобы сеть заработала автоматически, как только к компьтеру подключен кабель Ethernet или найдена беспроводная точка доступа.
Здесь вы найдете некоторые инструменты, которые помогут это организовать.
Примечание: В этом документе рассказывается только о ifplugd, но есть и альтернативные решения, например, quickswitch.
6.b. ifplugd
ifplugd — это программа, которая запускает и останавливает интерфейс при подключении или отключении кабеля к сети Ethernet. Также она может обработать подключение к беcпроводной точке доступа или появление новых точек доступа.
Листинг 1: Установка ifplugd
# emerge sys-apps/ifplugd
Настройка ifplugd — довольно простая задача. Файл конфигурации расположен по адресу: /etc/conf.d/ifplugd. Для просмотра подробного описания переменных запустите man ifplugd.
Листинг 2: Пример конфигурации ifplug
# назначение интерфейса для слежения
INTERFACES="eth0"
AUTO="no"
BEEP="yes"
IGNORE_FAIL="yes"
IGNORE_FAIL_POSITIVE="no"
IGNORE_RETVAL="yes"
POLL_TIME="1"
DELAY_UP="0"
DELAY_DOWN="0"
API_MODE="auto"
SHUTDOWN="no"
WAIT_ON_FORK="no"
MONITOR="no"
ARGS=""
# дополнительные параметры ifplugd для указанного интерфейса.
# учтите, установки глобальных переменных игнорируются, если указаны значения
# для конкретного интерфейса
MONITOR_wlan0="yes"
DELAY_UP_wlan0="5"
DELAY_DOWN_wlan0="5"
309

Настольная книга Gentoo Linux x86
Настольная книга по безопасности Gentoo
Ссылка на оригинал:
http://www.gentoo.org/doc/ru/security/
C версии: 1.3
Введение
Эта настольная книга предназначена для людей, использующих Gentoo Linux в качестве сервера или чувствующих, что они нуждаются в повышении безопасности системы.
Если после прочтения этой книги вы заинтересуетесь дальнейшим усилением защищенности системы Gentoo, то обратите внимание на проект укрепленной системы Gentoo —
Hardened Gentoo Project
(англ.).
A. Безопасность системы
1. Соображения перед началом установки
1.a. Физическая безопасность
Сколько преград не установи, злоумышленник, имея физический доступ к компьютеру, сможет легко их обойти. Несмотря на это, кое-какие меры для относительной защиты от злоумышленника с физическим доступом к вашей машине принять можно. Поместив оборудование в кладовку под замок, вы помешаете злоумышленнику попросту отключить его и унести с собой. Стоит запереть корпус компьютера на замок, чтобы не дать злоумышленнику просто вынуть из него жесткий диск. Чтобы предотвратить загрузку с альтернативного диска, благодаря чему можно просто обойти порядок входа в систему и права доступа, попробуйте установить в BIOS жесткий диск в качестве первого загрузочного устройства и запаролить BIOS. Также важно установить пароль для загрузчика LILO или GRUB, чтобы не дать недобросовестному пользователю загрузить систему в однопользовательском режиме, получив к ней полный доступ.
Это подробно описано в третьей главе, в разделах защита GRUB паролем и защита LILO паролем
1.b. Планирование демонов/служб
Для начала выпишите службы, которые должны работать на машине. Это поможет вам выбрать наилучшую схему разбивки разделов в системе и позволит лучше спланировать меры безопасности. Конечно же, в этом нет необходимости, если ваш компьютер служит для одной определенной задачи, например в качестве рабочей станции или выделенного межсетевого экрана. В таких случаях не должны запускаться никакие службы, за исключением, возможно, sshd.
Составленный список также может пригодиться для администрирования системы.
Вы увидите, что, поддерживая перечень текущих версий, значительно легче
310

Настольная книга по безопасности Gentoo удерживать все в актуальном состоянии, когда в каких-либо из ваших демонов обнаруживаются уязвимости к удаленному доступу.
1.c. Схемы создания разделов
Правила разбиения разделов:

любое дерево каталогов, в которое пользователь должен иметь возможность записи (например, /home, /tmp), должно размещаться в отдельном разделе с использованием дисковых квот. Это снижает риск переполнения всей файловой системы каким-либо пользователем. Portage использует /var/tmp для компиляции, поэтому этот раздел должен быть большим

любое дерево каталогов, в которое вы планируете устанавливать программное обеспечение не средствами управления пакетами дистрибутива, следует размещать в отдельном разделе. Согласно стандарту иерархии файлов
(англ.), это /opt или /usr/local. Являясь отдельными разделами, они не удаляются при переустановке системы

для лишней защиты можно поместить статические данные в отдельный раздел, монтируемый только для чтения. Если вы настоящий параноик, можете пользоваться неперезаписываемым носителем, например, компакт- диском
1.d. Пользователь root
Администратор системы (пользователь root) является наиболее важным пользователем, и его права не следует использовать без крайней необходимости.
Если злоумышленник получит доступ с правами администратора, единственным способом восстановить доверие к системе будет переустановить ее.
Золотые правила для root

всегда создавайте пользователя для каждодневных работ, а если этому пользователю понадобятся права администратора, добавьте его в группу
«wheel». Это дает возможность обычным пользователям выполнять команды с правами администратора с помощью su

никогда не запускайте X или другое пользовательское приложение под root.
Права администратора следует использовать только при крайней необходимости: если уязвимость есть в приложении, запущенном от имени пользователя, злоумышленник может получить права этого пользователя. А если приложение запущено с правами администратора, то злоумышленник получит их.

войдя под учетной записью администратора, всегда указывайте абсолютные пути (или всегда используйте команду su -, которая заменяет переменные среды пользователя на администраторские, обеспечивая наличие в PATH администратора только защищенных каталогов, например /
bin и /sbin). Иначе можно обмануть администратора и заставить его выполнить совершенно другое приложение. Если PATH администратора защищен или он использует только абсолютные пути, то можно быть уверенным, что это не произойдет

если пользователю нужно выполнять лишь несколько команд с правами администратора, то вместо использования учетной записи root, рекомендуется использовать команду sudo. Просто также задумывайтесь,
311

Настольная книга по безопасности Gentoo кому вы даете доступ к этой команде!

никогда не оставляйте без присмотра терминал, в котором вы зарегистрированы в качестве root
В Gentoo по умолчанию есть некоторая защита от обычных пользователей, пытающихся с помощью su получить права администратора. По умолчанию настройки PAM требуют, чтобы пользователь был членом группы «wheel» для того, чтобы запускать команду su.
1.e. Правила безопасности
Есть ряд причин набросать правила безопасности для своей системы или сети.

хорошие правила безопасности позволяют вам наметить подход к безопасности системно, а не сваливать в кучу разрозненные меры.
Например, без правил администратор может решить отключить telnet, так как в нем пароли передаются не зашифрованными, оставив доступ по FTP, обладающему таким же недостатком. Хорошие правила безопасности позволяют выявить, какие меры безопасности имеют смысл, а какие — нет

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

похищенные учетные записи пользователей являются одной из самых распространенных угроз безопасности системы. Не объясняя пользователям, почему безопасность важна, и как ее поддерживать
(например, не записывать пароли на клочках бумаги на рабочем месте), можно и не надеяться на защищенность пользовательских данных

хорошо задокументированная схема сети и системы поможет как вам, так и, при необходимости, суду и следствию, отслеживать проникновение злоумышленника и выявлять слабые места по факту взлома. Уведомление правил безопасности о том, что ваша система является частной сетью и несанкционированный доступ запрещен, также способствует надлежащему преследованию нарушителя по закону после его поимки
Надеемся, что теперь необходимость в хороших правилах безопасности более чем ясна.
Сами по себе правила — это документ или набор документов, раскрывающих функции сети или системы (например, какие именно услуги предоставляются), допустимые и запрещенные действия, применение «передового опыта» обеспечения безопасности, и т. д. Все пользователи должны быть знакомы как с правилами безопасности, так и с изменениями, которые вы вносите для поддержания их актуальности. Важно уделять время, чтобы добиваться понимания правил пользователями, объяснять, зачем знакомится под роспись, и что будет, если пользователь явно нарушит их требования (в правилах безопасности об этом должно быть ясно указано). Необходимо повторять ознакомление по крайней мере раз в год, так как правила подвержены изменениям (а также для напоминания пользователям).
312

Настольная книга по безопасности Gentoo
Примечание: Создавайте правила, понятные для чтения и не допускающие разночтений в любой ситуации.
Правила безопасности должны охватывать по крайней мере следующие темы:

допустимые действия

экранные заставки

обращение с паролями

скачивание и установка программ

предупреждение, если действия пользователей отслеживаются

использование антивирусных программ

обращение с ценными сведениями (в любом письменном виде, на электронном или бумажном носителе)

чистый рабочий стол и хранение сведений ДСП под замком

отключение компьютера перед уходом

использование средств шифрования

передача ключей доверенным сотрудникам

обращение с конфиденциальными данными в поездках

обращение с компьютерным оборудованием в поездках

обращение с ноутбуком в поездках и в гостиницах
Для разных пользователей могут требоваться разные типы или уровни доступа, и содержание ваших правил может отличаться, чтобы охватить их все.
В распухших правилах безопасности легко упустить важные моменты. В правилах для ИТ-персонала могут содержаться сведения, закрытые для обычных пользователей. Поэтому есть смысл разделить их на несколько небольших разделов, например, «допустимые действия», «использование паролей»,
«правила использования электронной почты», «правила удаленного доступа».
Примеры правил безопасности приведены на сайте проекта правил безопасности
SANS
(англ.). Если у вас небольшая сеть, и вы считаете, что эти примеры слишком велики, можете обратиться к руководству по объектовой безопасности
(Site Security Handbook)
(англ.).
2. Закручивание гаек
2.a. USE-флаги
В Gentoo Linux файл make.conf содержит USE-флаги, определенные пользователем, а /etc/make.profile/make.defaults — USE-флаги по умолчанию. Для данного руководства важны флаги pam (Pluggable Authentication Modules — подключаемые модули опознания), tcpd (Упаковщики TCP) и ssl (Secure Socket
Layer). Все они включены в USE-флаги по умолчанию.
2.b. Защита GRUB паролем
В GRUB можно защитить загрузчик паролем двумя различными способами. В первом используется открытый пароль, а во втором — шифрование с использованием md5+salt.
Листинг 1: /boot/grub/grub.conf timeout 5
password changeme
313

Настольная книга по безопасности Gentoo
Благодаря этим строкам был добавлен пароль changeme. Если во время загрузки не ввести пароль, то GRUB просто загружает вариант по умолчанию.
При добавлении пароля MD5 вы должны преобразовать открытый пароль в зашифрованный в том же формате, что и в файле /etc/shadow. За дополнительными сведениями обращайтесь к man crypt. Зашифрованный пароль, например changeme,
может выглядеть вот так:
$1$T7/dgdIJ$dJM.n2wZ8RG.oEiIOwJUs.
Зашифровать пароль можно прямо в оболочке GRUB:
Листинг 2: md5crypt в оболочке grub
#/sbin/grub
GRUB version 0.92 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename. ]
grub> md5crypt
Password: ********
(было набрано слово changeme)
Encrypted: $1$T7/dgdIJ$dJM.n2wZ8RG.oEiIOwJUs.
grub> quit
Затем скопируйте полученный пароль в /boot/grub/grub.conf.
Листинг 3: /boot/grub/grub.conf timeout 5
password --md5 $1$T7/dgdIJ$dJM.n2wZ8RG.oEiIOwJUs.
Задержка в 5 секунд пригодится в случае, когда система физически недоступна, и нужна возможность перезагрузки без использования клавиатуры. Более подробно о паролях в GRUB вы можете узнать, набрав info grub.
2.c. Защита LILO паролем
В LILO также поддерживается два способа защиты с помощью пароля: общий и для отдельного образа, в обоих случаях пароль хранится в открытом виде.
Общий пароль устанавливается в начале файла конфигурации и относится к каждому загрузочному образу:
Листинг 4: /etc/lilo.conf password=changeme restricted delay=3
Пароль для отдельного образа устанавливается следующим образом:
Листинг 5: /etc/lilo.conf image=/boot/bzImage read-only password=changeme
314

Настольная книга по безопасности Gentoo restricted
Если параметр restricted не введен, то пароль будет запрашиваться при каждой загрузке.
Чтобы сохранить новые сведения в файле lilo.conf, нужно запустить /sbin/lilo.
2.d. Ограничение доступа к консоли
С помощью файла /etc/securetty можно указать, с каких терминальных устройств
(tty) можно входить в систему администратору.
Рекомендуется закомментировать все строки, кроме vc/1 (если у вас devfs), или кроме tty1 (если у вас udev). Благодаря этому суперпользователь сможет входить в систему одновременно только один раз и только с одного терминала.
Примечание: Пользователи, входящие в группу «wheel» по-прежнему смогут воспользоваться su -, чтобы стать администратором, работая с других терминалов.
Листинг 6: /etc/securetty
(для devfs)
vc/1
(для udev)
tty1
3. Журналирование
3.a. Введение
Для перехвата предупреждений и ошибок, которые могут свидетельствовать о происходящей атаке или успешном взломе, следует подключать дополнительное журналирование. Часто злоумышленники сканируют систему и «проверяют ее на зуб» перед атакой.
Также немаловажно, чтобы файлы журналов были легко читаемыми и обозримыми. В Gentoo Linux при установке на выбор предлагается 3 разных средства журналирования.
3.b. Журналирование: Syslogd
Syslogd является самым распространенным средством журналирования для Linux и Unix. Он способен делать ротацию журналов, однако использование
/usr/sbin/logrotate с вызовом по расписанию (logrotate настраивается с помощью файла /etc/logrotate.conf) может оказаться полезней, так как у logrotate есть много дополнительных возможностей. Частота ротации подбирается в зависимости от загрузки системы.
Ниже приведен стандартный файл syslog.conf с некоторыми добавлениями. Мы раскомментировали строки cron и tty, и добавили удаленный сервер журналирования. Для дальнейшего усиления журналирования можно настроить ведение журнала в двух местах.
315

Настольная книга по безопасности Gentoo
Листинг 1: /etc/syslog.conf
# /etc/syslog.conf Файл настройки syslogd.
#
# За дополнительной информацией обращайтесь к
# странице справки syslog.conf(5).
# Взято из Debian, пока пользуемся им
# Daniel Robbins, 5/15/99
#
# Сначала стандартные файлы журналов. Журналирование по подсистемам.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog cron.* /var/log/cron.log daemon.* -/var/log/daemon.log kern.* -/var/log/kern.log lpr.* -/var/log/lpr.log mail.* /var/log/mail.log user.* -/var/log/user.log uucp.* -/var/log/uucp.log local6.debug /var/log/imapd.log
#
# Журналирование почтовой системы. Разбито на части, чтобы
# легко писать сценарии для разбора этих файлов.
#
mail.info -/var/log/mail.info mail.warn -/var/log/mail.warn mail.err /var/log/mail.err
# Журналирование новостной системы INN
#
news.crit /var/log/news/news.crit news.err /var/log/news/news.err news.notice -/var/log/news/news.notice
#
# Журналы, куда может попадать "все подряд".
#
*.=debug;\
auth,authpriv.none;\
news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -/var/log/messages
#
# Предупреждения и чрезвычайные сообщения, посылаемые всем вошедшим.
#
*.emerg *
*.=alert *
#
# Мне нравится вывод сообщений на консоль, но только на ту виртуальную
# консоль, что я обычно оставляю простаивать.
#
316

Настольная книга по безопасности Gentoo daemon,mail.*;\
news.=crit;news.=err;news.=notice;\
*.=debug;*.=info;\
*.=notice;*.=warn /dev/tty8
# Настройка сервера удаленного журналирования
*.* @logserver
# Именованный канал /dev/xconsole - для утилиты `xconsole'. Чтобы использовать,
# следует запускать `xconsole' с параметром `-file':
#
# $ xconsole -file /dev/xconsole [...]
#
# ПРИМЕЧАНИЕ: измените список, данный ниже, или вы с ума сойдете, если
# у вас осносительно загруженная площадка..
#
#daemon.*,mail.*;\
# news.crit;news.err;news.notice;\
# *.=debug;*.=info;\
# *.=notice;*.=warn |/dev/xconsole local2.* --/var/log/ppp.log
Злоумышленники, скорее всего, будут стараться уничтожать следы своего пребывания, исправляя или удаляя файлы журналов. Можно затруднить им работу, ведя журналирование на одном или нескольких удаленных серверах журнала, расположенных на других компьютерах. Узнать больше о syslogd можно, запустив man syslog.
3.c. Metalog
Metalog
, написанный Frank Dennis, не может отправлять журнал на удаленный сервер, но дает преимущество, когда речь о скорости и гибкости журналирования.
Он может вести журналы по названию программы, срочности, подсистеме (как и syslogd), и комплектуется разборщиком регулярных выражений, с помощью которых можно запускать внешние сценарии при обнаружении заданных шаблонов. При необходимости это может оказаться очень полезным.
Стандартной настройки обычно достаточно. Если необходимо, чтобы вам отправлялось письмо при любом неверно введенном пароле, используйте один из следующих сценариев.
Для postfix:
Листинг 2: /usr/local/sbin/mail_pwd_failures.sh для postfix
#! /bin/sh echo "$3" | mail -s "Warning (program : $2)" root
Для netqmail:
Листинг 3: /usr/local/sbin/mail_pwd_failures.sh for netqmail
#!/bin/sh echo "To: root
Subject:Failure (Warning: $2)
$3 317

Настольная книга по безопасности Gentoo
" | /var/qmail/bin/qmail-inject -f root
Не забудьте сделать сценарий исполняемым командой /bin/chmod +x
/usr/local/sbin/mail_pwd_failures.sh.
Затем в файле /etc/metalog/metalog.conf раскомментируйте строку под «Password failures»:
Листинг 4: /etc/metalog/metalog.conf command = "/usr/local/sbin/mail_pwd_failures.sh"



Поделитесь с Вашими друзьями:
1   ...   25   26   27   28   29   30   31   32   ...   79


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал