Портал для веб-мастера
Вход пользователей
Поиск статей
WoWeb.ru » Статьи » Операционные системы » Linux/Unix

Советы по безопасности в Linux

В данной заметке мы рассмотрим, как усилить безопасность вашей Linux-системы.

Безопасность BIOS
Всегда устанавливайте на BIOS пароль для запрета изменения установок и запрещайте загрузку с дискеты. Это заблокирует попытку загрузить систему со специального загрузочного диска и защитит вас от людей, пытающихся изменить настройки BIOS: возможность загрузки с дискеты или загрузка сервера без запроса пароля.

Безопасность LILO
Добавьте в файл /etc/lilo.conf три параметра: time-out, restricted и password. Эти опции указывают на необходимость ввода пароля, если в процессе загрузки LILO будут указаны такие опции загрузки, как "linux single".
Шаг 1
Отредактируйте файл lilo.conf (vi /etc/lilo.conf) и добавьте или измените три опции:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
time-out=00 # измените эту строку на 00
prompt
Default=linux
restricted # добавьте эту строку
password=<password> # добавьте эту строку и укажите ваш пароль
image=/boot/vmlinuz-2.2.14-12
label=linux
initrd=/boot/initrd-2.2.14-12.img
root=/dev/hda6
read-only
Шаг 2
Файл /etc/lilo.conf должен быть доступен только пользователю root, так как он содержит незашифрованный пароль:
[root@kapil /]# chmod 600 /etc/lilo.conf
Шаг 3
Чтобы изменения вступили в силу, выполните команду:
[root@kapil /]# /sbin/lilo -v
Шаг 4
Еще одной мерой по усилению безопасности может стать установка атрибута "неизменяемости" (immutable — "i") файла /etc/lilo.conf при помощи команды chattr. Для этого воспользуйтесь командой:
[root@kapil /]# chattr +i /etc/lilo.conf
Это предотвращает любые изменения (случайные и не только) в файле lilo.conf.

Отключите все специальные учетные записи
Удалите из системы всех пользователей и все группы, которые не используются: например, lp, sync, shutdown, halt, news, uucp, operator, games, gopher и т.д.
Для удаления пользователя используйте команду:
[root@kapil /]# userdel lp
Для удаления группы:
[root@kapil /]# groupdel lp

Выбирайте правильный пароль
Прежде чем выбирать пароль, выполните следующие рекомендации.
Длина пароля: после установки Linux минимально возможная длина пароля по умолчанию — 5 символов. Этого недостаточно, должно быть 8. Отредактируйте файл login.defs (vi /etc/login.defs) и измените следующую строку:
PASS_MIN_LEN 5
на
PASS_MIN_LEN 8
Файл login.defs — конфигурационный файл для программы login.

Включите поддержку теневых паролей
Включите возможность использования теневых [shadow] паролей. Для включения поддержки теневых паролей в вашей системе можно использовать утилиту /usr/sbin/authconfig. Если хотите конвертировать существующие пароли и группы в теневые, то используйте команды pwconv, grpconv соответственно.

Учетная запись root'а
Учетная запись root — наиболее привилегированная в Unix. Когда администратор забывает выйти из системы, то система может автоматически закрыть консоль после заданного периода неактивности. Для того чтобы этого добиться, нужно выставить значение в секундах в специальной переменной TMOUT. Отредактируйте файл vi /etc/profile, добавив в него следующую строку:
TMOUT=3600
Значение, указанное в переменной TMOUT в секундах, — это один час (60*60=3600). Если указать эту строку в /etc/profile, то консоль любого пользователя системы автоматически закроется после часа отсутствия активности. В файле ~/.bashrc вы можете установить эту переменную для каждого пользователя индивидуально. Чтобы изменения вступили в силу, необходимо выйти из системы и войти в нее снова.

Отключите консольный (console-equivalent) доступ для обычных пользователей
На вашем сервере отключите консольный доступ обычных пользователей к таким программам, как shutdown, reboot и halt. Чтобы сделать это, выполните команду:
[root@kapil /]# rm -f /etc/security/console.apps/<servicename>

Отключите и деинсталлируйте все неиспользуемые сервисы
Чтобы избавить себя от лишних волнений, отключите и деинсталлируйте все сервисы, которые вы не используете. Просмотрите файл /etc/inetd.conf и отключите ненужные сетевые сервисы, закомментировав их (добавив # в начало строки), и пошлите демону inetd сигнал SIGHUP для того, чтобы изменения вступили в силу. Для этого выполните следующее:
Шаг 1
Смените права доступа к файлу /etc/inetd.conf на 600, чтобы читать и писать в него мог только root.
[root@kapil /]# chmod 600 /etc/inetd.conf
Шаг 2
Убедитесь, что владельцем файла /etc/inetd.conf является root.
Шаг 3
Отредактируйте inetd.conf (vi /etc/inetd.conf) и отключите те сервисы, которые вы не используете (ftp, telnet, shell, login, exec, talk, ntalk, imap, pop-2, pop-3, finger, auth и т.д.). Отключение ненужных сервисов снижает уровень риска взлома системы.
Шаг 4
Пошлите HUP сигнал демону inetd
[root@kapil /]# killall -HUP inetd
Шаг 5
Сделайте файл /etc/inetd.conf недоступным, используя команду chattr, чтобы никто не мог модифицировать этот файл. Выполните команду:
[root@kapil /]# chattr +i /etc/inetd.conf
Это предотвратит любые изменения файла inetd.conf. Только один человек может снять атрибут — это суперпользователь root. Для модификации файла нужно снять immutable-флаг. Это делается следующей командой:
[root@kapil /]# chattr -i /etc/inetd.conf

TCP_WRAPPERS
Используя TCP_WRAPPERS, можно сделать сервер более защищенным от вторжения. Лучшая политика — запретить доступ к серверу всем хостам, поместив в файл /etc/hosts.deny строку "ALL: ALL@ALL, PARANOID" и поместить список хостов, которым вы разрешаете доступ к вашему серверу, в /etc/hosts.allow. TCP_WRAPPERS контролируется из двух файлов, и поиск в них прекращается при первом совпадении.
Шаг 1
Отредактируйте файл hosts.deny (vi /etc/hosts.deny) и добавьте такие строки:
# Отказать в доступе всем
ALL: ALL@ALL, PARANOID
Имеется в виду, что все сервисы и хосты блокируются, если им не разрешен доступ в hosts.allow
Шаг 2
Отредактируйте файл hosts.al-low (vi /etc/hosts.allow) и добавьте в него, например, следующую строку:
ftp: 202.54.15.99 foo.com
Клиентской машине с ip-адресом 202.54.15.99 и именем foo.com разрешен доступ к серверу через службу ftp.
Шаг 3
tcpdchk — программа проверки конфигурации tcpd wrapper. Она просматривает конфигурацию tcp wrapper и сообщает обо всех потенциальных и реальных проблемах, которые сможет найти. По окончании настройки запустите программу tcpdchk:
[root@kapil /]# tcpdchk

Не давайте системе показывать issue-файл
Не показывайте issue-файл вашей системы при удаленном подключении. Для этого можно изменить опции запуска telnet в файле /etc/inetd.conf. Строка в /etc/inetd.conf
telnet stream tcp nowait root /usr/sbin/ tcpd in.telnetd
будет выглядеть так:
telnet stream tcp nowait root /usr/sbin/ tcpd in.telnetd -h
Добавление флага -h в конце заставляет демон выводить приглашение для входа в систему, не показывая никакой системной информации. Кроме того, я рекомендую использовать, вместо telnet, sshd.

Изменения в файле /etc/host.conf
Файл /etc/host.conf содержит настройки для библиотеки разрешения имен (механизм преобразования имен узлов сети в ip-адреса и обратно). Отредактируйте файл host.conf (vi /etc/host.conf) и добавьте следующие строки:
# Просматривать имена хостов сперва через DNS, потом в файле /etc/hosts.
order bind,hosts
# Мы имеем машины с несколькими ip-адресами.
multi on
# Проверка ip-адресов на спуфинг.
nospoof on

Защита файла /etc/services
Вы должны установить атрибут "i" у файла /etc/services для предотвращения неавторизованного удаления или добавления сервисов. Используйте команду:
[root@kapil /]# chattr +i /etc/services

Запрещение для root входа с разных консолей
Файл /etc/securetty разрешает вам выбирать, какие TTY-устройства пользователь root будет использовать для входа в систему. Отредактируйте файл /etc/securetty для отключения тех tty, которые вам не нужны (символ # в начале строки).

Блокирование получения прав root при помощи команды su
Команда su (Substitute User) предоставляет вам возможность становиться другими существующими пользователями системы. Если вы хотите, чтобы никто не мог получить права пользователя root или хотите ограничить использование команды su для определенных пользователей, то добавьте две следующие строки в начале файла конфигурации su в каталоге /etc/pam.d/.
Шаг 1
Отредактируйте файл su (vi /etc/pam.d/su) и добавьте следующие две строки в начале файла:
auth sufficient /lib/security/pam_rootok. so debug
auth required /lib/security/Pam_wheel.so group=wheel
Вторая строка подразумевает, что только пользователи группы wheel могут получить права root при помощи su. Вы можете добавить пользователей в группу wheel — и только эти пользователи смогут получать через su права суперпользователя.

Ведение логов командной оболочки
Bash хранит до 500 введенных ранее команд в файле ~/.bash_ history, упрощая повторное использование команд. Каждый пользователь, который имеет в системе учетную запись, имеет и этот файл в домашнем каталоге. Bash может хранить меньшее число команд, чем указано выше, и удалять их при выходе пользователя из системы.
Шаг 1
Строки HISTFILESIZE и HISTSIZE в файле /etc/profile определяют размер файла .bash_history для всех пользователей системы. Я настоятельно рекомендую установить значение HISTFILESIZE и HISTSIZE не более 30. Отредактируйте файл profile (vi /etc/profile) и измените строки на:
HISTFILESIZE=30
HISTSIZE=30
Это позволит файлу .bash_history хранить не более 30 команд.
Шаг 2
Администратор может добавить в файл /etc/skel/.bash_logout строку rm -f $HOME/.bash_history, которая будет удалять файл .bash_history каждый раз, когда пользователь будет выходить из системы. Отредактируйте файл .bash_logout (vi /etc/skel/.bash_logout) и добавьте следующую строку:
rm -f $HOME/.bash_history

Отключите команду перезагрузки системы с клавиатуры (Ctrl+Alt+Del)
Чтобы сделать это, закомментируйте следующую строку в файле /etc/inittab:
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
Для того чтобы изменения вступили в силу, выполните команду:
[root@kapil /]# /sbin/init q

Зафиксируйте права на скрипты в каталоге /etc/rc.d/init.d
Зафиксируйте права доступа для скриптов, которые ответственны за запуск и останов всех процессов, необходимых для работы в процессе загрузки:
[root@kapil/]# chmod -R 700 /etc/rc.d/ init.d/*
Эта команда предоставляет возможность читать, писать и исполнять скрипты только пользователю root.

Сокрытие вашей системной информации
По умолчанию, когда вы входите в систему, вам сообщают название дистрибутива Linux, версию, версию ядра и имя сервера. Кракерам достаточно и такой информации о сервере. Лучше оставить пользователю только приглашение "Login:" и все.
Шаг 1
Отредактируйте файл /etc/rc.d/rc.local и поставьте "#" перед следующими строками:
# This will overwrite /etc/issue at every boot. So, make any changes you
# want to make to /etc/issue here or you will lose them when you reboot.
#echo "" > /etc/issue
#echo "$R" >> /etc/issue
#echo "Kernel $(uname -r) on $a $(uname -m)" >> /etc/issue
#
#cp -f /etc/issue /etc/issue.net
#echo >> /etc/issue
Шаг 2
Удалите также следующие файлы: issue.net и issue в каталоге /etc:
[root@kapil /]# rm -f /etc/issue
[root@kapil /]# rm -f /etc/issue.net

Отключите неиспользуемые программы с битами SUID/SGID
Постоянные пользователи имеют возможность запускать программы с правами root, если у них выставлен бит SUID. Системный администратор должен минимизировать использование таких программ (SUID/SGID) и отключить те программы, которые не нужны.
Шаг 1
Чтобы найти программы с владельцем root и установленным битом 's', воспользуйтесь командой:
[root@kapil /]# find / -type f ( -perm -04000 -o -perm -02000 ) -exec ls -lg {} ;
Для отключения у выбранных программ бита suid выполните:
[root@kapil /]# chmod a-s [имя программы]

После выполнения всего вышесказанного системный администратор может рассчитывать на то, что он настроил основной уровень безопасности системы. Некоторые из перечисленных задач по настройке системы представляют собой непрерывный процесс.

Автор: Kapil Sharma · Добавлена: 2002-09-09
Просмотров: 4207 · Рейтинг: 5.0

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Категории раздела
Flash
Apache
WWW
PhotoShop
Веб-дизайн
Раскрутка и реклама
Базы данных
3D графика
Хостинг
Истории веб-мастеров
Web-технологии
Сетевая безопасность
Программирование для Web
Операционные системы

Новые статьи
Лучшие статьи
Популярные статьи
Комментируемые статьи
Разделы сайта
Скрипты
Статьи
Шрифты
Флэш исходники
HTML шаблоны
Партнерки
Клипарты
Смайлы
Фоны
Гифы
Иконки
Опрос сайта
Есть ли у вас свой сайт?
Всего ответов: 141047
Наша кнопка
WoWeb.ru - портал для веб-мастера