Руководство администратора Linux по безопасности

         

IP Security (IPSec)


Обзор

Поддержка IPSec ядром

Настройка сети для IPSec

Ручная связь

Автоматическая связь

Примеры настройки IPSec

Два сервера с защищенным соединением

Два сервера с защищенным соединением через Internet (или по другой сети)

Коммерческие версии IPSec

i-data

Windows-клиенты IPSec

PGP VPN

IRE



IPCHAINS


ipchains содержит несколько новых свойств по сравнению с ipfwadm; Вы можете создавать цепочки правил (с именами) и связывать их вместе, при администрировании firewall гораздо проще. Ipchains поддерживает большее количество реакций, чем ipfwadm. Вы можете указывать правило в: ACCEPT, DENY, REJECT, MASQ, REDIRECT, RETURN или задать свою реакцию. Это очень мощное средство, например я мог бы переназначать все пакеты, направляющиеся в порт 80 (трафик www) моей машины шлюза на локальный порт 3128 сервера Squid. Вы можете также использовать, это вместе с quality of service routing, пример, данный в документации ipfwadm показывает расстановку по приоритетам трафика через PPP, Вы можете давать telnet намного более высокий приоритет, затем поставить ftp, уменьшая проблемы с загруженной линией. Обычно я создаю /etc/rc.d/init.d/ipchains-sh и вызываю его до запуска сети, чтобы сервер был ВСЕГДА защищен.

Ниже приведен скрипт для шлюза с двумя интерфейсами, причина использования DENY вместо REJECT в том, что так пакет будет отброшен немедленно, что ускоряет работу в сети. Я также не советую вести протокол для всех пакетов, это требует очень много места на диске и позволяет свалить Ваш сервер при ьыстром соединении, исчерпав все место на диске. Домашняя страница ipchains расположена на

http://netfilter.kernelnotes.org.

#!/bin/bash # # This script sets up firewall rules appropriate for a server with # 2 interfaces # running as a gateway # This script needs to be edited if you plan to use it. # We assume the internal machines call all talk to the gateway, so no # rules block # internal traffic # # A couple of variables # # ETH0 is the IP address on ETH0 (the external interface) # ETH0NET is the network # ETH0NETMASK is the network mask # TRUSTEDHOST1 is a trusted host (for webmin/ssh) # TRUSTEDHOST2 is a trusted host (for webmin/ssh) # ETH1IP is the IP address on ETH1 (internal interface) # ETH1NET is the network # ETH1NETMASK is the network mask # ETH0IP=1.1.1.1 ETH0NET=1.1.1.0 ETH0NETMASK=24 TRUSTEDHOST1=1.5.1.1 TRUSTEDHOST2=1.5.1.2 ETH1IP=10.0.0.1 ETH1NET=10.0.0.0 ETH1NETMASK=24 # PATH=/sbin # FLUSH ALL RULES ipchains -F input ipchains -F output ipchains -F forward # ANTI-SPOOFING ipchains -A input -p all -j DENY -s 10.0.0.0/8 -i eth0 -d 0.0.0.0/0 ipchains -A input -p all -j DENY -s 127.0.0.0/8 -i eth0 -d 0.0.0.0/0 ipchains -A input -p all -j DENY -s 192.168.0.0/16 -i eth0 -d 0.0.0.0/0 ipchains -A input -p all -j DENY -s 172.16.0.0/16 -i eth0 -d 0.0.0.0/0 ipchains -A input -p all -j DENY -s $ETH0IP -i eth0 -d 0.0.0.0/0 # ICMP FIRST ipchains -A input -p icmp -j ACCEPT -s $ETH0NET/$ETH0NETMASK -i eth0 -d 0.0.0.0/0 ipchains -A input -p icmp -j DENY -s 0.0.0.0/0 -i eth0 -d 0.0.0.0/0 # SSH ipchains -A input -p tcp -j ACCEPT -s $TRUSTEDHOST1 -i eth0 -d 0.0.0.0/0 22 ipchains -A input -p tcp -j ACCEPT -s $TRUSTEDHOST2 -i eth0 -d 0.0.0.0/0 22 # BLOCKING 1:1023 ipchains -A input -p tcp -j DENY -s 0.0.0.0/0 -i eth0 -d 0.0.0.0/0 1:1023 ipchains -A input -p udp -j DENY -s 0.0.0.0/0 -i eth0 -d 0.0.0.0/0 1:1023 # BLOCKING OTHER THINGS ipchains -A input -p tcp -j DENY -s 0.0.0.0/0 -i eth0 -d 0.0.0.0/0 1109 ipchains -A input -p tcp -j DENY -s 0.0.0.0/0 -i eth0 -d 0.0.0.0/0 1524 ipchains -A input -p tcp -j DENY -s 0.0.0.0/0 -i eth0 -d 0.0.0.0/0 1600 ipchains -A input -p tcp -j DENY -s 0.0.0.0/0 -i eth0 -d 0.0.0.0/0 2003 ipchains -A input -p udp -j DENY -s 0.0.0.0/0 -i eth0 -d 0.0.0.0/0 2049 ipchains -A input -p tcp -j DENY -s 0.0.0.0/0 -i eth0 -d 0.0.0.0/0 2105 ipchains -A input -p udp -j DENY -s 0.0.0.0/0 -i eth0 -d 0.0.0.0/0 3001 ipchains -A input -p tcp -j DENY -s 0.0.0.0/0 -i eth0 -d 0.0.0.0/0 3001 ipchains -A input -p udp -j DENY -s 0.0.0.0/0 -i eth0 -d 0.0.0.0/0 3128:3130 ipchains -A input -p tcp -j DENY -s 0.0.0.0/0 -i eth0 -d 0.0.0.0/0 3128:3130 ipchains -A input -p tcp -j DENY -s 0.0.0.0/0 -i eth0 -d 0.0.0.0/0 3306 ipchains -A input -p udp -j DENY -s 0.0.0.0/0 -i eth0 -d 0.0.0.0/0 3306 ipchains -A input -p tcp -j DENY -s 0.0.0.0/0 -i eth0 -d 0.0.0.0/0 4444 ipchains -A input -p tcp -j DENY -s 0.0.0.0/0 -i eth0 -d 0.0.0.0/0 6000:6100 ipchains -A input -p udp -j DENY -s 0.0.0.0/0 -i eth0 -d 0.0.0.0/0 6000:6100 ipchains -A input -p tcp -j DENY -s 0.0.0.0/0 -i eth0 -d 0.0.0.0/0 6667 ipchains -A input -p tcp -j DENY -s 0.0.0.0/0 -i eth0 -d 0.0.0.0/0 7000 # WEBMIN ipchains -A input -p tcp -j ACCEPT -s $TRUSTEDHOST1 -i eth0 -d 0.0.0.0/0 10000 ipchains -A input -p tcp -j ACCEPT -s $TRUSTEDHOST2 -i eth0 -d 0.0.0.0/0 10000 ipchains -A input -p tcp -j DENY -s 0.0.0.0/0 -i eth0 -d 0.0.0.0/0 10000 # FORWARD RULES ipchains -P forward DENY ipchains -A forward -p all -j MASQ -s $ETH1NET/$ETH1NETMASK -d 0.0.0.0/0




ipchains отсутствует на установочном CD, его можно найти на добавочном CD или на сайте ftp

ftp://ftp.turbolinux.com/pub/TurboLinux/tlw-3.6-companion/TurboContrib/RPMS.



IPF


IPF альтернативный пакет firewall, доступный для Linux (и ряда других ОС). Получить его можно с

http://coombs.anu.edu.au/~avalon.



IPFWADM


Ipfwadm надежный фильтр пакетов для Linux, хотя ему и не хватает ряда свойств, доступных в Ipchains. Ipfwadm поддерживает только 3 действия для пакета: accept, deny или reject, в то время как правила ipchains могут применяться к 6 встроенным реакциям или определяемым пользователем. Ipfwadm пригоден только для простого IP-уровня firewall, ipmasquerading и если Вы планируете использовать FreeS/WAN. Осноыные опции: задать направление (in, out или вместе, что полезно с флажком интерфейса), входные и выходные правила, правила передачи (скажем, у Вас есть несколько интерфейсов, также охватывают правила маскировки) правила маскировки для времени ожидания и т.п. Вы можете вставлять, конкатенировать и удалять правила, устанавливать заданную по умолчанию политику, и вносить в список все правила. Это очень похоже на ipchains с некоторыми малыми изменениями. Дальше приводится скрипт для сервера, соединяющего две сети (10.0.0.x на eth0, 10.0.0.1 и 192.168.0.x на eth1, 192.168.0.1) с запущенным сервером почты.

#!/bin/bash # # Flush all the rule sets first # ipfwadm -f -I ipfwadm -f -O ipfwadm -f -F # # Allow forwarding between the two networks and otherwise deny it # for security # ipfwadm -F -a accept -P all -S 10.0.0.0/24 -i eth0 -D 192.168.0.0/24 ipfwadm -F -a accept -P all -S 192.168.0.0/24 -i eth1 -D 10.0.0.0/24 ipfwadm -F -p deny # # And of course we have to allow those packets in # ipfwadm -I -a accept -P tcp -S 10.0.0.0/24 -i eth0 -D 192.168.0.0/24 ipfwadm -I -a accept -P tcp -S 192.168.0.0/24 -i eth1 -D 10.0.0.0/24 # # Let them access the mail server port on the server but nothing else # ipfwadm -I -a accept -P tcp -S 10.0.0.0/24 -i eth0 -D 10.0.0.1 25 ipfwadm -I -a accept -P tcp -S 192.168.0.0/24 -i eth0 -D 192.168.0.1 25 ipfwadm -I -p deny

FreeS/WAN сейчас поддерживает серию ядер 2.2.x, you should never choose ipfwadm over ipchains. ipchains offers a much finer degree of control and is much more flexible then ipfwadm.



Ipfwadm2ipchains


Простой скрипт для конвертации правил ipfwadm в правила ipchains, доступен на

http://users.dhp.com/~whisper/ipfwadm2ipchains




IPv6 сам по себе не имеет мер безопасности, это просто другая форма адресации. Но в стандарт встроены возможности поддержки защиты. Например, там есть IPSec. Подробности об IPv6 есть на

http://www.bieringer.de/linux/IPv6
. Linux сейчас уже поддерживает IPv6 в полном объеме (одна из немногих OS, которые могут этим похвалиться).


IRE


http://www.ire.com/

Back

Written by Kurt Seifried



ISC DHCPD


Chroot'ing DHCPD

DHCPD состоит из 2 основных выполнимых программ:

T dhcpd: собственно DHCP

T dhcrelay: DHCP-реле (чтобы передавать запросы на центральный DHCP-сервер).

DHCPD требует 2 библиотеки:

T /lib/ld-linux.so.2

T /lib/libc.so.6 

Файл настройки:

T /etc/dhcpd.conf: расположение загрузочных файлов, настройки и прочее.

Еще несколько дополнительных файлов:

T /etc/dhcpd.leases: список активных соединений

T файл запуска, настройте по своему вкусу.

Самый простой путь к установке dhcpd chroot'ed в том, чтобы просто установить dhcpd (последний предпочтительно) и поправить необходимые файлы. Хорошая идея состоит в том, чтобы создать каталог (например, /chroot/dhcpd), предпочтительно на отдельной файловой системе, и затем создать структуру файлов для dhcpd в нем. Ниже приведен такой пример. Замените в нем /chroot/dhcpd на выбранный Вами каталог.

# Install bind so we have the appropriate files # rpm -i dhcpd-2.0b1pl0-1.i386.rpm # # Create the directory structure # cd /chroot/dhcpd/ # or wherever mkdir ./etc mkdir ./usr/sbin mkdir ./usr mkdir ./var/dhcpd mkdir ./var mkdir ./lib # # Start populating the files # cp /usr/sbin/dhcpd ./usr/sbin/dhcpd cp /etc/dhcpd.conf ./etc/dhcpd.conf cp /etc/rc.d/init.d/dhcpd ./etc/dhcpd.init cp /etc/rc.d/init.d/functions ./etc/functions # # Now to get the latest libraries, change as appropriate # cp /lib/ld-linux.ld-linux.so.2 ./lib/  cp /lib/libc.so.6 ./lib/ # # And create the necessary symbolic links so that they behave # Remember that dhcpd thinks /chroot/dhcpd/ is /, so use relative links

Затем измените или создайте свой скрипт запуска.

Как только это будет выполнено, просто удалите первоначальный файл запуска и создайте ссылку с него на новый, и dhcpd будет вести себя 'обычно' (будет автоматически загружен при начальной загрузке системы), в то время как фактически он отделяется от Вашей системы. Можно (но не обязательно) заменить 'оригинал' DHCPD ссылками.

Если Вы сделали все правильно, Вы должны иметь /chroot/dhcpd (млм другой каталог), который содержит все требуемое, чтобы выполнить dhcpd. ps -xau должен показать нечто вроде:

USER PID %CPU %MEM SIZE RSS TTY STAT START TIME COMMAND root 6872 0.0 1.7 900 532 p0 S 02:32 0:00 ./usr/sbin/dhcpd -d -q  root 6873 0.0 0.9 736 288 p0 S 02:32 0:00 tee ./etc/dhcpd.log



Источники случайных данных


В процессе шифрования часто нужны хорошие случайные числа. В Linux для их построения специально предусмотрены устройства /dev/random и /dev/urandom, которые являются хорошими, но не всегда большими. Часть уравнения измеряет 'произвольные' события, обрабатывает эти данные и делает их доступными (через (u)random). Эти произвольные события включают: ввод с клавиатуры и мыши, прерывания, чтение диска и т.д.

Однако, многие серверы не имеют никакой клавиатуры и мыши, а новые "blackbox" изделия часто не содержат жесткого диска. Так что найти источник произвольных данных становится трудновато. Есть много решений, но одно из них наиболее реально. Это встроенный в PIII генератор случайных чисел, который меряет разницу температур CPU.



It ain't over 'til...


Итак, Вы имеете свежий дистрибутив Linux (Red Hat, Debian, или еще какой-нибудь). Пожалуйста НЕ СТАВЬТЕ старый дистрибутив, чтобы потом его обновлять: это кошмар. (Замечание переводчика: не такой уж и кошмар.) Но есть еще много программных пакетов, которые надо обновлять, если Вы не хотите получить систему, скомпрометированную на первых 15 секундах uptime (в случае BIND/Sendmail). Хорошей идеей является хранение локальной копии каталога обновлений для Вашего дистрибутива (в конце данного документа есть список проблем для разных дистрибутивов). Проще всего сделать такой каталог доступным для Вас, положив его на NFS/ftp или записав на CD. Также следует удвлить ненужное программное обеспечение, как и то, которое Вы заменили на более безопасные версии (например, замените RSH на SSH).



Ядро Linux


Обзор

Обновление и компиляция ядра

Компиляция и установка ядра

Версии ядра

Патчи (заплатки) для ядра

Для безопасности

Для национальных версий

Linux Intrusion Detection System Patch (LIDS)

Проект Linux ACL

RSBAC

LOMAC

auditd

Fork Bomb Defuser

Отладка ядра

KDB v0.6 (встроенный отладчик)

kGDB (дистанционыый отладчик)

Обзор

Linux (или GNU/Linux согласно Stallman, если речь о полном дистрибутиве) фактически только ядро операционной системы. Оно обрабатывает работу с дисками, прочей аппаратурой, поддерживает механизмы безопасности и сеть.

В дополнение к этому мы имеем аппаратные проблемы подобно Pentium F00F bug, и проблемы, свойственные TCP-IP протоколу, Linux ядро имеет способы их обхода. Версии ядра обозначены как X.Y.Z, где Z младший номер версии, Y задает является ли ядро тестовым (нечетное значение) или рабочим (четное число), X определяет старший номер версии (пока что есть 0, 1 и 2). Серия 2.2.x имеет сильные усовершенствования о сравнению с серией 2.0.x. Использование ядер 2.2.x также позволяет Вам использовать новые возможности, например, ipchains (вместо ipfwadm). Выяснить ппоследние версии ядра можно просто командой finger @linux.kernel.org:

[seifried@mail kernel-patches]$ finger @linux.kernel.org [linux.kernel.org]

The latest stable version of the Linux kernel is: 2.2.13 The latest beta version of the Linux kernel is: 2.3.29 The latest prepatch (alpha) version *appears* to be: 2.3.30-3



John the ripper


Эффективный cracker (открывашка) для паролей доступен на

http://www.false.com/security/john.



Как спрятать данные на диске


Зашифрованные файлы сами по себе привлекают внимание, о чем часто забывают. Вывод: надо запрятать данные так, чтобы даже следов не осталось.



KDB v0.6 (встроенный отладчик)


Отладчик ядра SGI доступен на

http://oss.sgi.com/projects/kdb.



Kerberos


Kerberos современная сетевая опознавательная система, основанная на идеи вручения пользователям билетов, как только они подтвердили подлинность на сервере Kerberos (подобно использованию маркеров в NT). Kerberos доступен для скачивания на

http://web.mit.edu/kerberos/www. Kerberos FAQ есть на

http://www.nrl.navy.mil/CCS/people/kenh/kerberos-faq.html. Kerberos более безопасен и масштабируем, чем NIS / NIS+. Керберизированные (Kerberizing) программы типа telnet, imap и pop найти не так просто, но можно, а вот Windows-клиенты с поддержкой Kerberos найти трудно.



KGDB (дистанционный отладчик)


В SGI написали инструмент, который позволяет Вам делать отладку ядра, дистанционно, не связываясь с консолью. Доступен на

http://oss.sgi.com/projects/kgdb.

Back

Written by Kurt Seifried



Kha0s


kha0S в настоящее время находится в стадии разработки, но в него входит много пакетов криптографических программ. Подробности можно посмотреть на: http://www.kha0s.org/ и загрузить его с:

ftp://ftp.zedz.net/pub/replay/linux/kha0s/.

Back

Written by Kurt Seifried



Klaxon


В дополнение к TCP-WRAPPERS и протоколам firewall, klaxon может быть полезен в борьбе со сканированием портов, если Вы не хотите полностью блокировать машину. Klaxon доступен на

ftp://ftp.eng.auburn.edu/pub/doug.



Kldap


Основанная на KDE утилита для просмотра LDAP со способностью редактировать объекты (в основном, инструмент администрирования LDAP). Вы можете скачать его с

http://www.mountpoint.ch/oliver/kldap.



Коммерческие версии IPSec


Я решил, что не помешает упомянуть здесь коммерческие пакеты для IPSec, с акцентированием, конечно, на тех, которые основаны на Linux и FreeS/WAN.



Компиляция и установка ядра


cd /usr/src

Там должна быть ссылка ?linux? на каталог с текущим ядром. Если ее нет, одной проблемой меньше. Если есть, удалите ее. Лучше всего переименовать каталог linux в /usr/src/linux-kernel.version.number и создать на него ссылку /usr/src/linux.

Распакуйте исходеники, используя tar и gzip так, чтобы получить /usr/src/linux примерно с 50 мегабайтами исходников. Следующий шаг должен создать ядерную конфигурацию linux (/usr/src/linux.config), это может быть достигнуто, используя ?make config?, ?make menuconfig? или ?make xconfig?, мне кажется, что лучше всего ?make menuconfig? (для этого, Вы будете нуждаться в библиотеках ncurses и ncurses devel). Это, возможно, самый трудный шаг: имеются сотни параметров, которые могут быть категоризированы в две основных области: аппаратная поддержка и сервисная поддержка. Для аппаратной поддержки напишите список аппаратных средств, с которыми это ядро будет работать, и включите соответствующие параметры. Что касается сервисной поддержки Вы будете должны вычислить, которые файловые системы (fat, ext2, minix, ...) Вы планируете использовать, то же самое для работы с сетями (firewalling и т.д.).

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

make dep #(makes dependencies) make clean #(cleans out previous cruft) make bzImage #(make zImage pukes if the kernel is to big, and 2.2.x #kernels tend to be pretty big) make modules #(creates all the modules you specified) make modules_install #(installs the modules to #/lib/modules/kernel.version.number/)

Вы должны скопировать /usr/src/linux/arch/i386/boot/bzImage (или zImage) в /boot/vmlinuz-kernel.version.number. Потом поправьте файл /etc/lilo.conf, добавьте в него запись для нового ядра.

boot=/dev/hda map=/boot/map install=/boot/boot.b prompt timeout=50 default=linux image=/boot/vmlinuz-2.2.9 label=linux root=/dev/hda1 read-only image=/boot/vmlinuz-2.2.5 label=linuxold root=/dev/hda1 read-only

По окончании правки /etc/lilo.conf надо запустить /sbin/lilo для обновления MBR (Master Boot Record). При запуске LILO должен вывести нечто похожее на:

Added linux * Added linuxold

Вывод представляет собой список ядер, которые будут указаны в MBR, * обозначает ядро, загружаемое по умолчанию (обычно, это первое ядро, если Вы не указали другое директивой default).



Контроль и ограничение пользователей


Ограничение пользователей

PAM

Bash

Quota

Контроль пользователей

ttysnoop

UserIPAcct 



Контроль пользователей


Одна проблема общая на серверах с shell-достуом, заставляет уверенных пользователей не злоупотреблять сервером. Довольно просто контролировать стандартные ресурсы (типа дискового использования, использования CPU и т.д) но наиболее часто злоупотребляемый элемент bandwidth, к счастью имеется ряд способов контролировать это злоупотребление.



Контрольные списки


Контрольный список Internet

Заблокировать все ненужные сервисы

Используйте firewall, чтобы блокировать доступ к сервисам, если возможно

Используйте TCP_WRAPPERS, чтобы ограничить доступ к сервисам

Минимизируйте выполнение nmap и nessus

Применяйте SSL для обертки сервисов типа POP и IMAP

Используйте SSH вместо Telnet

Регулярно обновляйте софт

Back

Written by Kurt Seifried



Ldap-client-cgi.py


ldap-client-cgi.py программа на Python, которая выполняется как cgi и обеспечивает www-интерфейс к LDAP-каталогу. Скачать можно с

http://sites.inka.de/ms/python/ldap-client-cgi.



LDAPExplorer


Основанный на www инструмент администрирования LDAP. Доступен на

http://igloo.its.unimelb.edu.au/LDAPExplorer.



Legato Networker


Legato Networker другая программа резервирования масштаба предприятия, со свободно доступным (но неподдерживаемым) клиентом для Linux. Legato Networker доступен на

http://www.legato.com/Products/html/legato_networker.html, а клиент для Linux можно загрузить с

ftp://ftp.legato.com/pub/Unsupported/Linux_Client.



License and Warranty


The OpenContent (OC) is defined as the set of webpages comprising the "Linux Administrator's Security Guide" (located at

http://www.securityportal.com/lasg) or the daily tarball snapshot of said webpages, usually called lasg-snapshot.tar.gz. The OpenContent license is available from

http://www.opencontent.org.

LICENSE

Terms and Conditions for Copying, Distributing, and Modifying

Items other than copying, distributing, and modifying the Content with which this license was distributed (such as using, etc.) are outside the scope of this license.

1. You may copy and distribute exact replicas of the OpenContent (OC) as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the OC a copy of this License along with the OC. You may at your option charge a fee for the media and/or handling involved in creating a unique copy of the OC for use offline, you may at your option offer instructional support for the OC in exchange for a fee, or you may at your option offer warranty in exchange for a fee. You may not charge a fee for the OC itself. You may not charge a fee for the sole service of providing access to and/or use of the OC via a network (e.g. the Internet), whether it be via the world wide web, FTP, or any other method.

2. You may modify your copy or copies of the OpenContent or any portion of it, thus forming works based on the Content, and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:

a) You must cause the modified content to carry prominent notices stating that you changed it, the exact nature and content of the changes, and the date of any change.

b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the OC or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License, unless otherwise permitted under applicable Fair Use law.


These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the OC, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the OC, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Exceptions are made to this requirement to release modified works free of charge under this license only in compliance with Fair Use law where applicable.

3. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to copy, distribute or modify the OC. These actions are prohibited by law if you do not accept this License. Therefore, by distributing or translating the OC, or by deriving works herefrom, you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or translating the OC.

NO WARRANTY

4. BECAUSE THE OPENCONTENT (OC) IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE OC, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE OC "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK OF USE OF THE OC IS WITH YOU. SHOULD THE OC PROVE FAULTY, INACCURATE, OR OTHERWISE UNACCEPTABLE YOU ASSUME THE COST OF ALL NECESSARY REPAIR OR CORRECTION.

5. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MIRROR AND/OR REDISTRIBUTE THE OC AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE OC, EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

Back



Written by Kurt Seifried


LILO


При загрузке с диска C: используется LILO (или другой загрузчик). LILO позволяет гибко настраивать загрузку системы, но это палка о двух концах. Вы можете при загрузке передать LILO параметры, с точки зрения защиты опасней всего "image-name single", который загружает Linux в однопользовательском режиме. В большинстве дистрибутивов это просто root shell без запроса пароля или каких-то других защитных механизмов.

delay=X

Этот параметр задает сколько секунд LILO ждет ввода пользователя перед загрузкой системы, заданной по умолчанию. Одно из требований защиты C2, чтобы этот интервал был установлен в 0, но на машине с двойной загрузкой (dual boot) этот номер не пройдет.

prompt

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

restricted

Требует, чтобы использовался пароль, при передаче параметров начальной загрузки (типа "linux single"). Удостоверьтесь, что Вы используете этот параметр на каждом образе загрузки ядра.

password=

Требует чтобы пользователь ввел пароль, используемый вместе с restricted, также удостоверьтесь, что lilo.conf не доступен на чтение всем, или любой пользователь будет способен прочитать пароль.

Вот пример lilo.conf с одного из моих серверов.

boot=/dev/hda map=/boot/map install=/boot/boot.b prompt timeout=100 default=linux image=/boot/vmlinuz-2.2.5 label=linux root=/dev/hda1 read-only restricted password=s0m3_pAsSw0rD_h3r3

Это загружает систему, использующую ядро /boot/vmlinuz-2.2.5, сохраненное на первом разделе первого жесткого диска с интерфейсом IDE, ключевое слово prompt обычно остановило бы автоматическую перезагрузку, однако оно задано для образа, так что не будет мешать загрузке в режиме ?linux? но спросит пароль, если Вы введете ?linux single?, Вам дается 10 секунд, чтобы ввести ?linux single?, здесь и надо ввести пароль. В соединении с установкой BIOS на загрузку только с диска C: и парольной защитой система получается довольно защищенной. Попробуйте также объявить файл lilo.conf как immutable, используя команду ?chattr?. Для установки immutable введите:

chattr +i /sbin/lilo.conf

Это предотвратит любые изменения (случайные или не очень) файла lilo.conf. Чтобы внести поправки в этот файл, снимите атрибут immutable:

chattr -i /sbin/lilo.conf

Только root имеет доступ к атрибуту immutable.

Back

Written by Kurt Seifried



Linux Firewall Tools


Интересный сайт с online cgi для создания правил и скриптов firewall. Увы, работает медленно, но посмотреть можно на

http://www.linux-firewall-tools.com/.



Linux Intrusion Detection System Patch (LIDS)


Данная заплата добавляет ряд интересных возможностей, прежде всего нацеленных на обнаружение нападения. Вы можете "блокировать" файлы, правила firewall, есть еще ряд интересных параметров. Вы можете скачать патч с

http://www.soaring-bird.com.cn/oss_proj/lids.



Linux LDAP-серверы


Обзор

LDAP-серверы

OpenLDAP

LDAP-авторизация

NSS LDAP Module

Утилиты LDAP

ldap-client-cgi.py

kldap

GQ

LDAPExplorer

Perl/Java/C SDK для LDAP



LinuxCare


Support: http://www.linuxcare.com

Support: 1-888-546-4878



Linuxconf


Linuxconf универсальный инструмент администрирования, который является пригодным для использования из командной строки, из-под X, или встроенным в www-сервер. Из X он обеспечивает полное представление всего, что может быть конфигурировано (PPP, пользователи, диски, и т.д.). Чтобы использовать его через www, Вы должны сначала выполнить Linuxconf на машине и добавить хост или сеть, с которых разрешается заходить (Conf > Misc > Linuxconf network access), сохранить настройки и выйти. Затем, когда Вы соединяетесь с машиной (по умолчанию Linuxconf ждет на порте 98), Вы должны ввести username и пароль. По умолчанию Linuxconf пускает только root, и Linuxconf не поддерживает шифрование (это выполняется автономно на порте 901), так что я бы очень настоятельно не рекомендовал использовать это свойство в сети, если Вы не имеете IPSec или некоторую другую форму защиты уровня IP. Linuxconf входит в Red Hat Linux и доступен на

http://www.solucorp.qc.ca/linuxconf. Linuxconf вроде бы не имеет никаких man-страниц, справка доступна только в нем самом, что не очень удобно.



Listar


http://www.listar.org

Back

Written by Kurt Seifried



Livingston Radius


http://www.livingston.com/tech/docs/radius

ftp://ftp.livingston.com/pub/le/radius



Log-файлы и другие формы наблюдения


Обзор

Основы протоколирования

Протоколирование системы

sysklogd и klogd

secure-syslog

next generation syslog

Nsyslogd

Log-мониторы

Psionic Logcheck

colorlogs

WOTS

swatch

Протоколы ядра

auditd

Shell-протоколы

bash



Log-мониторы


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



LOMAC


LOMAC (Low Water-Mark Mandatory Access Control for Linux) набор заплат, чтобы расширить защиту Linux. Вы можете получить его с

ftp://ftp.tislabs.com/pub/lomac.



Lpd


lpd старый демон печати строк (когда все, что Вы печатали, было текстом), который учитывает совместное использование принтеров.


lpd старый демон печати строк (когда все, что Вы печатали, было текстом), который учитывает совместное использование принтеров. Он позволяет Вам ставить в очередь задания по выводу на печать, выполнять их через фильтры, управлять очередями печати и так далее. Lpd может принимать задания по выводу на печать в местном масштабе или по сети и обращаться к различным частям системы (принтеры, регистрирационные daemons и т.д), делая это потенциальной дырой в защите. Исторически lpd был источником нескольких крупных ошибок, позволявших получить root-доступ. Lpd-доступ управляется через файлы /etc/hosts.equiv и /etc/hosts.lpd. Вы должны также закрыть firewallом lpd от внешнего мира и, если Вы должны послать задание на печать по общей сети, помнить, что любой может читать его, так что VPN-решение хорошая идея. lpd работает на порте 515, протокол tcp. Файл hosts.lpd должен содержать список машин (по одной на строку), которым позволяют использовать услуги lpd, Вы могли бы также использовать ipfwadm/ipchains.

ipfwadm -I -a accept -P tcp -S 10.0.0.0/8 -D 0.0.0.0/0 515 ipfwadm -I -a accept -P tcp -S some.trusted.host -D 0.0.0.0/0 515 ipfwadm -I -a deny -P tcp -S 0.0.0.0/0 -D 0.0.0.0/0 515

или

ipchains -A input -p tcp -j ACCEPT -s 10.0.0.0/8 -d 0.0.0.0/0 515 ipchains -A input -p tcp -j ACCEPT -s some.trusted.host -d 0.0.0.0/0 515 ipchains -A input -p tcp -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0 515



LPRng


Новое поколение LPR, вариант LPR. Имеет больше возможностей защиты и предоставляет более богатый сервис. LPRng поддерживает Kerberos и авторизацию на основе PGP, доступ контролируется файлом /etc/lpd.perms, в котором можно управлять доступом на основе пользователя, группы или IP. LPRng имеет хорошую документацию и доступен на

http://www.astart.com/lprng/LPRng.html.



LSH


LSH свободная реализация протокола SSH (клиент и сервер), LSH GNU licensed и создан как альтернатива SSH (который все же не свободен полностью). Скачать можно с http://www.net.lut.ac.uk/psst, но помните, что он еще только разрабатывается.



Lsof


lsof удобная программа, подобная ps, за исключением того, что она выдает какие файлы и прочие ресурсы используются, включая сетевые сокеты. К сожалению, lsof выводит много информации, так что Вы будете должны использовать grep или переназначать вывод через less (?lsof|less?), чтобы прочитать его.

squid 9726 root 4u inet 78774 TCP localhost:2074->localhost:2073 (ESTABLISHED) squid 9726 root 5u inet 78777 TCP localhost:2076->localhost:2075 (ESTABLISHED) squid 9726 root 6u inet 78780 TCP localhost:2078->localhost:2077 (ESTABLISHED) squid 9726 root 7w CHR 1,3 6205 /dev/null squid 9726 root 14u inet 78789 TCP host1:3128 (LISTEN) squid 9726 root 15u inet 78790 UDP host1:3130 squid 9726 root 16u inet 78791 UDP host1:3130 squid 9726 root 12u inet 167524 TCP host1:3128->host2:3630 (ESTABLISHED) squid 9726 root 17u inet 167528 TCP host1:3424->www.example.org:http (SYN_SENT)

Этот пример показывает, что мы имеем Squid, слушающий порты 3128 и 3130, последние две строки показывают открытое соединение внутреннего хоста с сервером Squid и то, что Squid выполняет запрос (в данном случае на www.example.org). host1 является сервером Squid, а host2 является клиентом, создавшим запрос. Это неоценимый инструмент для получения точного картины ситуации с сетью на Вашей системе. Вы можете получить lsof со многими дистрибутивами. Пожалуйста обратите внимание, что версии lsof для ядер версии 2.0.x не будут работать с ядрами 2.2.x и наоборот, так как имеется слишком много изменений. Главный сайт lsof:

ftp://vic.cc.purdue.edu/pub/tools/unix/lsof.



MailMan


MailMan свободный (для некоммерческого использования) шлюз от www к POP. Если Вы планируете использовать его в коммерческих целях, надо его купить. А скачать можно с

http://www.endymion.com/products/mailman.



Mason


Mason автоматизированный генератор правил firewall для ipfwadm и ipchains. Вы загружаете его, и он контролирует пакеты, идущие через машину, затем основываясь на этом создает набор правил, чтобы позволить такие действия. Хороший инструмент в течение первого раза firewall, доступен на

http://users.dhp.com/~whisper/mason.



MasqMail


MasqMail собирает письма в автономном режиме, а потом быстро обменивается почтой при связи с ISP. Может быть настроен на несколько ISP с адресом возврата и тому подобным. Загрузить можно с

http://merlin.uni-sw.gwdg.de/~okurth/masqmail.



Mindterm


mindterm свободный java ssh-клиент, скачать можно с

http://www.mindbright.se/mindterm.



Mklinuxfw


Mklinuxfw утилита, написанная на Perl, имеет набор интерфейсов (CGI, KDE, command line) для создания правил firewall. Сейчас поддерживает интерфейс CGI, GTK находится в стадии разработки. Скачать можно с

http://www.madhouse.org.uk/~red/framepage.phtml?/mklinuxfw/index.html.



Mkxauth


mkxauth представляет собой хорошее дополнение к xhost. mkxauth создает файлы ~/.Xauthority, которые используются, чтобы определить hostnames и связанные магические cookies (маркер, используемый чтобы получить доступ). Эти cookies могут затем использоваться, чтобы получить доступ к удаленному X-хосту (Вы по существу имеете копию cookie на каждом конце) и передаются как текст (опасно) или зашифрованными по DES (совершенно безопасно). При использовании этого метода Вы можете быть в относительной безопасности. Файлы Xauthority могут также использоваться вместе с Kerberos. mkxauth отлично описан на man-странице 'man mkxauth' и много деталей можно почерпнуть на man-странице Xsecurity.



Модуль Pam для SMB


http://rpmfind.net/linux/RPM/pam_smb.html

http://www.csn.ul.ie/~airlied/pam_smb



Модуль Pam Smart Card


http://www.linuxnet.com/applications/applications.html