Основы безопасности FreeBSD
Несмотря на то, что FreeBSD по праву считается одной из самых безопасных ОС в мире, тем не менее дам несколько советов, как эту самую безопасность улучшить.
Для начала, я не буду рассказывать про пользу обновлений операционной системы, обновление ПО, правильная настройка фаервола и т.д. и т.п. Это Вы и так должны понимать.
Для начала, поиграемся с sysctl.conf
vi /etc/sysctl.conf
net.inet.tcp.blackhole=2 # Это превращает машину в черную дыру при попытке подключиться к портам, которые не обслуживаются вашим сервером.
net.inet.udp.blackhole=1
kern.ps_showallprocs=0 # только пользователь root может видеть все запущенные процессы
/etc/rc.d/sysctl restart
Теперь поиграемся с правами доступа к крону
chmod 0600 /etc/crontab # только пользователь root должен иметь доступ к файлу настройки cron
Права доступа к файлам.
При помощи команды chmod 600, мы разрешаем доступ только пользователю root на запись и чтение файла. При помощи команды chmod 700, мы также даем возможность пользователю root возможность запускать файл.
chmod 0700 /root
chmod 0600 /etc/syslog.conf
chmod 0600 /etc/rc.conf
chmod 0600 /etc/newsyslog.conf
chmod 0600 /etc/hosts.allow
chmod 0600 /etc/login.conf
chmod 0700 /usr/home/*
Console Access (доступ к консоли)
Запомните что хоть мы и блокируем доступ от неавторизованного доступа в однопользовательском режиме, это не обеспечивает полную защиту вашего сервера. Некто с плохими намерениями может снять жесткий диск с вашего сервера и установить его на другом компьютере. Если сервер не защищен физически, то никакие программные настройки, вас не спасут от взлома вашей системы. Изменение прав доступа к первой консоли означает что вы не сможете войти в систему в однопользовательском режиме, не зная пароля пользователя
vi /etc/ttys
console none unknown off insecure # запрашивать пароль пользователя root в однопользовательском режиме.
ttyv0 “/usr/libexec/getty Pc” cons25 on insecure
# Virtual terminals
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
Некоторые данные, которые необходимы в rc.conf
vi /etc/rc.conf
inetd_enable=”NO” # Better ways to run your daemons
syslogd_enable=”YES” # Конечно мы хотим вести регистрацию событий. Если вы планируете настроить
# удаленную регистрацию событий, тогда пропустите следующую строку.
# Если файлы регистрации событий будут расположены на локальном диске,
# убедитесь что у вас смонтирован раздел /var.
syslogd_flags=”-ss” # Этим мы закроем 514 udp порт если мы не хотим использовать удаленную
# регистрацию событий на или с этого сервера. Естественно не нужно добавлять
# эту строчку, если вы планируете настроить удаленную регистрацию событий.
icmp_drop_redirect=”YES” # Отключаем прием и отправку переадресовующих ICMP пакетов.
icmp_log_redirect=”YES” # Регистрировать переадресовующие ICMP пакеты в журнальном файле
clear_tmp_enable=”YES” # Очищать директорию /tmp при загрузке.
portmap_enable=”NO” # Если не используется NFS
icmp_bmcastecho=”NO” # Предотвращает springboarding и smurf атаки, запрещая серверу отвечать
# на широковещательные ping-пакеты.
fsck_y_enable=”YES” # При ошибках файловой системы на этапе загрузки утилита fsck будет
# запущена с флагом -y (man fsck)
update_motd=”NO” #Не обновлять файл с сообщением дня /etc/motd
tcp_drop_synfin=”YES” # Отбрасывать synfin пакеты. Смотри ниже, необходимые изменения в ядре.
log_in_vain=”YES” # Установите эту опцию, если вы хотите записывать все попытки подключения
# к закрытым портам вашего сервера.
sshd_enable=”YES” # Это позволит сделать удаленный доступ к серверу более защищенным.