Советы по безопасности в 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= # добавьте эту строку и укажите ваш пароль

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/




Отключите и деинсталлируйте все неиспользуемые сервисы

Чтобы избавить себя от лишних волнений, отключите и деинсталлируйте все сервисы, которые вы не используете. Просмотрите файл /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

Похожие новости

Комментариев 0