Оглавление Сетевое конфигурирование ......................................................................................................................... 3 3 Установка прокси-сервера ....................................................... 3.1 Настройка Squid ............................................................................ 1 Базовая настройка сети ............................................................................................................................. 4 3.2 Упражнения.................................................................................... 1.1 Настройка сетевого интерфейса ......................................................................................................................... 5 3.3 Решения ......................................................................................... 1.2 TTY....................................................................................................................................................................... 11 Управление сетевыми клиентами ............................................. 1.3 Перезапуск ......................................................................................................................................................... 12 1.4 PPP – Протокол «точка-точка» .......................................................................................................................... 13 1 Настройка DHCP ....................................................................... 1.5 ARP ...................................................................................................................................................................... 17 1.1 Настройка DHCP ........................................................................... 1.6 Упражнения ......................................................................................................................................................... 20 1.2 Упражнения.................................................................................... 1.7 Решения .............................................................................................................................................................. 21 1.3 Решения ......................................................................................... 2 Дополнительные сетевые настройки. Поиск и 2 Настройка NIS ........................................................................... устранение неполадок ................................................................................................................................. 22 2.1 Настройка NIS................................................................................ 2.1 VPN ...................................................................................................................................................................... 2.2 Упражнения.................................................................................... 23 2.2 Поиск и устранение проблем ............................................................................................................................. 2.3 Решения ......................................................................................... 24 2.3 Упражнения ........................................................................................................................................................ 29 3 Настройка LDAP ........................................................................ 2.4 Решения .............................................................................................................................................................. 30 3.1 Настройка LDAP ............................................................................ Почта и новости ............................................................................................................................................ 31 3.2 Упражнения.................................................................................... 3.3 Решения ......................................................................................... 1 Использование Sendmail .......................................................................................................................... 32 4 Аутентификация PAM ............................................................... 1.1 Использование Sendmail .................................................................................................................................... 33 1.2 Упражнения ......................................................................................................................................................... 4.1 Настройка PAM .............................................................................. 38 1.3 Решения .............................................................................................................................................................. 4.2 Упражнения.................................................................................... 39 4.3 Решения ......................................................................................... 2 Управление почтовым трафиком ............................................................................................................ 40 Безопасность системы ................................................................ 2.1 Вступление .......................................................................................................................................................... 41 2.2 Настройка ............................................................................................................................................................ 42 1 Настройка маршрутизатора ..................................................... 2.3 Примеры .............................................................................................................................................................. 44 1.1 Настройка маршрутизатора .......................................................... 2.4 Упражнения ......................................................................................................................................................... 45 1.2 Упражнения.................................................................................... 2.5 Решения .............................................................................................................................................................. 46 1.3 Решения ......................................................................................... DNS .................................................................................................................................................................. 47 2 Защита FTP-серверов .............................................................. 1 Базовая настройка BIND .......................................................................................................................... 48 2.1 Настройка демона WU-FTPD ........................................................ 1.1 Настройка BIND ................................................................................................................................................. 2.2 Упражнения.................................................................................... 49 1.2 Упражнения ......................................................................................................................................................... 2.3 Решения ......................................................................................... 53 1.3 Решения .............................................................................................................................................................. 54 3 Безопасная оболочка (OpenSSH) ............................................ 2 Создание и поддержка зон DNS ............................................................................................................. 55 3.1 Настройка OpenSSH ..................................................................... 2.1 Создание зоны DNS ........................................................................................................................................... 3.2 Упражнения.................................................................................... 56 2.2 Упражнения ......................................................................................................................................................... 3.3 Решения ......................................................................................... 60 2.3 Решения .............................................................................................................................................................. 61 4 Поддержание безопасности системы ..................................... 3 Обеспечение безопасности DNS – сервера .......................................................................................... 62 4.1 Выполнение задач по поддержанию 3.1 Безопасность DNS .............................................................................................................................................. безопасности ....................................................................................... 63 3.2 Упражнения ......................................................................................................................................................... 4.2 Упражнения.................................................................................... 65 3.3 Решения .............................................................................................................................................................. 4.3 Решения ......................................................................................... 66 Web-сервисы ................................................................................................................................................. Устранение неполадок в работе сети ....................................... 67 1 Установка web-сервера ............................................................................................................................ 1 Поиск неисправностей в сети .................................................. 68 1.1 Установка и настройка Apache .......................................................................................................................... 1.1 Поиск неисправностей в работе сети .......................................... 69 1.2 Упражнения ......................................................................................................................................................... 74 Тест для закрепления знаний ..................................................... 1.3 Решения .............................................................................................................................................................. 75 1 Тест ........................................................................................... 2 Поддержка web-сервера .......................................................................................................................... 76 2 Ответы к тесту ........................................................................... 2.1 Виртуальные сервера ........................................................................................................................................ 77 3 Авторы ....................................................................................... 2.2 Apache и mod_ssl ................................................................................................................................................ 79 Словарь терминов ........................................................................ 2.3 Упражнения ......................................................................................................................................................... 85 2.4 Решения .............................................................................................................................................................. 86 Соглашения, используемые в курсе Новые команды описываются следующим образом: command [options] [files] где: command – название команды [...] - необязательные параметры options – ключи, используемые командой files – имена файлов, передаваемые как параметры Например : [root@test ] /# command parameter # comments about the command results : the command completed Символ «#» обозначает как комментарий, так и приглашение командной строки суперпользователя. Сетевое конфигурирование В этой главе 1.7 Решения ......................................................................................... Сетевое конфигурирование ......................................................................................................................... 3 2 Дополнительные сетевые настройки. Поиск и 4 1 Базовая настройка сети ............................................................................................................................. устранение неполадок ................................................................. 1.1 Настройка сетевого интерфейса ......................................................................................................................... 5 1.2 TTY....................................................................................................................................................................... 2.1 VPN ................................................................................................. 11 1.3 Перезапуск ......................................................................................................................................................... 2.2 Поиск и устранение проблем ........................................................ 12 1.4 PPP – Протокол «точка-точка» .......................................................................................................................... 2.3 Упражнения ................................................................................... 13 1.5 ARP ...................................................................................................................................................................... 2.4 Решения ......................................................................................... 17 1.6 Упражнения ......................................................................................................................................................... 20 1 Базовая настройка сети Ключевые файлы, термины и утилиты /sbin/route /sbin/ifconfig /sbin/arp /usr/sbin/arpwatch /etc 1.2 Настройка сетевого интерфейса Чтобы присоединить компьютер к локальной сети, необходимо настроить IPадрес и маску сети. Эти параметры используются для идентификации компьютера в сети. Если компьютер должен иметь доступ в другую сеть, необходимо указать маршрутизатор, через который этот доступ будет осуществляться. ifconfig С помощью утилиты ifconfig, можно вывести на экран или изменить параметры сетевого интерфейса. Перед использованием утилиты ifconfig должен быть загружен драйвер сетевой карты, и сама карта должна быть распознана драйвером. Команда ifconfig отображает либо все сконфигурированные интерфейсы, либо принимает имя интерфейса в качестве аргумента. [root@test root]# ifconfig eth0 Link encap:Ethernet HWaddr 00:40:F4:98:D2:D9 inet addr:192.168.0.42 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::240:f4ff:fe98:d2d9/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:9 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:618 (618.0 b) Interrupt:20 Base address:0xf000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:2476 errors:0 dropped:0 overruns:0 frame:0 TX packets:2476 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:558766 (545.6 Kb) TX bytes:558766 (545.6 Kb) [root@test root]# Команда ifconfig -a отображает все сетевые интерфейсы, включая не сконфигурированные. Чтобы настроить интерфейс с помощью DHCP, в вашей локальной сети должен быть DHCP сервер. Интерфейс настраивается командой dhclient : [root@test root]# dhclient Internet Software Consortium DHCP Client V3.0.1rc13 Copyright 1995-2002 Internet Software Consortium. All rights reserved. For info, please visit http://www.isc.org/products/DHCP Listening on LPF/eth0/00:40:f4:98:d2:d9 Sending on LPF/eth0/00:40:f4:98:d2:d9 Listening on LPF/lo/ Sending on LPF/lo/ Sending on Socket/fallback DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7 send_packet: Network is down DHCPDISCOVER on lo to 255.255.255.255 port 67 interval 5 DHCPOFFER from 192.168.0.254 DHCPREQUEST on eth0 to 255.255.255.255 port 67 DHCPACK from 192.168.0.254 bound to 192.168.0.30 -- renewal in 250 seconds. [root@test root]# Для конфигурирования интерфейса со статическим адресом, используется следующий синтаксис: [root@test root]# ifconfig eth0 192.168.0.42 netmask 255.255.255.0 [root@test root]# ifconfig eth0 Link encap:Ethernet HWaddr 00:40:F4:98:D2:D9 inet addr:192.168.0.42 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::240:f4ff:fe98:d2d9/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:11 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:1302 (1.2 Kb) Interrupt:20 Base address:0xf000 lo Link encap:Local Loopback inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:2479 errors:0 dropped:0 overruns:0 frame:0 TX packets:2479 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:559750 (546.6 Kb) TX bytes:559750 (546.6 Kb) [root@test root]# Маска подсети 255.255.255.0 не обязательна, так как такое значение используется по умолчанию. Сетевой интерфейс может иметь более одного IP адреса. Псевдонимы сетевых интерфейсов имеют имена: eth0:0, eth0:1, и т.п... [root@test root]# ifconfig eth0 192.168.0.42 [root@test root]# ifconfig eth0:1 192.168.0.43 [root@test root]# ifconfig eth0:2 192.168.0.44 [root@test root]# ifconfig eth0 Link encap:Ethernet HWaddr 00:40:F4:98:D2:D9 inet addr:192.168.0.42 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::240:f4ff:fe98:d2d9/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2 errors:0 dropped:0 overruns:0 frame:0 TX packets:11 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:684 (684.0 b) TX bytes:1302 (1.2 Kb) Interrupt:20 Base address:0xf000 eth0:1 Link encap:Ethernet HWaddr 00:40:F4:98:D2:D9 inet addr:192.168.0.43 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2 errors:0 dropped:0 overruns:0 frame:0 TX packets:11 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:684 (684.0 b) TX bytes:1302 (1.2 Kb) Interrupt:20 Base address:0xf000 eth0:2 Link encap:Ethernet HWaddr 00:40:F4:98:D2:D9 inet addr:192.168.0.44 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2 errors:0 dropped:0 overruns:0 frame:0 TX packets:11 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:684 (684.0 b) TX bytes:1302 (1.2 Kb) Interrupt:20 Base address:0xf000 lo Link encap:Local Loopback inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:2479 errors:0 dropped:0 overruns:0 frame:0 TX packets:2479 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:559750 (546.6 Kb) TX bytes:559750 (546.6 Kb) [root@test root]# Таким образом, компьютер может стать мостом между несколькими подсетями, имея всего лишь одну сетевую карту. Активация интерфейса: [root@test root]# ifconfig eth0 up или [root@test root]# ifup eth0 Деактивация интерфейса: [root@test root]# ifconfig eth0 down или [root@test root]# ifdown eth0 Все эти команды конфигурируют сетевую карту только до следующей перезагрузки. Чтобы сохранить эту конфигурацию и после перезагрузки, необходимо воспользоваться графической утилитой или модифицировать указанный ниже файл: [root@test root]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=static IPADDR=192.168.0.42 NETMASK=255.255.255.0 NETWORK=192.168.0.0 BROADCAST=192.168.0.255 GATEWAY=192.168.0.254 ONBOOT=yes MII_NOT_SUPPORTED=no WIRELESS_ENC_KEY="" [root@test root]# route С помощью команды route можно выводить на экран и конфигурировать таблицу маршрутизации ядра. Наиболее часто эту команду используют для установки маршрута по умолчанию, но с ее помощью можно также указать ядру, через какой маршрутизатор посылать пакеты для определенной сети. Чтобы вывести таблицу маршрутизации на экран, наберите route: [root@test root]# route Kernel IP routing table Destination Gateway 192.168.0.0 * 127.0.0.0 * default 192.168.0.254 [root@test root]# Genmask 255.255.255.0 255.0.0.0 0.0.0.0 Flags U U UG Metric 0 0 0 Ref 0 0 0 Use 0 0 0 Iface eth0 lo eth0 Также есть возможность не выполнять преобразование IP адресов в имена, что весьма полезно, так как DNS запросы в большинстве случаев работают очень медленно. Для этого используется флаг -n. [root@test root]# route -n Kernel IP routing table Destination Gateway 192.168.0.0 0.0.0.0 127.0.0.0 0.0.0.0 0.0.0.0 192.168.0.254 [root@test root]# Genmask 255.255.255.0 255.0.0.0 0.0.0.0 Flags U U UG Metric 0 0 0 Ref 0 0 0 Use 0 0 0 Iface eth0 lo eth0 Flags U U UG Metric 0 0 0 Ref 0 0 0 Use 0 0 0 Iface eth0 lo eth0 Чтобы указать маршрут по умолчанию: [root@test root]# route Kernel IP routing table Destination Gateway 192.168.0.0 * 127.0.0.0 * default 192.168.0.254 [root@test root]# Genmask 255.255.255.0 255.0.0.0 0.0.0.0 Если несколько интерфейсов сконфигурированы с одним и тем же IP-адресом, пакеты могут маршрутизироваться с помощью маски подсети в зависимости от того, какая подсеть к какому интерфейсу подсоединена. [root@test root]# route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.0.253 [root@test root]# Новая таблица маршрутизации: [root@test root]# route -n Kernel IP routing table Destination Gateway 10.0.0.0 192.168.0.253 192.168.0.0 0.0.0.0 127.0.0.0 0.0.0.0 0.0.0.0 192.168.0.254 [root@test root]# Genmask 255.255.255.0 255.255.255.0 255.0.0.0 0.0.0.0 Flags UG U U UG Metric 0 0 0 0 Ref 0 0 0 0 Use 0 0 0 0 Iface eth0 eth0 lo eth0 Также есть возможность указать устройство, которое будет использоваться для маршрутизации пакетов: [root@test root]# route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.0.253 dev eth1 [root@test root]# 1.1 TTY На заре компьютерной эры было слишком дорого иметь более одного компьютера в одной компании. Все работали с одним большим компьютером с помощью телетайпа, сокращенно: TTY. Сейчас это важная часть любой Unix системы. В наши дни существуют виртуальные терминалы, экранные консоли для входа в систему. Введение в getty getty - это программа, которая приветствует вас в консоли. Mandrake Linux release 10.0 (Official) for i586 Kernel 2.6.3-7mdk on an i686 / tty1 test login: Она запускается процессом init из /etc/inittab, и может работать на последовательном порту. Существует несколько утилит, разновидностей getty, с большим или меньшим набором возможностей: mingetty (малый размер, используется для виртуальных консолей) agetty mgetty (последовательные порты, факсы, голосовая почта, автоматическое определение протокола PPP) uugetty getty_em (упрощенная версия uugetty) fbgetty (альтернативный getty Linux) (сложная) (тоже, что и предыдущая, но с поддержкой видеобуферов1) Сообщение, выводимое на виртуальной консоли, можно изменить, отредактировав файл /etc/issue : [root@test root]# cat /etc/issue Mandrake Linux release 10.0 (Official) for i586 Kernel 2.6.3-7mdk on an i686 / \l [root@test root]# 1 Здесь и далее по тексту под этим термином будет пониматься framebuffer,-прим.ред. 1.1 Перезапуск Процесс init запускает несколько процессов getty. Для этих процессов указывается2 опция “respawn”, которая позволяет перезапустить процесс, если он прекратил свое выполнение. Эта опция очень полезна для виртуальных терминалов: после того как отработает процесс login, init запустит новый процесс getty, который будет ждать следующего входа в систему. Во время входа через виртуальную консоль процесс getty будет заменен на: getty login bash getty приветствует пользователя. Затем login проверяет его реквизиты (с помощью службы PAM). На последнем шаге login запускает оболочку прописанную в /etc/passwd; обычно это /bin/bash. 2 В файле /etc/inittab,-прим.ред. 1.1 PPP – Протокол «точка-точка» Протокол PPP используется для установления соединения между двумя компьютерами. Обычно этот протокол используется для связи по коммутируемым линиям с помощью обычного модема. Настройка Основной конфигурационный файл: /etc/ppp/options. Этот файл содержит значения по умолчанию, которые могут быть дополнены или переопределены опциями командной строки, либо в конфигурационном файле конкретного соединения. Последние создаются в каталоге /etc/ppp/peers/. Таким образом, можно иметь файл /etc/ppp/peers/sunrise для соединения с Интернетом по коммутируемой линии и файл /etc/ppp/peers/dsl-provider для ADSL соединения с помощью протокола PPPoE. Аутентификация Аутентификация может производиться различными способами: PAP (Password Authentication Protocol – протокол аутентификации по паролю) CHAP (Challenge Handshake Authentication Protocol - протокол аутентификации с предварительным согласованием вызова) MSCHAP (разновидность протокола CHAP от компании Microsoft; Linux может работать только как клиент) В случае протокола PAP аутентификация может, а в случае CHAP - обязана быть двусторонней. Обычно для аутентификации используется имя хоста. Если желательно использовать другую учетную запись, ее нужно указать с помощью опции name на клиенте в файле /etc/ppp/options: name username Файл паролей PAP/CHAP В зависимости от выбранного метода аутентификации пароли PPP хранятся одном из двух файлов. Поскольку файл содержит важную информацию, он должен иметь следующие права доступа: [root@test root]# ls -l /etc/ppp/chap-secrets /etc/ppp/pap-secrets -rw------- 1 root daemon 78 fév 27 01:27 /etc/ppp/chap-secrets -rw------- 1 root daemon 77 fév 27 01:27 /etc/ppp/pap-secrets [root@test root]# /etc/ppp/pap-secrets # Secrets for authentication using PAP # client server secret user1 * pw123 acceptable_local_IP_addresses Этот файл указывает демону pppd использовать пароль pw123 для локального имени user1 (которое не является настоящим именем хоста) при соединении с любым сервером. Поскольку локальный IP-адрес не указан, будет принят любой адрес. /etc/chap-secrets На стороне клиента: # Secrets for authentication using CHAP # client server secret acceptable local IP addresses user1 pppserver pw123 pppserver user1 pw001 На стороне сервера: # Secrets for authentication using CHAP # client server secret acceptable local IP addresses pppserver user1 pw123 user1 pppserver pw001 Команды pon Команда запускает ppp соединение. Если файл /etc/ppp/ppp_on_boot существует и может быть исполнен, то запускается этот файл. В противном случае будет использован файл /etc/ppp/peers/provider. Другое имя соединения может быть передано как аргумент. poff Команда останавливает ppp соединение. Если установлено несколько соединений, можно передать имя соединения в качестве аргумента. Либо можно использовать опцию -a и остановить все ppp соединения. plog Отображает последние несколько строк регистрационного журнала ppp. kppp Программа KDE для управления соединениями по коммутируемым линиям. Пример Сервер # /etc/ppp/pap-secrets toto * "pw123" 192.168.13.13 Чтобы запустить PPP сервер, наберите pppd /dev/ttyS0 38400 debug passive require-pap nodetach netmask 255.255.255.0 persist noipdefault 172.16.1.1:172.16.1.2 noauth Клиент # /etc/ppp/pap-secrets toto * pw123 Опции PPP # /etc/ppp/peers/provider noauth connect "/bin/true" defaultroute /dev/ttyS0 38400 nopersist name toto Чтобы запустить PPP на стороне клиента, наберите: pppd call provider 1.1 ARP Утилита arp может быть использована для просмотра и изменения ARPтаблицы ядра. [root@test root]# arp Address HWtype ARISTOTE ether [root@test root]# HWaddress 00:C0:9F:2F:7E:DD Flags Mask C Iface eth0 Чтобы установить соответствие между какой-нибудь IP-адресом и заданным MAC-адресов, выполните следующие команды: [root@test root]# arp -s 192.168.0.69 00:02:03:97:2F:7A [root@test root]# arp -a ARISTOTE (192.168.0.254) at 00:C0:9F:2F:7E:DD [ether] on eth0 ? (192.168.0.69) at 00:02:03:97:2F:7A [ether] PERM on eth0 [root@test root]# arpwatch Утилита arpwatch используется для мониторинга MAC-адресов и обнаружения случаев вторжения в процесс обмена данными или новых компьютеров, появившихся в локальной сети. С помощью syslog утилита регистрирует в журнале такие события, как изменение MAC-адреса для какого-либо IP адреса, либо появление нового MAC адреса в сети. Для запуска утилиты arpwatch используется либо сценарий/etc/init.d/arpwatch, либо команда arpwatch -d: Эта запись в журнале показывает, что в сети появился новый неизвестный MACадрес. [root@test root]# arpwatch -d From: arpwatch (Arpwatch) To: root Subject: new station hostname: ip address: ethernet address: ethernet vendor: timestamp: <unknown> 192.168.0.69 0:9:6b:17:8a:b0 IBM Corporation Monday, August 2, 2004 11:08:20 +0200 А сейчас изменился MAC-адрес: кто-то либо поменял сетевую карту, либо пытается нелегально получить доступ к какому-то хосту, используя технику ARP Spoofing. [root@test root]# arpwatch -d From: arpwatch (Arpwatch) To: root Subject: changed ethernet address hostname: ip address: ethernet address: ethernet vendor: old ethernet address: old ethernet vendor: timestamp: previous timestamp: delta: <unknown> 192.168.1.5 0:9:6b:17:8a:b0 IBM Corporation 0:9:6b:17:8a:b1 IBM Corporation Monday, August 2, 2004 11:46:29 +0200 Monday, August 2, 2004 11:45:52 +0200 37 seconds База данных MAC адресов хранится в файле /var/lib/arpwatch/arp.dat. Вы можете отредактировать этот файл и удалить некоторые строки, чтобы протестировать работу утилиты, заставив старые машины стать снова новыми: [root@test root]# cat /var/lib/arpwatch/arp.dat 0:6:1e:df:69:80 192.168.1.60 1091437640 0:c0:9f:2f:7e:dd 192.168.1.254 1091437597 Каждая строка содержит MAC адрес, IP адрес и метку даты/времени (timestamp). Метка даты/времени записывается в формате EPOCH (количество секунд, прошедших с 1 января 1970 года). Чтобы отобразить ее в читабельном виде, воспользуйтесь командой: [root@test root]# date -d '1970-01-01 1091438200 sec' +"%Y-%m-%d %T %Z" 2004-08-02 10:16:40 CEST 1.2 Упражнения Упражнение 1 : Настройте вашу сетевую карту на использование DHCP. Настройте вашу сетевую карту на использование статичного IP адреса. Измените маршрут по умолчанию. Сделайте свои изменения постоянными (работающими и после перезагрузки). Упражнение 2 : Какая программа getty используется в вашей системе? Настройте систему так, чтобы была возможность войти в нее с 11-й и 12-й консолей. Настройте систему так, чтобы в нее можно было войти с помощью модема, соединившись с терминалом, запущенным на последовательном порту. Упражнение 3 : Какой MAC-адрес у вашей сетевой карты? А у ваших соседей? Установите и запустите утилиту arpwatch для отслеживания изменений в вашей локальной сети. 1.1 Решения Решение 1 : Запустите dhclient ifconfig eth0 192.168.0.42 netmask 255.255.255.0 route del default gw route add default gw 192.168.0.254 Отредактируйте файл /etc/sysconfig/network-scripts/ifcfgeth0. Упражнение 2 : Посмотрите в файле /etc/inittab Отредактируйте /etc/inittab Упражнение 3 : ifconfig ping 192.168.0.x arp -a Следуйте инструкциям, приведенным в разделе arpwatch. 1 Дополнительные сетевые настройки. Поиск и устранение неполадок Ключевые файлы, термины и утилиты: /sbin/route /sbin/ifconfig /bin/netstat /bin/ping /sbin/arp /usr/sbin/tcpdump /usr/sbin/lsof /usr/bin/nc 1.2 VPN Определение VPN (Virtual Private Network – виртуальная частная сеть) – это технология передачи данных, использующая существующую инфраструктуру (Интернет) для создания виртуальных туннелей между хостами и сетями. Туннели могут быть зашифрованы, защищая, таким образом, данные, передаваемые по небезопасному соединению. Для создания VPN, один из хостов должен шифровать данные, а другой хост – дешифровать их перед маршрутизацией к непосредственному получателю. Технологии VPN Наиболее известные технологии: PPP поверх SSH (SSL) VTUN (UDP) IPSEC (протоколы AH, ESP, IPCOMP и IKE) PPTP (Microsoft) CIPE (Crypto IP Encapsulation) Утилиты Linux для настройки VPN OpenSwan (замена FreeSwan) OpenVPN vtun / vtund OpenSSH pptp-server 1.1 Поиск и устранение проблем Ping Ping - хорошо известная утилита диагностирования сети. [root@test root]# ping -c 1 192.168.0.254 PING 192.168.0.254 (192.168.0.254) 56(84) bytes of data. 64 bytes from 192.168.0.254: icmp_seq=1 ttl=128 time=0.347 ms --- 192.168.0.254 ping statistics --1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.347/0.347/0.347/0.000 ms [root@test root]# Ping посылает ICMP-пакеты (ICMP_ECHO_REQUEST) и ожидает ответа (ICMP_ECHO_REPLY). Утилита используется для выяснения того, функционирует ли какой-либо хост. Netstat Утилита Netstat отображает сетевые соединения, таблицы маршрутизации, статистику по интерфейсам, «маскарадные» соединения 3 и участие в многоадресных рассылках данных: [root@test root]# netstat -tua Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address tcp 0 0 localhost:32768 *:* tcp 0 0 *:imaps *:* tcp 0 0 *:pop3s *:* tcp 0 0 *:ldap *:* tcp 0 0 *:submission *:* tcp 0 0 *:pop3 *:* ... [SNIP] ... tcp 0 0 *:https *:* tcp 0 0 *:ldaps *:* udp 0 0 *:10000 *:* udp 0 0 *:746 *:* udp 0 0 *:749 *:* udp 0 0 *:sunrpc *:* State LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN 3 «Маскарад» («masquerade») - одна из технологий сетевой трансляции адресов (NAT), позволяющая подключить локальную сеть к внешней, используя лишь один «настоящий» IP-адрес (для шлюза),-прим.ред. udp 0 0 *:ipp [root@test root]# *:* Чаще всего с командой netstat используются следующие опции: -t : tcp-соединения -u : udp-соединения -a : отображает сокеты, ожидающие и не ожидающие соединения -n : не выполнять преобразование IP-адресов в имена traceroute Утилита traceroute отображает путь, проходимый пакетом для достижения хоста, которому он предназначается. Путь представляется как список маршрутизаторов, через которые прошел пакет. [root@test root]# traceroute www.lynuxtraining.com traceroute to www.lynuxtraining.com (80.74.141.177), 30 hops max, 38 byte packets 1 ARISTOTE (192.168.0.254) 0.429 ms 0.207 ms 0.138 ms 2 nas-9t-lyo-3.nas.gaoland.net (62.106.138.36) 153.738 ms 149.115 ms 150.032 ms 3 V36.core1.lyo.gaoland.net (62.39.1.33) 155.857 ms 143.076 ms 144.016 ms 4 V4094.core1.cbv.gaoland.net (212.94.160.1) 149.877 ms 143.129 ms 149.892 ms 5 V3994.cbv1-co-1.gaoland.net (212.94.162.210) 144.010 ms 143.354 ms 143.884 ms 6 above.FreeIX.net (213.228.3.234) 156.043 ms 167.703 ms 150.071 ms 7 ge12-0.cr2.cdg2.fr.above.net (208.184.231.234) 155.856 ms 155.256 ms 155.883 ms 8 so-0-2-0.cr1.fra1.de.above.net (64.125.31.138) 168.015 ms 173.700 ms 167.933 ms 9 pos1-0.er1a.fra1.de.above.net (216.200.116.129) 168.030 ms 167.754 ms 173.911 ms 10 216.200.114.246.reverse.not.updated.above.net (216.200.114.246) 180.092 ms 167.796 ms 173.941 ms 11 r1ffm.vianw.net (213.2.252.65) 167.942 ms 173.209 ms 173.825 ms 12 zrhth1001.ch.vianw.net (213.2.254.26) 174.036 ms 173.590 ms 173.914 ms 13 ch-tixzh-cr2.metanet.ch (80.74.134.13) 167.981 ms 179.829 ms 167.982 ms 14 arc80-74-141-177.ch-meta.net (80.74.141.177) 167.852 ms 172.765 ms 173.993 ms [root@test root]# tcpdump Утилита tcpdump предназначена для вывода на экран или в файл сетевого трафика. Утилита очень полезна для диагностики и устранения проблем, возникающих в сети. Для понимания выводимых утилитой данных необходимо хорошее знание сетевых протоколов. [root@test root]# tcpdump -i eth0 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 23:16:09.728970 IP 192.168.0.42.32770 > ARISTOTE.domain: 25979+ A? test. (33) 23:16:09.729675 arp who-has 192.168.0.42 tell ARISTOTE 23:16:09.729695 arp reply 192.168.0.42 is-at 00:40:f4:98:d2:d9 23:16:09.729796 IP ARISTOTE.domain > 192.168.0.42.32770: 25979 NXDomain0/0/0 (33) 23:16:09.729897 IP 192.168.0.42.32770 > ARISTOTE.domain: 25980+ A? Ooip. (22) ... [SNIP] ... 23:16:10.924134 IP 192.168.0.42.32848 > arc80-74-141-177.ch-meta.net.http: P 1:353(352) ack 1 win 5840 <nop,nop,timestamp 8727910 839017376> 38 packets captured 38 packets received by filter 0 packets dropped by kernel [root@test root]# Существует возможность добавления фильтров, чтобы видеть только определенную часть трафика: [root@test root]# tcpdump -i eth0 dst www.lynuxtraining.com and port 80 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 23:22:42.053767 IP 192.168.0.42.32870 > arc80-74-141-177.ch-meta.net.http: P 2566206792:2566207294(502) ack 3283895847 win 63712 <nop,nop,timestamp 9119099 839055676> ... [SNIP] ... 23:22:44.073759 IP 192.168.0.42.32870 > arc80-74-141-177.ch-meta.net.http: . ack 18825 win 63712 <nop,nop,timestamp 9121120 839056650> 23:22:44.085583 IP 192.168.0.42.32870 > arc80-74-141-177.ch-meta.net.http: . ack 18916 win 63712 <nop,nop,timestamp 9121132 839056661> 15 packets captured 24 packets received by filter 0 packets dropped by kernel [root@test root]# lsof Аббревиатура «lsof» расшифровывается как LiSt Open Files – «перечислить открытые файлы». Эта утилита выводит на экран файлы, открытые различными процессами: [root@test root]# lsof /dev/log COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME syslogd 1002 root 0u unix 0xcf360a00 4202 /dev/log [root@test root]# [root@test root]# lsof -i COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME portmap 988 rpc 3u IPv4 4167 UDP *:sunrpc portmap 988 rpc 4u IPv4 4186 TCP *:sunrpc (LISTEN) rpc.statd 1049 root 4u IPv4 4313 UDP *:804 rpc.statd 1049 root 5u IPv4 4291 UDP *:801 rpc.statd 1049 root 6u IPv4 4327 TCP *:807 (LISTEN) ypserv 1065 root 5u IPv4 4356 UDP *:819 ypserv 1065 root 6u IPv4 4361 TCP *:822 (LISTEN) rpc.ypxfr 1494 root 4u IPv4 4794 UDP *:823 rpc.ypxfr 1494 root 5u IPv4 4797 TCP *:825 (LISTEN) X 1546 root 1u IPv4 4948 TCP *:x11 (LISTEN) slapd 1563 ldap 7u IPv4 4938 TCP *:ldap (LISTEN) slapd 1563 ldap 8u IPv4 9766 TCP localhost:ldap>localhost:32872 (ESTABLISHED) slapd 1563 ldap 14u IPv4 685334 TCP localhost:ldap>localhost:33132 (ESTABLISHED) slapd 1563 ldap 16u IPv4 6181 TCP localhost:ldap>localhost:32785 (ESTABLISHED) slapd 1563 ldap 17u IPv4 6664 TCP localhost:ldap>localhost:32820 (ESTABLISHED) slapd 1563 ldap 23u IPv4 6675 TCP localhost:ldap>localhost:32822 (ESTABLISHED) ... [пропущено] ... named 3832 named 26u IPv4 9787 esd 3845 csahut 29u IPv4 9789 (CLOSE_WAIT) snort 4260 snort 5u IPv4 685333 >localhost:ldap (ESTABLISHED) [root@test root]# TCP localhost:rndc (LISTEN) TCP test:32873->test:squid TCP localhost:33132- nc Название утилиты nc происходит от NetCat. Это универсальная утилита для работы с протоколом TCP/IP. Примеры: Ожидание соединения на порту 23 [root@test root]# nc -l -p 2323 Инициирование соединения с портом 23 [root@test root]# nc -l -p 2323 Передача файла [root@server root]# nc -l -p 2121 > my_file [root@sclient root]# cat my_file | nc -q0 192.168.0.69 2121 Передача и упаковка каталога [root@server root]# nc -l -p 2121 | gzip -c -d | tar -x [root@sclient root]# tar -c my_dir | gzip -c | nc -q0 192.168.0.69 2121 Защищенная передача файла [root@server root]# nc -l -p 2121 | gpg –decrypt > my_file [root@sclient root]# cat my_file | gpg -c | nc -q0 192.168.0.69 2121 1.1 Упражнения Упражнение 1: Почему вам следует настроить VPN ? Упражнение 2 : Запустите команду ping и отследите ее и только ее пакеты с помощью tcpdump. Какой протокол использует утилита traceroute? Отфильтруйте эти пакеты с помощью tcpdump и распечатайте содержимое пакетов в шестнадцатеричном и ascii форматах. Воспользуйтесь netcat для передачи файлов. Запретите вашему компьютеру отвечать на ICMP-пакеты. 1.1 Решения Решение 1: Позволяет пользователям получить доступ к локальной сети откуда угодно, обеспечивая необходимый уровень безопасности Чтобы безопасно соединить несколько офисов Низкая цена решения Решение 2 : tcpdump -i eth0 icmp and src 192.168.0.42 and dst 192.168.0.69 tcpdump -i eth0 udp and src 192.168.0.42 and dst 192.168.0.69 Воспользуйтесь командами netcat, описанными в параграфе, посвященном этой утилите echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all Почта и новости В этой главе 2.1 Вступление .................................................................................... Почта и новости ............................................................................................................................................ 31 2.2 Настройка....................................................................................... 1 Использование Sendmail .......................................................................................................................... 32 2.3 Примеры ........................................................................................ 1.1 Использование Sendmail .................................................................................................................................... 33 2.4 Упражнения.................................................................................... 1.2 Упражнения ......................................................................................................................................................... 38 2.5 Решения ......................................................................................... 1.3 Решения .............................................................................................................................................................. 39 2 Управление почтовым трафиком ............................................................................................................40 1 Использование Sendmail Ключевые файлы, термины и утилиты: /etc/aliases sendmail.cw virtusertable genericstable Дата последнего изменения требований LPI (LPI Objective):24 августа 2001 года 1.2 Использование Sendmail Введение Sendmail – это одна из самых старых почтовых программ. Она была создана Эриком Оллмэном (Eric Allman) в 1979 году. Несмотря на некоторые ошибки, влияющие на безопасность, она широко используется в Интернете и установлена на большом числе почтовых серверов. Программа sendmail знаменита своим конфигурационным файлом sendmail.cf, который очень тяжело понять, когда редактируешь его впервые. Настройка Файл sendmail.cf нелегко редактировать, поэтому для настройки sendmail мы воспользуемся другим, гораздо более простым файлом sendmail.cm. Затем мы используем интерпретатор макро-языка m4, чтобы получить sendmail.cf на основе нашего варианта sendmail.mc. Пример файла sendmail.mc : [root@test majordomo-1.94.5]# cat /etc/mail/sendmail.mc divert(-1) dnl This is the macro config file used to generate the /etc/sendmail.cf dnl file. If you modify the file you will have to regenerate the dnl /etc/sendmail.cf by running this macro config through the m4 dnl preprocessor: dnl dnl m4 /etc/sendmail.mc > /etc/sendmail.cf dnl dn0l You will need to have the sendmail-cf package installed for this to dnl work. dnl dnl dnl dnl dnl dnl dnl ( Это файл с макросами настройки, используемыми для генерации файла /etc/sendmail.cf Если вы измените его, вам потребуется перестроить файл /etc/sendmail.cf с помощью запуска интерпретатора m4 командой: m4 /etc/sendmail.mc > /etc/sendmail.cf Пакет sendmail-cf должен быть установлен для того, чтобы это сработало) include(`/usr/share/sendmail-cf/m4/cf.m4')dnl define(`confDEF_USER_ID',``mail:mail'')dnl OSTYPE(`linux')dnl undefine(`UUCP_RELAY')dnl undefine(`BITNET_RELAY')dnl define(`confDOMAIN_NAME', `test@domain.org')dnl define(`confTRUSTED_USERS',`majordomo')dnl define(`confALIAS_WAIT', `30')dnl define(`confTO_CONNECT', `1m')dnl define(`confTRY_NULL_MX_LIST',true)dnl define(`confDONT_PROBE_INTERFACES',true)dnl define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl dnl define delivery mode: interactive, background, or queued dnl определение режима доставки: интерактивный (i), фоновый (b), dnl или использующий очереди (q)) dnl define(`confDELIVERY_MODE', `i') MASQUERADE_AS(`localhost.localdomain')dnl FEATURE(`limited_masquerade')dnl FEATURE(`masquerade_envelope')dnl FEATURE(`smrsh',`/usr/sbin/smrsh')dnl FEATURE(mailertable)dnl dnl virtusertable: redirect incoming mail to virtual domain to particular user or domain dnl ( параметр virtusertable служит для перенаправления почты адресованной виртуальному домену на адрес конкретного домена или пользователя ) FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')dnl dnl genericstable: rewrite sender address for outgoing mail dnl (параметр genericstable служит для перезаписи адреса отправителя в исходящих письмах) dnl FEATURE(genericstable)dnl FEATURE(always_add_domain)dnl FEATURE(redirect)dnl FEATURE(use_cw_file)dnl ... [пропущено] ... (`confDONT_BLAME_SENDMAIL',`GroupWritableAliasFile,IncludeFileInGroupWritable DirPath') You have new mail in /var/spool/mail/root [root@test majordomo-1.94.5]# Пример sendmail.cf : [root@test majordomo-1.94.5]# cat /etc/mail/sendmail.cf ... [пропущено] ... Sfinal=4 R$+ :; <@> R$* <@> $@ $1 : $@ handle <list:;> handle <> and list:; # strip trailing dot off possibly canonical name # ( удаление замыкающий точки в вероятно канонических именах ) R$* < @ $+ . > $* $1 < @ $2 > $3 # eliminate internal code # ( исключение внутреннего кода ) R$* < @ *LOCAL* > $* $1 < @ $j > $2 # externalize local domain info # ( конкретизация информации о локальном домене ) R$* < $+ > $* $1 $2 $3 R@ $+ : @ $+ : $+ @ $1 , @ $2 : $3 canonical R@ $* $@ @ $1 defocus <route-addr> ... and exit # UUCP must always be presented in old form # ( UUCP всегда должен присутствовать в старом формате ) R$+ @ $- . UUCP $2!$1 u@h.UUCP => h!u # delete duplicate local names # ( удаление дубликатов в локальных именах ) R$+ % $=w @ $=w $1 @ $2 ... [SNIP] ... SAddDomain R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified R$+ add local qualification $@ $1 < @ *LOCAL* > u%host@host => u@host Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/ HdrToL, T=DNS/RFC822/X-Unix, A=procmail -Y -a $h -d $u Mprog, P=/usr/sbin/smrsh, F=lsDFMoqeu9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, D=$ z:/, T=X-Unix/X-Unix/X-Unix, A=smrsh -c $u [root@test majordomo-1.94.5]# Как правило, мы будем редактировать sendmail.mc и конвертировать его затем в sendmail.cf с помощью команды: [root@test majordomo-1.94.5]# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf sendmail.mc Несколько полезных ключевых слов, которые по сути являются командами языка m4: divert : начала комментария. Комментарий продолжается до следующей команды divert include(`/usr/share/sendmail-cf/m4/cf.m4')dnl : использовать файл cf.m4 для генерации sendmail.cf OSTYPE(`linux')dnl : Определение операционной системы, на которой будет работать sendmail define(`confTRUSTED_USERS',`majordomo')dnl : установить значение переменной “confTRUSTED_USERS” равной “majordomo”. FEATURE(`smrsh',`/usr/sbin/smrsh')dnl : Одна из настроек sendmail. Настроек у этой программы огромное множество, и описать их всех в этом документе не представляется возможным. Почтовые псевдонимы Файл с описанием почтовых псевдонимов /etc/aliases (или /etc/mail/aliases) имеет следующий формат: bin: daemon: games: ingres: nobody: system: toor: uucp: root root root root root root root root В этом примере почтовые сообщения для таких адресатов, как например system или daemon будут перенаправлены в почтовый ящик пользователя root. Кроме того, можно запускать программу каждый раз, когда какой-то пользователь получает письмо. Эта возможность используется majordomo. Для этого используется следующий синтаксис: majordomo | /path/to/executable Можно перенаправить почту на другой адрес: user user@new.address.com Заметьте, что пользователи могут делать это самостоятельно, указав эту строчку в файле .forward в своём домашнем каталоге. Можно создать очень простой список рассылки: localadmins john, robert, paul Каждый раз после изменения этого файла необходимо запустить команду newaliases для того, чтобы изменения вступили в силу. [root@test root]# newaliases /etc/aliases: 29 aliases, longest 73 bytes, 855 bytes total [root@test root]# 1.3 Упражнения Упражнение 1 : Выполните базовую настройку Sendmail. Настройте свою систему так, чтобы она могла получать и отправлять письма sendmail, запущенным на компьютерах ваших соседей. Создайте почтовые псевдонимы 1.1 Решения Решение 1 : Используйте конфигурацию sendmail по умолчанию и укажите имя вашего почтового домена. Используйте команду mail. Письма можно посмотреть в /var/spool/mail Отредактируйте /etc/aliases 1 Управление почтовым трафиком Ключевые файлы, термины и утилиты: procmail 1.2 Вступление Procmail используется для сортировки, фильтрации входящей почты и выполнения других задач. Он может применяться как на стороне сервера, так и на стороне клиента, если вы предпочитаете не использовать специализированный почтовый агент. 1.3 Настройка Когда пользователь получает новую почту, агент передачи почтовых сообщений (MTA) проверяет файл .forward в домашнем каталоге пользователя. Если он обнаруживает там почтовый адрес, то вся почта перенаправляется на него. Иначе письма складываются в локальный почтовый ящик пользователя. .forward Файл .forward может быть использован в том числе для передачи почты в другую программу, такую как procmail. Это делается с помощью каналов, например вот так: "|IFS=' '&&exec /usr/bin/procmail -f-||exit 75 #ВАШЕ_ИМЯ" Путь должен указывать на исполняемый файл команды procmail. Используйте which procmail для того, чтобы узнать, где он находится. Комментарий важен для отладки, особенно если больше одного пользователя имеют свои procmail-сценарии. Некоторые MTA умеют использовать procmail по умолчанию, в этом случае файл .forward вам не понадобится. Нам не потребуется такая настройка, так как мы используем sendmail, а он по умолчанию запускает procmail в качестве программы для доставки писем: [root@test root]# grep procmail /etc/mail/sendmail.mc define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl FEATURE(local_procmail)dnl MAILER(procmail)dnl [root@test root]# .procmailrc Итак, поступившее письмо было перенаправлено программе procmail. Чтобы обработать его, procmail ищет свой конфигурационный файл .procmailrc в домашнем каталоге пользователя Пример файла .procmailrc: :0c: $HOME/mail.backup Эта настройка обозначает дописывание копии любого входящего письма к файлу $HOME/mail.backup. Копирование производится потому, что в первой строке указан флаг 'c', требующий скопировать письмо. После второго двоеточия можно указать имя файла блокировки. Если оставить это поле пустым, procmail автоматически создаёт файл блокировки lockfile. Если второе двоеточие отсутствует, файл блокировки не создаётся. Файл может содержать больше одной команды. Если .procmailrc не найден, или письмо не удовлетворяет ни одному их условий, оно добавляется к стандартному файлу входящей почты, как это происходит при обычной доставке. Формат .procmailrc Стартовая строка :0 с указанием нескольких флагов Условия Строка, начинающаяся с символа * Доставка файл или каталог, в который нужно передать почту, или строка начинающаяся с | или ! 1.1 Примеры Игнорирование писем :0 * ^From.*someone.i.dont.like@somewhere.org /dev/null Письма с подходящим условию значением поля From будут сохранены в файл /dev/null. Запуск сценарии при получении почты :0 * !^FROM_DAEMON * !^FROM_MAILER * !^X-Loop: myself@domain.org | $HOME/bin/my.script Все письма будут переданы на вход указанному скрипту, за исключением писем от почтовых сервисов, почтовых программ, или писем, имеющих заголовок XLoop, содержащий myself@home.org. Автоматический ответ :0 * ^FROM.*root@test.domain.org | (formail -rk \ -A "X-Loop: yourname@youraddress.com" ; \ echo "This is an automated response";\ echo "I am away from office, I will read your message later :)";\ echo "I'll be back on the 1st of september"; ) | /usr/sbin/sendmail -t -oi Команда formail может написать письмо в ответ на другое (-r), сохранив содержимое (-k). Полученное письмо будет перенаправлено команде sendmail, с указанием взять адрес корреспондента из поля заголовка “To:” (-t). Параметр -A добавляет дополнительные заголовки к письму. Заголовок X-Loop поможет избежать зацикливания, если у вашего корреспондента установлен такой же скрипт. 1.2 Упражнения Упражнение 1 : Настройте вашу систему на использование procmail Настройте ваш систему так, чтобы она автоматически отсылала ответы на все письма 1.1 Решения Решение 1 : Следуйте инструкциям этой главы Используйте команду formail DNS В этой главе 2.2 Упражнения.................................................................................... DNS .................................................................................................................................................................. 47 2.3 Решения ......................................................................................... 1 Базовая настройка BIND .......................................................................................................................... 48 3 Обеспечение безопасности DNS – сервера .......................... 1.1 Настройка BIND ................................................................................................................................................. 49 3.1 Безопасность DNS......................................................................... 1.2 Упражнения ......................................................................................................................................................... 53 3.2 Упражнения.................................................................................... 1.3 Решения .............................................................................................................................................................. 54 3.3 Решения ......................................................................................... 2 Создание и поддержка зон DNS ............................................................................................................. 55 2.1 Создание зоны DNS ........................................................................................................................................... 56 1 Базовая настройка BIND Ключевые файлы, термины и команды: /etc/named.conf /usr/sbin/ndc /usr/sbin/named-bootconf kill 1.2 Настройка BIND Аббревиатура «BIND» расшифровывается как «Berkeley Internet Name Domain». Данный продукт является наиболее распространенным среди DNS – серверов в Интернете и работает на операционных системах Linux, Unix, а также на платформах Windows. Существуют три главных ветви разработки BIND: Версия 4.х : старая версия, обновления только в части безопасности Версия 8.х : новое поколение BIND Версия 9.х : замена версии BIND 8 Для установки нового DNS – сервера Вам необходимо выбрать последнюю версию 9 – ого поколения. Файл /etc/named.conf - основной конфигурационный файл. На разных платформах его местоположение варьируется. Данный файл содержит директивы inlcude для других конфигурационных файлов, что упрощает их поддержку. В версиях 4.х использовался файл /etc/named.boot, которого нет в более поздних версиях. Для преобразования его в формат 8 и 9 версий воспользуйтесь утилитой named-bootconf. При настройке DNS – сервера необходимо создать файл, в котором определяются зоны. Обычно он размещается в директории /var/named/, но это настраивается в файле /etc/named.conf. Команда ndc больше не используется, вместо нее появилась команда rndc. Кэширующий сервер имен. Создайте этот файл /etc/named.conf: [root@test root]# cat > /etc/named.conf << EOF > controls { > allow { 127.0.0.1; }; > }; > > options { > directory "/var/named"; > pid-file "/var/named/named.pid"; > forwarders { 192.168.0.254; }; > }; > EOF [root@test root]# Перезапустите BIND : [root@test root]# /etc/init.d/named restart Остановка named: rndc: свзяь прервана: соединение не установлено [ OK Запуск named: [ OK [root@test root]# ] ] Отредактируйте файл /etc/resolv.conf для работы с вашим DNS – сервером. Теперь вы должны быть способны разрешать DNS – имена самостоятельно: [root@test root]# echo "nameserver 192.168.0.42" > /etc/resolv.conf [root@test root]# ping www.lynuxtraining.com PING www.lynuxtraining.com (80.74.141.177) 56(84) bytes of data. 64 bytes from arc80-74-141-177.ch-meta.net (80.74.141.177): icmp_seq=1 ttl=51 time=203 ms 64 bytes from arc80-74-141-177.ch-meta.net (80.74.141.177): icmp_seq=2 ttl=51 time=179 ms --- www.lynuxtraining.com ping statistics --2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 179.680/191.397/203.115/11.725 ms [root@test root]# Настройка RNDC Аббревиатура «RNDC» обозначает «Remote Name Daemon Control». Этот инструмент предназначен для управления удаленными (и конечно же, локальными) серверами служб доменных имен. Он использует заранее распределенные ключи (pre-shared keys) в качестве механизма авторизации. В BIND встроена команда rndc-confgen , результатом работы которой является создание конфигурационного файла для RNDC. root@test root]# rndc-confgen |tee /etc/rndc.conf # Начало файла rndc.conf key "rndc-key" { algorithm hmac-md5; secret "HDE+7c4aA5V470ghHlZfAw=="; }; options { default-key "rndc-key"; default-server 127.0.0.1; default-port 953; }; # Конец файла rndc.conf # Используйте следующие команды в файле named.conf, чтобы настроить список #разрешенных адресов так, как необходимо: # key "rndc-key" { # algorithm hmac-md5; # secret "HDE+7c4aA5V470ghHlZfAw=="; # }; # # controls { # inet 127.0.0.1 port 953 # allow { 127.0.0.1; } keys { "rndc-key"; }; # }; # Конец файла named.conf [root@test root]# Скопируйте вторую часть файла rndc.conf в файл named.conf и перезапустите службу BIND. Протестируйте BIND : [root@test root]# rndc -s 127.0.0.1 status number of zones: 2 debug level: 0 xfers running: 0 xfers deferred: 0 soa queries in progress: 0 query logging is OFF server is up and running [root@test root]# Запустите rndc без параметров , чтобы увидеть список доступных действий: [root@test root]# rndc Usage: rndc [-c config] [-s server] [-p port] [-k key-file ] [-y key] [-V] command command is one of the following: reload Reload configuration file and zones. reload zone [class [view]] Reload a single zone. refresh zone [class [view]] Schedule immediate maintenance for a zone. reconfig Reload configuration file and new zones only. stats Write server statistics to the statistics file. querylog Toggle query logging. dumpdb Dump cache(s) to the dump file (named_dump.db). stop Save pending updates to master files and stop the server. halt Stop the server without saving pending updates. trace Increment debugging level by one. trace level Change the debugging level. notrace Set debugging level to 0. flush Flushes all of the server's caches. flush [view] Flushes the server's cache for a view. status Display status of the server. *restart Restart the server. * == not yet implemented Version: 9.2.3 [root@test root]# 1.1 Упражнения Упражнение 1 : Настройте кэширующий сервер доменных имен. Настройте команду RNDC Просмотрите журналы службы доменных имен 1.1 Решения Следуйте инструкциям этой главы 1 Создание и поддержка зон DNS Ключевые файлы, термины и команды: содержимое /var/named синтаксис файла зоны форматы ресурсных записей dig nslookup host 1.2 Создание зоны DNS Теперь мы хотим стать авторизованным (authoritative) DNS-сервером для своей зоны. В этом примере мы создали зону под названием domain.org Для каждого домена необходимы два файла, путь к которым определяется в /etc/named.conf: Один для разрешения имен в IP-адреса. Другой для разрешения IP-адресов в имена. Добавьте в файл named.conf : zone "domain.org" { type master; file "zone/domain.org.zone"; }; zone "0.168.192.in-addr.arpa" { type master; file "zone/0.168.192.rev.zone"; }; Создайте два новых файла : Файл /var/named/zone/domain.org.zone : $TTL @ mail ns www 1H IN SOA 2004050403 1H 1H 1H 1D ) IN NS IN MX IN A IN A IN A smtp IN CNAME ns.domain.org root.domain.org. ( ; Serial ; Refresh ; Retry ; Expire ; Negative Cache TTL ns.domain.org. 10 mail.domain.org. 192.168.0.254 192.168.0.42 192.168.0.69 mail и файл /var/named/zone/0.168.192.rev.zone : $TTL 1H @ IN @ 42 69 254 IN IN IN IN IN SOA NS MX PTR PTR PTR ns.domain.org. root.domain.org. ( 2004050403 ; Serial 1H ; Refresh 1H ; Retry 1H ; Expire 1D ) ; Negative Cache TTL 10 ns.domain.org. mail.domain.org. ns.domain.org. www.domain.org. mail.domain.org. Файлы зон формируются из записей ресурсов (RR). Ключевые понятия: SOA (Источник полномочий) Управление различными временными параметрами, касающимися разрешения имени. NS (Сервер имен) Определяет серверы имен MX (Почтовый агент) Определяет почтовые сервера и их приоритет A: соответствие имени адресу PTR: соответствие адреса имени CNAME (каноническое имя): псевдонимы Проверьте синтаксис ваших конфигурационных файлов: [root@test root]# named-checkconf [root@test root]# named-checkzone domain.org /var/named/zone/domain.org.zone zone domain.org/IN: loaded serial 2004050403 OK [root@test root]# named-checkzone domain.org /var/named/zone/0.168.192.rev.zone zone domain.org/IN: loaded serial 2004050403 OK [root@test root]# Откройте на редактирование файл /etc/resolv.conf и добавьте в него запись о вашем DNS-сервере : [root@test root]# cat /etc/resolv.conf search domain.org nameserver 192.168.0.42 [root@test root]# Директива search позволить вам разрешать имена хостов без использования FQDN (полностью квалифицированного доменного имени) Протестируйте ваш DNS-сервер : [root@test root]# nslookup > mail Server: 192.168.0.42 Address: 192.168.0.42#53 Name: mail.domain.org Address: 192.168.0.254 > 192.168.0.69 Server: 192.168.0.42 Address: 192.168.0.42#53 69.0.168.192.in-addr.arpa > name = www.domain.org. Главный и подчиненный Сервер может быть подчиненным (slave) для одной зоны и главным (master) для другой. В первом случае, сервер работает как резервная копия DNS – сервера и отвечает на клиентские запросы , когда основной сервер не работает. Передача зоны от главного сервера к подчиненному выполняется автоматически. Для того, чтобы стать подчиненным для test.domain.org, добавьте следующее в файл named.conf на подчиненном сервере. zone "test.domain.org" { type slave; masters { 192.168.0.42; }; file "/var/named/zone/test.domain.org.zone"; }; Добавьте следующее в файл named.conf zone "test.domain.org" { type master; file "zone/test.domain.org.zone"; allow-transfert {192.168.0.69;}; }; на главном сервере: Перезагрузите подчиненный DNS – сервер. Передача зоны. Добавьте следующие строки в файл domain.org.zone : sub.domain.org. ns.sub.domain.org. IN IN NS A ns.sub.domain.org. 192.168.0.43 ; и эти строки в файл 0.168.192.rev.zone: sub.domain.org. 43 IN IN NS PTR ns.sub.domain.org. ns.sub.domain.org. Затем сделайте новый DNS – сервер авторизованным для зоны sub.domain.org 1.1 Упражнения Упражнение 1 : Создайте свою зону (без обратного зоны) Проверьте ее при помощи команд nslookup, dig или host Создайте обратную зону и протестируйте ее. Настройте ваш сервер так, чтобы он был главным для одной зоны и резервным для другой. 1.1 Решения Решение 1 : Следуйте инструкциям данной главы. 1 Обеспечение безопасности DNS – сервера Ключевые файлы, термины и команды: SysV init files или rc.local /etc/named.conf /etc/passwd dnskeygen 1.2 Безопасность DNS Безопасность DNS чрезвычайно важна для сети, поскольку каждый хост использует DNS. DNS – сервер должен отвечать на запрос клиента не слишком большим количеством информации, а только тем, что необходимо. Разные клиенты не могут запрашивать одну и ту же информацию у DNS – сервера. Сокрытие версии Множество инструментов, таких как nmap или amap, могут выдать версию DNS. Это не слишком безопасно, но вы можете обмануть хакера, изменив баннер, возвращаемый сервером и показав другую версию. Options { Version “None of your business”; }; Ограничение запросов В случае, если ваш DNS – сервер расчитан на работу только с внутренней сетью, то он и должен обрабатывать только внутрисетевые запросы. В этом случае, BIND позволяет ограничить ответы сервера в зависимости от IP – адреса клиента. Глобально: Options { Allow-query { 192.168.0.0/24; }; } Для зоны: Zone domain.org { Type slave; File “zone/domain.org.zone”; Allow-query { 192.168.0.0/24; }; }; Трансфер зоны Трансфер зоны происходит между DNS – серверами и их резервными копиями. Важно, чтобы загрузить себе зону могли только авторизованные подчиненные сервера, а не кто попало. На главном сервере: Options { Allow-transfer { 192.168.0.2; }; } На подчиненном сервере: Options { Allow-transfer { none; }; } Это может быть сделано сразу для всех зон, универсально, либо для каждой в отдельности. Прочее Не запускайте службу доменных имен от имени root. Используйте опцию -u, чтобы указать пользователя BIND, -g – для того, чтобы указать группу. Используйте опцию -t для определения директории chroot. В некторых дистрибутивах Linux есть пакет bind-chroot, который запускает BIND в chroot-окружении. 1.1 Упражнения Упражнение 1 : Обеспечьте безопасность вашего DNS-сервера. Проверьте трансфер зоны на резервный DNS – сервер с разных хостов. 1.1 Решения Решение 1 : Проверьте запрос на версию BIND при помощи следующей команды : [root@test root]# host -c CHAOS -t txt version.bind version.bind text "9.2.3" [root@test root]# Web-сервисы В этой главе 2.2 Apache и mod_ssl ........................................................................... Web-сервисы ................................................................................................................................................. 67 2.3 Упражнения.................................................................................... 1 Установка web-сервера ............................................................................................................................ 68 2.4 Решения ......................................................................................... 1.1 Установка и настройка Apache .......................................................................................................................... 69 3 Установка прокси-сервера ....................................................... 1.2 Упражнения ......................................................................................................................................................... 74 3.1 Настройка Squid ............................................................................ 1.3 Решения .............................................................................................................................................................. 75 3.2 Упражнения.................................................................................... 2 Поддержка web-сервера .......................................................................................................................... 76 3.3 Решения ......................................................................................... 2.1 Виртуальные сервера ........................................................................................................................................ 77 1 Установка web-сервера Ключевые файлы, термины и утилиты: access.log .htaccess httpd.conf mod_auth htpasswd htgroup 1.2 Установка и настройка Apache Введение Apache – это самый популярный web-сервер (65% всех web-серверов в мире работают под его управлением). Он является открытой реализацией протокола HTTP и известен своей надёжностью и безопасностью. Apache новых стабильных версий 2.x поддерживают многопоточность и становятся стандартным компонентом дистрибутивов Linux. Настройка Apache Основным файлом настройки является /etc/httpd/conf/httpd.conf . Иногда он расположен в каталоге /etc/apache/. Как правило, существуют и другие конфигурационные файлы, например modules.conf, который служит для загрузки модулей. В некоторых инсталляциях файл конфигурации может быть разбит на насколько частей, которые обычно находятся в каталоге /etc/httpd/conf. Корневым каталогом с документами web-сервера (т.н. Document Root, именно там находятся все файлы HTML или PHP) по умолчанию является /var/www/html. Состояние сервера Статусная страница, если она включена, доступна по адресу http://192.168.0.42/server-status4. Из соображений безопасности она не должна быть доступна из интернета. Пример: <Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from 127.0.0.1 Allow from 192.168.0.42 </Location> Информация о сервере Точно так же информационная страница, посвященная конфигурации сервера, если она включена, располагается по адресу http://192.168.0.42/server-info. Для включения этой опции необходимо загрузить модуль mod_info.c. Пример: <Location /server-info> SetHandler server-info Order deny,allow Deny from all Allow from 127.0.0.1 Allow from 192.168.0.42 </Location> 4 Конечно, имя сервера надо изменить в соответствии с вашими реалиями,-прим.ред. Авторизация при помощи .htaccess Для того, чтобы использовать аутентификацию, вам потребуется загрузить модуль mod_auth. Вот содержимое простого файла .htaccess, который нужно поместить в каталог, доступ к которому необходимо ограничить: AuthType Basic AuthName "Restricted Directory" AuthUserFile "/etc/httpd/passwd" require valid-user Файл, указанный в параметре AuthUserFile содержит пароли, его можно сгенерировать с помощью команды htpasswd. Этот файл должен находиться вне каталогов, доступных снаружи через web-сервер. Для того, чтобы создать файл паролей с паролем пользователя 'admin', выполните следующие команды : root@test root]# htpasswd -c /etc/httpd/passwd admin New password: Re-type new password: Adding password for user admin [root@test root]# Для добавления пароля пользователя к существующему файлу: [root@test root]# htpasswd /etc/httpd/passwd support New password: Re-type new password: Adding password for user support [root@test root]# Не позволяйте отправлять файлы .ht* пользователям web: <Files ~ "^\.ht"> Order allow,deny Deny from all Satisfy All </Files> Авторизация при помощи htdigest Этот метод авторизации более надёжный, чем предлагаемый .htaccess. Он работает практически так же, но использует файл htdigest вместо htpasswd. Примерное содержание файла .htaccess: AuthType Digest AuthName "Restricted Directory" AuthDigestFile "/etc/httpd/passwd_digest" require valid-user Для добавления пользователя в новый файл с паролями: [root@test conf]# htdigest -c /etc/httpd/passwd_digest "Restricted Directory" test Adding password for test in realm Restricted Directory. New password: Re-type new password: [root@test conf]# Mod_perl Для настройки mod_perl вам понадобится следующий фрагмент файла настройки (указаны параметры по умолчанию): ScriptAlias /cgi-bin/ /var/www/cgi-bin/ ScriptAlias /protected-cgi-bin/ /var/www/protected-cgi-bin/ <IfModule mod_perl.c> #Provide two aliases to the same cgi-bin directory, #to see the effects of the 2 different mod_perl modes #for Apache::Registry Mode Alias /perl/ /var/www/perl/ #for Apache::Perlrun Mode Alias /cgi-perl/ /var/www/perl/ </IfModule> Перейдите по указанному адресу для проверки работы CGI : http://192.168.0.42/cgi-bin/test.cgi Mod_PHP Для его настройки необходимо установить: apache2-mod_php php-ini Создайте файл /var/www/html/index2.php со следующим содержанием: [root@test html]# cat index2.php <? phpinfo(); ?> [root@test html]# Введите следующий адрес в адресной строке браузера: http://192.168.0.42/index2.php Вы должны увидеть страницу с информацией о версии установленного интерпретатора PHP и подключенных модулях расширения. Настройка apache Некоторые параметры: StartServers: число серверных процессов, запускаемых при старте MinSpareServers: минимальное число серверных процессов, которые могут простаивать MaxSpareServers: максимальное число серверных процессов, которые могут простаивать MaxClients: максимальное число серверных процессов, которые могут быть запущены одновременно MaxRequestsPerChild: максимальное число запросов, которое может обработать один серверный процесс MaxKeepAliveRequests: максимальное число запросов, поддерживаемых одновременно 1.1 Упражнения Упражнение 1 : Настройте Apache и проверьте состояние сервера и информацию о серверных настройках Настройте доступ в один каталог с использованием базовой авторизации, а в другой – с использованием digest-авторизации Настройте mod_perl, mod_php и проверьте их работу 1.1 Решения Решение 1 : Следуйте инструкциям из этой главы 1 Поддержка web-сервера Ключевые файлы, термины и утилиты: httpd.conf 1.2 Виртуальные сервера Для использования виртуальных серверов вам потребуется загрузить модуль mod_vhost. Виртуальные сервера на базе имени Виртуальный сервер может быть определён по полю URL HTTP запроса. Отредактируйте файл /etc/httpd/conf/vhosts/Vhosts.conf : NameVirtualHost 192.168.0.42 <VirtualHost 192.168.0.42> ServerName test.domain.org DocumentRoot /var/www/html </VirtualHost> <VirtualHost 192.168.0.42> ServerName vhost1.domain.org DocumentRoot /var/www/html/vhost1 </VirtualHost> <VirtualHost 192.168.0.42> ServerName vhost2.domain.org DocumentRoot /var/www/html/vhost2 </VirtualHost> Перезапустите Apache: [root@test root]# /etc/init.d/httpd restart Shutting down httpd2: Starting httpd2: [root@test root]# Создайте виртуальные сервера [root@test [root@test [root@test [root@test [root@test [root@test root]# html]# html]# html]# html]# html]# cd /var/www/html mkdir vhost1 mkdir vhost2 echo "vhost1" > vhost1/index.html echo "vhost2" > vhost2/index.html Вы должны увидеть разные сайты, когда обратитесь по адресам http://vhost1.domain.org и http://vhost2.domain.org. [ [ OK OK ] ] Виртуальные сервера на базе IP-адресов Отредактируйте файл /etc/httpd/conf/vhosts/Vhosts.conf : <VirtualHost 192.168.0.42> DocumentRoot /var/www/html/vhost1 Servername test.domain.org </VirtualHost> <VirtualHost 192.168.0.43> DocumentRoot /var/www/html/vhost2 Servername test.domain.org </VirtualHost> Перезапустите Apache: [root@test root]# /etc/init.d/httpd restart Shutting down httpd2: Starting httpd2: [root@test root]# [ [ OK OK ] ] Добавьте новый виртуальный IP-адрес: [root@test root]# ifconfig eth0:0 192.168.0.43 [root@test root]# Вы должны увидеть разные сайты, обратившись по адресам http://192.168.12.42 or http://192.168.0.43 1.3 Apache и mod_ssl Mod_ssl – это модуль apache, используемый для создания сайтов, доступных по протоколу https. Перед тем, как настраивать в apache поддержку HTTPS, необходимо создать сертификаты. HTTPS использует SSL (Secure Socket Layer) и требует наличия OpenSSL для генерации пары «публичный-частный ключ». HTTPS-сервер должен иметь сертификат, который будет отправляться браузеру клиента. Как правило, сертификаты продаются компаниями, выполняющими роль центров сертификации. Подготовка сертификатов и ключей с помощью сценария Установите пакет apache2-modssl. Проверьте, что openssl уже инсталлирован. Запустите сценарий /usr/lib/ssl/apache2-mod_ssl/gentestcrt.sh и следуйте инструкциям: root@test root]# /usr/lib/ssl/apache2-mod_ssl/gentestcrt.sh maketestcrt -- Create self-signed test certificate (Создание самоподписанного тестового сертификата) (C) 2001 Jean-Michel Dault <jmdault@mandrakesoft.com> and Mandrakesoft Based on cca.sh script by Ralf S. Engelschall Will create server.key and server.crt in /root (Будем создавать server.key и server.crt в каталоге /root ) INITIALIZATION Generating custom Certificate Authority (CA) (Создание собственного центра сертификации) ______________________________________________________________________ STEP 1: Generating RSA private key for CA (1024 bit) (ШАГ 1: Создание частного ключа RSA для центра сертификации (1024 бита)) ... [пропущено] ... 2OtXXrvWs+n9oVvJStzueZXZTtDP+/kri2GZVZoFx4EVraXENqoePSf0XQJBAJFF +/EySjBCWjzmdqlGZlrxSx2hl+afS6fJh+Ku/LC/GbfTNkAWu8q/zgCAqlNZdBGp mw2cvRpEARRX1UqObgUCQEg9W5eoA29TwwC+9tEWKg+XcTu75h2w3CR6pdB4AQl0 YHOylsceiygo9Qu6zB6jAFMaSdOfdDjdtRh9auSxNfc= -----END RSA PRIVATE KEY----Certificate creation done! (Создание сертификата завершено!) [root@test root]# Подготовка сертификатов и ключей вручную В этом примере мы создадим свой собственный центр сертификации (Certificate Authority). Для начала мы создадим частный ключ для CA (Certificate Authority): [root@test root]# cd /etc/httpd/ [root@test httpd]# mkdir ssl && chmod 700 ssl [root@test httpd]# cd ssl [root@test ssl]# openssl genrsa -des3 -out my-ca Generating RSA private key, 512 bit long modulus ........++++++++++++ ...++++++++++++ e is 65537 (0x10001) Enter pass phrase for my-ca: (Введите секретную фразу для my-ca ) Verifying - Enter pass phrase for my-ca: (Повторите секретную фразу для my-ca ) Эта секретная фраза (passphrase) является паролем к нашему центру сертификации (Certificate Authority - CA). [root@test ssl]# openssl req -new -x509 -days 3650 -key my-ca.key -out myca.crt Enter pass phrase for my-ca.key: (Введите секретную фразу для my-ca.key ) You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ( Сейчас вам будут заданы вопросы по поводу информации, которая будет включена в ваш запрос на сертификат. То, что вы собираетесь ввести, называется Отличительным Именем (Distinguished Name) или DN. У него довольно много полей, но вы можете оставить некоторые из них пустыми. Некоторые поля имеют значения по умолчанию, чтобы ввести туда пустое значение нужно набрать '.'. ) ----Country Name (2 letter code) [AU]:CH State or Province Name (full name) [Some-State]: Locality Name (eg, city) []:Geneva Organization Name (eg, company) [Internet Widgits Pty Ltd]:LynuxTraining Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []:user Email Address []:user@lynuxtraining.com [root@test ssl]# [root@test ssl]# openssl genrsa -des3 -out my-apache.key 1024 Generating RSA private key, 1024 bit long modulus ......................................................................++++++ ....++++++ e is 65537 (0x10001) Enter pass phrase for my-apache.key: (Введите секретную фразу для myapache.key ) Verifying - Enter pass phrase for my-apache.key: (Повторите секретную фразу для my-apache.key ) [root@test ssl]# Теперь мы удалим секретную фразу из сертификата сервера Apache, чтобы нам не приходилось вводить её каждый раз при старте: [root@test ssl]# openssl rsa -in my-apache.key -out my-apache.key Enter pass phrase for my-apache.key: (Введите секретную фразу для my-apache ) writing RSA key [root@test ssl]# Теперь мы можем создать запрос на подпись сертификата (Certificate Signature Request), чтобы подписать его в нашем CA: [root@test ssl]# openssl req -new -key my-apache.key -out my-apache.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ( Сейчас вам будут заданы вопросы по поводу информации, которая будет включена в ваш запрос на сертификат. То, что вы собираетесь ввести, называется Отличительным Именем (Distinguished Name) или DN. У него довольно много полей, но вы можете оставить некоторые из них пустыми. Некоторые поля имеют значения по умолчанию, чтобы ввести туда пустое значение нужно набрать '.'. ) ----Country Name (2 letter code) [AU]:CH State or Province Name (full name) [Some-State]:Geneva Locality Name (eg, city) []: [root@test ssl]# openssl req -new -key my-apache.key -out my-apache.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ( Сейчас вам будут заданы вопросы по поводу информации, которая будет включена в ваш запрос на сертификат. То, что вы собираетесь ввести, называется Отличительным Именем (Distinguished Name) или DN. У него довольно много полей, но вы можете оставить некоторые из них пустыми. Некоторые поля имеют значения по умолчанию, чтобы ввести туда пустое значение нужно набрать '.'. ) ----Country Name (2 letter code) [AU]:CH State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: [root@test ssl]# openssl req -new -key my-apache.key -out my-apache.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ( Сейчас вам будут заданы вопросы по поводу информации, которая будет включена в ваш запрос на сертификат. То, что вы собираетесь ввести, называется Отличительным Именем (Distinguished Name) или DN. У него довольно много полей, но вы можете оставить некоторые из них пустыми. Некоторые поля имеют значения по умолчанию, чтобы ввести туда пустое значение нужно набрать '.'. ) ----Country Name (2 letter code) [AU]:CH State or Province Name (full name) [Some-State]: Locality Name (eg, city) []:Geneva Organization Name (eg, company) [Internet Widgits Pty Ltd]:LynuxTraining Organizational Unit Name (eg, section) []: Проверьте, что вы поместили полное доменное имя (FQDN) в поле “Common Name” ! Common Name (eg, YOUR name) []:test.domain.org Email Address []:user@test.domain.org Please enter the following 'extra' attributes to be sent with your certificate request (Пожалуйста, укажите следующие дополнительные атрибуты, которые будут отправлены вместе с запросом на подпись сертификата) A challenge password []: An optional company name []: [root@test ssl]# И, наконец, мы подпишем сертификат Apache в нашем центре сертификации: [root@test ssl]# openssl x509 -req -in my-apache.csr -out my-apache.crt -sha1 -CA my-ca.crt -CAkey my-ca.key -CAcreateserial -days 36 Signature ok subject=/C=CH/ST= /L=Geneva/O=LynuxTraining/CN=test.domain.org/emailAddress=user@test.domain.or g Getting CA Private Key (Получение частного ключа CA) Enter pass phrase for my-ca.key: (Введите секретную фразу для my-ca.key ) [root@test ssl]# ls my-apache.crt my-apache.csr my-apache.key my-ca.crt my-ca.key my-ca.srl [root@test ssl]# Изменяем права доступа: [root@test ssl]# chmod 0400 *.key [root@test ssl]# Настройка Apache Отредактируйте /etc/httpd/conf.d/41_mod_ssl.default-vhost.conf и укажите корректные пути к файлам сертификата ... [пропущено] ... SSLCertificateFile /etc/httpd/ssl/my-apache.crt ... [пропущено] ... SSLCertificateKeyFile /etc/httpd/ssl/my-apache.key ... [пропущено] ... SSLCACertificateFile /etc/httpd/ssl/my-ca.crt ... [пропущено] ... Перезапустите Apache: [root@test root]# /etc/init.d/httpd restart Shutting down httpd2: Starting httpd2: [root@test root]# [ [ OK OK Проверьте, как работает полученная конфигурация, обратившись по адресу https://test.domain.org или по адресу, указанному вами при конфигурации виртуального сервера. ] ] 1.4 Упражнения Упражнение 1 : Настройте в Apache виртуальные сервера, определяемые по имени Настройте в Apache виртуальные сервера, определяемые по IP-адресу Установите и настройте модуль SSL для web-сервера Apache 1.1 Решения Решение 1 : Следуйте инструкциям из этой главы 1 Установка прокси-сервера Ключевые файлы, термины и утилиты: squid.conf acl http_access 1.2 Настройка Squid Вступление Squid – это кэширующий прокси-сервер для систем на базе Unix. Он может выступать в качестве прозрачного прокси-сервера, поддерживает кэширование протоколов HTTP, FTP и других, а так же SSL и SNMP. Squid может настраиваться с помощью гибких списков контроля доступа (ACL). Он даже умеет кэшировать DNS-запросы. Прокси-сервер Squid может существенно увеличить скорость web-серфинга, кроме того его можно использовать вместе с утилитами вроде SquidGuard для фильтрации URL. HTTP прокси может работать двумя способами: нормальная работа Адрес прокси-сервера и его порт устанавливаются в настройках web-браузера. прозрачный прокси-сервер Брандмауэр или маршрутизатор перенаправляет весь HTTP-трафик (или трафик данных, передаваемых по другим протоколам) на прокси-сервер. В случае прозрачного прокси-сервера существуют два разных случая: Squid на маршрутизаторе Squid установлен на отдельном от маршрутизатора компьютере. Настройка Основной файл настройки – это /etc/squid/squid.conf. Он содержит огромнейшее число параметров, большая часть которых установлена по умолчанию. Squid прокси прекрасно работает в таком режиме. Вам необходимо установить параметр visible_hostname, или Squid не запустится. visible_hostname test.domain.org Для запуска Squid выполните следующую команду: [root@test root]# /etc/init.d/squid start init_cache_dir /var/spool/squid... Starting squid: [root@test root]# [ OK ] Списки контроля доступа (Access Control Lists) Списки контроля доступа (ACLs) позволяют вам ограничить доступ к проксисерверу. Общий формат ACL правила такой: # acl название_правила тип_правила строка_1 строка_2 ... Примеры различных типов правил ACL: # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # acl aclname src acl aclname src acl aclname dst acl aclname myip ip-address/netmask ... (clients IP address) (IP-адрес клиента) addr1-addr2/netmask ... (range of addresses) (диапазон IP-адресов) ip-address/netmask ... (URL host's IP address) (IP-адрес хоста, к которому обращается клиент) ip-address/netmask ... (local socket IP address) (локальный IP-адрес) .foo.com ... # reverse lookup, client IP (домен, определяется по IP клиента) acl aclname dstdomain .foo.com ... # Destination server from URL (имя сервера) acl aclname srcdom_regex [-i] xxx ... # regex matching client name (регулярное выражение, применяемое к домену клиента) acl aclname dstdom_regex [-i] xxx ... # regex matching server (регулярное выражение, применяемое к имени сервера) # For dstdomain and dstdom_regex a reverse lookup is tried if a IP # based URL is used. The name "none" is used if the reverse lookup # fails. # ( Если установлены правила dstdomain и dstdom_regex, а клиент # запрашивает ресурс по его IP-адресу, то прокси-сервер # выполняет поиск DNS-имени по IP. Если поиск оказывается # безуспешным, то используется имя "none". ) etc... acl aclname srcdomain acl aclname time [day-abbrevs] day-abbrevs: S - Sunday M - Monday T - Tuesday W - Wednesday H - Thursday F – Friday [h1:m1-h2:m2] Примеры ACL: acl acl acl acl acl acl acl acl acl acl acl acl acl acl acl acl all src 0.0.0.0/0.0.0.0 manager proto cache_object localhost src 127.0.0.1/255.255.255.255 to_localhost dst 127.0.0.0/8 SSL_ports port 443 563 Safe_ports port 80 # http Safe_ports port 21 # ftp Safe_ports port 443 563 # https, snews Safe_ports port 70 # gopher Safe_ports port 210 # wais Safe_ports port 1025-65535 # unregistered ports Safe_ports port 280 # http-mgmt Safe_ports port 488 # gss-http Safe_ports port 591 # filemaker Safe_ports port 777 # multiling http CONNECT method CONNECT Затем мы определяем параметр http_access, используя названия ACL: # Only allow cachemgr access from localhost http_access allow manager localhost http_access deny manager # Deny requests to unknown ports http_access deny !Safe_ports # Deny CONNECT to other than SSL ports http_access deny CONNECT !SSL_ports Эти строки определяют, что можно и что нельзя делать в процессе использования этого сервера как прокси. Еще один пример ограничения доступа (полезный) : acl our_networks src 192.168.0.0/24 http_access allow our_networks Прозрачный прокси-сервер Squid, установленный на маршрутизаторе Нам нужно перенаправить весь web-трафик (всё, что поступает на 80 порт) на стандартный порт Squid (3128). Это можно сделать с помощью следующих правил iptables: [root@test root]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 [root@test root]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3128 [root@test root]# Здесь eth0 выступает в качестве интерфейса, через который клиенты обращаются к маршрутизатору. Прозрачный прокси-сервер Squid, установленный на отдельном компьютере Если Squid запущен на отдельном компьютере, то мы должны указать межсетевому экрану или маршрутизатору на необходимость перенаправления обращения к сервисам на компьютер, на котором установлен Squid: Добавьте следующие правила iptables на межсетевом экране или маршрутизаторе: [root@test root]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.0.42:3128 [root@test root]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 192.168.0.42:3128 [root@test root]# Здесь eth0 выступает в качестве интерфейса, через который клиенты обращаются к маршрутизатору, а 192.168.0.42 - это IP-адрес прокси-сервера. 1.1 Упражнения Упражнение 1 : Установите и настройте Squid как обычный прокси-сервер на порту 3128 Установите и настройте Squid как прозрачный прокси-сервер Проверьте работу прокси-сервера с помощью web-браузера 1.1 Решения Решение 1 : Следуйте инструкциям из этой главы Управление сетевыми клиентами В этой главе Управление сетевыми клиентами ............................................................................................................. 97 3 Настройка LDAP ........................................................................ 3.1 Настройка LDAP ............................................................................ 1 Настройка DHCP ....................................................................................................................................... 98 3.2 Упражнения.................................................................................... 1.1 Настройка DHCP ................................................................................................................................................. 99 3.3 Решения ......................................................................................... 1.2 Упражнения ....................................................................................................................................................... 102 4 Аутентификация PAM ............................................................... 1.3 Решения ............................................................................................................................................................ 103 4.1 Настройка PAM .............................................................................. 2 Настройка NIS ......................................................................................................................................... 104 4.2 Упражнения.................................................................................... 2.1 Настройка NIS ................................................................................................................................................... 105 4.3 Решения ......................................................................................... 2.2 Упражнения ....................................................................................................................................................... 113 2.3 Решения ............................................................................................................................................................ 114 1 Настройка DHCP Ключевые файлы, термины и утилиты dhcpd.conf dhcpd.leases 1.2 Настройка DHCP Аббревиатура «DHCP» расшифровывается как «Dynamic Host Configuration Protocol» – протокол динамической конфигурации компьютера локальной сети (далее «хоста»). Это протокол, предназначенный для автоматической конфигурации компьютеров локальной сети без риска появления совпадающих IP-адресов. С этим протоколом существенно упрощается настройка сети и ускоряется процедура добавления большого числа хостов в локальную сеть. Основной конфигурационный файл: /etc/dhcpd.conf. В нем определены все подсети DHCP, и настройки по умолчанию. Пример файла dhcpd.conf : [root@test root]# cat /etc/dhcpd.conf ddns-update-style none; subnet 192.168.0.0 netmask 255.255.255.0 { # default gateway option routers 192.168.0.254; option subnet-mask 255.255.255.0; option domain-name "domain.org"; option domain-name-servers 192.168.0.42; range 192.168.0.128 192.168.0.253; default-lease-time 21600; max-lease-time 43200; # static address for ns1 (ns1 is found with his MAC address) host ns1 { hardware ethernet 12:34:56:78:AB:CD; fixed-address 192.168.0.69; } } [root@test root]# Основные настройки: опция router : задает маршрут по умолчанию для клиента опция subnet-mask : задает значение для маски подсети, используемое по умолчанию на клиенте опция domain-name : задает доменное имя, используемое по умолчанию на клиенте опция domain-name-servers : задает DNS сервера, используемые по умолчанию клиентом range : задает пул адресов, зарезервированных для DHCP. Клиент, обращающийся за IP-адресом, получит один из адресов из этого пула. Default-lease-time : время, в течение которого клиент сможет пользоваться выделенным адресом, если только клиент не запросил определенное время истечения срока действия адреса. Max-lease-time : максимально возможный период в секундах, в течение которого можно пользоваться выделенным IP-адресом Запуск DHCP сервера: [root@test root]# /etc/init.d/dhcpd start Starting dhcpd: [root@test root]# [ OK ] Продолжительность жизни выделенных адресов Время жизни текущих выделенных адресов можно посмотреть в файле: [root@test root]# cat /var/lib/dhcp/dhcpd.leases lease 192.168.0.253 { starts 1 2004/08/16 13:54:06; ends never; binding state active; next binding state free; hardware ethernet 00:0e:a3:52:fd:01; } [root@test root]# 1.1 Упражнения Упражнение 1 : Установите и настройте DHCP-сервер в вашей локальной сети Протестируйте его работу на клиентских машинах 1.1 Решения Решение 1 : Следуйте инструкциям, описанным в этой главе 1 Настройка NIS Ключевые файлы, термины и утилиты: nisupdate, ypbind, ypcat, ypmatch, ypserv, ypswitch, yppasswd, yppoll, yppush, ypwhich, rpcinfo nis.conf, nsswitch.conf, ypserv.conf Срдержимое каталога /etc/nis/: netgroup, nicknames, securenets Makefile 1.2 Настройка NIS Введение Служба NIS (Network Information Service - сетевая информационная служба) была разработана компанией Sun. Ее цель – централизованное хранение информации о пользовательских учетных записях в локальной сети. Первоначально NIS назывался “Yellow Pages” - «желтые страницы», поэтому почти все имена команд начинаются с префикса “yp”. NIS использует несколько «карт» и может управлять пользователями (/etc/passwd), группами (/etc/group), паролями (/etc/shadows), хостами (/etc/hosts), сервисами (/etc/services) и т.п. Во время установки NIS создается домен NISDOMAIN. Клиенты NIS будут относиться к этому домену и использовать карты этого домена. Карты NIS хранятся в файле /var/yp/domain_name в формате DBM. Пример: Файл /etc/passwd /etc/group /etc/hosts Карта NIS Индексный Ключ passwd.byname Имя пользователя passwd.byuid Идентификатор пользователя (uid) group.byname Имя группы group.byuid Идентификатор группы (gid) hosts.byname Имя хоста hosts.byaddr IP-адрес хоста Настройка На сервере должен быть установлен пакет ypserv. Его основной конфигурационный файл: /etc/ypserv.conf. [root@test root]# cat /etc/ypserv.conf # # ypserv.conf In this file you can set certain options for the NIS server, # and you can deny or restrict access to certain maps based # on the originating host. # # See ypserv.conf(5) for a description of the syntax. # # Some options for ypserv. This things are all not needed, if # you have a Linux net. # Should we do DNS lookups for hosts not found in the hosts table ? # This option is ignored in the moment. dns: no # How many map file handles should be cached ? files: 30 # Should we register ypserv with SLP ? slp: no ... [пропущено] ... * * : * : * : shadow.byname : port : passwd.adjunct.byname : port # If you comment out the next rule, ypserv and rpc.ypxfrd will # look for YP_SECURE and YP_AUTHDES in the maps. This will make # the security check a little bit slower, but you only have to # change the keys on the master server, not the configuration files # on each NIS server. # If you have maps with YP_SECURE or YP_AUTHDES, you should create # a rule for them above, that's much faster. # * : * : * : none [root@test root]# На стороне клиента необходимо установить три пакета: portmap, ypbind и yp-tools. Основной конфигурационный файл NIS на клиентской машине - это /etc/yp.conf. Данный файл должен содержать имя домена NIS и имя сервера NIS. [root@test root]# cat /etc/yp.conf # /etc/yp.conf - ypbind configuration file # Valid entries are # #domain NISDOMAIN server HOSTNAME domain domain.org server test.domain.org # Use server HOSTNAME for the domain NISDOMAIN. # #domain NISDOMAIN broadcast # Use broadcast on the local net for domain NISDOMAIN # #ypserver HOSTNAME ypserver test.domain.org # Use server HOSTNAME for the local domain. The # IP-address of server must be listed in /etc/hosts. # [root@test root]# Импорт пользовательских учетных записей Затем, традиционные конфигурационные файлы UNIX могут быть импортированы в сервер NIS: [root@test root]# /usr/lib/yp/ypinit -m At this point, we have to construct a list of the hosts which will run NIS servers. test is in the list of NIS server hosts. Please continue to add the names for the other hosts, one per line. When you are done with the list, type a <control D>. next host to add: test next host to add: The current list of NIS servers looks like this: test Is this correct? [y/n: y] y We need a few minutes to build the databases... Building /var/yp/domain.org/ypservers... Running /var/yp/Makefile... gmake[1]: Entering directory `/var/yp/domain.org' Updating passwd.byname... Updating passwd.byuid... Updating group.byname... Updating group.bygid... Updating hosts.byname... Updating hosts.byaddr... Updating rpc.byname... Updating rpc.bynumber... Updating services.byname... Updating services.byservicename... Updating netid.byname... Updating protocols.bynumber... Updating protocols.byname... Updating shadow.byname... gmake[1]: Leaving directory `/var/yp/domain.org' test has been set up as a NIS master server. Now you can run ypinit -s test on all slave server. [root@test root]# Тестирование Запуск демонов: На сервере: [root@test root]# /etc/init.d/ypserv start Starting YP server services: [root@test root]# [ OK ] [ OK ] На клиентах: [root@test root]# /etc/init.d/ypbind start Binding to the NIS domain... Listening for an NIS domain server: test [root@test root]# Вы можете проверить учетные записи пользователей с помощью команды ypcat. [root@test root]# ypcat passwd nobody:x:65534:65534:Nobody:/:/bin/sh majordomo:x:502:2::/usr/local/majordomo-1.94.5:/bin/bash csahut:x:501:501:csahut:/home/csahut:/bin/bash [root@test root]# ypcat shadow.byname nobody:*:12630:0:99999:7::: majordomo:!!:12643:0:99999:7::: csahut:$1$KZ7PVhqL$dQT0aYJfaWMBP4QBU7uxB.:12630:0:99999:7::: [root@test root]# ypcat group csahut:x:501: kolab:x:60001: nogroup:x:65534: [root@test root]# Затем должен быть запущен сервис ypbind: [root@test root]# rpcinfo -u localhost ypbind program 100007 version 1 ready and waiting program 100007 version 2 ready and waiting [root@test root]# Использование библиотеки libc версии < 6 Укажите NIS в /etc/nsswitch.conf: passwd: group: shadow: compat compat compat Добавьте в /etc/passwd +:::::: в /etc/shadow +:::::: в /etc/group +::: Использование libc версии 6 Укажите NIS в /etc/nsswitch.conf (должно быть уже указано по умолчанию): [root@test root]# cat /etc/nsswitch.conf # # /etc/nsswitch.conf ... [пропущено] ... passwd: shadow: group: files nisplus nis files nisplus nis files nisplus nis ... [SNIP] ... [root@test root]# Тестирование Вы должны видеть пользователей NIS в конце вывода следующей команды. [root@test root]# getent passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/bin/sh ... [пропущено] ... uid:/bin/false nobody:x:65534:65534:Nobody:/:/bin/sh majordomo:x:502:2::/usr/local/majordomo-1.94.5:/bin/bash nisuser:x:502:502:nisuser:/home/nisuser:/bin/bash [root@test root]# Таким же образом можно получить с NIS-сервера список групп и «теневые» пароли. Для этого используются команды getent group и getent shadow. Теперь вы должны иметь возможность войти в систему, воспользовавшись учетной записью NIS. Программа rpc.yppasswdd Для того, чтобы иметь возможность поменять пароль с клиентской машины, на сервере должен быть запущен демон rpc.yppasswdd. [root@test root]# /etc/init.d/yppasswdd start Starting YP passwd service: [root@test root]# [ OK ] Программа rpc.ypxfrd Эта программа используется для эффективной синхронизации карт NIS на дополнительных серверах NIS (NIS slaves). Программа запускается следующим образом: [root@test root]# /etc/init.d/ypxfrd start Starting YP map server: [root@test root]# Затем запустите программу yppush. [ OK ] Некоторые команды NIS Узнать имя NIS-сервера можно командой: [root@test root]# ypwhich test [root@test root]# Показать доступные карты: [root@test root]# ypwhich -x Use "ethers" for map "ethers.byname" Use "aliases" for map "mail.aliases" Use "services" for map "services.byname" Use "protocols" for map "protocols.bynumber" Use "hosts" for map "hosts.byname" Use "networks" for map "networks.byaddr" Use "group" for map "group.byname" Use "passwd" for map "passwd.byname" [root@test root]# Узнать версию карты и сервера: [root@test root]# Domain domain.org Map passwd.byname The master server [root@test root]# yppoll passwd.byname is supported. has order number 1092670129. [Mon Aug 16 17:28:49 2004] is test. Проверить конфигурацию: [root@test root]# yptest Test 1: domainname Configured domainname is "domain.org" ... [пропущено] ... Test 9: yp_all nobody nobody:x:65534:65534:Nobody:/:/bin/sh majordomo majordomo:x:502:2::/usr/local/majordomo-1.94.5:/bin/bash csahut csahut:x:501:501:csahut:/home/csahut:/bin/bash All tests passed [root@test root]# 1.3 Упражнения Упражнение 1 : Установите сервер NIS и настройте его клиентов Проверьте работу аутентификации NIS 1.1 Решения Упражнение 1 : Следуйте инструкциям этой главы 1 Настройка LDAP Ключевые файлы, термины и утилиты: slapd slapd.conf 1.2 Настройка LDAP Введение Служба каталогов (Directory) - это сервис, предоставляющий возможности поиска данных любого вида. Подобно сервису DNS для имен хостов, каталог может хранить информацию о пользовательских учетных записях, номерах телефонов, email-адресах и даже фотографии. Протокол LDAP (Lightweight Directory Access Protocol – облегченный протокол службы каталогов) был разработан для замены старого сложного протокола X.500. Установка должна быть довольно простой, кроме того существует много утилит управления, покрывающих различные нужды. Структура DAP (X.500) Directory Access Protocol - Протокол доступа к каталогу DIT каталога Directory Information Tree - Информационное дерево dc Domain component - Часть домена dn Distinguished Name - Отличительное имя Base DN Откуда начинается поиск ou Organizational Unit - Организационная единица cn Common Name - Общеизвестное имя LDIF Формат обмена данными LDAP (Data Interchange Format) Object Class Определяет атрибуты Schema Определяет объекты классов Пример имени: dn: cn=John Doe,ou=Staff,dc=lynuxtraining,dc=com Этот dn является уникальным именем, идентифицирующим пользователя John Doe. Настройка В разделе разделе описана конфигурация OpenLDAP, широко известного свободного LDAP сервера. Основной конфигурационный файл сервера – это /etc/openldap/slapd.conf. Файл содержит различные схемы, поддерживаемые LDAP-сервером, некоторую информацию о процессе LDAP (PID, параметры командной строки, файлы журналов), основную структуру каталога (имя, формат и местоположение), опции менеджера LDAP и списки контроля доступа к каталогу. [root@test root]# cat /etc/openldap/slapd.conf include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema ... [пропущено] ... pidfile argsfile replogfile /var/run/ldap/slapd.pid /var/run/ldap/slapd.args /var/lib/ldap/replog ... [пропущено] ... database suffix directory ldbm "dc=domain,dc=org" /var/lib/ldap rootdn rootpw "cn=manager,dc=domain,dc=org" "asd135" ... [пропущено] ... access to * by self write by group="cn=admin,dc=domain,dc=org" write by group="cn=maintainer,dc=domain,dc=org" write by * read stop [root@test root]# Существует другой файл - /etc/openldap/ldap.conf, в котором определяется, какому серверу будут посылаться LDAP-запросы, и какое дерево каталогов будет использоваться. Обычно этот файл находится на клиентских машинах. [root@test openldap]# cat ldap.conf BASE dc=domain,dc=org #HOST ldap.example.com ldap-master.example.com HOST test.domain.org #URI ldap://ldap.example.com ldap://ldap-master.example.com:666 URI ldap://test.domain.org ... [пропущено] ... [root@test openldap]# Утилиты LDAP slapadd : Утилита Slapadd используется для добавления элементов, заданных в формате обмена данными LDAP (LDIF) в базу данных демона slapd . Пример: [root@test root]# cat test.ldif dn: dc=domain, dc=org objectClass: organization objectClass: dcObject dc: domain o: domain dn: ou=users, dc=domain, dc=org objectClass: organizationalunit ou: users dn: cn=admin, dc=domain, dc=org objectClass: top objectClass: person userPassword:: asd135 cn: admin sn:administrateur [root@test root]# slapadd < test.ldif [root@test root]# slapcat : Утилита Slapcat используется для извлечения данных из базы данных демона slapd в формате LDIF. Пример: [root@test root]# slapcat dn: dc=domain,dc=org objectClass: organization objectClass: dcObject dc: domain o: domain structuralObjectClass: organization entryUUID: aad2cf46-8483-1028-8f23-bfa7c47790fe creatorsName: cn=manager,dc=domain,dc=org modifiersName: cn=manager,dc=domain,dc=org createTimestamp: 20040817102638Z modifyTimestamp: 20040817102638Z entryCSN: 2004081710:26:38Z#0x0001#0#0000 dn: ou=users,dc=domain,dc=org objectClass: organizationalunit ou: users structuralObjectClass: organizationalunit entryUUID: aad56238-8483-1028-8f24-bfa7c47790fe creatorsName: cn=manager,dc=domain,dc=org modifiersName: cn=manager,dc=domain,dc=org createTimestamp: 20040817102638Z modifyTimestamp: 20040817102638Z entryCSN: 2004081710:26:38Z#0x0002#0#0000 dn: cn=admin,dc=domain,dc=org objectClass: top objectClass: person cn: admin sn: administrateur structuralObjectClass: person entryUUID: aad569b8-8483-1028-8f25-bfa7c47790fe creatorsName: cn=manager,dc=domain,dc=org modifiersName: cn=manager,dc=domain,dc=org createTimestamp: 20040817102638Z modifyTimestamp: 20040817102638Z entryCSN: 2004081710:26:38Z#0x0003#0#0000 [root@test root]# slappasswd : Slappasswd используется для генерации пользовательского пароля (userPassword) в формате, пригодном для использования утилитой ldapmodify или директивой rootpw конфигурационного файла slapd.conf. Этот момент очень важен, поскольку пароль пользователя root хранится в конфигурационном файле slapd.conf в открытом виде. Пример: [root@test root]# slappasswd -h {SSHA} New password: Re-enter new password: {SSHA}r+LXQq5RT6HeEOdedOGx8F4tiNBfEfVU [root@test root]# ldapadd : Утилита ldapadd добавляет элемент в каталог LDAP. Пример: [root@test root]# ldapadd -f newentryjohndoe.ldif -h test.domain.org -x -D "cn=Manager,dc=domain,dc=org" -w asd135 adding new entry "uid=JohnDoe,ou=people,dc=domain,dc=org" [root@test root]# ldapmodify : ldapmodify модифицирует элемент каталога LDAP. Пример: [root@test root]# ldapmodify -f newentryjohndoe.ldif -h test.domain.org -x D "cn=Manager,dc=domain,dc=org" -w asd135 modifying entry "uid=JohnDoe,ou=people,dc=domain,dc=org" [root@test root]# ldapdelete : ldapdelete удаляет элемент каталога LDAP. Пример: [root@test root]# ldapdelete "uid=johndoe,ou=people,dc=domain,dc=org" -h test.domain.org -x -D "cn=Manager,dc=domain,dc=org" -w asd135 [root@test root]# ldapsearch : ldapsearch выполняет поиск элемента в каталоге LDAP. Пример: [root@test root]# ldapsearch "uid=johndoe" -h test.domain.org -x -D "cn=Manager,dc=domain,dc=org" -w asd135 # extended LDIF # # LDAPv3 # base <> with scope sub # filter: uid=johndoe # requesting: ALL # # JohnDoe, people, domain.org dn: uid=JohnDoe,ou=people,dc=domain,dc=org objectClass: posixAccount objectClass: shadowAccount objectClass: inetOrgPerson objectClass: sambaAccount cn: JohnDoe uid: JohnDoe uidNumber: 10001 ... [пропущено] ... displayName: John Doe smbHome: \\server\JohnDoe homeDrive: U: # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1 [root@test root]# Утилиты миграции LDAP OpenLDAP обычно поставляется с набором сценариев, облегчающих процесс миграции на LDAP с других систем. Эти скрипты хранятся в каталоге /usr/share/openldap/migration/directory и, в частности, используются при миграции с NIS на LDAP. [root@test root]# cd /usr/share/openldap/migration/ [root@test migration]# ls CVSVersionInfo.txt* migrate_all_nisplus_online.sh* migrate_group.pl* migrate_profile.pl* migrate_aliases.pl* migrate_all_offline.sh* migrate_hosts.pl* migrate_protocols.pl* migrate_all_netinfo_offline.sh* migrate_all_online.sh* migrate_netgroup_byhost.pl* migrate_rpc.pl* migrate_all_netinfo_online.sh* migrate_automount.pl* migrate_netgroup_byuser.pl* migrate_services.pl* migrate_all_nis_offline.sh* migrate_base.pl* migrate_netgroup.pl* migrate_slapd_conf.pl* migrate_all_nis_online.sh* migrate_common.ph* migrate_networks.pl* migration-tools.txt migrate_all_nisplus_offline.sh* migrate_fstab.pl* migrate_passwd.pl* README [root@test migration]# Графические утилиты управления LDAP Программа : gq Web-интерфейс: ldap-account-manager (LAM) 1.3 Упражнения Упражнение 1: Установите и настройте сервер OpenLDAP Воспользуйтесь утилитой ldap-account-manager, чтобы создать пользователей и группы (отключите Samba в файле конфигурации LAM) Используйте каталог LDAP как репозиторий email адресов для вашего любимого почтового клиента 1.1 Решения Решение 1 : Следуйте инструкциям этой главы 1 Аутентификация PAM Ключевые файлы, термины и утилиты: /etc/pam.d pam.conf 1.2 Настройка PAM Введение Подключаемые модули аутентификации (PAM - Pluggable Authentication Modules) упрощают реализацию процедуры аутентификации для различных программ. Как правило, в системе Linux существует несколько программ, требующих аутентификации: login, su, ftpd, sshd, ... Поскольку все они используют библиотеки PAM, довольно легко настраивать новые механизмы аутентификации или исправлять проблемы с безопасностью в одном месте без необходимости перекомпиляции всех этих программ. Модули PAM допускают аутентификацию с помощью LDAP, Samba, смарт-карт, USB-ключей, баз данных SQL и т.п. Настройка Библиотеки PAM настраиваются в /etc/pam.d : [root@test pam.d]# ls chfn ftp kbdrate kppp login passwd ppp sieve squid chsh halt kde3 kscreensaver3 net_monitor pop reboot simple_root_authen sshd system-auth xserver cups imap other poweroff secure-mcserv smtp su webmin* [root@test pam.d]# sudo xdm kde3-np lmtp Все файлы выглядят примерно так: [root@test #%PAM-1.0 auth auth auth account password session session [root@test pam.d]# cat login required required required required required required optional pam.d]# pam_securetty.so pam_stack.so service=system-auth pam_nologin.so pam_stack.so service=system-auth pam_stack.so service=system-auth pam_stack.so service=system-auth pam_console.so В каждой строке указан тип модуля, управляющий флаг и используемая библиотека PAM вместе с ее опциями. Тип модуля Тип модуля может принимать одно из следующих значений: auth Модуль этого типа устанавливает, что пользователь именно тот, за кого себя выдает, предписывая приложению запросить у пользователя пароль или идентифицировать себя другим способом. account Этот модуль занимается управлением учетными записями. Обычно он используется для разрешения / запрещения доступа к сервису, основываясь на времени суток, имеющихся системных ресурсах (максимальном числе пользователей), проверке срока действия учетной записи и т.п. session Этот модуль отвечает за выполнение действий, производимых до или после того как пользователь получит какой-либо сервис. Такого рода действия включают регистрацию сведений об обмене данными с пользователем в журналах, монтирование каталогов и т.п. password Последний тип модуля служит для обновления ключа аутентификации (authentication token) пользователя. Обычно существует один такой модуль для каждого модуля типа auth, осуществляющего аутентификацию по схеме «вызов/отклик». Модули данного типа управляют паролями. Управляющий флаг Управляющий флаг служит для индикации того, как библиотека PAM будет реагировать на успешный или неуспешный результат работы модуля, с которым этот флаг ассоциирован. Приложение получает сводный отчет от библиотеки PAM об успешном или неуспешном выполнении. Порядок исполнения модулей совпадает с порядком их перечисления в конфигурационном файле сервиса PAM. Существует четыре управляющих флага: required Флаг означает, что для успешного завершения работы требуется успешное выполнение данного модуля. requisite Поведение похоже на флаг required, однако в случае неуспешного выполнения модуля управление возвращается приложению. Возвращаемое значение – это значение, ассоциированное с первым неудачно завершившимся модулем, имеющим флаг required или requisite. sufficient Успешное выполнение модуля достаточно для того, чтобы библиотека PAM считала, что тип модуля успешно выполнил свое предназначение. Неуспешное же выполнение не будет считаться фатальным для принятия решения об успешности выполнения типа модуля. optional Как и предполагает имя этого флага, успешное или неуспешное исполнение модуля не является критичным для пользовательского приложения. Как правило, PAM игнорирует такой модуль, когда определяет успешность выполнения всего стека модулей. Однако, в отсутствии какого-либо определенного успешного или неуспешного статуса выполнения предыдущего или последующего модуля, этот модуль будет определять статус значения, возвращаемого приложению. Модули библиотеки PAM Существует множество модулей PAM, среди них: pam_pwdb.so : традиционная аутентификация при помощи файла passwd pam_security.so : добавляет дополнительные ограничения (/etc/securetty) pam_mount.so : монтирует домашние каталоги во время входа в систему pam_usb.so : аутентификация с помощью USB-ключа pam_ldap.so : использует каталог LDAP для аутентификации в системе pam_smb.so : использует Samba для аутентификации в системе pam_mysql.so : аутентификация с помощью базы данных MYSQL pam_krb5.so : аутентификация с помощью протокола MIT Kerberos 5 pam_opensc.so : аутентификация с помощью смарт-карты ... Наиболее часто используемые опции модулей: Основные опции модулей: no_warn Запрещает модулю выдавать предупреждающие сообщения приложению. use_first_pass Модуль не должен запрашивать пароль у пользователя, вместо этого модуль должен использовать ранее набранный пароль (от предыдущего модуля auth). Если это не сработает, пользователь не пройдет аутентификацию (данная опция применима к модулям auth и password). try_first_pass Модуль должен попробовать аутентифицировать пользователя по ранее набранному паролю (от предыдущего модуля auth). Если аутентификация не удалась, пароль будет запрошен у пользователя. (Эта опция применима только к модулям auth). 1.1 Упражнения Упражнение 1 : Настройте свой демон sshd на использование аутентификации по протоколу ldap. 1.1 Решения Решение 1 : Изучите файл /usr/share/doc/pam_ldap-167/ Безопасность системы В этой главе Безопасность системы .............................................................................................................................. 136 3 Безопасная оболочка (OpenSSH) ............................................ 3.1 Настройка OpenSSH ..................................................................... 1 Настройка маршрутизатора ................................................................................................................... 137 3.2 Упражнения.................................................................................... 1.1 Настройка маршрутизатора ............................................................................................................................. 138 3.3 Решения ......................................................................................... 1.2 Упражнения ....................................................................................................................................................... 163 4 Поддержание безопасности системы ..................................... 1.3 Решения ............................................................................................................................................................ 164 4.1 Выполнение задач по поддержанию 2 Защита FTP-серверов ............................................................................................................................ 165 безопасности ....................................................................................... 2.1 Настройка демона WU-FTPD ........................................................................................................................... 166 4.2 Упражнения.................................................................................... 2.2 Упражнения ....................................................................................................................................................... 175 4.3 Решения ......................................................................................... 2.3 Решения ............................................................................................................................................................ 176 1 Настройка маршрутизатора Ключевые файлы, термины и утилиты /proc/sys/net/ipv4 /etc/services ipchains iptables routed 1.2 Настройка маршрутизатора Введение Чтобы сконфигурировать маршрутизатор для такой небезопасной сети, как Интернет, необходимо предпринять множество шагов. Прежде всего, определите, какие сервисы вам нужны и заблокируйте все остальное! Это минимизирует вероятность обнаружения уязвимости в вашей системе. Хорошей идеей будет регистрировать все отброшенные и отклоненные пакеты в журнале (и ограничить интенсивность этого процесса во избежание создания журнальных файлов слишком большого размера). Блокирование сканирования портов с помощью PortSentry Большинство сканирований портов может быть обнаружено с помощью утилиты portsentry компании Psionic Technologies (теперь Cisco). Демон portsentry прослушивает несколько известных портов и может заблокировать IP-адрес в случае обнаружения сканирования. Установка Portsentry: Скачайте архив с исходным кодом с web-сайта и установите утилиту вручную: [root@test root]# tar zxvf portsentry-1.2.tar.gz -C /usr/local/src/ portsentry_beta/ portsentry_beta/portsentry.c portsentry_beta/portsentry.h portsentry_beta/portsentry_io.c portsentry_beta/portsentry_io.h ... [SNIP] ... portsentry_beta/ignore.csh [root@test root]# cd /usr/local/src/portsentry_beta/ [root@test portsentry_beta]# make linux SYSTYPE=linux Making cc -O -Wall -DLINUX -DSUPPORT_STEALTH -o ./portsentry ./portsentry.c \ ./portsentry_io.c ./portsentry_util.c [root@test portsentry_beta]# [root@test portsentry_beta]# make install Creating psionic directory /usr/local/psionic Setting directory permissions Creating portsentry directory /usr/local/psionic/portsentry Setting directory permissions chmod 700 /usr/local/psionic/portsentry Copying files cp ./portsentry.conf /usr/local/psionic/portsentry cp ./portsentry.ignore /usr/local/psionic/portsentry cp ./portsentry /usr/local/psionic/portsentry Setting permissions chmod 600 /usr/local/psionic/portsentry/portsentry.ignore chmod 600 /usr/local/psionic/portsentry/portsentry.conf chmod 700 /usr/local/psionic/portsentry/portsentry Edit /usr/local/psionic/portsentry/portsentry.conf and change your settings if you haven't already. (route, etc) WARNING: This version and above now use a new directory structure for storing the program and config files (/usr/local/psionic/portsentry). Please make sure you delete the old files when the testing of this install is complete. [root@test portsentry_beta]# Настройка portsentry : Конфигурационный файл утилиты: /usr/local/psionic/portsentry/portsentry.conf. Укажите порты, на которых вы хотите запустить утилиту portsentry: TCP_PORTS="1,11,15,79,111,119,143,540,635,1080,1524,2000,5742,6667,12345,1234 6,20034,27665,31337,32771,32772,32773,32774,40421,49724,54320" UDP_PORTS="1,7,9,69,161,162,513,635,640,641,700,37444,34555,31335,32770,32771 ,32772,32773,32774,31337,54321" Заблокируйте сканирование UDP и TCP: BLOCK_UDP="1" BLOCK_TCP="1" Перенаправьте атакующий хост на null-маршрут: KILL_ROUTE="/sbin/route add $TARGET$ 192.168.66.66 или KILL_ROUTE="/sbin/route add -host $TARGET$ reject или KILL_ROUTE="/usr/local/bin/iptables -I INPUT -s $TARGET$ -j DROP Также можно запустить какой-нибудь скрипт в ответ на атаку. Однако такая конфигурация не рекомендуется. Хорошей идеей будет настроить игнорирование IP-адресов ваших DNS серверов и маршрутизаторов. Эти IP адреса должны быть помещены в файл /usr/local/psionic/portsentry/portsentry.ignore. Стартовый сценарий Portsentry: Данный скрипт называется /etc/init.d/portsentry : /!/bin/bash # # portsentry Start the portsentry portscan detector # # Authors: Craig Rowland <crowland@psionic.com>, Tim Powers <timp@redhat.com> # and Matthias Saou <matthias.saou@est.une.marmotte.net> # # chkconfig: 345 98 05 # description: PortSentry Port Scan Detector is part of the Abacus Project \ # suite of tools. The Abacus Project is an initiative to release \ # low-maintenance, generic, and reliable host based intrusion \ # detection software to the Internet community. # processname: portsentry # configfile: /etc/portsentry/portsentry.conf # pidfile: /var/run/portsentry.pid # Source function library. . /etc/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 # For this script to work on non english systems export LANG=C RETVAL=0 start () { # Set up the ignore file SENTRYDIR=/usr/local/psionic/portsentry FINALIGNORE=$SENTRYDIR/portsentry.ignore TMPFILE=$SENTRYDIR/portsentry.ignore.tmp # Testline is used to see if the initscript has already been run if [ -f $FINALIGNORE ] ; then cp -f $FINALIGNORE $TMPFILE testline=`grep -n "Do NOT edit below this" $TMPFILE | cut -delimiter=":" -f1` if [ -z "$testline" ] ; then echo > /dev/null # Do nothing else let headline=$testline-2 head -$headline $FINALIGNORE > $TMPFILE fi fi echo echo echo echo echo echo echo '#########################################' '# Do NOT edit below this line, if you #' '# do, your changes will be lost when #' '# portsentry is restarted via the #' '# initscript. Make all changes above #' '# this box. #' '#########################################' >> >> >> >> >> >> >> $TMPFILE $TMPFILE $TMPFILE $TMPFILE $TMPFILE $TMPFILE $TMPFILE echo '' >> $TMPFILE echo '# Exclude all local interfaces' >> $TMPFILE for i in `/sbin/ifconfig -a | grep inet | awk '{print $2}' | sed 's/addr://'` ; do echo $i >> $TMPFILE done echo '' >> $TMPFILE echo '# Exclude the default gateway(s)' >> $TMPFILE for i in `/sbin/route -n | grep ^0.0.0.0 | awk '{print $2}'` ; do echo $i >> $TMPFILE done echo '' >> $TMPFILE echo '# Exclude the nameservers' >> $TMPFILE for i in `/bin/cat /etc/resolv.conf | grep ^nameserver | awk '{print $2}'` ; do echo $i >> $TMPFILE done echo echo echo echo '' >> $TMPFILE '# And last but not least...' >> $TMPFILE '0.0.0.0' >> $TMPFILE '' >> $TMPFILE cp -f $TMPFILE rm -f $TMPFILE $SENTRYDIR/portsentry.ignore # Check for modes defined in the config file if [ -s $SENTRYDIR/portsentry.modes ] ; then modes=`cut -d "#" -f 1 $SENTRYDIR/portsentry.modes` else modes="tcp udp" fi for i in $modes ; do action $"Starting portsentry -$i: " /usr/local/psionic/portsentry/portsentry -$i RETVAL=$? done [ $RETVAL -eq 0 ] && touch /var/lock/subsys/portsentry return $RETVAL } stop() { echo -n $"Stopping portsentry: " killproc portsentry RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/portsentry return $RETVAL } # See how we were called. case $1 in start) start ;; stop) stop ;; status) status portsentry RETVAL=$? ;; restart) stop start RETVAL=$? ;; condrestart) if [ -f /var/lock/subsys/portsentry ]; then stop start RETVAL=$? fi ;; *) echo $"Usage: portsentry {start|stop|restart|condrestart|status}" exit 1 esac exit $RETVAL Использование Portsentry : portsentry может быть запущен с различными параметрами: -tcp :прослушивать порты из списка TCP_PORTS -udp :прослушивать порты из списка UDP_PORTS -stcp :режим «стелс»: прослушивать порты из списка TCP_PORTS, но не отвечать на соединения. -sudp :режим «стелс»: прослушивать порты из списка UDP_PORTS, но не отвечать на соединения. -atcp : Расширенный механизм обнаружения сканирования TCP портов: используется для мониторинга более 1024-х портов -audp : Расширенный механизм обнаружения сканирования UDP портов: используется для мониторинга более 1024-х портов [root@test root]# /etc/init.d/portsentry start Starting portsentry -tcp: Starting portsentry -udp: [root@test root]# [ [ OK OK ] ] Чтобы протестировать конфигурацию, запустите сканирование с другого хоста: [root@test root]# nmap -sS -v -O 192.168.0.42 Starting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2004-08-18 13:37 CEST Host test (192.168.0.42) appears to be up ... good. Initiating SYN Stealth Scan against test (192.168.0.42) at 13:37 Adding open port 80/tcp Adding open port 824/tcp Adding open port 6000/tcp ... [пропущено] ... Nmap run completed -- 1 IP address (1 host up) scanned in 6.834 seconds [root@test root]# Регистрация событий в журнале: Журналы утилиты portsentry можно просматривать в файле /var/log/syslog : Aug 18 13:32:58 test portsentry[5019]: attackalert: TCP SYN/Normal scan from host: 192.168.0.165/192.168.0.165 to TCP port: 72 Aug 18 13:32:58 test portsentry[5019]: attackalert: Host 192.168.0.165 has been blocked via wrappers with string: "ALL: 192.168.0.165" Aug 18 13:32:58 test kernel: ip_tables: (C) 2000-2002 Netfilter core team Aug 18 13:32:58 test portsentry[5019]: attackalert: Host 192.168.0.165 has been blocked via dropped route using command: "/sbin/iptables -I INPUT -s 192.168.0.165 -j DROP" Aug 18 13:32:58 test portsentry[5019]: attackalert: TCP SYN/Normal scan from host: 192.168.0.165/192.168.0.165 to TCP port: 23 Aug 18 13:32:58 test portsentry[5019]: attackalert: Host: 192.168.0.165/192.168.0.165 is already blocked Ignoring Aug 18 13:32:58 test portsentry[5019]: attackalert: TCP SYN/Normal scan from host: 192.168.0.165/192.168.0.165 to TCP port: 386 а также в /usr/local/psionic/portsentry/portsentry.history : 1092828778 - 08/18/2004 13:32:58 Host: 192.168.0.165/192.168.0.165 Port: 72 TCP Blocked Если выставить опции KILL_ROUTE значение iptables, portsentry добавит правило iptables, блокирующее хост, запустивший сканирование портов: [root@test root]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source DROP all -- 192.168.0.165 destination anywhere Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source [root@test root]# destination Фильтрация сетевых пакетов Введение Пакетный фильтр анализирует сетевые пакеты и принимает решение о том, какие пакеты принять, а какие - нет. По сути это то, что делает межсетевой экран (брандмауэр)5. Для операционной системы Linux в данный момент используется межсетевой экран Netfilter / Iptables . Брандмауэр состоит из двух частей: Netfilter - это часть ядра, принимающая и посылающая пакеты. Вторая часть, iptables, - это пользовательская утилита, применяемая для настройки правил фильтрации. Netfilter / Iptables входят в состав ядра версии 2.4: ядро 2.0.x ipfwadm ядро 2.2.x ipchains ядро 2.4.x, 2.6.x iptables Диаграмма прохождения пакета: INPUT, FORWARD и OUTPUT - это так называемые цепочки правил. В случае, если адрес назначения пакета совпадает с адресом межсетевого экрана, применяются правила из цепочки INPUT. Когда пакет посылается с адреса брандмауэра куда-то наружу, применяются правила цепочки OUTPUT. Если пакет должен быть передан межсетевым экраном куда-то дальше (т.е. он поступил на его адрес, но на самом деле предназначается для другого хоста), применяются правила цепочки FORWARD. 5 Далее по тексты термины «межсетевой экран» и «брандмауэр» будут использоваться как синонимы,-прим.ред. Настройка ядра Чтобы заставить работать iptables, необходимо настроить ядро. Опции могут быть вкомпилированы в ядро или составлять отдельный модуль. CONFIG_PACKET CONFIG_NETFILTER CONFIG_IP_NF_CONNTRACK CONFIG_IP_NF_FTP CONFIG_IP_NF_IPTABLES CONFIG_IP_NF_MATCH_LIMIT CONFIG_IP_NF_MATCH_MAC CONFIG_IP_NF_MATCH_MARK CONFIG_IP_NF_MATCH_TOS CONFIG_IP_NF_MATCH_TCPMSS CONFIG_IP_NF_MATCH_STATE CONFIG_IP_NF_MATCH_UNCLEAN CONFIG_IP_NF_MATCH_OWNER CONFIG_IP_NF_FILTER CONFIG_IP_NF_TARGET_REJECT CONFIG_IP_NF_TARGET_MIRROR CONFIG_IP_NF_NAT CONFIG_IP_NF_TARGET_MASQUERADE CONFIG_IP_NF_TARGET_REDIRECT CONFIG_IP_NF_TARGET_LOG CONFIG_IP_NF_TARGET_TCPMSS Маршрутизация и фильтрация Когда пакет достигает сетевого интерфейса, он проходит несколько шагов, прежде чем будет передан локальному процессу, удален или передан на другой хост. Стадии обработки пакета: Межсетевой экран / маршрутизатор использует цепочку FORWARD для защиты локальной сети. Для защиты самого хоста используется цепочка правил INPUT. Отслеживание соединений Netfilter хранит сведения о состоянии тех соединений, для которых это понятие имеет смысл. Данная техника реализуется с помощью анализа пакетов в цепочках PREROUTING и OUTPUT. Типичное соединение может иметь следующие состояния: NEW ESTABLISHED RELATED INVALID Таблица соединений ядра может быть выведена на экран следующим образом: [root@test root]# cat /proc/net/ip_conntrack |more tcp 6 96 SYN_SENT src=127.0.0.1 dst=192.168.0.42 sport=50295 dport=307 [UNREPLIED] src=192.168.0.42 dst=127.0.0.1 spor t=307 dport=50295 use=1 ... [root@test root]# Здесь, первое значение – это имя протокола (tcp), второе – номер протокола (6) и третье – таймаут, сбрасываемый в значение по умолчанию с каждым переданным пакетом. Таймауты Состояние Таймаут NONE 30 минут ESTABLISHED 5 дней SYN_SENT 2 минуты SYN_RECV 60 секунд FIN_WAIT 2 минуты TIME_WAIT 2 минуты CLOSE 10 секунд CLOSE_WAIT 12 часов LAST_ACK 30 секунд LISTEN 2 минуты TCP Соединения протокола TCP устанавливаются в три приема: Клиент SYN Сервер ===> <=== ACK SYN/ACK ===> Следующие пакеты используются для корректного закрытия соединения TCP: Клиент FIN Сервер ===> <=== ACK FIN/ACK ===> Отослан пакет SYN /proc/net/ip_conntrack : tcp 6 117 SYN_SENT src=192.168.1.5 dst=192.168.1.35 sport=1031 dport=23 [UNREPLIED] src=192.168.1.35 dst=192.168.1.5 sport=23 dport=1031 use=1 Получен SYN/ACK /proc/net/ip_conntrack : tcp 6 57 SYN_RECV src=192.168.1.5 dst=192.168.1.35 sport=1031 dport=23 src=192.168.1.35 dst=192.168.1.5 sport=23 dport=1031 use=1 Финальный пакет ACK /proc/net/ip_conntrack : tcp 6 431999 ESTABLISHED src=192.168.1.5 dst=192.168.1.35 sport=1031 dport=23 src=192.168.1.35 dst=192.168.1.5 sport=23 dport=1031 use=1 После обмена еще несколькими пакетами соединение перейдет в состояние ASSURED. Когда TCP соединение закрывается, оно переходит в состояние TIME_WAIT /proc/net/ip_conntrack : tcp 6 114 TIME_WAIT src=192.168.10.2 dst=192.168.8.4 sport=35054 dport=5223 src=192.168.8.4 dst=192.168.10.2 sport=5223 dport=35054 [ASSURED] use=1 Соединение может быть переведено в состояние CLOSE пакетом RST. UDP Обмен данными по протоколу UDP осуществляется без установления соединения, что означает, что в инициировании или закрытии соединения нет необходимости. Первый пакет /proc/net/ip_conntrack : udp 17 20 src=192.168.1.2 dst=192.168.1.5 sport=137 dport=1025 [UNREPLIED] src=192.168.1.5 dst=192.168.1.2 sport=1025 dport=137 use=1 Ответ /proc/net/ip_conntrack : udp 17 170 src=192.168.1.2 dst=192.168.1.5 sport=137 dport=1025 src=192.168.1.5 dst=192.168.1.2 sport=1025 dport=137 use=1 После этого соединение рассматривается как установленное, поскольку были отмечены пакеты обоих хостов. Однако оно не будет помечено как ESTABLISHED поскольку формально в UDP не существует понятия установленного соединения. Еще несколько пакетов /proc/net/ip_conntrack : udp 17 175 src=192.168.1.5 dst=195.22.79.2 sport=1025 dport=53 src=195.22.79.2 dst=192.168.1.5 sport=53 dport=1025 [ASSURED] use=1 ICMP Пакеты ICMP используются для контроля и не устанавливают соединений. Существует несколько типов ICMP-пакетов, но только четыре из них приводят к генерации ответного пакета. ping Клиент Сервер ICMP Echo Request ===> <=== ICMP Echo Reply /proc/net/ip_conntrack: icmp 1 25 src=192.168.1.6 dst=192.168.1.10 type=8 code=0 id=33029 [UNREPLIED] src=192.168.1.10 dst=192.168.1.6 type=0 code=0 id=33029 use=1 Поскольку после ответа трафика больше нет, информация об ICMP-соединении удаляется сразу же после получения ответа. Таймаут ICMP может быть задан в файле: /proc/sys/net/ipv4/netfilter/ip_ct_icmp_timeout По умолчанию его значение равно 30 секунд, что должно быть достаточно в большинстве случаев. Контроль соединения Клиент SYN Маршрутизатор Сервер ===============> <=== ICMP Net unreachable Маршрутизатор рассматривает соединение как новое (состояние NEW), поскольку прошел пакет SYN. Пакет ошибки ICMP будет распознан как имеющий отношение к соединению и оно будет удалено из списка отслеживаемых. Нечто подобное происходит и с UDP соединениями: Клиент Маршрутизатор Сервер UDP пакет ===============> <=== ICMP Net prohibited Другие соединения Соединения таких протоколов как NETBLT, MUX, EGP обрабатываются также, как и UDP. Первый пакет переводит соединение в состояние NEW, а дальнейший обмен пакетами приводит к состоянию ESTABLISHED. Сложные протоколы Некоторые протоколы обмениваются такой информацией, как IP-адреса и номера портов, помещая ее в данные своих пакетов. Примеры таких протоколов: ICQ, IRC, FTP, Oracle, ntalk или H.323. В этом случае ядро не может так легко отслеживать соединение, поскольку информация о нем находится не в заголовке пакета. Чтобы такие протоколы работали, ядро вынуждено соответствующим образом анализировать трафик и отслеживать пакеты, имеющие отношение к соединению. Например, протокол FTP обычно использует два соединения. Первое из них – контрольная сессия на порту 21. Когда мы загружаем файл, клиент посылает номер порта на сервер и последний инициирует новое соединение со своего собственного 20-го порта (второе соединение - для данных) на указанный порт и передает данные. Клиент Маршрутизатор <=== RELATED === SYN/ACK Сервер SYN === ESTABLISHED ===> В пассивном режиме FTP-сервер сообщает клиенту, с каким портом нужно соединиться. Клиент соединяется со своего 20-го порта с указанным портом на сервере и получает запрошенные данные. Клиент SYN Маршрутизатор Сервер === RELATED ===> <=== ESTABLISHED === SYN/ACK Команда iptables Формат команды iptables: iptables [-t table] command [match] [target/jump] Таблицы У Netfilter есть три главных таблицы. Если ни одна из таблиц не указана опцией t, то по умолчанию будет использоваться таблица filter. Чтобы отобразить все правила какой-либо таблицы, используется опция -L: [root@test root]# iptables -t mangle -L Таблица filter Эта таблица осуществляет основную работу по фильтрации. Например, с помощью опции -j и целей ACCEPT и DROP пакеты могут быть приняты или отброшены соответственно. Таблица filter позволяет использовать почти все доступные цели. Правила могут содержать цели: DROP, LOG, ACCEPT, REJECT, ... . Набор доступных целей зависит от конфигурации ядра. [root@test root]# iptables -A INPUT -p tcp -j ACCEPT Таблица mangle Эта таблица правил позволяет модифицировать некоторые поля пакета данных, например, TTL (Time To Live – время жизни пакета), TOS (Type Of Service – тип сервиса), MARK. Поле TTL может использоваться для, сокрытия подсети. TOS и MARK в основном используются пользовательскими программами, такими как iproute2. Таблица nat Эта таблица используется для трансляции сетевых адресов (NAT). Адреса отправителя и получателя, указанные в пакете, могут быть изменены в этой таблице. В этой таблице не допускается фильтрация. Только первый пакет из потока данных попадет в эту цепочку правил. Остальные пакеты будут изменяться тем же способом автоматически. DNAT SNAT MASQUERADE Команды В iptables, правила могут быть добавлены, модифицированы и удалены. Добавление [root@test root]# iptables -A INPUT -p tcp --dport 80 -j DROP Удаление [root@test root]# iptables -D INPUT -p tcp --dport 80 -j DROP [root@test root]# iptables -D 1 Замена [root@test root]# iptables -R INPUT 1 -s 192.168.0.1 -j DROP Вставка [root@test root]# iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT Перечисление [root@test [root@test [root@test [root@test root]# root]# root]# root]# iptables iptables iptables iptables -L -L INPUT -v -L -n -L -t nat Сброс [root@test root]# iptables -F INPUT Политика по умолчанию для всей цепочки [root@test root]# iptables -P FORWARD DROP Обнуление [root@test root]# iptables -Z INPUT Новая цепочка [root@test root]# iptables -N tcp_traffic Удаление цепочки [root@test root]# iptables -X tcp_traffic Переименование цепочки [root@test root]# iptables -X tcp_traffic udp_traffic Поиск совпадений Ядро Linux ищет подходящее правило в таблицах netfilter для каждого пакета. Если правило подходит, действие, указанное в нем, выполняется. Неявные совпадения указываются опциями, заданными напрямую команде iptables. Для явных совпадений используется аргумент -m <match>. Основные опции для поиска совпадений Протокол: -p [root@test root]# iptables -A INPUT -p tcp ... [root@test root]# iptables -A INPUT -p udp ... [root@test root]# iptables -A INPUT -p icmp ... Адрес отправителя: -s [root@test root]# iptables -A INPUT -s 192.168.0.1 ... [root@test root]# iptables -A INPUT -s 192.168.0.0/24 ... [root@test root]# iptables -A INPUT -s ! 192.168.0.0/255.255.255.0 ... Адрес получателя: -d [root@test root]# iptables -A INPUT -d 192.168.0.1 ... [root@test root]# iptables -A INPUT -d 192.168.0.0/24 ... [root@test root]# iptables -A INPUT -d ! 192.168.0.0/255.255.255.0 ... Опции TCP Для того, чтобы правило совпадало с определенными TCP пакетами, протокол TCP должен быть указан в правиле: -p tcp. Порт отправителя [root@test root]# iptables -A INPUT -p tcp --sport ssh [root@test root]# iptables -A INPUT -p tcp --sport 22:80 [root@test root]# iptables -A INPUT -p tcp --sport ! :1024 Порт получателя [root@test root]# iptables -A INPUT -p tcp --dport ssh Флаги TCP [root@test [root@test [root@test [root@test root]# root]# root]# root]# iptables iptables iptables iptables -A -A -A -A FORWARD FORWARD FORWARD FORWARD -p -p -p -p tcp tcp tcp tcp --tcp-flags SYN,FIN,ACK SYN --syn --tcp-flags SYN,RST,ACK SYN --tcp-flags ! FIN FIN Опции UDP Чтобы правило совпадало с UDP пакетами в нем должна быть указана опция: -p udp. Порт отправителя [root@test root]# iptables -A INPUT -p udp --sport 53 Порт получателя [root@test root]# iptables -A INPUT -p udp --dport dns Опции ICMP Пакеты ICMP отфильтровываются правилом, в котором указана опция -p icmp. [root@test root]# iptables -A INPUT -p icmp --icmp-type echo-request [root@test root]# iptables -A INPUT -p icmp --icmp-type echo-reply Чтобы вывести полный список возможных опций фильтрации ICMP пакетов, выполните команду: [root@test root]# iptables -p icmp --help Ограничение интенсивности поступления пакетов Опция ограничения интенсивности может ограничить скорость поступления пакетов в единицу времени. Эта функция реализуется с помощью счетчика. Начальное значение счетчика уменьшается с каждым поступающим пакетом. Если счетчик достиг нуля, все последующие пакеты будут отбрасываться. Каждую секунду (например) значение счетчика увеличивается на единицу, позволяя таким образом пройти еще одному пакету. Опция используется для снижения негативного эффекта от атак затопления syn/ping пакетами (Syn/Ping Flood). Правило из следующего примера принимает пакеты с интенсивностью не более 5 штук в секунду. [root@test root]# iptables -A INPUT -m limit --limit 5/s Фильтрация по состоянию соединения Опция фильтрации по состоянию соединения используется для выделения состояний соединений, отслеживаемых ядром. Возможные состояния: NEW, ESTABLISHED, RELATED, INVALID. Такая фильтрация используется для того, чтобы пропускать новые соединения только в одну сторону, а в обратную сторону пропускать только трафик возвращаемый в ответ на эти соединения (ESTABLISHED;RELATED). [root@test root]# iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED Цели и переходы Цель в правиле указывает на то, что нужно сделать с удовлетворяющим ему пакетом. Целью может быть таблица, заданная пользователем или стандартная цель ядра, например ACCEPT или DROP, принимающая пакет (позволяющая пакету пройти дальше) или отбрасывающая пакет (останавливающая обработку пакета) соответственно. Цель ACCEPT Пакет принимается и остальные правила цепочки текущей таблицы не будут к нему не применяются. Цель DROP Пакет отбрасывается и более не обрабатывается. Цель REJECT Цель REJECT работает подобно цели DROP, с тем отличием, что отправитель пакета получит ICMP сообщение сигнализирующее об ошибке. Цель REJECT можно использовать только в цепочках INPUT, FORWARD и OUTPUT. Цель DNAT DNAT (Destination Network Address Translation – трансляция адреса получателя) используется для изменения IP-адреса получателя пакета. Цель DNAT может использоваться только в цепочках PREROUTING и OUTPUT таблицы nat. [root@test root]# iptables -t nat -A PREROUTING -p tcp -j DNAT --todestination 192.168.1.111 Адрес отправителя в поступающих обратно пакетах автоматически транслируется в оригинальный. Цель SNAT SNAT (Source Network Address Translation – трансляция адреса отправителя) используется для изменения IP-адреса отправителя пакета. Цель SNAT может использоваться только с цепочкой POSTROUTING таблицы nat. [root@test root]# iptables -t nat -A POSTROUTING -p tcp -j SNAT --to-source 192.168.1.1 Получаемые обратно пакеты будут автоматически оттранслированы в оригинальный адрес. Цель MASQUERADE Поведение цели masquerade подобно SNAT, однако в этом случае Netfilter самостоятельно решает, какой адрес отправителя нужно использовать, основываясь на маршруте по умолчанию. Такое поведение позволяет реализовывать NAT с динамическими IP-адресами, получаемыми от Интернетпровайдера или DHCP-сервера. Цель MASQUERADE доступна только в цепочке POSTROUTING таблицы nat. [root@test root]# iptables -t nat -A POSTROUTING -j MASQUERADE Цель MASQUERADE очищает информацию обо всех отслеживаемых соединениях в случае деактивации сетевого интерфейса. Цель REDIRECT Цель REDIRECT изменяет порт назначения пакета. Таким образом, пакет останется в пределах того же хоста, но будет передан на другой порт. [root@test root]# iptables -A INPUT -j REDIRECT --to-port 3128 Цель MIRROR Это в чистом виде экспериментальная цель. С ее помощью можно менять местами адреса отправителя и получателя. Используйте с осторожностью :-) Цель RETURN Проход пакета по цепочке правил прекратится, как только пакет достигнет правила с этой целью. Цель QUEUE Пакеты будут попадать в очередь для обработки пользовательскими программами. Цель MARK С помощью этой цели можно поставить метку на пакет с целью его дальнейшей обработки. Как Netfilter, так и пользовательские программы могут выявлять пакеты, помеченные таким образом, для выполнения с ними специальных действий. iptables -A INPUT -j MARK --set-mark 1 Цель LOG С помощью этой цели пакет попадает в журнал syslog. [root@test root]# iptables -A INPUT -j LOG --log-prefix " Dropped INPUT: " Цель ULOG Эта цель существует для предоставления возможностей регистрации пакетов в пользовательских программах, например, для занесения их в базу данных. Пример межсетевого экрна Сценарий, настраивающий правила iptables. Пример: #!/bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward DMZ=10.0.0.0/24 IPTABLES="/sbin/iptables" $IPTABLES -F $IPTABLES -F -t nat $IPTABLES -P INPUT DROP $IPTABLES -P FORWARD DROP echo "accept localhost internal traffic" $IPTABLES -A INPUT -i lo -s localhost -j ACCEPT ... echo "accept ssh from $DMZ on eth1" $IPTABLES -A INPUT -s $DMZ -i eth1 -p tcp --dport 22 -j ACCEPT ... iptables -L -v -n iptables -L -v -n -t nat 1.1 Упражнения Упражнение 1 : Установите утилиту portsentry, чтобы заблокировать сканирование портов. Создайте сценарий, запускаемый в ответ на атаку, который будет перенаправлять сканирование портов на сам атакующий хост (эмуляция цели MIRROR) Упражнение 2 : Настройте свою систему на отбрасывание всех входящих пакетов кроме SSH и SMTP. Настройте «маскарадинг» всего исходящего трафика. Настройте перенаправление HTTP-пакетов на другой хост. Настройте регистрацию всех отклоненных пакетов в файле /var/log/kern.log и на 9-ой консоли. 1.1 Решения Решение 1 : Следуйте инструкциям, описанным в этой главе. KILL_ROUTE="/sbin/iptables -t nat -A PREROUTING -s $TARGET$ -j DNAT --to-destination $TARGET$ Упражнение 2 : используйте опции --dport 22, --dport 25 и -j DROP используйте опцию -j MASQUERADE используйте опции -j DNAT --to-destination используйте опции цели LOG и модифицируйте файл /etc/syslog.conf 1 Защита FTP-серверов Ключевые файлы, термины и утилиты: ftpaccess, ftpusers, ftpgroups /etc/passwd chroot 1.2 Настройка демона WU-FTPD Введение Во время создания протокола передачи файлов (FTP - File Transport Protocol) никто не думал о безопасности. Сегодня, во времена большой популярности Интернет и существования небезопасных беспроводных технологий передачи данных протокол FTP должен быть заменен на более безопасный протокол передачи файлов, например, sftp. В случаях, когда такая замена неприемлема, можно поместить открытые ftpсессии в отдельную корневую файловую систему (chroot jail) – упрощенную копию нормальной системы. Утилита Wuarchive-ftpd, известная как WU-FTPD - это ftp-демон для Unix-систем, разработанный в Университете Вашингтона Крисом Майерсом (Chris Myers) и, позднее, Брайаном О'Коннором (Bryan D. O'Connor). Этот демон не считается особо безопасным FTP-сервером, так что если вам нужен действительно защищенный продукт, стоит взглянуть на демон vsftpd («very secure ftp server» – «очень безопасный ftp сервер»). Настройка Wu-ftpd Основные конфигурационный файлы демона Wu-ftpd находятся в /etc : /etc/ftpusers /etc/ftpaccess /etc/ftpconversions /etc/ftphosts Файл ftpusers содержит список пользователей, которым запрещен доступ к вашему FTP-серверу. Как вы могли догадаться, пользователь root должен быть указан в этом файле. Вам таже нужно убедиться, что и другие особые пользователи, такие как lp, shutdown, mail, и т.п. также перечислены в нем. Пример: [root@test root]# cat /etc/ftpusers root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody [root@test root]# Файл ftpaccess используется для настройки таких параметров, как безопасность, пользователи и т.п. На самом деле, это основной конфигурационный файл. Некоторые из интересных настроек, которые вы можете указать здесь: loginfails [число] Здесь «число» – это количество неудачных попыток входа в систему, которое пользователь может сделать, прежде чем его учетная запись будет полностью заблокирована. shutdown [имя файла] Здесь «имя файла» – это имя файла, появление которого на диске приведет к автоматическому останову FTP сервера, без необходимости закрытия порта в файле /etc/inetd.conf с последующим рестартом демона inetd. [root@test root]# cat /etc/ftpaccess class all real,guest,anonymous * email root@localhost loginfails 5 readme readme README* README* login cwd=* message /welcome.msg message .message login cwd=* compress tar chmod delete overwrite rename all all guest,anonymous guest,anonymous guest,anonymous guest,anonymous yes yes no no no no log transfers anonymous,real inbound,outbound shutdown /etc/shutmsg passwd-check rfc822 warn [root@test root]# Файл ftpconversions существует для обеспечения переконвертации файлов на лету, например автоматической декомпрессии файлов во время скачивания. Пример: [root@test root]# cat /etc/ftpconversions :.Z: : :/bin/compress -d -c %s:T_REG|T_ASCII:O_UNCOMPRESS:UNCOMPRESS : : :.Z:/bin/compress -c %s:T_REG:O_COMPRESS:COMPRESS :.gz: : :/bin/gzip -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:GUNZIP : : :.gz:/bin/gzip -9 -c %s:T_REG:O_COMPRESS:GZIP : : :.tar:/bin/tar -c -f - %s:T_REG|T_DIR:O_TAR:TAR : : :.tar.Z:/bin/tar -c -Z -f %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+COMPRESS : : :.tar.gz:/bin/tar -c -z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+GZIP [root@test root]# Файл ftphosts используется для разрешения или запрещения доступа к серверу определенным учетным записям с различных хостов. Синтаксис, используемый в этом файле: allow/deny login Пример: # Example host access file # # Everything after a '#' is treated as comment, # empty lines are ignored allow deny bartm fred somehost.domain otherhost.domain 131.211.32.* host Организация защиты FTP-сервера Изменение текста предупреждающего сообщения Изменение текста приветствия Защита, запрет и ограничение пользовательских учетных записей Защита анонимного доступа Зашита анонимной выгрузки данных на сервер Текст приглашения FTP Хорошей идеей является изменение предупреждающего сообщения, выдаваемого клиентам FTP-сервера, поскольку это позволяет скрыть от них, какой именно сервер FTP их обслуживает. Добавьте следующую строку в файл /etc/ftpaccess: banner /etc/banners/warning.msg Содержимое файла, может выглядеть примерно так: Hello, all activity on ftp.example.com is logged. Текст приветствия FTP После в систему всем пользователям показывается текст приветствия. По умолчанию приветствие включает информацию о версии сервера, которая будет полезна хакерам, пытающим идентифицировать слабые места в системе. Чтобы изменить этот текст, добавьте следующую директиву в файл /etc/ftpusers: greeting text Welcome to XYZ FTP server Анонимный доступ Наилучшим способом настройки анонимного доступа к FTP-серверу считается организация специальной корневой файловой системы (chroot jail): вместо того, чтобы позволить полный доступ к системе, такая файловая система ограничит действия пользователя только заданным каталогом. Другими словами, после анонимного входа в такую систему, пользователь будет иметь доступ только к домашнему каталогу учетной записи ftp и не более того. Важно не давать вашим FTP-пользователям учетных записей с оболочкой Linuxсистемы. В этом случае, если по какой-либо причине кто-то смог выбраться из специальной корневой системы, он не будет иметь возможности исполнить какиелибо программы, поскольку не будет иметь оболочки bash. Создание корневой файловой системы для демона wu-ftpd выполняется довольно легко. Создайте каталог для пользователя ftp: [root@test root]# mkdir /home/ftp [root@test root]# chown -R ftp.ftp /home/ftp Смените его домашний каталог в файле /etc/passwd : ftp:x:76:76:system user for WU-FTPD:/home/ftp:/bin/false Протестируйте анонимный ftp : [user@test user]$ ftp localhost Connected to localhost. 220-Hello, all activity on ftp.example.com is logged. 220220 Hello you 530 Please login with USER and PASS. 530 Please login with USER and PASS. KERBEROS_V4 rejected as an authentication type Name (localhost:user): ftp 331 Guest login ok, send your complete e-mail address as password. Password: 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 200 PORT command successful. 150 Opening ASCII mode data connection for directory listing. total 16 drwxr--r-2 76 76 4096 Aug 18 15:40 incoming drwxr-xr-x 2 76 76 4096 Aug 18 15:40 pub 226 Transfer complete. ftp> cd / 250 CWD command successful. ftp> ls 200 PORT command successful. 150 Opening ASCII mode data connection for directory listing. total 16 drwxr--r-2 76 76 4096 Aug 18 15:40 incoming drwxr-xr-x 2 76 76 4096 Aug 18 15:40 pub 226 Transfer complete. Ftp>^D [user@test user]$ Анонимная выгрузка Если вы хотите разрешить выгрузку данных на сервер для анонимных пользователей, вам необходимо позаботиться о дополнительной защите. Прежде всего, нам нужно определиться с каталогом для выгрузки. Обычно такой каталог называется incoming, давайте назовем его /home/ftp/incoming. Чтобы избежать переполнения диска, нам необходимо создать отдельную файловую систему для каталога incoming и смонтировать ее в /home/ftp/incoming. Таким образом, даже если файловая система будет полностью заполнена, это никак не отразится на свободном пространстве корневой файловой системы. Далее нам нужно разрешить закачку в файле /etc/ftpaccess : upload /home/ftp /incoming yes ftp ftp 0440 nodirs Как правило, запрет создания каталогов является хорошей идеей. Те, кто ищет на FTP-серверах каталоги с возможностью записи для распространения Warez'а и тому подобных материалов, любят создавать поддиректории с очень длинными именами. Протестируйте выгрузку файлов на сервер: [user@test user]$ ftp localhost Connected to localhost. 220-Hello, all activity on ftp.example.com is logged. 220220 Hello you 530 Please login with USER and PASS. 530 Please login with USER and PASS. KERBEROS_V4 rejected as an authentication type Name (localhost:user): ftp 331 Guest login ok, send your complete e-mail address as password. Password: 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 200 PORT command successful. 150 Opening ASCII mode data connection for directory listing. total 16 drwxr--r-2 76 76 4096 Aug 18 15:40 incoming drwxr-xr-x 2 76 76 4096 Aug 18 15:40 pub 226 Transfer complete. ftp> put gq.png local: gq.png remote: gq.png 200 PORT command successful. 553 gq.png: Permission denied on server. (Upload) ftp> cd incoming 250 CWD command successful. ftp> put gq.png local: gq.png remote: gq.png 200 PORT command successful. 150 Opening BINARY mode data connection for gq.png. 226 Transfer complete. 49841 bytes sent in 0.043 seconds (1.1e+03 Kbytes/s) ftp> mkdir test 550 test: Permission denied on server. (Upload dirs) ftp>^D [user@test user]$ 1.1 Упражнения Упражнение 1 : Установите wu-ftpd Смените предупреждающий и приветствующий текст Настройте ftp-сервер со сменой корневой файловой системы Настройте анонимную выгрузку файлов 1.1 Решения Решение 1 : Следуйте инструкциям этой главы 1 Безопасная оболочка (OpenSSH) Ключевые файл, термины и утилиты: /etc/ssh/sshd_config ~/.ssh/identity.pub и identity ~/.ssh/authorized_keys .shosts .rhosts 1.2 Настройка OpenSSH Введение OpenSSH - это бесплатная реализация безопасной оболочки (secure shell). Эта утилита является заменой старых и небезопасных утилит rsh, rlogin, telnet, ftp, ... SSH предоставляет возможности оболочки поверх безопасного зашифрованного канала передачи данных. Файлы могут передаваться с помощью утилит scp или sftp SSH предоставляет возможности маршрутизации протокола X11 Прозрачный вход в систему с аутентификацией при помощи публичных ключей sshd Сервер SSH – демон sshd - обычно устанавливается вместе с пакетом ssh. Конфигурация находится в файле /etc/ssh/sshd_config. Некоторые настройки безопасности: ... Port 22 Protocol 2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key UsePrivilegeSeparation yes ... LoginGraceTime 600 PermitRootLogin no StrictModes yes ... #AuthorizedKeysFile %h/.ssh/authorized_keys ... IgnoreRhosts yes PermitEmptyPasswords no ssh Конфигурационный файл ssh клиента: /etc/ssh/ssh_config. X11Forwarding может быть установлен по умолчанию. Вход в систему через SSH [root@test root]# ssh 192.168.0.69 Password: Last login: Mon Jul 29 16:36:57 2004 from 192.168.0.42 [root@test1 root]# Пользователь для утилиты ssh может быть указан двумя способами [root@test root]# ssh -l root 192.168.0.69 [root@test root]# ssh root@192.168.0.69 Если не указано имя пользователя, будет использоваться текущая учетная запись На удаленном хосте могут быть выполнены команды [root@test root]# ssh 192.168.0.69 ls /usr/share/doc scp / sftp Файлы можно копировать с помощью scp, утилиты безопасного копирования. [root@test root]# scp some-file.tar.gz user@remote: [root@test root]# scp some-file.tar.gz user@remote:/home/user [root@test root]# scp -r something/ user@remote:/tmp/ OpenSSH предоставляет утилиту подобную ftp - sftp, которая позволяет перемещаться по каталогами на удаленном сервере. [user@test user]$ sftp user@192.168.0.206 Connecting to 192.168.0.206... Password: sftp> ls /mnt /mnt/. /mnt/.. /mnt/floppy /mnt/slash /mnt/usbstorage sftp> [user@test user]$ Безопасность Данные шифруются Нужно использовать только протокол версии 2, протокол версии 1 считается небезопасным Для идентификации на каждой машине существует ключ хоста [root@test root]# cat /etc/ssh/ssh_host_rsa_key -----BEGIN RSA PRIVATE KEY----MIICWwIBAAKBgQDLI9tAuoCgm959RaJSXMnh8UIj008r6Pg40nKuVfcsZ+nVTseY EeT0YWg8ulDUlJlDg9J+432ZRkmw3lup0U/9oMGJ8lrofK17xExH8gsHcLTiKwrZ pOXrVD19H+9B4kRnMSVeVqPcgENsHeijxp7NoZldxm5Ia17MVUUdQ6PbvQIBIwKB gAubpiD0tuSbMUj8qjCXloHwh2/C7pTLe+X9ZaOP4j0NQI/YnbDrFGW8bFs92Luw uE0AN+n+XvLQ0QLK4KqePxW0m4Itx2UeJXejoG3TUO6loct1sJnwtvZj/JSuZpv/ 9WCMrprFOOKl8b2g830U69gR8ZMwCHYhTRilcmLJUYWLAkEA5wZIlsW/RzqxJe18 FjSp1DgRLnF2pmvbJtE7+oYNXXccZTo27rLGboydjXQR7LmgtV0h9P4u5DWz3wp5 ZWgnwQJBAOEZ2zpzv6XjHO7nSenODUntaHEG3Qn4OFeoFzllioWHMS37kuyNl7mw WA/PhOvF57I4rAjcBkBj6Sbo4xspEv0CQQCearVus3vZEk2WWbQse+IrHyG5cl/9 FsIpPwSOh86mfY/QYm7PkIgRSnqqI7SFEZLFgbDigmlMB5FIfDX8ZK2LAkEAzc5/ S2KDVdb14b2FaAzY8yIzmonuqgeD+F8rLSmjOEEXBXhL0PZ8F3yoSPg/A3Mc+rd4 t6SYAFtY0x4Rd+sKCwJASvw6wMKi3EZhb4Ii3ZeG9wWMiZuWFVluzggKz7E80IJa Sn1TIzl9mnOo8/E5VoH171QOFETv1/rloIDH5QoJJw== -----END RSA PRIVATE KEY----[root@test root]# Подписи известных хостов сохраняются в домашнем каталоге пользователя: [user@test user]$ cat .ssh/known_hosts 192.168.0.206 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAz66o+3HSw83k8l0G/hi9x9NeqDZNAHoY43lE2F1JtcypJQifd N9maSrGFuUispNb1vvz69BgHdtZ1c67+EftgsGH7NCcjgFGg7AeLpdj6TVp8C0K5dLwmqIlaOdCV6 OaLyohhucpZxWRCREN1ezt0mNysdUobLP3vrPjCmqJLN8= [user@test user]$ Если во время установления ssh-соединения было определено, что подпись изменилась, SSH выводит следующее предупреждающее сообщение: [user@test user]$ ssh 192.168.0.206 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is 17:9b:fe:36:98:6f:60:75:69:47:e2:43:46:09:f6:3c. Please contact your system administrator. Add correct host key in /home/user/.ssh/known_hosts to get rid of this message. Offending key in /home/user/.ssh/known_hosts:1 Password authentication is disabled to avoid man-in-the-middle attacks. X11 forwarding is disabled to avoid man-in-the-middle attacks. Password: Вход в систему с помощью открытого ключа Механизм PKI (Public Key Infrastructure – инфраструктура открытых ключей) может использоваться вместо обычной авторизации с помощью пароля. На стороне клиента должна быть сгенерирована пара ключей – открытый и закрытый. Открытый ключ публикуется, т.е. закачивается на сервер. Если SSH обнаруживает открытый ключ, он использует этот метод аутентификации и возвращается к методу аутентификации паролем только в случае неудачи. Пара ключей может быть защищена особым паролем – он должен иметь длину минимум 25 символов, и не должен содержать нелатинских символов (представьте, что на каникулах вам придется воспользоваться иностранной клавиатурой). Если пароль не указан, вход в систему будет выполняться без пароля. Это позволяет автоматизировать различные задачи. DSA, версия 2.0 [user@test user]$ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/user/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/user/.ssh/id_dsa. Your public key has been saved in /home/user/.ssh/id_dsa.pub. The key fingerprint is: bb:ff:f2:c1:70:0e:80:1b:23:63:ea:a2:52:c6:64:86 user@test [user@test user]$ Каталог .ssh/ на сервере должен иметь права доступа 700. Скопируйте открытый ключ на удаленный хост или добавьте его к файлу, если он уже существует и содержит другие ключи. [user@test user]$ ssh user@192.168.0.206 "mkdir .ssh; chmod 700 .ssh" Warning: Permanently added '192.168.0.206' (RSA) to the list of known hosts. Password: Warning: No xauth data; using fake authentication data for X11 forwarding. /usr/bin/X11/xauth: creating new authority file /home/user/.Xauthority [user@test user]$ scp .ssh/id_dsa.pub user@192.168.0.206:/home/user/.ssh/authorized_keys Password: id_dsa.pub 100% 599 1.7MB/s 00:00 [user@test user]$ Проверьте аутентификацию с открытым ключом: [user@test user]$ ssh user@192.168.0.206 Warning: No xauth data; using fake authentication data for X11 forwarding. Linux socrate 2.6.5 #8 Sun Apr 4 15:29:35 CEST 2004 i686 GNU/Linux user@socrate:~$ RSA, версия 2.0 [user@test user]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub. The key fingerprint is: 7f:2b:75:4d:dc:01:06:63:e9:90:dc:a0:71:67:a2:40 user@test [user@test user]$ Каталог .ssh/ на сервере должен иметь права доступа 700. Скопируйте открытый ключ на удаленный хост или добавьте его к файлу, если он уже существует и содержит другие ключи. [user@test user]$ scp .ssh/id_rsa.pub user@192.168.0.206:/home/user/.ssh/test_pub_key id_rsa.pub 100% 219 2.6MB/s 00:00 [user@test user]$ ssh user@192.168.0.206 cat .ssh/test_pub_key >> .ssh/authorized_keys Warning: No xauth data; using fake authentication data for X11 forwarding. [user@test user]$ Настройка маршрутизации X-протокола На сервере в файле /etc/ssh/sshdconfig должна присутствовать строка: X11Forwarding yes На клиенте мы должны использовать опцию -X: [user@test user]$ ssh -X user@192.168.0.206 Warning: No xauth data; using fake authentication data for X11 forwarding. Linux socrate 2.6.5 #8 Sun Apr 4 15:29:35 CEST 2004 i686 GNU/Linux Last login: Wed Aug 18 19:15:29 2004 from 192.168.0.42 user@socrate:~$ 1.1 Упражнения Упражнение 1 : Когда вы аутентифицируетесь на новом сервере с помощью SSH, как вы можете узнать, что «отпечаток» ключа, предоставленный вам, корректен? Как вы можете в этом убедиться? Работает ли асимметричная аутентификация с утилитой scp ? Настройте вашу систему на использование алгоритма шифрования RSA и протокола SSH 2 для удаленного входа в систему Используйте утилиты scp и sftp с асимметричной аутентификацией 1.1 Решения Решение 1 : Проверив отпечаток сервера у его администратора (например, по телефону). Да Следуйте инструкциям этой главы 1 Поддержание безопасности системы Ключевые файлы, термины и утилиты: Tripwire telnet nmap 1.2 Выполнение задач по поддержанию безопасности Введение Безопасность – это не состояние и не результат, а непрекращающийся процесс. Это означает, что администратор должен просматривать файлы журналов каждый день, устанавливать обновления для системы, применять патчи, в частности, устраняющие проблемы с безопасностью, запускать сканеры, выявляющие потенциальные уязвимости (такие как Nessus), запускать системы обнаружения вторжений (на уровне хоста, такие как Tripwire или на уровне локальной сети как Snort) и т.п... Работа администратора по обеспечению безопасности занимает полный рабочий день. Основы Kerberos Введение: Kerberos - это механизм аутентификации, созданный в MIT (Massachusets Institute of Technology – Массачусетский Технологической Институт). Этот механизм использует сильное шифрование данных и аутентификацию для удостоверения обмена данными между клиентом и сервером или приложениями. Каждое приложение, которое хочет использовать механизм аутентификации Kerberos, должно иметь встроенную поддержку Kerberos. Большинство приложений, таких как клиенты telnet или ftp были переписаны с поддержкой kerberos. Важно знать, что локальные приложения вашей компании могут потребовать доработки, чтобы сделать их совместимыми с kerberos. Как это работает: Клиент (или сервис, или пользователь) посылает запрос на получение билета (авторизации для клиента, позволяющей использовать определенный сервис в течение определенного периода времени) на сервер Kerberos, именуемый KDC (Key Distribution Center – центр распределения ключей – этот сервер содержит базу паролей клиентов). KDC генерирует билет (TGT : Ticket Granting Ticket), шифруя его паролем клиента, и отсылает обратно. Клиент расшифровывает билет и использует его для доступа к сервису. Настройка: Kerberos использует следующие конфигурационные файлы: /etc/kerberos/krb5kdc/kdc.conf /etc/kerberos/krb5kdc/kadm5.acl Затем нужно предпринять следующие шаги: Создать базу данных с помощью основной утилиты Kerberos: kdb5_util Добавить администраторов Kerberos с помощью kadmin Запустить демоны Kerberos: /etc/rc.d/init.d/kadmin /etc/rc.d/init.d/kprop /etc/rc.d/init.d/krb524 /etc/rc.d/init.d/krb5kdc /etc/rc.d/init.d/krb5server Создать хосты и сервисы в базе KDC с помощью kadmin Установить Kerberos на клиентские машины Быть в курсе Очень важно регулярно просматривать главные списки рассылки, посвященные безопасности. В них публикуется информация о новых уязвимостях. Существует несколько списков рассылки, относящихся к безопасности: BugTraq (www.securityfocus.com) - наиболее известный список рассылки, посвященный компьютерной безопасности. Почти все уязвимости попадают в этот список, иногда с инструкциями по их эксплуатации или описанием. CERT / CC (Computer Emergency Response Team / Coordination Center www.cert.org) - Центр экспертизы безопасности Интернета. Обрабатывает информацию об уязвимостях, поддерживая базу данных, а также предоставляют услуги по обучению в области безопасности (сертификация и т.п.) CIAC (www.ciac.org) - консультативная служба компьютерных сбоев, поддерживаемая Министерством Энергетики США. Выполняет почти ту же работу, что и CERT/CC, но для Министерства Энергетики. Выявление открытых почтовых ретрансляторов Открытый почтовый ретранслятор (open relay) - это почтовый сервер, принимающий соединения от всех и вся. Такие серверы используются спамерами для рассылки спама. Проверка на то, что сервер является открытым релеем, довольно проста: [user@test user]$ telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 test@domain.org ESMTP Sendmail 8.12.11/8.12.11; Wed, 18 Aug 2004 22:06:55 +0200 HELO test 250 test@domain.org Hello localhost [127.0.0.1], pleased to meet you mail from: spammer@whatever.com 250 2.1.0 spammer@whatever.com... Sender ok rcpt to: someone@domain.org 250 2.1.5 someone@domain.org... Recipient ok DATA 354 Enter mail, end with "." on a line by itself test open relay . 250 2.0.0 i7IK6tPp009873 Message accepted for delivery ^] telnet> Connection closed. [user@test user]$ Почтовый сервер должен принимать «заказ» на отправку почты только от известных пользователей. В наши дни, почтовые сервера по умолчанию настроены на запрет открытой ретрансляции. Системы обнаружения вторжений Tripwire : Tripwire - это утилита обнаружения вторжений. Эта программа осуществляет мониторинг изменений ключевых файлов, отслеживая контрольные суммы, размеры, и т.п. Tripwire выявляет и генерирует отчеты об изменениях в тысячах стратегически важных системных файлов. Если утилита обнаружила измененный файл, то вы решаете, является ли это изменение результатом нормальных действий в системе. Если это так, модифицируйте базу Tripwire, чтобы это изменение перестало попадать в отчет. Если же изменение не является результатом нормальной деятельности, исследуйте его на предмет потенциального взлома. Настройка: Два конфигурационных файла: /etc/tripwire/twcfg.txt ROOT POLFILE DBFILE REPORTFILE SITEKEYFILE LOCALKEYFILE EDITOR LATEPROMPTING LOOSEDIRECTORYCHECKING MAILNOVIOLATIONS EMAILREPORTLEVEL REPORTLEVEL MAILMETHOD SYSLOGREPORTING MAILPROGRAM =/usr/sbin =/etc/tripwire/tw.pol =/var/lib/tripwire/$(HOSTNAME).twd =/var/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr =/etc/tripwire/site.key =/etc/tripwire/$(HOSTNAME)-local.key =/bin/vi =false =false =true =3 =3 =SENDMAIL =false =/usr/sbin/sendmail -oi -t Здесь мы задаем главные настройки Tripwire. /etc/tripwire/twpol.txt ... [пропущено] ... @@section GLOBAL TWROOT=/usr/sbin; TWBIN=/usr/sbin; TWPOL="/etc/tripwire"; TWDB="/var/lib/tripwire"; TWSKEY="/etc/tripwire"; TWLKEY="/etc/tripwire"; TWREPORT="/var/lib/tripwire/report"; HOSTNAME=localhost; @@section FS SEC_CRIT = $(IgnoreNone)-SHa ; SEC_SUID = $(IgnoreNone)-SHa ; set SEC_BIN = $(ReadOnly) ; SEC_CONFIG = $(Dynamic) ; infrequently but accessed often SEC_LOG = $(Growing) ; change ownership SEC_INVARIANT = +tpug ; permission or ownership SIG_LOW = 33 ; security impact SIG_MED = 66 ; significant security impact SIG_HI = 100 ; points of vulnerability # Critical files that cannot change # Binaries with the SUID or SGID flags # Binaries that should not change # Config files that are changed # Files that grow, but that should never # Directories that should never change # Non-critical files that are of minimal # Non-critical files that are of # Critical files that are significant ... [SNIP] ... ( rulename = "Kernel Administration Programs", severity = $(SIG_HI) ) { /sbin/adjtimex /sbin/ctrlaltdel /sbin/depmod /sbin/insmod /sbin/insmod.static /sbin/insmod_ksymoops_clean /sbin/klogd /sbin/ldconfig /sbin/minilogd /sbin/modinfo -> -> -> -> -> -> -> -> -> -> $(SEC_CRIT) $(SEC_CRIT) $(SEC_CRIT) $(SEC_CRIT) $(SEC_CRIT) $(SEC_CRIT) $(SEC_CRIT) $(SEC_CRIT) $(SEC_CRIT) $(SEC_CRIT) ; ; ; ; ; ; ; ; ; ; #/sbin/nuactlun #/sbin/nuscsitcpd /sbin/pivot_root /sbin/sndconfig /sbin/sysctl -> $(SEC_CRIT) ; -> $(SEC_CRIT) ; -> $(SEC_CRIT) ; -> $(SEC_CRIT) ; -> $(SEC_CRIT) ; } Здесь мы задаем то, какие атрибуты и для каких файлов мы собираемся проверять. Каждый файл является объектом, для которого задается маска свойств : Свойство Атрибут объекта Свойство Атрибут объекта a Время доступа p Права и режим доступа b Число занятых на диске блоков r ID устройства, на которое указывает дескриптор (допустимо только для файлов устройств) c Время создания/изменения дескриптора файла s Размер файла d ID устройства, на котором находится дескриптор файла t Тип файла g ID группы, владельца файла u ID владельца файла i Номер дескриптора C Хэш CRC-32 l Файл увеличивается в размере H Хэш Haval m Время модификации M Хзш MD5 n Число ссылок S Хзш SHA В Tripwire существует набор предопределенных переменных – комбинаций свойств: Переменная Маска свойств Что делает $(ReadOnly) +pinugtsdbmCM-rlacSH Переменная ReadOnly подходит для доступных всем файлов, которые, тем не менее, должны оставаться доступными только для чтения. $(Dynamic) +pinugtd-srlbamcCMSH Dynamic подходит для мониторинга каталогов и файлов, которые имеют тенденцию к изменению. $(Growing) +pinugtdl-srbamcCMSH Переменная Growing подходит для файлов, которые должны только увеличиваться в размере. $(Device) +pugsdr-intlbamcCMSH Device хорош для устройств или других файлов, которые Tripwire не должен пытаться открыть. $(IgnoreAll) -pinugtsdrlbamcCMS IgnoreAll отслеживает присутствие или отсутствие файла, но не проверяет другие свойства. $(IgnoreNone) +pinugtsdrbamcCMSH-l IgnoreNone проверяет все свойства, и предоставляет разумный начальный вариант для задания вашей собственной маски. (Например, mymask = $(IgnoreNone) -ar;). Имейте в виду, что свойство l (растущий файл) не отслеживается маской $(IgnoreNone). Третий конфигурационный файл: /etc/tripwire/twinstall.sh. Этот скрипт должен быть запущен после установки. [root@test tripwire]# ./twinstall.sh ---------------------------------------------The Tripwire site and local passphrases are used to sign a variety of files, such as the configuration, policy, and database files. Passphrases should be at least 8 characters in length and contain both letters and numbers. See the Tripwire manual for more information. ---------------------------------------------Creating key files... ... [пропущено] ... ---------------------------------------------Signing policy file... Please enter your site passphrase: Wrote policy file: /etc/tripwire/tw.pol A clear-text version of the Tripwire policy file /etc/tripwire/twpol.txt has been preserved for your inspection. This implements a minimal policy, intended only to test essential Tripwire functionality. You should edit the policy file to describe your system, and then use twadmin to generate a new signed copy of the Tripwire policy. [root@test tripwire]# На следующем шаге необходимо инициализировать базу tripwire: [root@test tripwire]# tripwire --init Please enter your local passphrase: Parsing policy file: /etc/tripwire/tw.pol Generating the database... *** Processing Unix File System *** ... [пропущено] ... Wrote database file: /var/lib/tripwire/test.twd The database was successfully generated. [root@test tripwire]# Теперь мы можем проверить систему с помощью этой базы: [root@test tripwire]# tripwire --check ... [пропущено] ... Tripwire(R) 2.3.0 Integrity Check Report Report generated by: Report created on: Database last updated on: Thu Aug 19 11:06:11 2004 Never ============================================================================= Report Summary: ============================================================================= Host name: Host IP address: Host ID: Policy file used: Configuration file used: Database file used: Command line used: test Unknown IP None /etc/tripwire/tw.pol /etc/tripwire/tw.cfg /var/lib/tripwire/test.twd tripwire --check ============================================================================= Rule Summary: ============================================================================= ----------------------------------------------------------------------------Section: Unix File System ----------------------------------------------------------------------------Rule Name Modified --------Invariant Directories Temporary directories * Tripwire Data Files Critical devices Severity Level Added Removed -------------- ----- ------- ------- 66 33 100 100 0 0 1 0 0 0 0 0 0 0 0 0 ... [SNIP] ... ----------------------------------------------------------------------------*** End of report *** Tripwire 2.3 Portions copyright 2000 Tripwire, Inc. Tripwire is a registered trademark of Tripwire, Inc. This software comes with ABSOLUTELY NO WARRANTY; for details use --version. This is free software which may be redistributed or modified only under certain conditions; see COPYING for details. All rights reserved. Integrity check complete. [root@test tripwire]# После проверки tripwire генерирует отчет с именем – временем запуска. Этот отчет находится в каталоге /var/lib/tripwire/report : [root@test root]# ls /var/lib/tripwire/report/ test-20040819-110611.twr [root@test root]# Если обнаруженные изменения - результат нормальной работы системы, то мы можем обновить базу. Если это не так, мы должны проверить, что система не была взломана. Обновление базы tripwire: [root@test tripwire]# /usr/sbin/tripwire --update --twrfile /var/lib/tripwire/report/test-20040819-110611.twr Please enter your local passphrase: Wrote database file: /var/lib/tripwire/test.twd [root@test tripwire]# Snort : Введение: Snort - это система обнаружения вторжений с открытым исходным кодом, способная выполнять анализ трафика в реальном времени и регистрацию пакетов в IP-сетях. Утилита может выполнять анализ протоколов, поиск определенного содержимого и может быть использована для обнаружения различных атак и зондирований, таких как переполнение буфера, сканирование портов, атак на CGI, зондирований SMB, попыток определения операционной системы и многого другого. Snort также может быть использован для прослушивания трафика: [root@test root]# snort -v Running in packet dump mode Log directory = /var/log/snort Initializing Network Interface eth0 --== Initializing Snort ==-Initializing Output Plugins! Decoding Ethernet on interface eth0 --== Initialization Complete ==--*> Snort! <*Version 2.1.0 (Build 9) By Martin Roesch (roesch@sourcefire.com, www.snort.org) 08/19-12:15:15.663264 0.0.0.0:68 -> 255.255.255.255:67 UDP TTL:128 TOS:0x0 ID:17587 IpLen:20 DgmLen:328 Len: 300 =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ 08/19-12:15:19.668662 0.0.0.0:68 -> 255.255.255.255:67 UDP TTL:128 TOS:0x0 ID:17589 IpLen:20 DgmLen:328 Len: 300 =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ 08/19-12:15:21.192426 ARP who-has 192.168.0.254 tell 192.168.0.42 08/19-12:15:21.192587 ARP reply 192.168.0.254 is-at 0:C0:9F:2F:7E:DD 08/19-12:15:21.192598 192.168.0.42:33122 -> 199.107.65.177:80 TCP TTL:64 TOS:0x0 ID:34789 IpLen:20 DgmLen:60 DF ******S* Seq: 0x2D71BAF6 Ack: 0x0 Win: 0x16D0 TcpLen: 40 TCP Options (5) => MSS: 1460 SackOK TS: 10370323 0 NOP WS: 0 =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ ... [пропущено] ... более подробный вывод: [root@test root]# snort -vde Running in packet dump mode Log directory = /var/log/snort Initializing Network Interface eth0 --== Initializing Snort ==-Initializing Output Plugins! Decoding Ethernet on interface eth0 --== Initialization Complete ==--*> Snort! <*Version 2.1.0 (Build 9) By Martin Roesch (roesch@sourcefire.com, www.snort.org) 08/19-12:16:23.135164 0:40:F4:98:D2:D9 -> 0:C0:9F:2F:7E:DD type:0x800 len:0x62 192.168.0.42 -> 4.2.2.1 ICMP TTL:64 TOS:0x0 ID:0 IpLen:20 DgmLen:84 DF Type:8 Code:0 ID:35600 Seq:1 ECHO F7 7D 24 41 E3 0F 02 00 08 09 0A 0B 0C 0D 0E 0F .}$A............ 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F ................ 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F !"#$%&'()*+,-./ 30 31 32 33 34 35 36 37 01234567 =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ 08/19-12:16:23.441050 0:C0:9F:2F:7E:DD -> 0:40:F4:98:D2:D9 type:0x800 len:0x62 4.2.2.1 -> 192.168.0.42 ICMP TTL:244 TOS:0x0 ID:17833 IpLen:20 DgmLen:84 DF Type:0 Code:0 ID:35600 Seq:1 ECHO REPLY F7 7D 24 41 E3 0F 02 00 08 09 0A 0B 0C 0D 0E 0F .}$A............ 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F ................ 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F !"#$%&'()*+,-./ 30 31 32 33 34 35 36 37 01234567 =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ Настройка: Мы хотим запустить snort в режиме демона, обнаруживающего внешние вторжения. Главный конфигурационный файл snort /etc/snort/snort.conf : #-------------------------------------------------# http://www.snort.org Snort 2.1.0 Ruleset # Contact: snort-sigs@lists.sourceforge.net #-------------------------------------------------# $Id: snort.conf,v 1.133 2003/12/18 17:05:07 cazz Exp $ # ################################################### # This file contains a sample snort configuration. # You can take the following steps to create your own custom configuration: # # 1) Set the network variables for your network # 2) Configure preprocessors # 3) Configure output plugins # 4) Customize your rule set # ################################################### ... [пропущено] ... Эти комментарии отражают главные шаги настройки Snort: Задание локальной сети: мы сообщаем snort наш IP-адрес, а также, что является нашей сетью, а что внешней Настройка процессоров: процессоры - это расширения snort выполняющие какие-либо действия. Например, существуют процессоры, декодирующие HTTP-трафик. Как правило, работа процессоров занимает существенную часть процессорного времени. Настройка подключаемых модулей вывода данных: позволяют выбрать, осуществлять ли регистрацию данных в текстовом файле, базе данных SQL или где-либо еще. Настройка набора правил: правила задают то, что должен отслеживать snort. Правила помещаются в несколько файлов, в зависимости от их типа. В этом месте мы должны выбрать, что мы хотим отслеживать (например, деактивируйте мониторинг сервера IIS, если его нет в вашей сети) Правила Snort обычно находятся в /etc/snort/rules : [root@test root]# ls /etc/snort/rules/ attack-responses.rules experimental.rules shellcode.rules web-cgi.rules backdoor.rules exploit.rules smtp.rules web-client.rules bad-traffic.rules finger.rules snmp.rules web-coldfusion.rules chat.rules ftp.rules sql.rules web-frontpage.rules ddos.rules icmp-info.rules telnet.rules web-iis.rules deleted.rules icmp.rules tftp.rules web-misc.rules dns.rules imap.rules virus.rules web-php.rules dos.rules info.rules web-attacks.rules x11.rules [root@test root]# local.rules p2p.rules misc.rules policy.rules multimedia.rules pop2.rules mysql.rules pop3.rules netbios.rules porn.rules nntp.rules rpc.rules oracle.rules rservices.rules other-ids.rules scan.rules Простое правило выглядит следующим образом: alert tcp $EXTERNAL_NET any -> $HOME_NET 21 (msg:"FTP CWD ..."; flow:to_server,established; content:"CWD"; nocase; content:"..."; classtype:bad-unknown; sid:1229; rev:5;) Это правило означает, что snort должен подать сигнал тревоги, если он получит пакет, пришедший из внешней сети и адресованный нашей локальной сети, предназначенный для порта FTP и содержащий строку “CWD”. Чтобы запустить демон snort: [root@test root]# /etc/init.d/snortd start Starting snort: [root@test root]# [ OK ] 1.1 Упражнения Упражнение 1 : Изучите основы kerberos Посетите списки рассылки, посвященные компьютерной безопасности Проверьте почтовый сервер на доступность спамерам Упражнение 2 : Установите и настройте tripwire Настройте конфигурационный файл Измените какой-нибудь файл и запустите проверку: tripwire –check Упражнение 3 : Настройте Snort Протестируйте snort, выполнив какие-нибудь простые атаки, отслеживайте записи в файлах журналов 1.1 Решения Решение 1 : http://www.securityfocus.com/archive/1 http://www.cert.org/ http://www.ciac.org/ciac/index.html Следуйте инструкциям этой главы Решение 2 : Следуйте инструкциям этой главы Устранение неполадок в работе сети В этой главе 1.1 Поиск неисправностей в работе сети .......................................... Устранение неполадок в работе сети ..................................................................................................... 205 1 Поиск неисправностей в сети ................................................................................................................206 1 Поиск неисправностей в сети Ключевые файлы, термины и утилиты: /sbin/ifconfig /sbin/route /bin/netstat /etc/network || /etc/sysconfig/network-scripts/ system log files such as /var/log/syslog && /var/log/messages /bin/ping /etc/resolv.conf /etc/hosts /etc/hosts.allow && /etc/hosts.deny /etc/hostname || /etc/HOSTNAME /sbin/hostname /usr/sbin/traceroute /usr/bin/nslookup /usr/bin/dig /bin/dmesg host 1.2 Поиск неисправностей в работе сети Когда у вас возникает проблема в работе сети, лучше всего искать её, последовательно рассматривая все уровни сетевой топологии. Например: mii-tool или ethertool, проверка того, что сетевой кабель подключен к сетевой карте Проверка локального IP-адреса с помощью ping Запуск ping для IP-адреса маршрутизатора, для DNS-сервера, ... Запуск ping по имени компьютера Обращение с помощью telnet или netcat к серверу Проверка наличия трафика на маршрутизаторе Запуск ping для компьютера вне локальной сети Обращение с помощью telnet или netcat к серверу, расположенному вне локальной сети Наблюдайте за журналами syslog и другими регистрационными файлами на своём компьютере и серверах в процессе выполнения проверок.. Всегда проверяйте содержимое /var/log/syslog и /var/log/message Тест для закрепления знаний В этой главе Тест для закрепления знаний ...................................................................................................................208 1 Тест .........................................................................................................................................................209 2 Ответы к тесту .........................................................................................................................................212 3 Авторы .....................................................................................................................................................213 1 Тест A) Как вывести на экран текущее содержимое кэша ARP ? 1. netstat -arp 2. arp -a 3. arp -l 4. cat /proc/arp B) Вы хотите запретить доступ к вашему внутреннему HTTP-серверу из внешней сети. Какое правило iptables следует добавить на межсетевом экране ? 1. iptables -A FORWARD -p tcp -s ! $LOCAL_NET -d $WEB_SERVER --dport 80 -j DROP 2. iptables -A INPUT -p tcp -s $LOCAL_NET -d $WEB_SERVER -dport 80 -j DROP 3. iptables -A INPUT -p tcp -s not $LOCAL_NET -d $WEB_SERVER --dport 80 -j DROP 4. iptables -A FORWARD -p tcp -s not $LOCAL_NET -d $WEB_SERVER --dport 80 -j DROP C) В чем состоит разница между параметрами «requisite» и «require» в технологии PAM ? 1. Нет разницы 2. require более строг 3. requisite более строг D) Какой файл необходимо изменить, чтобы перенаправить системный журнал в /dev/tty12 ? 1. /etc/securetty 2. /etc/inittab 3. /etc/syslog.conf 4. /etc/sysconfig/tty E) Как называется сервер репликаций OpenLDAP ? 1. slapd 2. slapd-slave 3. smackd 4. slurpd F) При подключении к вашему DNS-серверу по SSH, вы получили сообщение: “WARNING : REMOTE HOST AUTHENTICATION HAS CHANGED”. Что произошло ? 1. Вы забыли перезапустить демон SSH после установки 2. Вы переустановили сервер OpenSSH, очистив все его конфигурационные файлы 3. Ваш SSH-клиент не совместим с SSH-сервером 4. Это бывает лишь с серверами в других сетях G) Вам необходимо установить DHCP-сервер на предприятии, где вы работаете. DHCP будет использоваться всеми машинами, но сервера должны получать статичные IPадреса. Как DHCPD распознает эти сервера ? 1. По их IP-адресу 2. По их имени хоста 3. По их MAC-адресу 4. Присвоить статичные IP-адреса машинам невозможно. DHCP всегда выдает динамические IP-адреса. H) Ваш DNS-сервер выдает ошибку при старте. Какую утилиту вы используете для того, чтобы проверить конфигурационные файлы named ? 1. bind-checkconf 2. named-checkconf 3. bind-conf 4. named-conf I) Что из перечисленного не является защищенным VPN-протоколом ? 1. PPOE 2. IPSEC 3. PPTP 4. CIPE J) В Kerberos, клиенты получают билеты в : 1. KSC 2. KTC 3. KDC 4. KGC K) В чем состоит отличие между Snort и Tripwire : 1. Tripwire - это HIDS (система обнаружения вторжений хоста), а Snort – NIDS (сетевая система обнаружения вторжений) 2. Tripwire следит за активностью на хосте, тогда как Snort следит за активностью на хосте и в сети 3. Tripwire может работать в режиме демона, а Snort нет 4. Оба этих продукта используют базу данных подозрительных действий 1 Ответы к тесту A) 2 B) 1 C) 3 D) 3 E) 4 F) 2 G) 3 H) 2 I) 1 J) 3 K) 1 2 Авторы Данный материал разработан компанией LynuxTraining. Перевод на русский язык: Агапова Ксения, Шабунио Юлия, Шер Павел Координатор перевода: Синицын Валентин Словарь терминов 10BaseT Сеть Ethernet по UTP-кабелям, с использованием концентраторов для получения топологии звезды; теоретически имеет максимальную скорость передачи 10 Mbit/s. 100BaseT Сеть Ethernet по UTP-кабелям, с использованием концентраторов для получения топологии звезды; теоретически имеет максимальную скорость передачи 100 Mbit/s. ALT ANSI Клавиша Alt (Alternative) на клавиатуре. Национальный Институт Стандартизации США (American National Standards Institute). Набор стандартов, которым отвечают большинство протоколов. API Программный интерфейс приложения (Application Programming Interface). Спецификация, позволяющая при написании программ иметь простой доступ к функциям библиотеки или другим системным ресурсам; функциональность операционной системы доступна через API. ARP ASCII ATA Протокол разрешения адреса (Address Resolution Protocol), см. RFC826. Низкоуровневый протокол который по IP адресу в локальной сети определяет Ethernet MAC адрес соответствующего интерфейса. Американский национальный стандартный код для обмена информацией (American National Standard Code for Information Interchange). Спецификация символов, широко используемая в мире UNIX и не только в нем. Популярный 16-битный стандарт интерфейса, который позволяет ISA шине в IBM PC-AT присоединять внешние устройства; включает 5 поколений; первоначальный ATA больше известен как IDE. ATAPI Пакетный интерфейс периферийных устройств для АТ-совместимых компьютеров (AT Attachment Packet Interface). Усовершенствование протокола ATA, позволяющее подключать приводы компакт-дисков и прочее. BIOS BSD Базовая система ввода-вывода (Basic Input/Output Operating System). Простая низкоуровневая операционная система, которая обеспечивает единообразный API к высокоуровневым операционным системам. Система Беркли (Berkeley Systems Distribution). Вариант UNIX, первоначально разработанный в Калифорнийском университете (University of California). BUGTRAQ Список почтовой рассылки для дискуссий, посвященных сетевой безопасности (демоны, программы, операционные системы, маршрутизаторы). C C++ Компилируемый язык программирования, тесно связанный с UNIX. Объектно-ориентированный язык программирования, базирующийся на языке C. CD-ROM Компакт-дисковое запоминающее устройство (Compact Disc Read Only Memory). Довольно популярный съемный носитель, известный в нескольких вариациях, наиболее широко используется ISO9660. CERT CGI CHAP char CIDR CIFS CPU Группа компьютерной "скорой помощи" (Computer Emergency Response Team). Коллектив людей, изучающих безопасность Интернета и обеспечивающих службу устранения неполадок; см. http://www.. Общий шлюзовой интерфейс (Common Gateway Interface). Стандарт, позволяющий приложениям сервера запускаться в ходе выполнения HTTP-запроса. Протокол аутентификации с предварительным согласованием вызова (Challenge Handshake Authentication Protocol). Тип данных C (обычно один байт), используемый для представления символов. Бесклассовая маршрутизация между доменами (Classless Inter-Domain Routing). См RFC1519; ср. Маска подсети переменной длины. Общий протокол доступа к файлам Интернет (Common Internet File System). Преемник SMB от Microsoft, набор протоколов для доступа в файлам и службам печати. Центральный процессор (Central Processing Unit). Главный компонент, позволяющий компьютеру работать; в настоящее время часто называется "микропроцессор" и располагается в отдельной кремниевой микросхеме (ср. Процессор). CSLIP Сокращенный протокол интерфейса линии последовательной передачи (Compressed Serial Line IP). SLIP с добавленным VJ сжатием заголовков IP. См RFC1144. CTRL Клавиша Control на клавиатуре. Debian DEBorah & IAN (Murdock). Дистрибутив GNU/Linux, распространяемый организацией добровольцев. DEL DES DHCP DMA DNS EIDE Клавиша Delete на клавиатуре. Стандарт шифрования данных (Data Encryption Standard). Стандарт для шифрования данных, одобренный правительством США, в настоящее время считается незащищенным от мощных атак. Протокол динамической конфигурации узла (Dynamic Host Configuration Protocol). Обеспечивает автоматическое назначение IP-адресов и других данных конфигурации от сервера к клиенту. Позволяет использовать IP-адреса повторно, так что число узлов может превышать число доступных IP адресов. См. RFC2131, ср. BOOTP. Прямой доступ к памяти (Direct Memory Access). Протокол оборудования, позволяющий специальному устройству (контроллеру DMA) передавать блоки данных от буферной памяти периферийного устройства непосредственно основной памяти без привлечения CPU; ср. PIO. Служба имен доменов (Domain Name System). Иерархически построенная распределенная служба каталогов, которая переводит имена, распознаваемые человеком, такие как www.lpi.org в соответствующие IP-адреса. См. RFC's 1034 и 1035, а также 1032 и 1033. Улучшенный IDE (Enhanced IDE). Запатентованное Western Digitals расширение стандарта интерфейса IDE с свойствами ATA-2 и ATAPI, используемое при подключении жестких дисков и приводов компакт-дисков к ПК. e-mail Электронная почта. ESC Клавиша Escape на клавиатуре. Ethernet Разновидность интерфейса для компьютерной сети LAN, использующая коаксиальный кабель (10Base2 или 10Base5) или кабели UTP (10BaseT или 100BaseT). Спецификации описаны в IEEE стандарте 802.2. ср. MAC. FAT FHS Таблица размещения файлов (File Allocation Table). Простая файловая система, использующая таблицу для индексирования файлов на блочном устройстве (гибком или жестком диске). Имеет разновидности FAT-12 (MS-DOS), FAT-16 (MS-DOS, MS-Windows 3.x) и "FAT-32" (MS-Windows 9x). Стандарт иерархии файловых систем (Filesystem Hierarchy Standard). Предлагаемый стандарт для расположения файлов в системе Unix. См. http://www.pathname.com/. forwarding Действие, заключающееся в получении электронной почты и пересылке ее на другой адрес. FSF Фонд Свободного Программного Обеспечения (Free Software Foundation) : освобождающая от уплаты налогов благотворительная организация, привлекающая средства для оплаты работ над проектом GNU; см. http://www.fsf.org. FSSTND Стандарт для расположения файлов в системе Linux; заменен на FHS. FTP GB GID GNU GPL Протокол передачи файлов (File Transfer Protocol). Протокол для передачи файлов по Интернету, а также приложение, совершающее эту передачу. См. RFC959. Гигабайт, Gb : 1000 (реже 1024) MB (1,000,000,000 или 1,048,576,000 или 1,073,741,824 байт) ID группы. ГНУ (GNU's Not Unix). Проект FSF для Unix(R)(TM)-совместимых утилит и программ, основанный исключительно на свободном исходном коде. Универсальная Общественная Лицензия (General Public License). Лицензия для распространения свободного программного обеспечения, которая разрешает копирование, изменение и перераспространение. Создана FSF для проектов, подобных GNU, также применима и к Linux. См. http://www.gnu.org/copyleft/gpl.html. HDLC Высокоуровневый протокол управления каналом (High-level Data Link Control). Стандарт ISO/IEC 3309; соответствует PPP. HOWTO Набор документов определенной тематики, формирующий ощутимую часть документации по Linux. Происходит от LDP, и, большей частью, публикуется им же. HTML HTTP Язык гипертекстовой разметки (HyperText Markup Language). Стандарт для определения структуры документа, определяемой тегами в тексте документа; используется в WWW совместно с HTTP. Протокол гипертекстовой передачи (HyperText Transfer Protocol). Серия протоколов на уровне приложения, используемых для связи между WWW-браузером и WWW-сервером. См. RFC2616. I/O ICMP ID IDE IEEE IMAP IP IRQ ISA ISDN ISO KB kbit/s Ввод/Вывод (Input/Output). Протокол управляющих сообщений в сети Internet (Internet Control Message Protocol). Необходимый протокол (RFC792) для уведомления об ошибках между шлюзами и узлами в сетях на основе IP. Действует на уровне протокола IP внутри сетевого уровня. Идентификатор. Встроенный интерфейс дисковых устройств (Integrated Drive Electronics). Популярный интерфейс для подключения жестких дисков к ПК, при этом электронные устройства контроллера расположены не на отдельной карте ПК, а встроены в дисковое устройство; См. также ATA. Институт инженеров по электротехнике и электронике (Institute of Electrical and Electronics Engineers). Базирующаяся в США международная организация профессиональных инженеров; также орган стандартизации. Протокол доступа к сообщениям в сети Интернет (Internet Message Access Protocol). См. RFC2060 на IMAP4. Протокол Интернета (Internet Protocol). Протокол сетевого уровня, используемый в IP-сетях. См. RFC791. Запрос на прерывание (Interrupt ReQuest). Архитектура, соответствующая промышленному стандарту (Industry Standard Architecture). Устаревший стандарт PC-шины. Цифровая сеть связи с комплексными услугами (Integrated Services Digital Network). Протокол для узкоканальной передачи, используемый телефонными компаниями для получения одного, двух, или более B-каналов (каналов-носителей) со скоростью передачи 64 Kbit/s каждый, по медным проводам длиной до 5.5 км. Каждый B-канал может быть использован для обеспечения высококачественной голосовой связи, службы факсов или передачи данных. Международная организация по стандартизации (International Standards Organization). Один из нескольких органов, учреждающих стандарты, в том числе и компьютерные. Килобайт, kb, kB, 1024 байт. Килобит в секунду, kbps, Kbps, Kbit/s. Скорость передачи данных, равная 1000 бит в секунду. Kbyte/s Килобайт в секунду, kbps, Kbps, KBps, KB/s, kbyte/s. Скорость передачи данных, равная 1024 байт в секунду. LAN LDP LILO Локальная сеть (Local Area Network). Небольшая сеть, как правило, из одного или нескольких сегментов, поддерживающая широковещательные передачи и прямые соединения между узлами; например, Ethernet, Token Ring, Appletalk и ARCNet; ср. WAN. Проект документирования Linux (Linux Documentation Project). Загрузчик Linux (Linux Loader). Загрузчик: программа, загружающая ядро Linux, с тем чтобы Linux мог запуститься; также может загружать другие операционные системы.. LLC LPI MAC Управление логическим соединением (Logical Link Control). Сетевой стандарт IEEE (#802.2), который действует внутри уровня 2 ISO/OSI : канального уровня, над подуровнем MAC. Имеет дело с определением ошибок, контролем переполнения и форматом кадров. Институт профессиональных пользователей Linux (Linux Professional Institute). Некоммерческая организация, основанная для создания широко поддерживаемых программ сертификации для Linux; см. http://www.lpi.org/. Управление доступом к носителю (Media Access Control). Уровень сетевого стандарта IEEE (#802.x) действующий в уровне 2 ISO/OSI: уровень связи данных, под подуровнем LLC. Имеет дело с методами доступа, определением ошибок, и форматами передач. Известными спецификациями IEEE MAC является Ethernet в своих разновидностях (#802.2) и Token Ring (#802.5?). MandrakeSoft Коммерческий дистрибутив Linux. MB Мегабайт, мег, Mb 1000 (или иногда 1024) KB (1,000,000 или 1,024,000 или 1,048,576 байт). Mbit/s Мегабит в секунду, Mbps. Скорость передачи данных, равная 1,000,000 бит в секунду. MBR Главная загрузочная запись (Master Boot Record). Область на внешнем цилиндре жесткого диска ПК, содержащая таблицу разделов. Таблица разделов состоит из четырех записей, определяющих тип, стартовый цилиндр и размеры разделов жесткого диска, коих может быть четыре штуки. Одна из этих записей помечена как 'активная'; это означает, что загрузка компьютера осуществляется с этого раздела. Гибкие диски не имеют MBR, поскольку у них нет таблицы разделов. Вместо этого, у них есть просто загрузочный сектор ( как у логического диска), содержащий таблицу описания носителя (Media Descriptor Table или MDT) и загрузчик операционной системы. MDT описывает формат гибкого или логического диска. MS-Windows NT 32-битовая операционная система от Microsoft(C)(R)(TM). MTU Максимальная единица передачи (Maximum Transfer Unit). Максимальный размер IP пакета, который принимается для передачи и не разбивается на датаграммы меньших размеров. NetBEUI Текущая реализация протокола NetBIOS, используемая в MS-DOS, MS-Windows и OS/2. NetBIOS по TCP/IP Уровень кода, реализующий API NetBIOSа, но применяющий датаграммы TCP и UDP, которые, в свою очередь, инкапсулированы в IP датаграммы. Поскольку IP является маршрутизируемым, это позволяет преодолеть самое существенное ограничение NetBIOS. См RFC's 1001, 1002, 1088. NetBIOS Облегченный транспортный протокол, разработанный Sytek, IBM и Microsoft для использования на персональных компьютерах. NFS NIS Сетевая файловая система (Network File System). Протокол, разработанный Sun Microsystems, позволяющий Unix машине присоединять область удаленного диска как часть локальной файловой системы; широко распространена, но сомнительной безопасности. Сетевая информационная система (Network Information System). Протоколы, обеспечивающие сетевые сервисы (такие как аутентификация) для NFS. offline Не подключенный к компьютерной системе или сети; ср. online. online Подключенный к компьютерной системе или сети; ср. Offline. OSI PAP PCI PID PIO PLIP PnP POP Взаимодействие открытых систем (Open Systems Interconnection). Концепция "связки" протоколов (поскольку "TCP/IP stack", как и "This damn Microsoft TCP/IP stack is so broken...") происходит из семиуровневой модели OSI, хотя и в TCP/IP имеется примерно четыре различных уровней (некоторые уровни объединены). См. физический, канальный, сетевой, транспортный, сеансовый, представительский и прикладной уровни (модель OSI); уровень сетевого доступа, сетевой уровень, транспортный и прикладной уровни, (набор TCP/IP). Протокол аутентификации по паролю (Password Authentication Protocol). Интерфейс периферийных компонент (Peripheral Components Interface). Шина ПК, для связи карт с процессором, заменившая первоначальную шину ISA. ID процесса (Process ID). Числовая переменная, используемая ядром для отслеживания процессов. Программируемый ввод/вывод (Programmed I/O). Технология, при помощи которой CPU выполняет нагруженный кодом цикл, в котором он копирует данные из буферной памяти периферийного устройства и записывает их в основную память; использовался в ранних версиях ATA, но был заменен DMA. IP по параллельной линии (Parallel Line IP). Протокол IP для параллельного кабеля (между двумя машинами, соединенными физически и не сильно отдаленными друг от друга). “Включай и работай” (Plug and Play). Почтовый протокол (Post Office Protocol). Протокол для извлечения почты с почтового сервера. См. RFC1939 (POP3). Различные серверные приложения имеют обычно имена, производные от 'pop': ipop3d, ipop2d, и popper. Postscript Язык описания страницы, разработанный и распространяемый Adobe Inc. Широко используется в лазерных принтерах, особенно в случаях, когда требуется высокое разрешение (например, при фотопечати). В Linux, различные приложения зачастую эмулируют его и для не-Postcript принтеров. PPID PPP RARP ID родительского процесса (Parent Process ID). Протокол двухточечного соединения (Point-to-Point Protocol). Протокол физического уровня (RFC1661), который может быть использован для инкапсуляции IP и других сетевых протоколов, обеспечивая отличное расширение протоколов LAN для пользователей коммутируемого доступа. Протокол определения сетевого адреса по местоположению узла (Reverse Address Resolution Protocol), rarp. Низкоуровневый протокол, который, по адресу оборудования (Ethernet MAC) в локальной сети возвращает соответствующий IP адрес, ср. ARP. README Важный документ, обычно поставляемый с пакетом программ, где уделяется внимание важным вопросам; Имя файла, как правило, пишется заглавными буквами, так что он оказывается вверху содержимого каталога. Red Hat Коммерческий дистрибутив Linux. RFC root RPC RPM SCSI Запросы на комментарии (Request For Comments). Официальная спецификация протоколов и стандартов Интернета. Учетная запись администратора (UID 0) на системах *nix, который имеет все привилегии; ср. Суперпользователь, а также самый верхний, первый, основной уровень (например: корневой каталог, "/"). Удаленный вызов процедуры (Remote Procedure Call). Управление пакетами Red Hat (Red Hat Package Management). Система, облегчающая установку, проверку, обновление и удаление пакетов Linux. За более подробной информацией обратитесь к HOWTO. Интерфейс малых компьютерных систем, произносится “скази” (Small Computer Systems Interface). Многоточечная архитектура шины, особенно удобная при одновременном внешнем и внутреннем подключении запоминающих устройств, таких как жесткие диски, ленточные накопители и приводы компакт-дисков. SGID Set Group ID, sgid. SLIP SMB SMTP SNR SUID SuSE TCP Межсетевой протокол для последовательного канала (Serial Line Internet Protocol). Способ инкапсуляции IP датаграммы для передачи по асинхронным модемным соединением. Смотри RFC1055, "A Non-Standard for Transmission of IP Datagrams over Serial Lines"; ср. PPP. Блок серверных сообщений (Server Message Block). Протокол, разработанный Microsoft, предназначенный для передачи вызовов API (первоначально MS-DOS, затем OS/2 и MS-Windows) и их аргументов по локальной сети NetBIOS; под Linux первоначально использовался как протокол для совместного использования файлов и принтеров с Windows машинами. Простой протокол электронной почты (Simple Mail Transfer Protocol). Общепринятый протокол, используемый почтовыми серверами для доставки электронной почты по Интернету. См. RFC821. Отношение сигнал/помеха (signal-to-noise ratio). Относительное количество полезной информации в сигнале, по сравнению с шумом, содержащимся в нем. Set User ID, suid. Для файлов Unix-совместимой файловой системы – разрешающий бит, делающий возможным порожденному процессу (то есть, полагая файл исполняемым) иметь те же права доступа к другим ресурсам, что у пользователя, создавшего файл, а не пользователя, создавшего процесс. Коммерческий дистрибутив Линукс. Протокол управления передачей (Transmission Control Protocol). Потоковый транспортный протокол, ориентированный на сеанс, обеспечивающий упорядочение, обнаружение и устранение ошибок, управление потоками, контроль перегрузки и мультиплексирование; ср. UDP. См. RFC793. TCP/IP Transmission Control Protocol / Internet Protocol. Комплект протоколов для передачи данных по сети Интернет. TIPS Test Item Processing System. Набор Python-скриптов, обеспечивающих web-интерфейс для управления тестами LPI. Смотри http://www.lpi.org/cgi-bin/tips.py. TFTP UDP UID UN*X URL USB Тривиальный FTP. Протокол, подобный FTP, но более простой и менее безопасный; используется главным образом для взламывания компьютеров и загрузки бездисковых сетевых клиентов. Смотри RFC1350. Протокол пользовательских датаграмм (User Datagram Protocol). Не ориентированный на соединение, не гарантирующий доставку транспортный протокол, обеспечивающий многократность и обнаружение ошибок в приложениях, требующих малотребовательный протокол для одноразовых транзакций; ср. датаграмма, пакет, TCP. См. RFC768. ID пользователя (User ID). Термин для обозначения любого варианта операционной системы UNIX(R)(TM), включая Linux и большое число других свободных и коммерческих систем; также *NIX. Универсальный локатор ресурса (Universal Resource Locator). Идентификатор для адреса в Интернете, которому предшествует имя протокола, используемого для достижения этого адреса (например: ftp://ftp.kernel.org/ ). Универсальная последовательная шина (Universal Serial Bus). Недавно разработанный стандарт шины для последовательного подключения периферийных устройств. user mask umask UTC UTP WAN Официальное мировое время. Неэкранированная витая пара (Unshielded Twisted Pair). Разновидность сетевого кабеля, содержащего несколько параллельных проводов, используемого для Ethernet. Сеть, как правило, имеет топологию звезды, содержит концентраторы и не требует терминаторов. Глобальная сеть (Wide Area Network). Сеть, связывающая географически разделенные объекты (и зачастую локальные сети в них), используя сетевые соединения типа “точка-точка” (выделенная линия, SLIP, PPP) или пакетную коммутацию (X.25, frame relay) и не поддерживающая такие свойств локальных сетей, как широковещательная передача и прямое соединение. Win-модем Модем, имеющий только цифровой обработчик сигналов ( Digital Signal Processor) и использующий приложения для MS-Windows на CPU компьютера для кодирования и декодирования данных. WINS WWW X XML Служба имен Интернет для Windows (Windows Internet Name Service). Автоматическая база данных имен NetBIOS для разрешения имен NetBIOS в адреса IP. Всемирная паутина (World Wide Web, web). Повсеместно распространяемый архив HTML документов, связанных посредством HTTP. X-Window. Система X Window : графический пользовательский интерфейс, разработанный в MIT и имеющий несколько разновидностей. Язык расширяемой разметки (eXtensible Markup Language). агент передачи сообщений Программа, маршрутизирующая электронную почту, основанную на заголовке RFC822 и вызывающая необходимого агента доставки, главным образом SMTP (RFC821) для маршрутизации почты к произвольному назначению. Например : exim, qmail, sendmail, smail. Смотри также RFC1711 и пользовательский почтовый посредник. адрес Область памяти или уникальный идентификатор, присвоенный интерфейсу какого-нибудь сетевого устройства, например, интерфейсу сетевого адаптера. активный Контекст, в котором процесс получает доступ к терминалу для вывода данных, то есть выполняется не в фоновом режиме. алгоритм Формальное описание процедуры, которая, будучи снабженной подходящими входными данными, выдаст результат, удовлетворяющий некоторым требованиям. аналоговый Соответствующий физическому количеству, принимающему любое значение из непрерывного диапазона. Например, таковым будет напряжение, используемое для кодирования громкости при передаче сигнала, передаваемого по стандартной медной телефонной линии. ср. Цифровой. аргумент Часть информации, передаваемой функции или команде. архив Резервные данные, хранимые в виде файла, содержащего один или более компонентов и их перечень (например, в формате tar, cpio, rpm или deb). ассемблер Программа, которая компилирует программу, написанную на языке ассемблера, в объектный код. база данных Как правило, большой набор упорядоченных и доступных данных. байт Тип данных, состоящий из 8 битов. библиотека Набор процедур (как правило, взаимосвязанных) для подключения к программе. бит Наименьшая единица информации : может принимать только одно из двух значений (0-1, вклвыкл, открыто-закрыто, и тп.). бит фиксации Sticky bit. Разрешающий бит для исполняемого файла, позволяющий ядру хранить в памяти образ процесса после его завершения, во избежание издержек новой загрузки при повторном запуске файла. блочное устройство Устройство, обменивающееся с операционной системой данными в виде блоков большого размера (например, 512 байт) за один прием. буфер Временное хранение; ср. Кэш. ввод Любые данные, вводимые в работающую программу или в файл. ветвление Когда исполняющийся процесс создает точно такой же (за исключением PID) выполняющийся дубликат самого себя; см. дочерний процесс, порождать. взламывать Получать доступ к компьютерной системе без соответствующей авторизации (например, путем угадывания пароля легального пользователя), и, быть может, мешать ее нормальной работе или целостности. взломщик Тот, что пытается совершить взлом; ср. Хакер. виртуальная консоль Виртуальный терминал, VT, VC. виртуальная память Дополнительная память, доступная системе, располагающаяся на жестком диске, и, следовательно, практически неограниченная, хотя и намного более медленная, нежели истинная ОЗУ. Часто называется подкачкой. виснуть ср. крах. владелец Учетная запись, чей номер UID связан с файлом. вызывать Приводить в исполнение. вывод Любые данные, созданные процессом. выгружать Освободить сервер от служб или приложений для высвобождения большего количества ресурсов (времени CPU, дискового пространства, и т.д.). выполнить Привести (программу) в состояние работы; ср. Запустить. гибкий диск Флоппи-диск. Магнитный носитель с гибким диском внутри; ср. жесткий диск. глобальный Переменная, раздел настройки, процедура, и тп, с неограниченной областью видимости (то есть, применимая везде, до тех пор пока не будет изменена локально). графика Картинки, рисунки; в отличие от текста. графический пользовательский интерфейс, GUI Интерактивный интерфейс, использующий графический дисплей. N.B. Используйте этот термин, только если он действительно графический (например, как X). Не используйте его для интерактивных программ на текстовых терминалах (на основе ncurses или slang). Для обозначения и тех, и других используйте "интерактивный интерфейс". Ср. Интерфейс командной строки. группа Относится к списку из одного или большего количества пользователей, обладающими одинаковыми правами доступа; см. /etc/groups. грязный Не чистый. дамп памяти Содержимое памяти, записанное в файл на диске (часто называемый "core") при крахе программы. данные "То, что дано", например, для ввода в компьютер; ср. Информация. датаграмма Пакет, используемый, главным образом, в UDP (Примечание: не только в IP – другие протоколы тоже используют термин “датаграмма” в собственной документации). двоичный файл Файл, который предназначен для чтения не человеком, а приложениями или операционной системой. деинсталлировать Удалить оборудование или приложения из компьютерной системы. демон Программа, которая выполняется в фоновом режиме и обеспечивает системные службы. диалап Соединение, совершаемое по коммутируемой телефонной сети общего пользования (Public Switched Telephone Network PSTN), в отличие от постоянного соединения по выделенной линии. диск Вращающийся магнитный носитель, который поддерживает прямой доступ и произвольную выборку; ср. гибкий диск, жесткий диск. дистрибутив Полная (как правило) совокупность программного обеспечения, необходимого для пользования компьютером, содержащая ядро Linux, разнообразные утилиты и приложения. домен Одна или более компьютерных сетей, служащих организационной группой. Имя присваивается сетевому домену. дочерний процесс Любой процесс, созданный другим, так называемым родительским процессом; как правило, используется с указанием родительского процесса. жесткая ссылка В файловых системах Unix-элемент каталога, указывающий на файл в другом каталоге того же диска или раздела и имеющий ту же узловую точку; ср. символическая ссылка. жесткий диск Устройство, использующее твердые диски в качестве магнитного носителя для хранения данных, ср. гибкий диск. журнал Запись действий. завершить Разорвать, закончить, выйти, остановить, и тп. зависимость Состояние, когда для работы программы требуются другие библиотеки|программы|пакеты. загрузить Передать с диска в память. загрузить (ОС) Привести операционную систему в состояние исполнения. загрузчик Программа, обычно устанавливаемая в MBR на машинах Intel, которая загружает ядро операционной системы и запускает его. задание Задача, посылаемая в фоновый режим или отложенная для более позднего выполнения. запустить Позволить (программе) работать; ср. Выполнить. излишний Ненужный; говорится об информации в контексте сжатия, или представления целостности данных. интегрированная среда разработки IDE (Integrated Development Environment). Интегрированная среда разработки. интерактивный Имеющий свойство взаимодействовать, то есть отвечать на действия извне. Используется в контексте программ или интерфейсов. интерактивный интерфейс Взаимодействие между компьютером и пользователем, позволяющее им влиять друг на друга и обмениваться вводом и выводом (команд и данных). Интернет Компьютерная сеть на основе протокола IP, распространенная по всему миру. интерпретатор Программа, проверяющая скрипт или исходный код программы и исполняющая его, строка за строкой. интерфейс Соединение (посредством устройства или программы) между различными компонентами компьютерной системы (как правило, производящее преобразования между внутренними протоколами компонентов); используется главным образом в контексте соединения по сети, или связи между компьютерными системами и пользователями. интерфейс командной строки Интерактивный пользовательский интерфейс, позволяющий компьютерной программе или оболочке получать команды через текстовый терминал (или эмулятор терминала в окне внутри графического пользовательского интерфейса). интранет Сеть (обычно локальная сеть) основанная на IP, но, в отличие от Интернета, разрешающая только ограниченный доступ. информация Что-нибудь, стоящее познания, в отличие от просто данных. испорченный Поврежденный (о файле или содержимом диска). исполняемый Двоичный файл или скрипт, который может быть запущен как программа (может потребовать разрешения на исполнение). исходники Файлы, содержащие исходный код программы или системы программ, из которых можно скомпоновать исполняемую программу или библиотеку, а также перенести ее на другую компьютерную платформу. исходный код Текст (набранный, как правило, человеком), детально определяющий действия программы, написанный на языке программирования. Для получения исполняемой компьютерной программы его следует обработать компилятором. кадр канал Пакет, собранный и переданный физическом уровне сети (например, Ethernet, Token Ring, и тп). Структура данных, соединяющая файл, присоединенный к одному процессу с файлом, с присоединенным к другому; по соглашению, стандартный поток вывода одного процесса к стандартному потоку ввода следующего. В командной строке принято обозначать символом '|' . карта Любое устройство, которое можно подключить в компьютерное гнездо расширения. каталог Специальный тип файлов, содержащий информацию о других файлах, например имя файла, месторасположение, разрешения, размер, и тд. концентратор Вообще говоря, устройство, соединенное с несколькими другими устройствами; применительно к компьютерным сетям, повторитель в основе сети с топологией звезды, как правило, с 10BaseT или 100BaseT Ethernet. клавиатура Устройство ввода с большим количеством кнопок, помеченных буквами и другими символами. клиент Компьютер или процесс, который соединяется и получает сервис от серверного компьютера или процесса. ключ Маркер, используемый для шифрования текста или дешифрования кодированного текста в системах шифрование. коаксиал Коаксиальный (со-осный) кабель. Кабель с внутренней и внешней обмотками, используемый в ТВ кабелях и локальных сетях Ethernet, где компьютеры обычно имеют T-узлы для соединения в единую цепь кабелей, которую необходимо ограничивать резисторами-терминаторами. компилятор Программа, проверяющая исходный программный код и транслирующая его в эквивалентный объектный файл; ср. Интерпретатор. компоновать Связать программу с процедурами, на которые она ссылается (вызывает). Эти процедуры обычно располагаются в объектных модулях или библиотеках. компьютер Цифровой электронный многоцелевой программируемый автомат, обрабатывающий информацию. консоль Первичный непосредственный пользовательский интерфейс компьютера. Некоторые функции системного администрирования могут быть произведены только в консоли. крах кэш Неожиданное завершение нормального выполнения. Предполагается, что жесткие диски испытывают иногда поломки, когда головки чтения/записи разрушают носитель, возможно, приводя носитель в негодность; таким образом, крах – непреднамеренное прекращение работы программы или устройства из-за какой-нибудь неисправности или ошибки, в особенности при завершении пагубным или неприятным образом. Любая легко доступная область хранения, используемая для содержания данных для быстрого доступа, при необходимости иметь частый доступ к ним; цель этого – ускорить доступ к данным и улучшить производительность системы. кэширующий DNS Сервер доменных имен, который не содержит собственных доменных файлов. Линукс (Linux) Unix-подобная операционная система, названная по имени Линуса Торвальдса (Linus Torvalds), впервые разработавшего и до сих пор поддерживающего ее. Свободно доступна по GPL. Если Вам это еще не известно, то вы вообще здесь делаете? логический На жаргоне инженеров-электронщиков : электронная компоненты и схемы устройства. Этого термина лучше избегать, дабы не путать его с общепринятым значением, встречающимся в программировании : абстрактное формальное умозаключение. локальный Легко достижимый, находящийся в локальной сети, не удаленный. маска сети Сетевая часть IP адреса; ср. маска подсети переменной длины. маска подсети переменной длины маскарадинг Притворяться другим узлом с целью совместного использования одного IP-адреса несколькими локальными узлами, спрятанными от внешнего мира в силу нехватки ресурсов или по соображениям безопасности, ср. NAT. маршрут Путь от одного узла к другому через одну или более сетей. При проверке IP-адреса назначения, датаграмма направляется к следующему маршрутизатору по пути назначения или же непосредственно к цели. маршрутизатор Шлюз, передающий IP-датаграммы между сетями. Функционирует на третьем (сетевом) уровне модели ISO/OSI, и полагает, что наличие адреса влечет наличие определенного пути (маршрута) для достижения назначения. В настоящее время принимается, что в качестве шлюза выступает компьютер общего назначения с операционной системой общего назначения [например, Linux], которая может выполнять и другие операции; в то время как маршрутизатор – специализированный компьютер со специальной операционной системой [например IOS], как правило, от поставщика [например Cisco]). ср. Мост. межсетевой экран Шлюз, ограничивающий передачу данных между "внутренней" сетью и Интернетом ("внешним" по отношению к экрану). мини-HOWTO Более скудный и более сосредоточенный документ, нежели HOWTO. модем Устройство, совершающее преобразование цифровых сигналов компьютера в аналоговые сигналы для связи по телефонной линии. мост Устройство, распространяющее пакеты между двумя компьютерными сетями; функционирует на втором уровне (канальный уровень) в модели ISO/OSI, и осуществляет широковещательную рассылку пакетов на основе адреса. Маршрутизация при этом не проводится. Ср. повторитель, маршрутизатор. мышь Устройство ввода, позволяющее указывать, выделять и активировать объекты, отображаемые, как правило, в графическом пользовательском интерфейсе. налаживать Делать небольшие изменения в конфигурации для того, чтобы получить большую производительность. ненадежный В контексте TCP/IP: протокол, не совершающий исправления ошибок (полагающий, что ошибки, возникающие, как правило, вследствие повторных передач, обнаружены и исправлены верхними уровнями модели OSI). низкоуровневый О языке программирования, в котором операторы похожи на инструкции процессора (или же: в котором операторы более сходны с объектным кодом, нежели в языке высокого уровня). носитель Физическое устройство, через которое передаются данные или (главным образом) где они хранятся. оболочка Программа, служащая посредником между пользователем и операционной системой, как правило, принимающая команды и вызывающая соответствующие программы. В мире UNIX, термин “оболочка” обычно относится к интерфейсам командной строки с возможностью запускать сценарии, таким как bash, csh и zsh. Однако, существуют и графические оболочки, например Windowmaker, KDE и GNOME. обновить Поменять оборудование или приложения в лучшую сторону. объектный код Инструкции, которые может выполнять процессор компьютера. однопользовательский режим Режим с уровнем запуска 1. ОЗУ окно Оперативное запоминающее устройство, Random Access Memory, RAM. Легко, быстро изменяемая память, используемая компьютером как основная. Имеет такие разновидности как EDO, ECC, SDRAM, и т.п., которые не эквивалентны, но, с точки зрения системного администратора, очень похожи при обычном использовании. Ср. ПЗУ. Область графического рабочего стола, интерфейс пользователя для взаимодействия с дочерним процессом рабочего стола. окружение Совокупность переменных, связанных с процессом, предназначенных для определения привилегий пользователя и конфигурации системы; дочерний процесс наследует эти переменные. операционная система ОС. Основной набор программ, управляющих различными компонентами и устройствами компьютера, а также их взаимодействием с приложениями и пользователями; например. MS-DOS, MS-Windows NT, MacOS, Unix, Linux. очередь Структура данных, реализующая список по принципу “первый вошел-первый вышел” (first-in, first-out); например очередь печати, которая содержит список заданий, которые следует выполнить по порядку. пакет Квант данных, передаваемых по сети; а именно : единица трафика TCP, несущая необходимую информацию по доставке самой себя, особенно для протокола UDP (датаграмма). пакет программ Совокупность связанных файлов и программ; часто также файл архива (tar, rpm), их содержащий. память Место, где компьютер хранит данные и|или программы для прямого доступа CPU : ОЗУ или ПЗУ (а также кэш-память), не диски. панель управления Набор кнопок, переключателей, индикаторов или изображений, используемый для настройки и управления маршрутизатором, принтером, компьютером или другим устройством. параллельный Несколько битов за один акт передачи (по нескольким проводам). параметр Переменная, чье значение имеет смысл для функции, принадлежащей команде или функции программы; ср. аргумент. пароль Фраза, которая идентифицирует пользователя во время входа в систему. ПЗУ Постоянное запоминающее устройство, Read Only Memory, ROM. Память компьютера, относящаяся, как правило, к некоторому долгосрочному носителю, например, кремниевой микросхеме или оптическому диску, которая может быть считана, но не изменена; это доставляет неудобства, когда данные следует изменить. Может сбить с толку то, что на некоторые ПЗУ все же можно записывать при определенных условиях, ср. ОЗУ. переменные окружения Переменные, определяющие окружение. периферийное Устройство, являющееся необязательной принадлежностью основных компонентов компьютера (CPU и память). пиксель Элемент изображения (picture element) : точка, точка сетки экрана дисплея, наименьшая единица, которую можно отобразить на экране дисплея. ПК Персональный компьютер. плавающая точка Используется для представления чисел, которые могут быть дробными; ср. Целое. по умолчанию То значение параметра, которое использует программа, если оно не задано явно. порт Имя, данное индивидуальному, пронумерованному "слоту", который доступен сетевым приложениям. Например, HTTP-серверы, как правило, используют портом 80. См. /etc/services ; также см. порт ввода/вывода. порт ввода/вывода Адрес, используемый периферийными устройствами для связи с CPU; см /proc/ioports. поток Последовательность байтов данных с контролем упорядоченности и переполнения. Потоковым протоколом в сетях TCP/IP является TCP. пользователь Человек, использующий ресурсы компьютера, а также его учетная запись или процесс; данные о идентификации, перечисленные в /etc/passwd. подкачка Виртуальная память; названа “подкачкой” из-за процессов обмена страницами между быстрой ОЗУ и и медленной виртуальной памятью при смене их приоритетов. повторитель Устройство, распространяющее сигналы между кабелями; в компьютерных сетях оно функционирует на первом, физическом уровне модели ISO/OSI, и не выполняет ни фильтрации пакетов, ни маршрутизации, ср. концентратор, мост, маршрутизатор. пользовательский почтовый посредник Пользовательская программа, используемая для доступа, обработки, чтения, архивирования, написания и отправки сообщений электронной почты. См. RFC1711. Такие почтовые программы часто включают некоторые возможности "агента передачи сообщений", в частности, использование SMTP для отправки электронной почты на почтовый сервер-назначение, а также протоколы POP3 или IMAP4 для загрузки почты с почтового сервера входящей почты, ср. Агент передачи сообщений. порождать Создавать дочерний процесс с помощью fork() и exec(). представительский уровень Шестой уровень в семиуровневой модели ISO/ OSI , определяющий представление символов (например ASCII) и графические форматы, такие как NAPLPS (North American Presentation Layer Protocols). В TCP/IP, уровень представления включен в уровень приложения, возможно, ближайшими эквивалентными форматами являются ASN.1, ANSI и HTML/XML. привод Любое устройство, где могут храниться и считываться данные, записанные на съемном или встроенном в устройство носителе. приглашение Сигнал, производимый оболочкой или приложением и указывающий, что они готовы к дальнейшему вводу команд или данных. прикладной уровень Название самого верхнего уровня как в семиуровневой ISO/OSI модели, так и в четырехуровневой связке протоколов TCP/IP. Включает в себя такие протоколы, как telnet, FTP, HTTP, SMTP, и т.п. приложение Программа, которая выполняется на самом верхнем уровне операционной системы. поставщик услуг Интернета (ISP) Компания, обеспечивающая подключение к Интернету. программа Последовательность инструкций для компьютера, реализующая алгоритм, зачастую хранимая в файле в форме либо непосредственно исполняемого объектного кода, либо исходного кода для интерпретатора или компилятора. При загрузке в память и выполнении программа-объектный код обычно становится процессом. программное обеспечение Компьютерные программы. прокси сервер Процесс, как правило, часть шлюзового окна, который связывает протоколы между компьютерными системами клиента и сервера. Прокси-сервер (англ. “proxy”-посредник) выступает в роли сервера для клиента и в роли клиента для сервера (переложение RFC2828). протокол Определение структур данных и форматов для передачи между двумя программами по сети. процесс Выполняющаяся программа; экземпляр выполняющейся программы. процессор Главное устройство, позволяющее компьютеру работать; в настоящее время часто называется "микропроцессор" и располагается на отдельной кремниевой микросхеме (ср. CPU). простаивающий Неактивный; ждущий задания или пробуждения. псевдоним Внутри оболочки: слово-подстановка для командной строки или дополнительный IP-адрес на интерфейсе. рабочая станция Компьютер, как правило, с графическим дисплеем, для индивидуального интерактивного использования; ср. Сервер. рабочее пространство Компьютерные ресурсы, приписанные к пользователю компьютера. рабочий стол В X – экран, из которого запускаются и выполняются все программы. раздел Произвольная область запоминающего устройства ( практически всегда жесткого диска), созданная программой разбиения до записи данных. Специально для IBM PC совместимых : одна из нескольких различных областей жесткого диска (количеством не более четырех), которые можно отвести под различные операционные системы. разрешение на выполнение Разрешение, устанавливаемое на файле файловой системы Unix и указывающее, что его можно запускать как программу в операционной системе. реализовать Создать реальный объект (программу, устройство), который соответствует абстрактным требованиям. регулярное выражение Формальное выражение шаблона строки, которую можно искать и обрабатывать программами, поддерживающими обработку шаблонов, такими как vi, grep, awk или perl. резервная копия Копия важных данных, хранимая на системном или внесистемном запоминающем устройстве для страховки от сбоев системного оборудования, программного обеспечения или пользователя. родительский процесс Процесс, который запустил один или более других процессов, называемых дочерними. руководство Документ, часто в книжном объеме, в котором описывается дизайн или работа пакета приложения или устройства. сборка Запуск последовательности шагов компиляции и компоновки для получения новой версии исполняемой программы. свободный Ничего не стоящий, бесплатный. сеансовый уровень Пятый ISO/OSI уровень – уровень сеанса. Устанавливает и контролирует системнозависимые аспекты сеансов связи между определенными узлами сети. Ликвидирует разрыв между службами, поставляемыми транспортным уровнем и логическими функциями, выполняющимися в операционной системе на узле, участвующем в сеансе связи. В наборе сетевых протоколов TCP/IP уровень сеанса отсутствует, и его функции частично реализованы в транспортном уровне, и частично – в уровне приложений. сервер доменных имен DNS, сервер имен. сегмент Кусок кабеля конечной длины – сегменты могут быть соединены повторителями (реже), мостами (чаще), маршрутизаторами или переключателями ( аппаратными логическими мостами и маршрутизаторами). серийный Последовательный, один бит за другим (по одному проводу). сервер Процесс или компьютер, обеспечивающий клиентские процессы определенными службами; например, web-сервер, сервер печати. сетевой уровень Сетевой уровень в наборе протоколов TCP/IP: для того, чтобы отличать его от самого низкого сетевого (физического) уровня, также используется термин “уровень internet”. Ср. Протокол Интернета. сетевой уровень Уровень в наборе сетевых протоколов, обрабатывающий адресацию и доставку датаграмм в сети или в Интернете. Уровень номер три в семиуровневой модели ISO/OSI. сеть Взаимосвязанная совокупность узлов и других сетевых устройств, имеющих общий физический уровень, например, Ethernet, X.25, и тп.; ср. LAN, WAN. сжатие Удаление излишней информации из файла или потока для уменьшения его размера, при этом сокращается место, требуемое для хранения и время, необходимое для пересылки. Сжатие с потерями не сохраняет информацию, которая считается излишней, и хорошо работает для графических или звуковых данных. сигнал Логическое прерывание процесса, которое процесс должен сразу же обработать. Одна из форм организации межпроцессного взаимодействия. символ Буква или знак, представимый, как правило, одним байтом в коде ASCII. символическая ссылка В файловых системах Unix: элемент каталога, указывающий на другой файл в файловой системе; ср. жесткая ссылка. символьное устройство Устройство, обменивающееся данными с операционной системой по одному символу (или байту, или даже слову) за один акт. синхронизировать Делать содержимое и состояние данных, хранящихся в двух различных источниках, идентичным (например, кэш, FTP сайты). синтаксис Формальные правила, определяющие, в каком порядке ключевые слова или команды, а также их составляющие, должны следовать при написании исходных кодов программ или при формировании команд оболочки. системный администратор Системный администратор: человек, который администрирует компьютерную систему и следит за ее работой. скрипт (сценарий) Компьютерная программа, написанная на интерпретируемом языке программирования, и, следовательно, пригодная для чтения человеком, ср. исполняемый, двоичный. служба Процесс, принимающий запросы и возвращающий ответы в бесконечном цикле; демон. сокет Соединение на TCP-уровне приложения. стандартный поток ошибок Стандартное устройство вывода ошибок в Unix (по умолчанию – экран терминала). стандартный поток ввода Стандартное устройство ввода в Unix (по умолчанию – клавиатура терминала). стандартный поток вывода Стандартное устройство вывода в Unix (по умолчанию – экран терминала). страница руководства Стандартная страница руководства по Unix ( в компьютерной системе обычно доступна в формате nroff, вызывается командой `man`). суперпользователь Супер пользователь, su, туз. Пользователь, имеющий учетную запись root и имеющий полный контроль над системой текст Набор символов, которые можно отобразить на дисплее терминала или напечатать на принтере для чтения человеком. текущий рабочий каталог cwd терминал Выход компьютера, обычно включающий дисплей для вывода текста (и, возможно, графики),клавиатуру (а, возможно, и мышь) для ввода, используемый как устройство организации для взаимодействия компьютера и пользователя. Ср. Рабочая станция. терминатор Нагрузка сопротивления, указывающая на конец в цепи устройств, как правило, SCSI-цепи или цепи коаксиальной сети. топология В компьютерных сетях: схематическое расположение соединений между узлами. транспортный уровень Транспортный уровень – центральный (четвертый) в семиуровневой модели ISO/OSI. Он обеспечивает сквозной контроль сеанса связи по мере того, как установлен путь, позволяя процессам обмениваться данными гарантированно и последовательно, независимо от того, какие системы участвуют в обмене и где они расположены. удалить Уничтожить или стереть файл|символ|каталог. узловая точка В файловых системах Unix, блок данных для файла на дисковом разделе, использующихся в администрировании. умереть Прекратить выполнение, главным образом окончательно. уровень запуска (уровень выполнения) Режим работы системы Unix, предлагающий запуск определенного набора служб; см. /etc/inittab. уровень канала Уровень номер два в семиуровневой модели ISO/OSI. Отвечает за установление безошибочных путей связи между узлами сети на физическом уровне, также формирует сообщения для передачи, проверяет целостность полученных сообщений, управляет доступом и использованием носителей и гарантирует правильную последовательность передаваемых данных. Эти функции, как правило, обеспечиваются драйвером сетевой карты. Серия 802.x стандартов IEEE разделяет этот уровень на два : уровень LLC и подчиненный уровень MAC. уровень сетевого доступа Самый низкий уровень в наборе протоколов TCP/IP, также известный как "физический" или "аппаратный" уровень. установить Перенести новую программу в компьютер на постоянное хранение (например, на жесткий диск) и произвести необходимую настройку и администрирование. устранение неполадок Процесс обнаружения причин(ы) проблем(ы) в сети|программе|устройстве. устройство "Периферийная" часть оборудования, которая является необязательной или может быть присоединена к компьютеру (даже если изначально она расположена внутри корпуса) : интерфейсные карты, приводы, принтеры, и т.п. утилита Программа, облегчающая выполнение работы. файл Последовательность (поток) байтов в известном расположении в области хранения. файл include Файл, содержащий постоянные и параметры, быть может, используемый двумя и более программами, включаемый в исходный код при компиляции данных программ. файловая система Структура данных, размещенная на логическом диске или разделе (с помощью mkfs), позволяющая операционной системе записывать информацию о хранимых файлах. физический уровень Самый низкий уровень семиуровневого набора сетевых протоколов ISO/OSI. фильтровать Отбрасывать ненужные данные. флоппи-дисковод Устройство, которое может считывать и записывать информацию на гибкие диски. фоновый Состояние исполнения процесса, когда не происходит вывода на терминал. формат Спецификация, касающаяся способа хранения данных. хакать Достигать результата нетривиальным способом. хакер Тот, кто хакает : так называют людей с неординарными компьютерными способностями; ср. взломщик. хост(узел) Любой компьютер, подсоединенный к сети на основе IP, в особенности компьютер, который может служить в качестве сервера для клиентских программ или других компьютеров. чистый Чистый привод – тот, что был правильно отмонтирован и, таким образом (теоретически) не нуждается в проверке; иначе привод называется “грязным”. цилиндр Набор дорожек, расположенных на одном радиусе на различных поверхностях жесткого диска. Жесткий диск с четырьмя пластинами внутри имеет восемь поверхностей, так что при каждом положении головок чтения/записи, восемь дорожек могут быть считаны без их перемещения. Эти восемь дорожек и формируют цилиндр. цифровой Относится к объекту, который может принимать только ограниченное количество дискретных, а не произвольных значений; например, двоичный. ср. Аналоговый. целое Тип данных, используемый для представления целых (недробных) чисел внутри ограниченного диапазона. целостность Правильность. цветовая таблица Цветовая карта (color map или color-map). Таблица, используемая для кодирования палитры цветов в изображениях. шаблон Символ-заполнитель, используемый для указания некоторого символа или группы символов. шина Провод (кабель) для передачи сигналов между различными компонентами одного компьютера. широковещание Кадр или датаграмма, предназначенная всем интерфейсам сети. шлюз Устройство или механизм передачи, связывающий две или более компьютерных сети, и передающий пакеты между сетями в Интернете. В настоящее время принято считать, что в качестве шлюза выступает компьютер общего типа с операционной системой общего типа [например, Linux], которая может выполнять и другие операции, и в этом качестве он функционирует на третьем (сетевом) уровне, в модели ISO/OSI; в то время как маршрутизатор – специализированный компьютер со специальной операционной системой [например IOS], как правило, от поставщика [например Cisco]). ср. Мост. шрифт Форма каждой из букв в наборе символов. экранный дисплей Устройство, показывающее текст, графику или другую информацию для восприятия человеком. эмулировать Имитировать действия устройства или программы так, чтобы эта имитация выполняла те же самые функции, что и оригинал. эмулятор Программа, эмулирующая функции некоторых устройств или других программ. эргономичный Удобный для использования людьми. ядро Основа операционной системы, обеспечивающее многозадачность (создание процессов, защищенность процессов, связь между процессами), управление памятью, и базовое управление вводом-выводом. язык ассемблера Низкоуровневый язык программирования, который может быть непосредственно транслирован в объектный код процессора. Глоссарий bash: 227 BIOS: 214 CERT: 214p. comments: 2 DHCP: 215 DNS: 215, 226, 231 FHS: 216 FTP: 216, 221, 229, 231 GID: 216, 220 grep: 230 HOWTO: 216, 220, 227 IDE: 214p., 217, 224 LDP: 217 lilo: 217 lp: 208p. LPI: 208p., 215, 218, 221 man: 2, 232 mkfs: 233 NFS: 218 PAP Password Authentication Protocol: 219 RPM: 220, 222, 228 sendmail: 222 SUID: 220 tar: 228 TCP: 218pp., 227pp., 231pp. TCP/IP: 218pp., 227, 229, 231, 233 UDP: 218, 220p., 223, 228 UID: 220p., 223 umask: 221 WINS: 221 /etc/group: 223 /etc/passwd: 229 /etc/services: 229 /proc: 229 библиотеки: 224 комментарии: 220 раздел подкачки (swap): 223 символическая ссылка: 224 скрипт: 220 стандартный поток ввода: 225 стандартный поток вывода: 225 устройства: 233