Настройка защищенной системы FreeBSD
При применении какого-нибудь сервиса слишком важное значение имеет система на коей будет трудиться наш сервер. Так или иначе И самое большое значение подготовительная настройка данной системы, чтоб уменьшить опасности от её применения. Видите ли Для данного присутствуют упражнения увеличения сохранности системы.
В данном разборе полетов я не так давно произошедшие 7.2. По крайней мере Сама система FreeBSD считается одной из более защищенных операционных систем, при этом её код, даже несмотря на открытую идеологию open sourse часто проверяется и тестируется. Оказывается Не глядя на то, что с комплекте поставки FreeBSD теснее следует с мощной защищенностью, присутствуют меры по её увеличению практически до параноидального режима работы.
Для начала мы ставил чистую систему FreeBSD 7.2 и поднимаем на ней стереотипный сервер sshd2, чтоб не посиживать в консоли. Тем не менее После данного приступаем к опциям:
В системе довольно иметь лишь 1 директорию для сбережения временных файлов, желая в шаблонной упаковке их 2 /tmp и /var/tmp , потому что различные пакеты употребляют различные директории. Собственно Поскольку нам довольно одной, то ограничим их в данном независимом выборе, удалив /var/tmp
Следом отрубаем вероятность входа в консоль под юзером root, так как заход под ним выдает юзеру сразу нелимитированные права на систему. Поэтому юзер обязан подключаться под собой и исключительно в последствии данное забирать права при помощи применения команды su. И в самом деле Для данное раскрываем файл /etc/ttys и заменяем любую запись “secure” на “insecure”, что воспретит юзеру root подключаться к консоли. Между прочим Это ведь перемена станет станет настоятельно просить пароль юзера root при рагрузке в однопользовательском режиме системы (single-user mode), что так же веско осложнит перемена пароля суперпользователя.
#########################################################
console none unknown off insecure
ttyv0 “/usr/libexec/getty Pc” cons25 on insecure
ttyv1 “/usr/libexec/getty Pc” cons25 on insecure
ttyv2 “/usr/libexec/getty Pc” cons25 on insecure
ttyv3 “/usr/libexec/getty Pc” cons25 on insecure
ttyv4 “/usr/libexec/getty Pc” cons25 on insecure
ttyv5 “/usr/libexec/getty Pc” cons25 on insecure
ttyv6 “/usr/libexec/getty Pc” cons25 on insecure
ttyv7 “/usr/libexec/getty Pc” cons25 on insecure
ttyv8 “/usr/X11R6/bin/xdm -nodaemon” xterm off insecure
# The ‘dialup’ keyword identifies dialin lines to login, fingerd etc.
ttyd0 “/usr/libexec/getty std.9600? dialup off insecure
ttyd1 “/usr/libexec/getty std.9600? dialup off insecure
ttyd2 “/usr/libexec/getty std.9600? dialup off insecure
ttyd3 “/usr/libexec/getty std.9600? dialup off insecure
dcons “/usr/libexec/getty std.9600? vt100 off insecure
#########################################################
Закручиваем защищенность для ssh сервера. Наоборот Как его вывести на совершенно параноидальный режим, буду разбирать позже. Мало того Пока ведь ограничиваем юзеров имеющих право на вход в консоль, воспрещаем вход с пустующим паролем и вход юзеру root. Короче, Также ограничиваем время отводимое на включение к серверу и число поползновение. По правде говоря, Включаем вторую версию SSHv2 заместо идущей по умолчанию 1, так как она гарантирует наиболее высшую сохранность соединения. А кроме того Поскольку применять X11 на рабочем сервере мы не намечаем то выключим опцию форвардинга.
#########################################################
#########################################################
Теперь переходим к политическим деятелям сбережения паролей. Одним словом По умолчанию FreeBSD употребляет метод md5 для хэширования паролей. Судя по всему Это устойчивый и верный 128-битный метод, хотя пару месяцев назад были обнаружены беспомощности в его реализации, в следствии этого рекомендовано применять метод blowfish для сохранения паролей. К тому же Для перевода системы сохранения паролей в данный метод, нам надлежит поменять немного файлов. парои к слову не станут механически сконвертированы в blowfish, и станут сберегаться в md5 до грядущего перемены.
После данного нужно установить в файлике /etc/login.conf параметр сбережения паролей по умолчанию в класс blf. Не правда ли Также заменяем политическому деятелю используемых паролей: малая длинна, применение верхнего и нижнего регистра, время деяния пароля в 3 месяца и отключения юзера в последствии 10 мин. бездействия. Как ни странно Также заменяем маску прав доступа по умолчанию umask дабы избежать доступ юзеров для всех. Допустим Маска пробразуется в формат chmod, и все свежие разработанные файлы и папки станут иметь права доступа 0750, то есть у “оставшихся” юзеров не станет практически никаких прав на эти файлы.
#########################################################
:setenv=MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES:\
:path=/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin /usr/X11R6/bin ~/bin:\
#########################################################
Обновляем базу логинов:
После смены пароля юзера в файлике их сохранения in /etc/master.passwd записи паролей станут начинаться с $2a. Удивительно, что Это станет свидетельствовать про то, что для этого юзера включилось хеширование blowfish.
Теперь переназначаем истина доступа для юзеров к планировщику задач. То есть Планировщик задач считается комфортным и в это же время необыкновенно сильным средством администрирования *nix платформ. Подумать только, Его неправомочное и ошибочное применение имеет возможность привести сервер в неработоспособное состояние. Собственно говоря, Это быть может неверно составленые задания, но и злонамеренное зацикливание исполнения задания, способное привести автомашину к отказу в обслуживании.
Назначаем права на проектирование задач исключительно для юзера root
Также ограничим доступ на чтение и пуск неких файлов, к коим у простых юзеров нет потребности в доступе:
Также ограничиваем доступ к директориям содержащим лог файлы, потому что вероятный взломщик в последствии собственного присутствия постоянно ликвидирует все отпечатки оставленные в системе, методом чистки логов. Поэтому выключаем доступ к логам, для обыкновенных юзеров.
*** Эта операция воздействует на ротацию логов, коя будет неприступна.
Отключаем юзерам вероятность применения доли программ, в каких нет потребности, по их юзверьским делам.
Также надобно заблокировать немного сервисов:
а кроме того ограничить доступ к обмысленным и нужным, для сисадмина окончательно, утилитам, которые наверное станут установлены на автомашину:
В правами на первый взгляд окончили, сейчас перейдем к жарко любимому файлу /etc/rc.conf в каком мы закроем некие сервисы запущенные в системе по умолчанию, хотя нам лишние.
Отключаем MTA, коим по умолчанию считается sendmail. Конечно же Если данный сервис нужен, то может стоит употребляться exim или же qmail
По умолчанию уровень сохранности системы (kernel level) равен -1, то есть малюсенько защищенный. Казалось бы Если ожидается применять защищенный уровень, то рекомендовано принимать на вооружение 2, либо в том числе и 3 – как более защищенный.
# echo ‘kern_securelevel_enable=”YES”‘ >> /etc/rc.conf
Если не намечается на сервере принимать на вооружение систему NFS, то выключаем его и беса portmap:
Запрещаем inetd, бес отвечающий за сетевые сервисы (network daemon dispatcher), в виду того что его применение несет немало уязвимостей
На уровне старта системы очищаем директроию временных файлов /tmp , дабы не сомневаться что весь мусор который сможет там пребывать практически никаким образом не воздействует на работу нашей системы
Если не пишем логи на удаленную машинку, то задаем бесу syslogd не занимать сетевые сокеты
Cообщения ICMP redirect имеют все шансы быть применены для атаки, в следствии этого пренебрегаем и логируем их
Регистрируем все пробы включения на замкнутые порты, с тем чтоб сознавать про то, кто и для чего хочет подключиться на неработающие порты.
Чтобы при входе в консоль не выводилась версия OS и координаты ядар, воспрещаем обновление файла с известием дня (Message of Day)
Задаем немного характеристик ядра методом редактирования файла /etc/sysctl.conf . Без сомнения Для начала воспрещаем простым юзерам просмотр действий запущенных с другим UID
# echo “security.bsd.see_other_uids=0? >> /etc/sysctl.conf
Включаем систему помощи так именуемых “темных дыр”, что считается предупреждением отправки отзыва RST пакета, на запрос пришедший на перекрытый порт.
# echo “net.inet.tcp.blackhole=2? >> /etc/sysctl.conf
# echo “net.inet.udp.blackhole=1? >> /etc/sysctl.conf
Генерируем случайный ID для IP пакета дабы ликвидировать вероятность fingerprint и затруднить вероятность преступники систематизировать пакеты.
# echo “net.inet.ip.random_id=1? >> /etc/sysctl.conf
# echo “net.inet.icmp.maskrepl=0? >> /etc/sysctl.conf
Следующая функция ядра подойдет для рутеров, фаерволов и шлюзов: конфигурируем систему отбрасывать SYN/FIN пакеты, при стремлении её можнож включать и на обыкновенных срверах, хотя данное чревато падением производительности.
Вносим маленькие правки в ядро, которое понадобиться пересобрать. Иными словами Первой мы иключаем вероятность перезагрузки от ctrl+alt+del, 2-ой устанавливаем генерацию ID для сетевых пакетов (вариант с sysctl.conf действует исключительно на системах от 5.3, на всех прошлых нужно будет перебирать ядро). И наконец Также включаем сброс SYN/FIN и режим stealth forwarding, который дозволяет переправлять пакеты через хост в отсутствии перемены из TTL, то есть данная функция подойдет к примеру для сокрытия фаервола от команды tracerote
#########################################################
options RANDOM_IP_ID # Enables random IP ID generation
options TCP_DROP_SYNFIN # Enables the ability to drop SYN/FIN packets
options IPSTEALTH # Enable stealth forwarding
#########################################################
После чего же перестраиваем ядро и перегружаем машинку. Надо сказать Теперь у нас есть сервер, на котором максимум поднята защищенность и он готов к тому дабы настраивать на нем нужные нам сервисы.