Bsdadmin.ru

Записки администратора FreeBSD

Путь на сайте

Домашняя FreeBSD Улучшаем безопасность сервера FreeBSD

Улучшаем безопасность сервера FreeBSD

Если Вам необходимо улучшить безопасность Вашего сервера FreeBSD, необходимо проделать следующее.

а . Обезопасим работу демона SSHD.
Для этого:
1. Разрешим доступ к машине только тем, кому положено.
Это осуществляется добавлением следующей линии в файл /etc/ssh/sshd_config:
AllowUsers john bob
И не забываем перезапустить службу.
# /etc/rc.d/sshd restart
Вы можете также разрешить доступ группе wheel(лично я не считаю это правильным!!!),введя для этого в конфигурационный файл /etc/ssh/sshd_config строку
AllowGroups wheel
А также запретить логиниться под root.
PermitRootLogin no  

2. Запустите SSH сервис на другом порту. По умолчанию он запускается на 22 порту.
Для этого отредактируйте /etc/ssh/sshd_config, изменив соответствующую строку на:
Port 456
При этом проверте, чтобы этот порт не использовался други сервисом.
И не забудьте перезапустить службу.
# /etc/rc.d/sshd restart
и перелогинуться по новому порту.
3. Блокируйте множественное подключение по SSH
MaxAuthTries 6 -максимальное количество попыток подключения (6)
MaxSessions 10 - Максимальная длина сессии(10 минут).
4. Регулярно обновляйте SSHD,ставьте патчи.
5. Если Вы логинитесь только с одного IP адреса, я не рекомендую прописывать его в конфигурационном файле.
6. Запретите ввод инрерактивного пароля и пользуйтесь публичными ключами.
7. Всегда используйте SSH протокол 2, он используется по умолчанию.
Protocol 2
8.Если Вы выдаете пользователям пароли,то они должны  быть не менее 8 знаков и состоять из букв,цифр и т.д и т.п.
Регулярно меняйте пароли и отключайте ненужные учетные записи.

б. Отключите все ненужные сервисы.
Запретите inetd.
Просканируйте свой сервер с помощью nmap ( nmap -P0 server_ip ),чтобы увидеть все открытые порты и запущенные сервисы.
Остановите ненужные сервисы и отключите их загрузку в файле /etc/rc.conf.
Удалите или запретите выполнение ненужных скриптов  в директории /usr/local/etc/rc.d  ( chmod -x /usr/local/etc/rc.d/script_name.sh ).
Для некоторых служб, закоментируйте их в файле /etc/inetd.conf 

в. Обезопасьте вашу консоль.
Отредактируйте /etc/ttys и замените строки
console none                            unknown off secure
на
console none                            unknown off insecure
Запретите перезагрузку машины через Ctrl+Alt+Del.
Для этого введите строку в файл конфигурации ядра:
options SC_DISABLE_REBOOT и пересоберите ядро.

г.Регулярно сканируйте порты и и отключайте ненужные сервисы.

д. Синхронизируйте время сервера.
Не используйте Logrotate. Если используете, то урезайте логи только еженедельно и ежемесячно.

е.Защита от DOS/DDOS.
Ниже описанное помогает частично защититься от DOS/DDOS атак.
отредактируйте следующие переменные  sysctl
kern.ipc.somaxconn=32768 # to defend against SYN attacks
Атакующий может попытаться модифицировать таблицу маршрутизации.
Для избежания этого измените:
net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=1
net.inet.ip.redirect=0
net.inet6.ip6.redirect=0


ж.Создайте checksum ваших файлов
Для этого используйте tripwire ( /usr/ports/security/tripwire-131 )
Не используйте ftp, пользуйтесь только sftp для копирования файлов.
Регулярно проверяйте логи.

з. net.inet.tcp.msl= 7500
msl = maximum segment life = максимальное время ожидания ACK  в рукопожатии SYN-ACK или FIN-ACK в миллисекундах.
net.inet.tcp.blackhole=2 -Эта переменная устанавливает, что произойдет, когда ваша машина примет пакер TCP на закрытый порт. ( 1- SYN пакет будет откинут, 2 -  все пакеты будут отброшены.)
net.inet.udp.blackhole=1
net.inet.icmp.icmplim=50 - Эта переменная контролирует максимальное число ICMP "Unreachable" и TCP RST возвращаемых каждую секунду.

Для сетевых карт dc, em, fxp, nge, rl, sis включите в ядре DEVICE_POLLING option , чтобы уменьшить время центрального процессора в обработке входящего трафика. Перекомпилите и переинстальте ядро и поменяйте следующую переменную sysctl.
kern.pooling.enable=1

и. Установите и настройте firewall
к. Используйте JAIL, где это возможно для Web Server, Mail server,DNS Server.
л. Используйте DMZ для Вашего Web-сервера.
м. Проверьте разрешения файлов
Проверьте setuid and setgid файлы на Вашем сервере:
# find / -type f \ ( - perm 2000 -o perm -4000 \ ) -print
о. Установите уровень безопасности ядра.
Существует 5 уровней безопасности для FreeBSD - от -1 до 3.Уровень меняется с помощью переменной sysctl kern.securelevel
п. Удалите неиспользуемые опции ядра.
Ниже показанные опции  обычно не используются на промышленных серверах.
DEBUG
IPv6,gif, faith
BPF
KTRACE
CD9660
MSDOSFS
NFS
USB
UCONSOLE

р. Drop synfins
Сконфигурите Ваш сервер так, чтобы он скрывал подпись операционной системы для утилит типа nmap. Для этого надо перекомпилить ядро с опцией
TCP_DROP_SYNFIN . Затем добсавить в /etc/sysctl.conf:
net.inet.tcp.drop_synfin=1

Домашняя FreeBSD Улучшаем безопасность сервера FreeBSD