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 (встроенный отладчик)
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