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



Pdf просмотр
страница32/79
Дата14.11.2016
Размер5.55 Mb.
Просмотров11423
Скачиваний1
1   ...   28   29   30   31   32   33   34   35   ...   79

Add filtered!


Примечание: Не закрывайте теги и . Squid сделает это самостоятельно.
Как вы видите, у Squid есть множество возможностей для очень эффективной фильтрации и кэширования. Можно даже использовать альтернативные прокси- сервера Squid для сегментирования очень больших сетей. Приведенная конфигурация подходит для небольшой сети с 1—20 пользователями.
Однако комбинация межсетевого экрана (iptables) и программного шлюза (Squid), возможно, является наилучшей, особенно если Squid находится где-нибудь в безопасном месте, где никто не может иметь к нему доступ извне. Нам все же стоит позаботиться об атаках изнутри.
Теперь вам необходимо настроить клиентские браузеры для использования прокси-сервера. Шлюз предотвратит попытки пользователей общаться с внешним миром без использования прокси.
Примечание: В Mozilla это может быть сделано через Edit->Preferences-
>Advanced->Proxies.
Также можно настроить прозрачное использование прокси, указав iptables перенаправлять весь исходящий трафик на вход Squid. Это можно сделать, добавив следующее правило на шлюзе:
Листинг 10: Разрешить проброс портов для нашего прокси-сервера
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to proxyhost:3128
# iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to proxyhost:3128
Примечание: Если прокси-сервер работает на том же узле, что и межсетевой экран (хотя это не рекомендуется, но может понадобится из-за отсутствия свободных компьютеров), то используйте цель REDIRECT вместо DNAT
(REDIRECT направит пакеты на localhost).
12.g. Изучено
Мы узнали:
1. Межсетевой экран является опасным сам по себе. Плохо настроенный межсетевой экран хуже, чем его отсутствие.
2. Как установить простой шлюз и прозрачный прокси-сервер.
3. Залогом хорошей работы межсетевого экрана заключается в знании протоколов, которые вы собираетесь разрешить.
4. IP-трафик не всегда содержит законные данные, например пакеты ICMP, которые могут содержать вредоносное содержимое.
5. Как предотвратить SYN-атаку.
6. Фильтрация HTTP-трафика предотвратит загрузку нежелательных изображений и вирусов.
7. Сочетание пакетных фильтров и программных шлюзов дает лучший контроль.
Теперь, если вам действительно это нужно, идите и создайте правила межсетевого экрана, отвечающего вашим требованиям.
352

Настольная книга по безопасности Gentoo
13. Обнаружение вторжения
13.a. AIDE (Advanced Intrusion Detection Environment)
AIDE — это система обнаружения атак, основанная на узле (Host-Based Intrusion
Detection System, HIDS), свободная альтернатива Tripwire (если вы уже работали с
Tripwire, то не должны испытывать сложности с конфигурационным файлом AIDE).
HIDS используется для обнаружения изменений в важных системных файлах настроек и двоичных файлах с помощью сверки уникальных криптографических контрольных сумм, созданных каждого из файлов и сохраненных в надежном месте. Принцип действия таков: заранее сохраненный и достоверный хеш сравнивается с сгенерированным с текущей копии каждого файла, чтобы определить какой из файлов был изменен. HIDS является великолепным решением для регистрации подозрительных изменений в системе, однако для того, чтобы она заработала, нужно приложить небольшие усилия.
Конфигурационный файл основан на применении регулярных выражений, макросов и правил для файлов и каталогов. Есть следующие макросы:
Макрос Описание
Синтаксис
ifdef если определен
@@ifdef "name"
ifndef если не определен
@@ifndef "name"
define определить переменную
@@define "name" "value"
undef удалить переменную
@@undef "name"
ifhost если "hostname"
@@ifhost "hostname"
ifnhost если не "hostname"
@@ifnhost "hostname"
endif endif должен использоваться каждый раз, когда используется любой из вышеприведенных макросов, за исключением define и undef
@@endif
Если у вас есть много компьютеров с Gentoo и вы хотите использовать на них
AIDE, то макросы будут весьма полезными. Но не на всех компьютерах запускаются одни и те же сервисы или есть одни и те же пользователи.
Теперь необходимо установить флаги проверок для файлов и каталогов.
Возможны сочетания прав доступа, свойств файлов и криптографических хешей
(контрольных сумм).
Флаг
Описание
p права доступа i
inode n
количество ссылок u
пользователь g
группа s
размер b
число блоков
353

Настольная книга по безопасности Gentoo m
время последней модификации a
время последнего доступа c
время изменения
S
проверка растущего размера md5
контрольная сумма MD5
sha1
контрольная сумма SHA1
rmd160 контрольная сумма RMD160
tiger контрольная сумма Tiger
R
p+i+n+u+g+s+m+c+md5
L
p+i+n+u+g
E
Пустая группа
>
растущий лог-файл p+u+g+i+n+S
А если AIDE собран с поддержкой mhash, то доступны следующие возможности:
Флаг Описание
haval контрольная сумма HAVAL
gost контрольная сумма ГОСТ
crc32 контрольная сумма CRC32
Теперь вы можете создать собственные правила, основанные на сочетании вышеперечисленных флагов, например:
Листинг 1: Создание набора правил для AIDE
All=R+a+sha1+rmd160
Norm=s+n+b+md5+sha1+rmd160
И последнее, что нам понадобится для создания собственного конфигурационного файла, — это умение добавлять правило для файла или каталога. Чтобы ввести правило, скомбинируйте файл или каталог с правилом. AIDE добавляет все файлы рекурсивно, если вы не указали обратное в другом правиле.
Флаг Описание
!
Не добавлять этот файл или каталог.
=
Добавлять этот каталог, но не рекурсивно.
А теперь взглянем на полный пример:
Листинг 2: /etc/aide/aide.conf
@@ifndef TOPDIR
@@define TOPDIR /
@@endif
@@ifndef AIDEDIR
@@define AIDEDIR /etc/aide
@@endif
@@ifhost smbserv
@@define smbactive
354

Настольная книга по безопасности Gentoo
@@endif
# Расположение базы данных для чтения.
database=file:@@{AIDEDIR}/aide.db
# Расположение базы данных для записи.
database_out=file:aide.db.new verbose=20
report_url=stdout
# Определение правил
All=R+a+sha1+rmd160
Norm=s+n+b+md5+sha1+rmd160
@@{TOPDIR} Norm
!@@{TOPDIR}etc/aide
!@@{TOPDIR}dev
!@@{TOPDIR}media
!@@{TOPDIR}mnt
!@@{TOPDIR}proc
!@@{TOPDIR}root
!@@{TOPDIR}sys
!@@{TOPDIR}tmp
!@@{TOPDIR}var/log
!@@{TOPDIR}var/run
!@@{TOPDIR}usr/portage
@@ifdef smbactive
!@@{TOPDIR}etc/smb/private/secrets.tdb
@@endif
=@@{TOPDIR}home Norm
В приведенном примере мы указали некоторые макросы, корневой каталог, с которого будет начинать свою работу AIDE, и каталог, в котором находится AIDE.
AIDE сверяется с /etc/aide/aide.db при проверке на целостность. Но при обновлении или создании нового файла она сохраняет информацию в
/etc/aide/aide.db.new. Это делается для того, чтобы не переписать старую базу данных. Параметр report_URL пока не реализован, но, согласно автору, он должен отправлять электронную почту или даже запуск сценариев.
Теперь по умолчанию пакет AIDE поставляется вместе с рабочим конфигурационным файлом, сценарием-помощником и сценарием планировщика заданий crontab. Сценарий-помощник содержит множество задач для вас и предоставляет более дружественный интерфейс. Чтобы просмотреть все доступные параметры, попробуйте aide --help. Все что вам нужно, чтобы начать,
— запустить aide -i, и теперь сценарий crontab должен найти базу данных и ежедневно отправлять отчеты по электронной почте. Рекомендуется все же пересмотреть файл /etc/aide/aide.conf и удостовериться, что конфигурация подходит для данного компьютера.
Примечание: В зависимости от процессора, скорости чтения диска и установленных для файлов флагов, это может занять много времени.
Примечание: Не забудьте установить алиасы, чтобы получать почту, адресуемую суперпользователю. Иначе вы никогда не узнаете, что пишет для вас в отчетах
AIDE.
355

Настольная книга по безопасности Gentoo
Все же есть небольшой риск, заключающийся в том, что злоумышленник может
(если узнает об установленном AIDE) изменить локальную базу данных файлов, обновить ее или изменить /usr/bin/aide. Поэтому вы должны создать компакт-диск или иной носитель и сохранить на нем копию файла .db и двоичных файлов AIDE.
Дополнительную информацию вы можете найти на сайте проекта
AIDE
13.b. Snort
Snort является сетевой системой обнаружения вторжения (Network Intrusion
Detection System, NIDS). Чтобы установить и настроить его, воспользуйтесь следующими примерами.
Листинг 3: /etc/conf.d/snort
PIDFILE=/var/run/snort_eth0.pid
MODE="full"
NETWORK="10.0.0.0/24"
LOGDIR="/var/log/snort"
CONF=/etc/snort/snort.conf
SNORT_OPTS="-D -s -u snort -dev -l $LOGDIR -h $NETWORK -c $CONF"
Листинг 4: /etc/snort/snort.conf
(Шаг 1)
var HOME_NET 10.0.0.0/24
var EXTERNAL_NET any var SMTP $HOME_NET
var HTTP_SERVERS $HOME_NET
var SQL_SERVERS $HOME_NET
var DNS_SERVERS [10.0.0.2/32,212.242.40.51/32]
var RULE_PATH ./
(Шаг 2)
preprocessor frag2
preprocessor stream4: detect_scans detect_state_problems detect_scans disable_evasion_alerts preprocessor stream4_reassemble: ports all preprocessor http_decode:80 8080 unicode iis_alt_unicode double_encode iis_flip_slash full_whitespace preprocessor rpc_decode: 111 32771
preprocessor bo: -nobrute preprocessor telnet_decode
(Шаг 3)
include classification.config
(Шаг 4)
include $RULE_PATH/bad-traffic.rules include $RULE_PATH/exploit.rules include $RULE_PATH/scan.rules include $RULE_PATH/finger.rules include $RULE_PATH/ftp.rules include $RULE_PATH/telnet.rules include $RULE_PATH/smtp.rules include $RULE_PATH/rpc.rules include $RULE_PATH/rservices.rules include $RULE_PATH/dos.rules include $RULE_PATH/ddos.rules include $RULE_PATH/dns.rules include $RULE_PATH/tftp.rules include $RULE_PATH/web-cgi.rules include $RULE_PATH/web-coldfusion.rules include $RULE_PATH/web-iis.rules include $RULE_PATH/web-frontpage.rules include $RULE_PATH/web-misc.rules include $RULE_PATH/web-attacks.rules include $RULE_PATH/sql.rules include $RULE_PATH/x11.rules
356

Настольная книга по безопасности Gentoo include $RULE_PATH/icmp.rules include $RULE_PATH/netbios.rules include $RULE_PATH/misc.rules include $RULE_PATH/attack-responses.rules include $RULE_PATH/backdoor.rules include $RULE_PATH/shellcode.rules include $RULE_PATH/policy.rules include $RULE_PATH/porn.rules include $RULE_PATH/info.rules include $RULE_PATH/icmp-info.rules include $RULE_PATH/virus.rules
# include $RULE_PATH/experimental.rules include $RULE_PATH/local.rules
Листинг 5: /etc/snort/classification.config config classification: not-suspicious,Not Suspicious Traffic,3
config classification: unknown,Unknown Traffic,3
config classification: bad-unknown,Potentially Bad Traffic, 2
config classification: attempted-recon,Attempted Information Leak,2
config classification: successful-recon-limited,Information Leak,2
config classification: successful-recon-largescale,Large Scale Information Leak,2
config classification: attempted-dos,Attempted Denial of Service,2
config classification: successful-dos,Denial of Service,2
config classification: attempted-user,Attempted User Privilege Gain,1
config classification: unsuccessful-user,Unsuccessful User Privilege Gain,1
config classification: successful-user,Successful User Privilege Gain,1
config classification: attempted-admin,Attempted Administrator Privilege Gain,1
config classification: successful-admin,Successful Administrator Privilege Gain,1
# NEW CLASSIFICATIONS
config classification: rpc-portmap-decode,Decode of an RPC Query,2
config classification: shellcode-detect,Executable code was detected,1
config classification: string-detect,A suspicious string was detected,3
config classification: suspicious-filename-detect,A suspicious filename was detected,2
config classification: suspicious-login,An attempted login using a suspicious username was detected,2
config classification: system-call-detect,A system call was detected,2
config classification: tcp-connection,A TCP connection was detected,4
config classification: trojan-activity,A Network Trojan was detected, 1
config classification: unusual-client-port-connection,A client was using an unusual port,2
config classification: network-scan,Detection of a Network Scan,3
config classification: denial-of-service,Detection of a Denial of Service Attack,2
config classification: non-standard-protocol,Detection of a non-standard protocol or event,2
config classification: protocol-command-decode,Generic Protocol Command Decode,3
config classification: web-application-activity,access to a potentially vulnerable web application,2
config classification: web-application-attack,Web Application Attack,1
config classification: misc-activity,Misc activity,3
config classification: misc-attack,Misc Attack,2
config classification: icmp-event,Generic ICMP event,3
config classification: kickass-porn,SCORE! Get the lotion!,1
Дополнительной информация может быть найдена на сайте
Snort
13.c. Обнаружение вредоносных программ с помощью chkrootkit
Система HIDS, как AIDE, является лучшим средством для обнаружения изменений в вашей системе, но хуже не будет, если будет установлен еще один рубеж обороны. chkrootkit — это утилита, которая сканирует системные файлы на наличие руткитов — программ, разработанных для сокрытия присутствия взломщика и сохранения доступа к системе, а также на наличие следов кейлоггеров и прочих вредоносных программ. Хотя chkrootkit (и прочие аналоги, например rkhunter) являются полезными утилитами, как контроля за системой, так и для обнаружения следов вторжения, но они не могут гарантировать, что ваша система в безопасности.
357

Настольная книга по безопасности Gentoo
Наилучший способ использовать chkrootkit для обнаружения внедрения — запускать его с помощью cron. Сначала установите app-admin/chkrootkit. chkrootkit может запускаться из командной строки или же с помощью записи в cron следующего вида:
Листинг 6: Назначение задания chrootkit в crontab
0 3 * * * /usr/sbin/chkrootkit
14. Регулярные обновления
14.a. Регулярные обновления
После успешной установки и настройки ее безопасности систему, тем не менее, нельзя называть завершенной. Процесс обеспечения безопасности является постоянным по времени, ведь большинство известных взломов является результатом использования известных уязвимостей в устаревших системах.
Постоянное обновление системы — наиболее значимый шаг, который вы можете совершить для обеспечения наилучшей безопасности.
Если у вас установлена последняя версия portage, то, предварительно обновив дерево с помощью команды emerge --sync, вы можете запустить команду glsa- check --list, которая проверит вашу систему на наличие известных уязвимостей. glsa-check является частью пакета app-portage/gentoolkit.
Листинг 1: Пример вывода glsa-check -l
# glsa-check -l
WARNING: This tool is completely new and not very tested, so it should not be used on production systems. It's mainly a test tool for the new GLSA release and distribution system, it's functionality will later be merged into emerge and equery.
Please read http://www.gentoo.org/proj/en/portage/glsa-integration.xml before using this tool AND before reporting a bug.
[A] means this GLSA was already applied,
[U] means the system is not affected and
[N] indicates that the system might be affected.
200406-03 [N] sitecopy: Multiple vulnerabilities in included libneon ( net-misc/sitecopy )
200406-04 [U] Mailman: Member password disclosure vulnerability ( net-mail/mailman )
Предупреждение: Утилита glsa-check все еще является экспериментальной, поэтому, если вы действительно ставите безопасность превыше всего, то лучше также свериться с другими источниками.
Все строки, содержащие [A] и [U], могут быть игнорированы, так как они неприменимы для данной системы.
Важно: Не забывайте, что использование emerge -vpuD world не устанавливает все необходимые обновления пакетов. Используйте glsa-check, если хотите быть уверенным, что все GLSA исправлены в вашей системе.
Листинг 2: Проверка всех GLSA
(Подвержена ли ваша система GLSA?)
# glsa-check -t all
WARNING: This tool is completely new and not very tested, so it should not be used on production systems. It's mainly a test tool for the new GLSA release and distribution system, it's functionality will later be merged into emerge
358

Настольная книга по безопасности Gentoo and equery.
Please read http://www.gentoo.org/proj/en/portage/glsa-integration.xml before using this tool AND before reporting a bug.
This system is affected by the following GLSA:
200504-06 200510-08 200506-14 200501-35 200508-12 200507-16
(Просмотр всех пакетов, подверженных переустановке)
# glsa-check -p $(glsa-check -t all)
(частичный вывод)
Checking GLSA 200504-06
The following updates will be performed for this GLSA:
app-arch/sharutils-4.2.1-r11 (4.2.1-r10)
**********************************************************************
Checking GLSA 200510-08
The following updates will be performed for this GLSA:
media-libs/xine-lib-1.1.0-r5 (1.1.0-r4)
(применение необходимых исправлений)
# glsa-check -f $(glsa-check -t all)
Если вы обновили запущенный сервис, не забудьте перезапустить его.
Также рекомендуется регулярно обновлять ядро
Вы можете также подписаться на список рассылки gentoo-announce, чтобы получать уведомления GLSA по электронной почте. Инструкции по подписке могут быть найдены на странице
Введение в почтовые рассылки Gentoo Linux
Другим хорошим источником информации по безопасности является список рассылки Bugtraq
359

Hardened Gentoo
Hardened Gentoo
Ссылка на оригинал:
http://www.habrahabr.ru/blog/linux/22815.html
Автор: powerman.
С версии: 1.5.
Описание
Для начала расскажу, зачем я публикую эту статью. Дело в том, что большинство пользователей Gentoo Linux до сих пор не использует
Hardened Gentoo
. И вызвано это обычно тем, что они либо не знают, что это такое, либо считают что это слишком сложно, либо считают что от этого пострадает стабильность, функциональность или производительность системы. Вот эти опасения я и хочу попытаться развеять.
Hardened Gentoo - это несколько изменений в компиляторе и ядре, которые увеличивают общую защищенность системы от взлома. Например, hardened-ядро умеет блокировать массу потенциально опасных операций, а hardened-gcc позволяет защитить компилируемые им программы от взлома типовыми методами а-ля переполнение буфера. Грубо говоря, если у вас стоит "дырявая" версия программы X, и её пытается взломать хакер, то в обычной системе у него это получится, а в hardened - не получится, да ещё и в лог запись пойдёт.
Для установки Hardened на обычный Gentoo нужно будет полностью перекомпилировать всю систему - иначе защиты предоставляемые hardened-gcc не будут использоваться. Hardened - это ещё одна система, которую нужно аккуратно настраивать - переборщишь с защищённостью - ничего работать не будет вообще, недоборщишь - зачем тогда вообще Hardened ставить? Некоторые проги с hardened не уживаются (обычно это бинарные пакеты: дрова nVidia/ATI,
Java плюс почему-то такой софт как mplayer/xmms) - это не смертельно, просто приходится для этих прог индивидуально отключать часть защит (для этого есть утилитки)... что огорчает. Ядро используется из пакета hardened-sources, и оно обычно на пару версий отстаёт от gentoo-sources.
Итак, Hardened Gentoo это просто объединение нескольких разных, часто независимых друг от друга, проектов:
1. Hardened toolchain - специальные патчи на gcc/glibc/binutils:

SSP
- добавляет в бинарник защиту от переполнения буфера, т.е. прога откомпилированная с SSP сама проверяет что у неё не переполнили буфер и киляет сама себя если обнаруживает переполнение (как следствие бага в самой программе или попытки её взломать эксплойтом).

PIE
- не увеличивает защищённость сам по себе, но приводит к генерации более гибкого кода, благодаря чему его можно будет защитить на уровне ядра через PaX.
PIE и SSP не зависят друг от друга, и их можно использовать вместе и по отдельности (после компиляции hardened toolchain можно будет через gcc-
360

Hardened Gentoo config переключаться между всеми вариантами - PIE+SSP, только PIE, только SSP, ничего (т.е. обычный gcc) - например, если какая-то прога не будет компилироваться.
2. Патчи на ядро. Их бывает много, и разных, :) но в Gentoo есть поддержка только четырёх из них -
PaX
,
SeLinux
,
GrSecurity и
RSBAC
Функциональность они добавляют трех типов:

Защита от переполнения буфера (а-ля SSP но со стороны ядра и другими методами, так что они друг друга дополняют): PaX.
Например, PaX позволяет запретить выполнение кода в страницах памяти с данными (софтварная реализация NX-бита, которые появился только в 64-битных процах Intel) - PaX просто кильнёт процесс если он попытается нарушить эту защиту; при загрузке программы в память грузит все её функции по случайным адресам, чтобы эксплойту было очень сложно узнать на какой адрес передавать управление (это становится возможным благодаря компиляции с PIE).

Отключение потенциально опасных "фич" ядра: GrSecurity, RSBAC.
Пример: запрет выполнять mount внутри chroot - чтобы хакер взломавший chroot-нутый демон и получивший root-а не смог выйти из chroot.

Ограничение прав процессов и юзеров, в т.ч. (я бы даже сказал - в основном) юзера root: SeLinux, GrSecurity/RBAC, RSBAC. Здесь идея в том, что админу (вам :)) нужно подготовить список с указанием какие проги/юзеры что имеют право делать. Пример: можно ограничить root-овый процесс apache из всех прав root-а только возможностью садиться на 80-й порт и читать файлы в /etc/apache2/.
В этом случае даже если его и взломают, и хакер получит "root", то
ЭТОТ "root" сможет делать только вышеперечисленные операции... хакер будет крайне разочарован. :)
Эти три "фичи" тоже не зависят одна от другой. Но сами патчи - SeLinux,
GrSecurity и RSBAC обычно между собой не совместимы и нужно использовать только один из них. Впрочем, в Gentoo сумели объединить
SeLinux и GrSecurity вместе. Часть GrSecurity, которая занимается третьей фичей (ограничением прав) называется RBAC, и её использовать вместе с
SeLinux нельзя
- или-или.
Итого, варианты есть, например, следующие:

PaX + GrSecurity

PaX + GrSecurity (без RBAC) + SeLinux

PaX + SeLinux

PaX + RSBAC

... etc ...
Я выбрал первый (PaX+GrSecurity) т.к. во-первых настройка SeLinux обещает быть кошмаром, в отличие от GrSecurity/RBAC; во-вторых на мой взгляд поддержка RSBAC в Gentoo ещё сыровата; и в-третьих ну понравился мне GrSecurity, понравился. :))
361

Hardened Gentoo
Установка
Процесс установки Hardened Gentoo (точнее, апгрейда текущей Gentoo системы в
Hardened) выглядит примерно так:
1. переключаемся на hardened toolchain и пересобираем им всю систему, чтобы все бинарники использовали PIE и SSP (после этого система становится защищена SSP)
2. устанавливаем hardened-sources (они содержат патчи PaX + GrSecurity +
SeLinux + дополнительные от Gentoo) и компилируем их с поддержкой PaX,
GrSecurity и GrSecurity/RBAC
3. перегружаемся с новым ядром (после этого система становится защищена ещё и PaX+PIE и GrSecurity)
4. некоторое время настраиваем и отлаживаем ограничения доступа (после чего система становится защищена ещё и GrSecurity/RBAC)
Ожидаемые проблемы:

не всё может скомпилироваться с PIE+SSP - возможно отдельные пакеты нужно будет патчить или компилировать без одной или обоих из них (мне пока потребовалось через gcc-config переключаться на vanilla gcc только для компиляции X-ов чтобы они работали с ATI-дровами)

не всё может нормально работать, т.к. некоторые программы (обычно упоминают X-ы и java) используют выполнение динамически сгенерированного кода для вполне легальных целей, а теперь при попытке это делать они будут киляться либо SSP либо PIE+PaX - для этих программ нужно будет индивидуально отключать часть защит PaX (для этого есть специальные утилиты, например paxctl) и/или компилировать их без SSP

не всё может работать из-за ограничений "фич" ядра GrSecurity - в этом случае нужно будет часть защит GrSecurity отключать (глобально, в make menuconfig)

настроить ограничения прав доступа может оказаться не просто, и в любой момент когда какая-нить прога сделает что-то, что мы при настройке её прав не учли - она будет прибита ядром... и придётся эти правила в срочном порядке фиксить
Ну что, поехали... :)
Слишком сильная оптимизация (-O3) вместе с hardened toolchain может приводить к разным глюкам и сбоям компиляции, поэтому нужно в /etc/make.conf заменить
-O3 на -O2, и убрать все прочие -f* оптимизаторские флаги.
Переходим на hardened-профайл. (Теоретически вместо этого можно было просто добавить в USE-флаги: "hardened pie ssp".)
ln -snf ../usr/portage/profiles/hardened/x86/2.6/ /etc/make.profile
После переключения профайла на hardened/x86/2.6/ выключилось несколько
362

Hardened Gentoo нужных мне USE-флагов, которые в обычных профайлах включены автоматически
- я их дописал в make.conf (у вас флаги могут быть другие, просто не забудьте этот момент проследить):
avi encode gtk2 jpeg mpeg oss quicktime spell truetype xv bitmap-fonts truetype-fonts type1-fonts
Компиляция hardened-toolchain и пересборка им всех остальных пакетов:
emerge binutils gcc glibc emerge -e world dispatch-conf
Далее, нужно поставить ещё несколько пакетов:
emerge paxtest paxctl gradm paxtest можно было поставить и раньше, до перехода на hardened toolchain. Эта утилитка пытается делать разные опасные операции (типа переполнения стека с выполнением кода), которые обычно выполняют эксплойты. Если система защищена, то все её попытки будут пресечены, о чём она и сообщит. В общем, можно её погонять до установки hardened toolchain, после а так-же после перезагрузки с ядром где включён PaX, по приколу. :)
paxtest как свою зависимость так-же установит прогу chpax - это старый способ управлять PaX, вместо которого лучше использовать paxctl. Но некоторые проги, распространяемые без исходников, скомпилированы так, что paxctl с ними работать не может, и приходится юзать chpax.
Ну а gradm нужен для настройки RBAC в GrSecurity - тех самых ограничений прав для процессов и юзеров.
Что касается настроек ядра. Я для начала настроил всё так, как описано в доке
Gentoo и GrSecurity - при этом не все защиты включены, но большинство софта при таких настройках будет работать. В процессе разбора с настройками возникло несколько теоретических предположений:

Если загрузить hardened ядро ДО перекомпилирования системы, то могут возникнуть проблемы если включена эта опция:
PaX -> Non-executable pages -> Disallow ELF text relocations

На сервере, где нет X-ов, можно дополнительно включить: (не забыть перед этим проверить, что от этого не перестало работать что-то кроме X-ов, в частности hwclock):
Grsecurity -> Address Space Protection -> Disable privileged I/O

Кроме того, ещё есть предположение, что некоторые ограничения chroot могут помешать операциям типа инсталляции Gentoo (которая идёт внутри chroot) или попытке починки системы (если, например, для этого загрузиться с CD с таким hardened ядром):
Grsecurity -> Filesystem Protections -> Deny mounts
Grsecurity -> Filesystem Protections -> Deny double-chroots
Grsecurity -> Filesystem Protections -> Deny (f)chmod +s
Grsecurity -> Filesystem Protections -> Deny mknod
363
1   ...   28   29   30   31   32   33   34   35   ...   79


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

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


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