|
Защита начинается с с установки операционной системы.
Инсталлировать Linux на изолированной машине ( во время установки машина должна быть вне сети) |
|
Если изолированная сеть нуждается в файлах, скаченных из Интернета, то необходимо завести дополнительную машину, которая будет загружать файлы из Интернета и затем передавать их в выделенную сеть. |
|
Инсталлируйте только действительно необходимые пакеты.Чем меньше софта
- тем меньше дырок.
Лучше всего пакеты добавлять по необходимости, но не исключайте man's и HOWTO. |
|
При инсталляции под /var завести отдельный раздел для логов и почты, чтобы предотвратить переполнение основного раздела / и, как следствие, DoS и крушение системы. 400Mb более чем достаточно для /var. Вы также можете завести отдельный раздел под любое приложение,особенно, если оно ведет большие логи. |
|
После завершения программы установки ОБЯЗАТЕЛЬНО установить все рекомендуемые security patches. См. http://www.redhat.com/support. Security patches требуют постоянного обновления. Подпишись на bugtraq@netspace.org - источник информации о текущих багах и патчях. |
|
Анализ /etc/inetd.conf (этот файл определяет какие сервисы за которые
отыечает демон /usr/sbin/inetd. Закомметировать (#) все ненужные сервисы.
Проверить оставшиеся: grep -v "^#" /etc/inetd.conf
См. Пример 1 |
|
/etc/rc.d/rc3.d/*.rc scripts определяют сервисы, стартующие с помощью
init process. Остановить некоторые .rc скрипты либо заменив S на
s в названии скрипта либо использовать /usr/sbin/setup (выбрать опцию "System
Services" ). Рекомендуется отключить следующие скрипты:
S05apmd (Только для laptop) S10xntpd (Network time protocol) S15sound S20bootparamd (Для бездисковых рабочих станций) S20nfs ( NFS server). S20rusersd (Любой r service дает слишком много информации удаленному юзеру.) S20rwalld S20rwhod S25innd (News server) S25squid (Proxy server) S30sendmail (Если вы выключите этот сервис, вы все равно сможете посылать письма, но не сможете их получать и пересылать). S30ypbind (Если вы NIS client, то этот сервис нужен) S34yppasswdd (сли вы NIS server, то этот крайне уязвимый сервис вам нужен) S35dhcpd S35ypserv (Если вы NIS server) S40portmap (Если у вас есть rpc сервисы -NIS, NFS) S40snmpd (SNMP daemon, может дать удаленному юзеру детальную информацию о вас) S55routed (RIP, используйте только, если это вам ДЕЙСТВИТЕЛЬНО нужно) S55named (DNS server. Обязятельно проапгрейдить - http://www.isc.org/bind.html) S60atd (Сервис. похожий на CRON) S60lpd (Printing services) S72amd (AutoMount daemon, используется для монтирования удаленной FS) S75gated (используется для запуска иных протоколов маршрутизации, таких как OSPF) s85httpd (Apache webserver, последняя версия - http://www.apache.org) S95nfsfs (nfs client, используется для монтирования FS с NFS сервера) S95pcmcia (У вас laptop?) Чтобы проверить, какие скрипты остались, наберите: ps aux | wc -l |
|
Логи пишутся в /var/log. По умолчанию Линукс ведет логи по всему, кроме
ftp. Для того, чтобы исправить это, редактируем /etc/inetd.conf
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -L -i -o --- From the man pages --- If the -l option is specified, each ftp session is logged in the syslog
--- snip snip ---
|
|
Cоздаем файл /etc/issue (если его нет). В него пишутся elnet-сессии.
Если вы хотите использовать один и тот же файл, подправьте /etc/rc.d/S99local.
Иначе каждые раз при перезагрузке этот файл будет очищаться.
См. Пример 2. |
|
У вас нет файла /etc/shadow - защищенного хранилища паролей,
к которому доступ имеет только root? Тогда в командной строке набираем
pwconv и все пароли из файла /etc/passwd конвертируются в файл /etc/shadow. |
|
Редактируем /etc/passwd - удаляем ненужные нам эккаунты,
созданные по умолчанию программой установки. Вы планируете использовать
сервер новостей ? Нет? Удалите эккаунт news ( только не забудьте отредактировать
/etc/cron.hourly, который упоминает этого юзера).
Также удаляем ftp - эккаунт, используемый для анонимного ftp-доступа : man ftpd: Ftpd authenticates users according to four rules. 4) If
the user name is ``anonymous'' or ``ftp'', an anonymous ftp account
must be pre-sent in the password file (user ``ftp''). In this case
the user is allowed to log in by specifying any password (by convention
this is given as the client host's name).
|
|
Редактируем /etc/ftpusers. Эккаунты, перечисленные в нем, не имеют
ftp-доступа к системе. Поэтому добавляем в него системные эккаунты: root,
bin - запрещаем системным эккаунтом ftp-доступ к системе.
Пример 4. |
|
Редактируем /etc/securetty. Здесь должны быть указаны только терминалы
tty1,tty2,tty3 и т.д., чтобы ограничить root локальным доступом
к системе. При необходимости в удаленном доступе рутом, необходимо
зарегистрироваться обычным юзером, а затем набрать su.
Пример 5. |
|
Настраиваем TCP Wrapper - бинарник,"оборачивающий" перечисленные
в /etc/inetd.conf сервисы. Он ведет логи по всем попыткам установить соединение
с inetd-сервисом и затем сверяет ip-адрес источника с контрольным списком
доступа (ACL, Access Control List).В Линуксе TCP Wrapper устанавливается
при инсталляции, вам остается отредактировать файлы /etc/hosts.allow и
/etc/hosts.deny. .Эти файлы определяют, какие IP-адреса или сети
имеет доступ к вашей системе(/etc/hosts.allow), а какие - нет (/etc/hosts.deny).
По умолчанию эти файлы пустые, значит, доступ разрешен отовсюду, вам необхоимо
отредактировать эти файлы. 2 совета:
1.Используйте IP-адреса и сети вместо доменных имен. 2.Установите в /etc/hosts.deny запрет всем (ALL: ALL), затем разрешите доступ с определенных сайтов в /etc/hosts.allow Пример. Также TCP Wrapper позволяет вырезать баннеры и запускать дополнительные программы, например, safe_finger. Пример 6. |
|
Создаем группу wheel. В ней состоят те юзеры, которым разрешено
пользоваться небезопасным командами, например, /bin/su. Редактируем /etc/group,
создаем группу wheel, добавляем системных администраторов в эту группу.
Определяем уязвимые с точки зрения безопасности команды. Изменяем у таких
файлов группу на wheel, права на исполнение этого файла даем только владельцу
и вышеупомянутой группе. Для /bin/su:
/bin/chgrp wheel /bin/su /bin/chmod 4750 /bin/su |
|
Блокируем файлы .rhosts, netrc, /etc/hosts.equiv . r-комманды
используют эти файлы для удаленного доступа к системе:
/bin/touch /.rhosts /.netrc /etc/hosts.equiv /bin//chmod 0 /.rhosts /.netrc /etc/hosts.equiv |
18.
|
Вносим изменения в PAM -Pluggable Authentication Modules-набор
библиотек, позволяющих выбрать приложение для идентификации юзера. Cм.
ftp://ftp.us.kernel.org/pub/linux/libs/pam/Linux-PAM-html/pam.html.
Вот так вы можете задать схему шифрования паролей MD5, улучшив защищенность файла /etc/shadow. В /etc/pam.d находятся конфигурационные файлы различных бинарников, которые требуют аутотентификации. Большинство из них содержит следующую строку password required /lib/security/pam_pwdb.so nullok use_authtok Вы должны в каждом таком файле, содержащем подобную строку, добавит в ее конец md5: password required /lib/security/pam_pwdb.so nullok use_authtok md5 В RedHat5.1 исправлению подлежат следующуи файлы из /etc/pam.d: chfn chsh login passwd rlogin su xdm |
|
Ограничьте физический доступ к компьютеру. Пароль на BIOS и конфигурирование LILO (/etc/lilo.conf) c с паролем (password=xxx). Если есть физический доступ к вашей системе, то защитить ее ничем нельзя . |
|
Не забывайте про существование :
ipchains (пакетный фильтр) ssh (защищенный rlogin,rcp, telnet) tripwire (отслеживает изменения в системных бинарниках) swatch (проверяет логи и рассылает предупреждения) |
Пример 1 - файл /etc/inetd.conf.
Все сервисы, кроме telnet и ftp закомментированы.
#
# do not uncomment smtp unless you *really* know what you are doing.
|
|
Пример 2 - файл /etc/issue .
#
|
|
Пример3 - файл /etc/passwd.
Поле "пароль" заменено на "x" и не содержит в себе зашифрованный
пароль, который был перенесен командой pwconv в файл /etc/shadow.
root:x:0:0:root:/root:/bin/bash
|
|
Пример 4 - файл /etc/ftpusers
root
|
|
Пример 5 - файл /etc/securetty
tty1
|
|
Пример 6 - ACL для TCP Wrappers.
Синтаксис:
Service: Source (IP address, network, or name): <optional> : ALLOW
or DENY
Пример /etc/hosts.allow in.telnetd: 192.168.1.0/255.255.255.0 : banners /etc/bannerfile : ALLOW
Пример /etc/hosts.deny. Настоятельно рекомендуется виметь только такой hosts.deny файл! ALL: ALL DENY Прим. перевод.
|