- •Министерство Образования и Науки Украины
- •Вступление
- •Список используемых терминов и обозначений
- •Информация и информационные отношения. Субъекты информационных отношений, их безопасность
- •Определение требований к защищенности информации
- •Комплексные меры по защите информации Принцип «слабейшего звена»
- •Экономическая целесообразность защиты
- •Категоризация информации
- •Комплекс мер защиты
- •Часть іі. Практика Объект
- •Физическая защита
- •Организационная защита
- •Реализация политики безопасности
- •2. Реализация
- •3.3. Доступ к Интернету
- •3.3.1 Разрешенные службы
- •Программная защита
- •Безопасная настройка FreeBsd
- •1. Инсталяция:
- •2. Настройка
- •3. Пользователи.
- •4. Сообщение дня
- •6. Rc.Conf
- •8. Sysctl.Conf
- •9. Fstab
- •10. CvSup
- •11. Cron Jobs
- •12. Kernel Changes (изменения в ядре)
- •13. Права доступа к файлам.
- •14. Сетевой Протокол Времени (Network Time Protocol).
- •15. Tcp Wrappers
- •16. Console Access (доступ к консоли).
- •17. Bash Shell
- •18. Chflags
- •19. Зачистка.
- •Атрибуты файла и файловой системы
- •Способы защиты от флуда и dDoSатак. Черные дыры.
- •Защита очереди сокета от syn атак.
- •Редиректы (Перенаправления)
- •Настройка стека ip в системах unix на оптимальную производительность:
- •Другие средства защиты
- •Во FreeBsd существует еще множество средств защиты. Я не в силах рассмотреть их все, так что на этом придется закончить.
- •Надо только добавить, что необходимо также настроить аппаратные фареволы, которые стоят на точках выхода в Интернет и корпоративную сеть.
- •Литература:
Безопасная настройка FreeBsd
В этом разделе приведу некоторые рекомендации, которые помогут настроить наиболее защищенный сервер.
Здесь описывается использование некоторых приложений, которые включены в дерево портов FreeBSD, эти приложения помогут сделать сервер еще более защищенным. Также, я опишу использование chrootkit - программа для проверки наличия в системе root-kit-ов. rdate - замена для ntp. cvsup и portupgrade для обновления системы и дерева портов.
1. Инсталяция:
При разметке диска, лучше всего не использовать значения по умолчанию, а разметить его вручную. Приведу несколько причин: возможность повреждения файловой системы при аварии значительно снижается, если в это вермя она не находилась в процессе записи, а так как запись в раздел root осуществляется крайне редко, следует поместить его отдельно; сохранение всех данных в одном разделе ведет к повышению уязвимости системы к различным атакам и ошибкам пользователей; это позволит применить различные опции для каждого раздела.
Разметка диска будет выглядеть вот так:
none(swap)
/
/tmp
/usr
/usr/home
/var
/root
2. Настройка
Отключаем inetd. В этом случае никто не сможет использовать telnet, rlogin или ftp для доступа к компьютеру.
Отключаем port_map
Откажемся от ntp, вместо этого мы используем rdate, при обновлении будут использоваться ntp-сервера. Установим коллекцию портов, которая будет расположена в /usr/ports
Установим следующие порты
/usr/ports/security/chkrootkit
/usr/ports/security/portaudit
/sysutils/rdate
/sysutils/portupgrade
/net/cvsup-without-gui (я считаю, что на серверах не должно быть графического интерфейса)
3. Пользователи.
Так как мы запрещаем удаленную регистрацию под пользователем root через ssh, очень важно создать дополнительного пользователя. Для этого необходимо создать пользователя, который должен быть в группе wheel, что позволит ему в дальнейшем регистрироваться под пользователем root при помощи команды su.
Создадим группу для пользователей, которые могут иметь удаленный доступ
vi /etc/group
sshusers:*:1001:список пользователей находящихся в этой группе Сохраним файл и выйдем из vi, для этого зажмите кнопку shift и нажмите дважды кнопку zz.
(далее это действие будет обозначаться как ZZ)
4. Сообщение дня
cp /etc/motd /etc/motd.old
rm /etc/motd
vi /etc/motd
В содержании этого файла необходимо написать предупреждение о том, что доступ к данному серверу имеют только зарегистрированные пользователи и только для выполнения задач, которые разрешены для выполнения на этом сервере. Также необходимо указать что, регистрируясь на данном сервере пользователь соглашается с системной политикой данного сервера, что очень важно в случае возникновения судебных разбирательств с пользователями, которые нарушили правила работы на сервере. Сохраняем и выходим из vi. ZZ
cp /etc/motd /etc/issue # мы будем использовать motd для показа
# при удаленной регистрации.
# см. также /etc/ssh/sshd_config
5. OpenSSH Мы настроим авторизацию через DSA ключи, без использования паролей. Конечно если кто-то получит доступ к ssh-клиенту с dsa ключами, возникнут проблемы, точно также если кто-то узнает пароль. Используя dsa ключи мы избавляемся от возможности взломать нашу систему путем перебора паролей. Можно использовать dsa-ключи или пароли, но никогда нельзя пользоваться telnet-ом для удаленного доступа.
Secure Shell был разработан как альтернатива rsh, rlogin и других Berkeley r* команд, но SSH можно использовать и вместо таких приложений как telnet и ftp. У SSH много возможностей, но его по большей части используют для шифрования соединения, чтобы не дать возможности подсмотреть текстовые пароли и остальные данные, передаваемые в "чистом виде".
Откроем и отредактируем файл /etc/ssh/sshd_config для настроек параметров демона, к которому обращаются пользователи при удаленном доступе к серверу.
vi /etc/ssh/sshd_config
Port 22
Protocol 2
#Hostkey /etc/ssh/ssh_host_key
PermitRootLogin no
MaxStartups 5:50:10 # после 5 неправильных регистраций,
# отторгать 50% новых подключений, и
# не отвечать совсем, если число
# неправильных регистраций превысило 10
X11Forwarding no
PrintLastLog yes
SyslogFacility auth # писать информацию о регистрациях в
# лог-файл to /var/log/auth.
LogLevel VERBOSE # обычно OpenSSH это единственный путь
# удаленного доступа к системе, мы
# хотим получать наиболее полную
# информацию от этого сервиса.
PasswordAuthentication no
PermitEmptyPasswords no
Banner /etc/issue
AllowGroups sshusers # группа, которой разрешена
# регистрация через SSH можно указать
# несколько групп через запятую.
Сохраняем и выходим из vi.
ZZ
Теперь откроем и отредактируем файл /etc/ssh/ssh_config
vi /etc/ssh/ssh_config
ForwardAgent no
ForwardX11 no
PasswordAuthentication no
CheckHostIP yes
Port 22
Protocol 2
Сохраняем и выходим из vi.
ZZ
Теперь, сгенерируем DSA ключи для авторизации с пользователем, AKA <noprivuser>
su - noprivuser
ssh-keygen -d
На экране появится строка
Generating public/private dsa key pair.
Enter file in which to save the key (Введите файл в который сохранить ключ.)
(/home/<nonprivuser>/.ssh/id_dsa): # значение по умолчанию
Enter pass phrase (empty for no pass phrase): # введите пароль для ключа или без пароля
Enter pass phrase (empty for no pass phrase): # подтверждение пароля
Your identification has been saved in /home/<nonprivuser>/.ssh/id_dsa.
Идентификационный ключ сохранен в ....
Your public key has been saved in /home/<nonprivuser>/.ssh/id_dsa.pub
Публичный ключ сохранен в ...
The key fingerprint is (отпечаток ключа): xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx <nonprivuser>@<host>
[user@server /dir]#cd .ssh
[user@server /dir]#cat id_dsa.pub > authorized_keys2
Теперь скопируем ключ и перенесем на компьютер, с которого хотим подключаться к серверу.
Выйдем из регистрационной записи пользователя.
Удалим файл с ключом из директории .ssh пользователя.