L
i n u x P a r k
при поддержке ВебКлуба |
Назад | Оглавление | Вперед |
В этой главе
Общие вопросы безопасности Linux |
![]() |
Социальная разработка паролей сервера – наиболее простой и популярный способ получения доступа к бюджетам пользователей и серверам. Часто, какое- либо простое действие наподобие выдачи себя за руководителя или крика о правах человека, приносит очень хорошие результаты, часто давая даже полный доступ к системе.
Неплохой идеей будет еженедельно проверять файл с паролями с помощью программы-взломщика. Это поможет найти пароли, которые легко подбираются и которые необходимо срочно заменить. Также механизм проверки должен работать и в момент определения паролей, чтобы отклонить заведомо слабый пароль при его начальной задании или переопределении. Строки символов, которые представляют собой простые слова, или находятся в одном регистре, или не содержат цифр и специальных знаков, должны быть отклонены. Я рекомендую использовать следующие правила для создания эффективных паролей:
Редактируйте файл login.defs (vi /etc/login.defs) изменив строку
PASS_MIN_LEN 5
в
PASS_MIN_LEN 8
Этот файл является конфигурационным для программы login. Здесь вы можете изменить и другие параметры, чтобы они соответствовали вашей стратегии защиты (время действия пароля, длина пароля и др.).
Редактируйте файл “/etc/profile” и добавьте следующую строку сразу после
строки с “HISTFILESIZE=”:
TMOUT=7200
Мы определяем значение для TMOUT равное 2 часам (60*60*2). Следует отметить, что если вы добавили эту строку в файл /etc/profile, то переменная определяется для любого подключаемого пользователя, а не только root. Чтобы установить ее для конкретного пользователя измените файл “.bashrc” в его домашнем каталоге.
Отредактируйте файл /etc/exports, добавив в него:
/dir/to/export host1.mydomain.com
(ro,root_squash)
/dir/to/export host2.mydomain.com
(ro,root_squash)
Где dir/to/export – каталог для экспортирования, host1.mydomain.com – имя машины с которой разрешается доступ, <ro> - монтирование “только для чтения”, <root_squash> - не позволять пользователю root доступа с правом на запись.
Чтобы изменения вступили в дейтсвие вам необходимо выполнить команду
/usr/sbin/exportfs –a
Замечание. Использование NFS сервера увеличивает риск нарушения безопасности вашей системы. Лучше его не использовать.
где servicename имя программы к которой вы хотите запретить консольно- эквивалентный доступ. Если вы не используете xdm, будьте внимательны, не удалите файл xserver, иначе никто кроме пользователя root, не сможет запустить X сервер (если вы всегда используете xdm для запуска X сервера, и только пользователь root должен запускать X сервер, то тогда можно подумать об удалении файла xserver).
Пример:
[root@deep]# rm -f /etc/security/console.apps/halt
[root@deep]# rm -f /etc/security/console.apps/poweroff
[root@deep]# rm -f /etc/security/console.apps/reboot
[root@deep]# rm -f /etc/security/console.apps/shutdown
[root@deep]# rm -f /etc/security/console.apps/xserver
(если удалите, то только root сможет запустить X).
В результате будет запрещен консольно-эквивалентный доступ к программам halt, shutdown, reboot и poweroff. Программа xserver используется если у вас установлен X Window.
Замечание. Если вы инсталлировали систему как описано в этой книге, то X Window у вас не установлен и файлы описанные выше в каталоге /etc/security не появятся, поэтому вы этот шаг можете пропустить.
И сделайте его испольняемым:
[root@deep]# chmod 700 disabling.sh
[root@deep]# ./disabling.sh
Он будет комментировать все строки ссылающиеся на pam_console.so во всех файлах в каталоге /etc/pam.d. После того, как скрипт выполнит свою работу, удалите его из системы.
Ненужные сервисы надо отключить, а лучше деинсталлировать, чтобы у вас стало меньше головной боли, а у атакующего меньше шансов найти лазейку в вашу систему. Просмотрите файл /etc/inetd.conf и вы увидите, какие сервисы он предлагает. Закомментируйте строки (# в начале строки) с ненужными сервисами, а затем пошлите процессу inetd сигнал SIGHUP.
Шаг 1.
Измените права доступа к файлу на 600:
[root@deep]# chmod 600 /etc/inetd.conf
Шаг 2.
Удостоверьтесь, что владельцем файла является root
[root@deep]# stat /etc/inetd.conf
File: "/etc/inetd.conf"
Size: 2869 Filetype: Regular File
Mode: (0600/-rw-------) Uid: (
0/ root) Gid: ( 0/ root)
Device: 8,6 Inode: 18219 Links:
1
Access: Wed Sep 22 16:24:16 1999(00000.00:10:44)
Modify: Mon Sep 20 10:22:44 1999(00002.06:12:16)
Change: Mon Sep 20 10:22:44 1999(00002.06:12:16)
Шаг 3.
Редактируйте файл inetd.conf (vi /etc/inetd.conf) и отключите следующие сервисы: ftp, telnet, shell, login, exec, talk, ntalk, imap, pop-2, pop-3, finger, auth и т.д. пока вы не планируете их использовать. Чем меньше сервисов включено, тем меньше риск для системы.
# Чтобы изменения вошли в силу дайте команду 'killall -HUP inetd' # #echo stream tcp nowait root internal #echo dgram udp wait root internal #discard stream tcp nowait root internal #discard dgram udp wait root internal #daytime stream tcp nowait root internal #daytime dgram udp wait root internal #chargen stream tcp nowait root internal #chargen dgram udp wait root internal #time stream tcp nowait root internal #time dgram udp wait root internal # # Это стандартные сервисы # #ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a #telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd # # Shell, login, exec, comsat и talk являются протоколами BSD. # #shell stream tcp nowait root /usr/sbin/tcpd in.rshd #login stream tcp nowait root /usr/sbin/tcpd in.rlogind #exec stream tcp nowait root /usr/sbin/tcpd in.rexecd #comsat dgram udp wait root /usr/sbin/tcpd in.comsat #talk dgram udp wait root /usr/sbin/tcpd in.talkd #ntalk dgram udp wait root /usr/sbin/tcpd in.ntalkd #dtalk stream tcp wait nobody /usr/sbin/tcpd in.dtalkd # # Почтовые Pop и imap сервисы # #pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d #pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d #imap stream tcp nowait root /usr/sbin/tcpd imapd # # Internet UUCP сервис. # #uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/lib/uucp/uucico -l # # Сервис Tftp предоставляется в первую очередь для удаленной загрузки. # В большинстве случаев, он используется только на "серверах загрузки” # Не удаляйте символы комментариев, если вы не уверены, что это вам нужно. # #tftp dgram udp wait root /usr/sbin/tcpd in.tftpd #bootps dgram udp wait root /usr/sbin/tcpd bootpd # # Finger, systat и netstat дают информацию внешним пользователям, которая # может быть использована для взлома системы. На многих серверах # некоторые или все из них отключены с целью улучшения безопасности. # #finger stream tcp nowait root /usr/sbin/tcpd in.fingerd #cfinger stream tcp nowait root /usr/sbin/tcpd in.cfingerd #systat stream tcp nowait guest /usr/sbin/tcpd /bin/ps -auwwx #netstat stream tcp nowait guest /usr/sbin/tcpd /bin/netstat -f inet # # Аутентификация # #auth stream tcp nowait nobody /usr/sbin/in.identd in.identd -l -e -o # # Конец inetd.confЗамечание. Не забудьте послать сигнал SIGHUP процессу inetd (killall -HUP inetd) после редактирования файла /etc/inetd.conf.
Шаг 4.
Для большего улучшения безопасности, вы можете сделать файл “inetd.conf”
неизменным, используя команду chattr:
[root@deep]# chattr +i /etc/inetd.conf
Файл с атрибутом “i” не может быть модифицирован, его нельзя удалить
или переименовать, к нему нельзя создать ссылки и никакие данные не могут
быть дописаны в файл. Только суперпользователь может установить или снять
этот атрибут. Если вы захотите модифицировать файл “inetd.conf”, то дайте
следующую команду:
[root@deep]# chattr -i /etc/inetd.conf
Редактируйте файл hosts.deny (vi /etc/hosts.deny) добавив следующие
строки: По умолчанию доступ запрещен.
# Запрещаем доступ для всех.
ALL: ALL@ALL, PARANOID #Соответствует
любому компьютеры, чье имя не соответствует адресу.
Это значит , что доступ ко всем службам со всех компьютеров запрещен, если нет явного разрешения в файле host.allow.
Замечание. Для параметра PARANOID. Если вы хотите запускать telnet и ftp сервисы на сервере, то не забудьте добавить адрес клиентской машины и IP адрес в файл “/etc/hosts” на сервере, иначе будьте готовы ждать несколько минут, пока DNS lookup не завершится по таймауту, до получения строки login.
Шаг 2.
Отредактируйте файл hosts.allow и добавьте в него, к примеру, следующие
строки:
# Список серверов которым разрешен
доступ.
sshd: 208.164.186.1 gate.openarch.com
Машина с IP адресом 208.164.186.1 и именем gate.openarch.com является одним из клиентов сервиса sshd.
Шаг 4.
Программа tcpdchk занимается проверкой правильности конфигурационного файла TCP_Wrapper. Она выдает сообщения о потенциальных и реальных проблемах.
После того, как конфигурирование завершено, запустите программу tcpdchk:
[root@deep]# tcpdchk
Замечание. Ошибка может выглядеть следующим образом:
warning: /etc/hosts.allow, line 6: can't verify hostname: gethostbyname(win.openna.com)
failed
Если вы получили подобное сообщение, то проверьте ваш конфигурационный
файл DNS сервера, на наличие в нем этого имени компьютера.
Флаг “-h” говорит демону не выводить любую системную информацию, ограничиться только запросом “login:”. Эту возможность необходимо использовать только, когда на сервере запускается демон telnet (вместо него я рекомендую использовать ssh).
Редактируйте файл host.conf (vi /etc/host.conf) и добавьте следующие
строки:
# Вначале использовать lookup черз
DNS, а затем файл/etc/hosts.
order bind,hosts
# Мы имеем компьютеры с несколькими
IP адресами.
multi on
# Осуществлять проверку подмены
IP адресов.
nospoof on
Опция order определяет порядок использования сервисов. Для улучшения производительности и повышения безопасности рекомендуется настроить библиотеку определителей так, чтобы вначале использовался DNS, а затем файл “/etc/hosts”. Конечно, DNS должен быть предварительно настроен.
Опция multi говорит, что компьютеры, описанные в файле /etc/hosts, могут иметь несколько IP адресов (несколько интерфейсов ethN). Например, шлюз всегда имеет несколько адресов и у них эта опция должна быть всегда определена в ON.
Опция nospoof не разрешать подмену адресов. IP-Spoofing – это способ атаки при котором удаленный компьютер представляется кем-то, кем он не является. При этом виде нападения удаленный компьютер представляется как законный сервер, а затем использует установленные соединения для взаимодействия с другими компонентами сети. Эта опция должна быть установлена в ON на всех типах серверов.
Отключите любые tty, которые вам не нужны, закомментировав их (знак
# в начале строки).
tty1
#tty2
#tty3
#tty4
#tty5
#tty6
#tty7
#tty8
В результате root сможет входить в систему только с терминала tty1.
С остальных терминалов вы сможете переключаться на root используя команду
su.
Назад | Оглавление | Вперед |