
- •2. Версии iPv4 и iPv6
- •3. Пакеты и их инкапсуляция
- •4. Адресация пакетов
- •Глава 14. Сети tcp/ip 505
- •6. Cidr: протокол бесклассовой междоменной маршрутизации
- •7. Частные адреса и система nat
- •8. Маршрутизация
- •9. Таблицы маршрутизации
- •10. Arp: протокол преобразования адресов
- •11. Dhcp: протокол динамического конфигурирования узлов
- •12. Ррр: протокол двухточечного соединения
- •13. Команда ifconfig: конфигурирование сетевых интерфейсов
- •14. Демоны маршрутизации
- •Глава 15. Маршрутизация 571
- •15. Основные протоколы маршрутизации
- •Глава 15. Маршрутизация 567
- •16. Технология Ethernet: сетевая панацея
- •17. Беспроводной стандарт: локальная сеть для кочевников
- •18. Dsl и кабельные модемы: “последняя миля” 8
- •Глава 16. Сетевые аппаратные средства 593
- •20. Основные задачи системы dns
- •Глава 18. Сетевой протокол Network File System 737
- •22. Серверная часть протокола nfs
- •Глава 18. Сетевой протокол Network File System 745
- •23. Клиентская часть протокола nfs
- •Глава 18. Сетевой протокол Network File System 753
- •24. Ldap: упрощенный протокол доступа к каталогам
- •25. Структура данных ldap
- •Глава 19. Совместное использование системных файлов 775
- •26. Nis: Сетевая информационная служба
- •27. Системы электронной почты
- •Глава 20. Электронная почта 789
- •28. Протоколы smtp, pop3.
- •30. Почтовые серверы
- •Часть II. Работа в сети
- •31. Cпам и вредоносные программы
- •Глава 20. Электронная почта 813 ip range
- •32. Фильтрация почты
- •33. Почтовый агент sendmail
- •34. Почтовый агент Postfix
- •Глава 20. Электронная почта 877
- •35. Поиск неисправностей в сетях
- •Глава 21. Управление сетями 911
- •36. Kоманда traceroute: трассировка ip-пакетов
- •Глава 21. Управление сетями 915
- •37. Команда netstat: получение информации о состоянии сети
- •Глава 21. Управление сетями 919
- •39. Snmp: простой протокол управления сетями
- •40. Протокол NetFlow: мониторинг соединений
- •Глава 21. Управление сетями 939
- •41. Ключевые аспекты безопасности
- •Глава 22. Безопасность 951
- •42. Пароли и учетные записи пользователей
- •43. Эффективное использование команды chroot
- •44. Команда nmap: сканирование сетевых портов
- •45. Bro: программная система для распознавания вторжения в сеть
- •Глава 22. Безопасность 967
- •46. Мандатное управление доступом
- •47. Ssh: безопасная оболочка
- •48. Брандмауэры
- •Глава 22. Безопасность 983
- •49. Функциональный стек lamp
- •50. Обнаружение ресурсов в сети веб
- •Глава 23. Веб-хостинг 1003
- •51. Принцип работы http
- •52. Конфигурирование сервера Apache
- •Глава 23. Веб-хостинг 1011
- •53. Виртуальные интерфейсы
- •54. Протокол Secure Sockets Layes
- •Глава 23. Веб-хостинг 1017
52. Конфигурирование сервера Apache
После инсталляции сервера необходимо сконфигурировать его с учетом выполняемых функций. Все конфигурационные файлы находятся в каталоге conf (например, /etc/ httpd/conf). Необходимо проверить и настроить файл httpd.conf, разделенный на три раздела.
Первый раздел файла httpd.conf определяет глобальные настройки, например пул сервера, ТСР-порт, через который HTTP-сервер принимает запросы (обычно это порт 80, но можно на одном компьютере запустить несколько HTTP-серверов, подключенных к различным портам), а также параметры для загрузки динамических модулей.
Второй раздел описывает сервер “по умолчанию”, который будет отвечать на все за просы, не обработанные определениями VirtualHost (раздел 23.3). В нем находятся параметры конфигурации, включающие пользователя и группу, для которых будет ра ботать сервер (не суперпользователь!), и инструкцию DocumentRoot, которая опреде ляет корневой каталог для обслуживаемых документов. В этом разделе указывается так же ряд специальных установок, связанных, в частности, с обработкой “специальных” URL-адресов, использующих синтаксис ~пользователь для доступа к рабочему каталогу пользователя.
Глобальные параметры безопасности также устанавливаются во втором разделе кон фигурации. Он содержит директивы, которые позволяют управлять доступом на уровне отдельных каталогов (директива <Directory>) или файлов (<File>). С их помощью можно предотвратить доступ к важным файлам через демон httpd. Необходимо опреде лить, как минимум, два уровня управления доступом: на одном уровне охватывается весь каталог документов, а второй применяется только к главному каталогу документов. Для этого достаточно оставить без изменения параметры, установленные для веб-сервера Apache по умолчанию, хотя мы рекомендуем удалить параметр AllowSymLinks, чтобы предотвратить обращение демона httpd к вашему дереву документов по символическим ссылкам. (Ведь никто не хочет, чтобы кто-нибудь случайно создал символическую ссыл ку на каталог /etc, не так ли?) Более подробные советы по укреплению безопасности веб-сервера Apache можно найти на сайте
httpd.apache.org/docs-2.2/misc/security_tips.html.
Третий, и последний, раздел файла конфигурации настраивает виртуальные узлы. Эту тему мы обсудим в отдельном разделе.
Внеся изменения в конфигурацию, проверьте синтаксис конфигурационного файла, выполнив команду httpd -t. Если все в порядке, веб-сервер Apache ответит “Syntax OK”. Если нет, проверьте опечатки в файле httpd.conf.
Глава 23. Веб-хостинг 1011
Запуск сервера Apache
Для запуска сервера Apache можно запустить демон httpd вручную либо воспользо ваться сценариями запуска системы. Последний способ предпочтительнее, поскольку он гарантирует, что веб-сервер перезапускается всякий раз при перезагрузке компьютера. Для ручного запуска сервера следует ввести примерно такую команду.
% apachectl start
Сценарии загрузки описаны в главе 3.
53. Виртуальные интерфейсы
Раньше компьютер с системой UNIX обычно служил сервером для одного веб-узла (например, acme.com). По мере роста популярности сети веб, практически каждый пользователь обзавелся собственным веб-узлом, и, как грибы после дождя, стали появ ляться тысячи новых компаний, занимающихся веб-хостингом.
Основные конфигурации интерфейса описаны в главе 14.
Провайдеры быстро осознали, что можно добиться существенной экономии средств и ресурсов, если на одном сервере размещать несколько узлов. Это позволило управлять группой узлов, таких как acme.com, ajах.com, toadranch.com и многие другие, ис пользуя одно и то же аппаратное обеспечение. На практике такой подход реализуется с помощью виртуальных интерфейсов.
Идея, лежащая в основе виртуальных интерфейсов, весьма проста: одиночный ком пьютер обслуживает больше IP-адресов, чем позволяют его физические сетевые интер фейсы. Каждый из “виртуальных” сетевых интерфейсов может иметь доменное имя, под которым он известен пользователям Интернета. Это позволяет единственному серверу обслуживать сотни веб-узлов.
Виртуальные интерфейсы позволяют демону идентифицировать соединения не толь ко по номеру порта назначения (например, порта 80 для HTTP), но и по целевому IP- адресу. В настоящее время виртуальные интерфейсы получили широкое распростране ние и оказались полезными не только для веб-хостинга.
Протокол HTTP 1.1 реализует функциональные возможности, подобные виртуаль ным интерфейсам (официально это называется “виртуальные интерфейсы, не имеющие IP-адреса”), устраняя потребность в назначении уникальных IP-адресов веб-серверам или в конфигурировании специального интерфейса на уровне операционной системы. Этот подход позволяет совместно использовать IP-адреса, что особенно полезно, когда один сервер содержит сотни или тысячи начальных страниц (например, в случае уни верситетских веб-узлов).
Однако такой подход нельзя назвать практичным для коммерческих узлов, посколь ку уменьшается степень их масштабируемости (приходится изменять IP-адрес при пере мещении узла на другой сервер) и возникает угроза безопасности системы (если доступ к узлу фильтруется брандмауэром на основе IP-адресов). Кроме того, виртуальные узлы,

Глава 23. Веб-хостинг 1013
основанные на именах, требуют, чтобы браузер поддерживал протокол SSL.3 Видимо, из-за этого ограничения настоящие виртуальные интерфейсы будут применяться еще долго.
Конфигурирование виртуальных интерфейсов
Настройка виртуального интерфейса проходит в два этапа. Сначала требуется соз дать виртуальный интерфейс на уровне TCP/IP. Как именно, зависит от версий системы UNIX; инструкции для разных версий системы UNIX приводятся ниже. На втором эта пе необходимо сообщить серверу Apache об имеющихся виртуальных интерфейсах. Этот этап также описан ниже.
Виртуальные интерфейсы в системе Linux
Виртуальные интерфейсы Linux обозначаются в формате интерфейс:экземпляр. Например, если интерфейс Ethernet называется eth0, то связанные с ним виртуальные интерфейсы именуются eth0:0, eth0:1 и т.д. Все интерфейсы конфигурируются с по мощью команды ifconfig. Например, команда
$ sudo ifconfig eth0:0 128.138.243.150 netmask 255.255.255.192 up
настраивает интерфейс eth0:0 и закрепляет за ним адрес в сети 128.138.243.128/26. Для того чтобы назначенные виртуальные адреса стали постоянными, необходимо мо дифицировать сценарии запуска системы.
В системе Red Hat требуется для каждого виртуального интерфейса создать отдельный файл в каталоге /etc/sysconfig/network-scripts. Например, файл ifcfg-eth0:0, соответствующий приведенной выше команде ifconfig, может содержать такие строки.
DEVICE=eth0:0
IPADDR=128.138.243.150
NETMASK=255.255.255.192
NETWORK=128.138.243.128
BROADCAST=128.138.243.191
ONBOOT=yes
Подход, принятый в системе Ubuntu, аналогичен подходу, используемому в си стеме Red Hat, за исключением того, что определения интерфейсов должны содержаться в файле /etc/network/interfaces. Записи, соответствующие ин терфейсу eth0:0, в нашем примере должны выглядеть следующим образом.
Iface eth0:0 inet static
address 128.138.243.150
netmask 255.255.255.192
broadcast 128.138.243.191
В системе SuSE можно создать виртуальные интерфейсы либо с помощью программы YaST, либо путем редактирования интерфейсных файлов. Для ис пользования программы YAST сначала на вкладке Global Options раздела Network Settings выберите команду Traditional method with ifup.
3 Относительно новая функциональная возможность Server Name Indication (SNI) позволяет использовать протокол SSL с виртуальными узлами, но старые браузеры этого делать не могут.
1014 Часть II. Работа в сети
В системе SUSE IP-адреса каждого интерфейса конфигурируются в одном файле. Для редактирования конфигурации поищите в каталоге /etc/sysconfig/network файлы, имена которых начинаются словами ifcfg-имя_интерфейса.
Например, в показанном ниже файле определяются интерфейсы eth0 и eth0:0.
IPADDR_1=128.138.243.149
NETMASK_1=255.255.255.192
STARTMODE_1="auto"
LABEL_1=0
 IPADDR_2=128.138.243.150
NETMASK_2=255.255.255.192
STARTMODE_2="autо"
LABEL_2=1
Суффиксы, следующие за именами IPADDR и NETMASK (в данном случае _1 и _2), не обязательно должны быть представлены числами, но для согласованности такое со глашение является вполне приемлемым. Для того чтобы виртуальные интерфейсы рас познавались, необходимо отредактировать файл /etc/sysconfig/network/config и установить параметр NETWORKMANAGER="no".
Виртуальные интерфейсы в системе Solaris
Система Solaris поддерживает виртуальные интерфейсы (“вспомогательные ин терфейсы”) посредством концепции физического интерфейса и логического модуля. Например, если hme0 — это имя физического интерфейса, то hme0:1, hme0:2 и так далее — это имена соответствующих виртуальных интерфейсов. По умолчанию с каж дым физическим интерфейсом может быть связано до 256 виртуальных сущностей. Если вы хотите изменить это ограничение, используя команду ndd, измените параметр ip_ addrs_per_if (описание команды ndd см. в разделе 14.13).
Для конфигурирования виртуального интерфейса просто примените команду ifconfig к одному из виртуальных имен. (Соответствующий физический интерфейс в этот момент уже должен быть “подключен”.) В большинстве случаев систему настраи вают так, чтобы команда ifconfig применялась к виртуальным интерфейсам во время загрузки.
Рассмотрим пример, в котором компьютер под управлением системы Solaris имеет адрес в пространстве частных адресов во внутренней частной виртуальной сети (VPN) и внешний адрес — в Интернете, причем оба адреса связаны с одним и тем же физиче ским устройством hme0. Для того чтобы эти интерфейсы автоматически конфигуриро вались во время загрузки, администратор должен отредактировать два файла имен узлов: /etc/hostname.hme0 и /etc/hostname.hme0:1.
$ ls -l /etc/host*
-rw-r--r-- 1 root 10 Nov 4 10:19 /etc/hostname.hme0 -rw-r--r-- 1 root 16 Dec 21 19:34 /etc/hostname.hme0:1
Файлы имен узлов могут содержат либо имена узлов из файла /etc/hosts либо IP- адреса. В данном случае администратор использовал каждую из этих возможностей.
$ cat /etc/hostname.hme0 overkill
$ cat /etc/hostname.hme0:1 206.0.1.133
$ grep overkill /etc/hosts 10.1.2.9 overkill overkill.domain
Глава 23. Веб-хостинг 1015
Во время загрузки оба адреса конфигурируются автоматически (вместе со шлейфо вым адресом, который мы пропустили).
$ ifconfig -а
hme0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu
1500 inet 10.1.2.9 netmask ffffff00 broadcast 10.1.2.255
hme0:1: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu
1500 inet 206.0.1.133 netmask ffffff80 broadcast 206.0.1.255
Виртуальные интерфейсы в системе HP-UX
В системе HP-UX все виртуальные интерфейсы можно добавлять с помощью коман ды ifconfig. Ее синтаксис очень похож на синтаксис, используемый в системе Solaris. Например, для того чтобы добавить первый интерфейс, следует выполнить такую ко манду.
$ sudo ifconfig lan0:1 192.168.69.1 up Виртуальные интерфейсы системы AIX
В системе AIX, для того чтобы добавить дополнительный IP-адрес для интерфейса, можно создать “псевдоним”. Например, для того чтобы добавить 192.168.1.3 как вирту альный IP-адрес интерфейса en0, можно использовать команду ifconfig.
$ sudo ifconfig en0 192.168.1.3 netmask 255.255.255.0 alias
Однако этот псевдоним является временным. Для того чтобы создать постоянный виртуальный IP-адрес, следует выполнить команду chdev.
$ sudo chdev -l en0 -a alias4=192.168.1.3,255.255.255.0
Передача серверу Apache информации о виртуальном интерфейсе
После создания виртуальных интерфейсов с помощью команды ifconfig требуется сообщить серверу Apache о том, какие документы должны обрабатываться при попытке подключения клиента к каждому интерфейсу (IP-адресу). Это можно сделать с помощью директивы VirtualHost файла httpd.conf. Каждому сконфигурированному виртуаль ному интерфейсу должна соответствовать одна такая директива. Приведем пример.
<VirtualHost 128.138.243.150>
ServerName www.company.com
ServerAdmin webmaster@www.company.com
DocumentRoot /var/www/htdocs/company
ErrorLog logs/www.company.com-error_log
CustomLog logs/www.company.com-access_log combined
ScriptAlias /cgi-bin/ /var/www/cgi-bin/company
</VirtualHost>
После подключения клиента к виртуальному узлу 128.138.243.150 будут обрабаты ваться документы из каталога /var/www/htdocs/company. Для настройки параме тров виртуального узла в раздел VirtualHost может включаться почти любая дирек тива веб-сервера Apache. Относительные пути к каталогам, включая пути для директив DocumentRoot, ErrorLog и CustomLog, интерпретируются в контексте ServerRoot.
Если виртуальные узлы имеют имена, то множественные имена в системе DNS ссы лаются на один и тот же IP-адрес. Конфигурация веб-сервера Apache остается прежней,
1016 Часть II. Работа в сети
но необходимо задать основной IP-адрес, который веб-сервер Apache должен прослуши вать в ожидании входящих запросов к именованному виртуальному узлу, и не указывать IP-адрес в разделе VirtualHost.
NameVirtualHost 128.138.243.150
<VirtualHost *>
ServerName www.company.com
ServerAdmin webmaster@www.company.com
DocumentRoot /var/www/htdocs/company
ErrorLog logs/www.company.com-error_log
CustomLog logs/www.company.com-access_log combined
ScriptAlias /cgi-bin/ /var/www/cgi-bin/company
</VirtualHost>
В этой конфигурации веб-сервер Apache ищет заголовки HTTP, чтобы определить требуемый сайт. Сервер прослушивает запросы к сайту www.company.com на его основ ном IР-адресе 128.138.243.150.