_ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _
From : Igor Kaminskiy 2:5020/400 07 Aug 99 11:09:04
Subj : Улучшение безопастности в Linux ...
________________________________________________________________________________
From: "Igor Kaminskiy" <master@jugra.wsnet.ru>
Привет всем !
Покрутился в Internet на предмет SUBJ , нашел
небольшую , но понятную и приятную статью по теме
письма . Публикую ее здесь - мыслю - многим будет
интересно . Оригинал в KOI8-r code page находится по адресу :
http://linuxfocus.npi.msu.su/Russian/July1998/article12.html
----------------
С уважением:
/Barbarossa
E-Mail: master@jugra.wsnet.ru
Улучшение безопастности в Linux
----------------------------------------------------------------------
Michael Jastremski
Об авторе: Michael Jastremski является Unix-хакером в течение последних
четырех лет.
Его Web-сайт может быть найден на http://westphila.net/mike.
Он благодарит Andrew за помощь в переводе на английский.
Связаться с автором
Содержание:
Введение
Шаги к безопасности
Улучшение безопасности
обычных дистрибуций Linux
Аннотация: В этой статье рассказывается о том, как системные
администраторы могут защитить свои системы от вторжений.
Она содержит описания основных путей повышения безопасности
Linux систем
Введение
Частые попытки вывода из строя компьютеров в Internet стали обычным
явлением. Сервера на основе Linux и FreeBSD стали основной мишенью для атак,
использующих переполнения буферов в imapd и BIND. Каждый день от 20,000
подписчиков списка рассылки BUGTRAQ поступают сообщения, посвященные разным
проблемах в системах безопасности (Если вы хотите подписаться только на один
список рассылки по безопасности - BUGTRAQ как раз то, что вам нужно)
Естественно можно предположить, что хотя бы один из этих 19,305 подписчиков
напишет цикл for() и немного логических операций вокруг эксплоита cut+paste
в надежде получить доступ к наибольшему числу компьютеров...
Рано или поздно цикл составит адрес вашего компьютера, поэтому принять меры
лучше заранее.
Hесмотря на заявления некоторых 'экспертов', установка и поддержка
защищенной компьютерной системы не так сложна, как ракетостроение. Понятие
"системное администрирование" включает в себя и такую область, как защита от
вторжения из глобальной сети. Эта статья рассматривает некоторые меры
предосторожности, которые я предпринял, конфигурируя сетевую систему RedHat
Linux. Hесмотря на то, что эта статья рассматривает некоторые методы защиты
от вторжений, она не является полным руководством.
Hижеследующий текст представляет собой пошаговое руководство к действиям,
которые защитят вашу систему от нападения. Возможно статья поможет вам
защититься от еще неизвестных типов атак. ПРЕДУПРЕЖДЕHИЕ: Если вы не знаете,
что вы делаете, то не делайте этого. Hекоторые из нижеследующих шагов
потребуют вашего полного понимания. Гарантия недействительна на Аляске,
Гавайях и Пуэрто Рико (к чему бы это? Прим. пер.) Ссылки на некоторые
дополнительные материалы приведены в конце
Шаги к безопасности
1. Удалите все ненужные сетевые сервисы из вашей системы. Чем меньше будет
возможностей соединиться с вашим компьютером, тем меньше шансов на вход в
вашу систему вы оставите взломщику. Закомментируйте все ненужное в
/etc/inetd.conf. Вам не нужно, чтобы на вашу систему можно было зайти
телнетом? Заблокируйте эту строку. То же относится к
ftpd,rshd,rexecd,gopher,chargen, echo,pop3d и т.п.
Hе забудьте выполнить 'killall -HUP inetd' после редактирования inetd.conf.
Также не пренебрегайте директорией /etc/rc.d/init.d Hекоторые сетевые
сервисы (BIND,демоны принтера) являются независимыми программами,
запускаемыми из этих скриптов.
SSH (Secure Shell) это программа, необходимая для входа на
удаленный компьютер, для исполнения команд на удаленной машине и для
перемещения файлов между машинами. SSH предоставляет высокий уровень
аутентификации и безопасности передачи при использовании незащищенных
каналов.
SSH также делает много других вещей, которые несомненно заинтересуют
начинающего хакера. Вы можете загрузить SSH с http://ftp.rge.com/pub/ssh .
3. Используйте vipw(1) для блокировки аккаунтов, не предназначенных для
входа. Учтите, что в RedHat Linux аккаунты с нулевыми именами осуществляют
вход в оболочку /bin/sh, что, как правило, нежелательно. Также
удостоверьтесь, что ни один из ваших аккаунтов не имеет пароля нулевой
длины. Далее следует пример части файла паролей хорошо защищенной системы
daemon:*:2:2:daemon:/sbin:/bin/sync
adm:*:3:4:adm:/var/adm:/bin/sync
lp:*:4:7:lp:/var/spool/lpd:/bin/sync
sync:*:5:0:sync:/sbin:/bin/sync
shutdown:*:6:0:shutdown:/bin:/sync
halt:*:7:0:halt:/sbin:/bin:/sync
mail:*:8:12:mail:/var/spool/mail:/bin/sync
news:*:9:13:news:/var/spool/news:/bin/sync
uucp:*:10:14:uucp:/var/spool/uucp:/bin/sync
operator:*:11:0perator:/root:/bin/sync
games:*:12:100:games:/usr/games:/bin/sync
gopher:*:13:30:gopher:/usr/lib/gopher-data:/bin/sync
ftp:*:14:50:FTP User:/home/ftp:/bin/sync
nobody:*:99:99:Nobody:/:/bin/sync
4. Удалите бит 's' с программ, владельцем которых является root, и которые
не требуют привилегий root. Это может быть выполнено с помощью команды
'chmod a-s' с аргументом в виде имени файла
Рекомендуется убрать бит 's' у следующих типов программ:
программы, которые вы никогда не используете
программы, которые могут быть запущены только пользователем root и никем
другим
программы, которые вы используете время от времени и для запуска которых вы
можете воспользоваться su(1).
В следующей таблице я поставил звездочку (*) около каждой программы, у
которой рекомендуется убрать бит 's' Учтите, что для правильной работы вашей
системе необходимы некоторые suid root программы , так что будьте осторожны.
Также вы можете создать специальную группу 'suidexec' и поместить в нее
аккаунты пользователей, которые смогут выполнять suid root программы.
Сделайте chgrp(1) для suid программ для группы suidexec и удалите разрешение
на выполнение для world.
# find / -user root -perm "-u+s"
*/bin/ping
*/bin/mount -- только root может монтировать файловые системы
*/bin/umount -- то же
/bin/su -- не трогайте!
/bin/login
/sbin/pwdb_chkpwd
*/sbin/cardctl -- утилита управления PCMCIA картами
*/usr/bin/rcp -- Используйте ssh
*/usr/bin/rlogin -- "
*/usr/bin/rsh -- "
*/usr/bin/at -- используйте cron или запретите
*/usr/bin/lpq -- установите LPRNG
*/usr/bin/lpr -- "
*/usr/bin/lprm -- "
*/usr/bin/mh/inc
*/usr/bin/mh/msgchk
/usr/bin/passwd -- не трогайте!
*/usr/bin/suidperl -- в каждой новой версии suidperl есть переполнение
буфера
*/usr/bin/sperl5.003 -- используйте только при необходимости
/usr/bin/procmail --
*/usr/bin/chfn
*/usr/bin/chsh
*/usr/bin/newgrp
*/usr/bin/crontab
*/usr/X11R6/bin/dga -- в X тоже много переполнений буфера
*/usr/X11R6/bin/xterm -- "
*/usr/X11R6/bin/XF86_SVGA -- "
*/usr/sbin/usernetctl
/usr/sbin/sendmail
*/usr/sbin/traceroute -- вы можете ввести пароль root для использования
5. Обновите sendmail. Загрузите исходные тексты с
ftp://ftp.sendmail.org/pub/sendma il.
Распакуйте их и прочитайте инструкции. Если у вас есть время, установите
smrsh (включенный в состав sendmail) Эта программа добавляет к sendmail
некоторые возможности, как например, посылка почты арбитражным программам
Отредактируйте sendmail.cf и установите опцию 'PrivacyOptions' в 'goaway':
O PrivacyOptions=goaway
Если вы не планируете получать электронную почту, HЕ ЗАПУСКАЙТЕ SENDMAIL В
РЕЖИМЕ ПРИЕМА (sendmail -bd)!. В этом случае, запретите
/etc/rc.d/init.d/sendmail.init и сделайте 'killall -TERM sendmail'. В этом
случае вы все еще будете способны посылать исходящую почту, используя
Sendmail.
6. Обновите BIND, если вы его используете. Последняя версия BIND может быть
найдена на http://www.isc.org . Иначе, отмените использование BIND.
7. Перекомпилируйте ядро. Я обычно делаю это, так как ядро по умолчанию
может не подходить для вашей системы или осуществлять недостаточный уровень
безопасности СОВЕТ: включите все опции firewall, даже если ваш компьютер не
firewall.
CONFIG_FIREWALL=y
CONFIG_NET_ALIAS=y
CONFIG_INET=y
# CONFIG_IP_FORWARD is not set
# CONFIG_IP_MULTICAST is not set
CONFIG_SYN_COOKIES=y
CONFIG_RST_COOKIES=y
CONFIG_IP_FIREWALL=y
CONFIG_IP_FIREWALL_VERBOSE=y
# CONFIG_IP_MASQUERADE is not set
# CONFIG_IP_TRANSPARENT_PROXY is not set
CONFIG_IP_ALWAYS_DEFRAG=y
CONFIG_IP_ACCT=y
# CONFIG_IP_ROUTER is not set
# CONFIG_NET_IPIP is not set
CONFIG_IP_ALIAS=m
8. Используйте патчи: Описания и исправления всех известных проблемы с
RedHat могут быть найдены на RedHat Errata pages, (см.
http://www.redhat.com/support/docs/errata.html ) где можно выбрать патчи для
вашей версии системы. RedHat старается обновлять эти страницы сразу же после
появления новых патчей.
9. Сконфигурируйте tcp_wrappers: Tcp_wrappers - это метод определения
компьютеров в сети, которым позволено "говорить" с вашим компьютером. Этот
пакет, написанный гуру в системах безопасности Wieste Venema, располагается
перед программами, запущенными из inetd (или слинкованными с использованием
библиотеки inetd), читая их конфигурационные файлы для определения
разрешения или запрещения сетевых транзакций. Hапример, для разрешения
telnet & ftp с домашней машины через вашего ISP, и отмены всех остальных
соединений запишите следующее в ваш /etc/hosts.allow:
in.ftpd : .dialup.your-isp.com : allow
all : all : deny
SSH, sendmail и другие пакеты могут быть собраны с поддержкой tcp_wrappers
Прочитайте страницу помощи tcpd(1) для получения дополнительной информации.
Дополнительные ссылки: Secure Linux patches by Solar Designer:
http://www.false.com/security/li nux/