Библиотека сайта rus-linux.net
Серверы Linux. Часть I. Серверы Apache и Squid
Оригинал: Apache web serverАвтор: Paul Cobbaut
Дата публикации: 24 мая 2015 г.
Перевод: А.Панин
Дата перевода: 10 июля 2015 г.
Глава 1. Веб-сервер Apache
1.8. Диагностика веб-сервера Apache
После перезапуска службы веб-сервера будет осуществлена проверка синтаксиса файлов конфигурации из директории /etc/apache2
в дистрибутиве Debian или /etc/httpd
в дистрибутиве CentOS с последующим выводом имени конфигурационного файла, в котором была обнаружена ошибка, номера строки данного файла с ошибкой и описания ошибки.
root@debian7:~# service apache2 restart apache2: Syntax error on line 268 of /etc/apache2/apache2.conf: Syntax error o\ n line 1 of /etc/apache2/sites-enabled/chessclub42: /etc/apache2/sites-enabled\ /chessclub42:4: <VirtualHost> was not closed.\n/etc/apache2/sites-enabled/ches\ sclub42:1: <VirtualHost> was not closed. Action 'configtest' failed. The Apache error log may have more information. failed!
В примере файла конфигурации ниже можно обнаружить описанную ошибку... отсутствующий символ закрытия секции VirtualHost
(/) в строке 4.
root@debian7:~# cat /etc/apache2/sites-available/chessclub42 <VirtualHost *:8000> ServerAdmin webmaster@localhost DocumentRoot /var/www/chessclub42 <VirtualHost>
Давайте вызовем генерацию еще одного сообщения об ошибке, переименовав директорию с файлами одного из наших веб-сайтов.
root@debian7:~# mv /var/www/choochoo/ /var/www/chooshoo root@debian7:~# !ser service apache2 restart Restarting web server: apache2Warning: DocumentRoot [/var/www/choochoo] does n\ ot exist Warning: DocumentRoot [/var/www/choochoo] does not exist ... waiting Warning: DocumentRoot [/var/www/choochoo] does not exist Warning: DocumentRoot [/var/www/choochoo] does not exist .
Как видите, веб-сервер Apache совершенно точно сообщил о проблеме.
Также вы можете производить диагностику веб-сервера, соединяясь с веб-сайтом с помощью браузера и проверяя наличие новых сообщений в файлах журнала веб-сервера Apache из директории /var/log/apache
.
1.9. Пример конфигурации виртуального сервера
Ниже приведен пример конфигурации виртуального сервера. Данная конфигурация виртуального сервера имеет приоритет перед стандартной директивой ErrorDocument
веб-сервера Apache.
<VirtualHost 83.217.76.245:80> ServerName cobbaut.be ServerAlias www.cobbaut.be DocumentRoot /home/paul/public_html ErrorLog /home/paul/logs/error_log CustomLog /home/paul/logs/access_log common ScriptAlias /cgi-bin/ /home/paul/cgi-bin/ <Directory /home/paul/public_html> Options Indexes IncludesNOEXEC FollowSymLinks allow from all </Directory> ErrorDocument 404 http://www.cobbaut.be/cobbaut.php </VirtualHost>
1.10. Псевдонимы и переадресации
Веб-сервер Apache предоставляет возможность установки псевдонимов для директорий, которая используется таким образом, как показано в примере ниже.
Alias /paul/ "/home/paul/public_html/"
Аналогично при посещении веб-сайта может осуществляться переадресация на другой веб-сайт или веб-сервер.
Redirect permanent /foo http://www.foo.com/bar
1.11. Дополнительная информация о файлах контроля доступа .htaccess
С помощью файлов контроля доступа .htaccess
вы можете сделать гораздо больше, чем кажется. Один из примеров использования данных файлов заключается в ограничении доступа к вашему веб-сайту людей, перешедших с определенных доменов. Например, в данном случае осуществляется ограничение доступа множества спамеров, переходящих с соответствующих доменов, на ваш веб-сайт.
paul@lounge:~/cobbaut.be$ cat .htaccess # Options +FollowSymlinks RewriteEngine On RewriteCond %{HTTP_REFERER} ^http://(www\.)?buy-adipex.fw.nu.*$ [OR] RewriteCond %{HTTP_REFERER} ^http://(www\.)?buy-levitra.asso.ws.*$ [NC,OR] RewriteCond %{HTTP_REFERER} ^http://(www\.)?buy-tramadol.fw.nu.*$ [NC,OR] RewriteCond %{HTTP_REFERER} ^http://(www\.)?buy-viagra.lookin.at.*$ [NC,OR] ... RewriteCond %{HTTP_REFERER} ^http://(www\.)?www.healthinsurancehelp.net.*$ [NC] RewriteRule .* - [F,L] paul@lounge:~/cobbaut.be$
1.12. Контроль трафика
Веб-сервер Apache сохраняет в файле журнала информацию обо всех посетителях веб-сайта. Веб-приложение webalizer
чаще всего используется для разбора соответствующего файла журнала и формирования статистического отчета в формате HTML.
1.13. Самостоятельно подписанные сертификаты в дистрибутиве Debian
Ниже приведено краткое руководство по настройке веб-сервера Apache2 в дистрибутиве Debian 7 с использованием самостоятельно подписанного сертификата.
Высока вероятность того, что необходимые пакеты программного обеспечения уже установлены.
root@debian7:~# aptitude install apache2 openssl No packages will be installed, upgraded, or removed. обновлено 0, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено. Необходимо скачать 0 B архивов. После данной операции, объём занятого дискового пространства возрастёт на 0 B.
Создайте директорию для хранения файлов сертификатов и воспользуйтесь утилитой openssl
для создания самостоятельно подписанного сертификата, который будет действителен в течение 999 дней.
root@debian7:~# mkdir /etc/ssl/localcerts root@debian7:~# openssl req -new -x509 -days 999 -nodes -out /etc/ssl/localcerts/apache.pem -keyout /etc/ssl/localcerts/apache.key Generating a 2048 bit RSA private key ... ... writing new private key to '/etc/ssl/localcerts/apache.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. ----- Country Name (2 letter code) [AU]:BE State or Province Name (full name) [Some-State]:Antwerp Locality Name (eg, city) []:Antwerp Organization Name (eg, company) [Internet Widgits Pty Ltd]:linux-training.be Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []:Paul Email Address []:
Небольшие меры дополнительной безопасности никогда не помешают.
root@debian7:~# ls -l /etc/ssl/localcerts/ итого 8 -rw-r--r-- 1 root root 1704 сен 16 18:24 apache.key -rw-r--r-- 1 root root 1302 сен 16 18:24 apache.pem root@debian7:~# chmod 600 /etc/ssl/localcerts/* root@debian7:~# ls -l /etc/ssl/localcerts/ итого 8 -rw------- 1 root root 1704 сен 16 18:24 apache.key -rw------- 1 root root 1302 сен 16 18:24 apache.pem
В первую очередь следует активировать модуль ssl веб-сервера Apache
.
root@debian7:~# a2enmod ssl Enabling module ssl. See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates. To activate the new configuration, you need to run: service apache2 restart
После этого следует создать файл конфигурации веб-сайта.
root@debian7:~# vi /etc/apache2/sites-available/choochoos root@debian7:~# cat /etc/apache2/sites-available/choochoos <VirtualHost *:7000> ServerAdmin webmaster@localhost DocumentRoot /var/www/choochoos SSLEngine On SSLCertificateFile /etc/ssl/localcerts/apache.pem SSLCertificateKeyFile /etc/ssl/localcerts/apache.key </VirtualHost> root@debian7:~#
Кроме того, не нужно забывать о необходимости создания самого веб-сайта.
root@debian7:/var/www/choochoos# vi index.html root@debian7:/var/www/choochoos# cat index.html Choo Choo клуб моделистов поездов с доступом по защищенному соединению HTTPS Choo Choo
Наконец, следует активировать веб-сайт и перезапустить службу веб-сервера Apache с именем apache2 (или сообщить службе о необходимости повторного чтения файлов конфигурации).
root@debian7:/var/www/choochoos# a2ensite choochoos Enabling site choochoos. To activate the new configuration, you need to run: service apache2 reload root@debian7:/var/www/choochoos# service apache2 restart Restarting web server: apache2 ... waiting .
Высока вероятность того, что перед отображением вашего веб-сайта браузер предупредит вас о том, что для организации защищенного соединения с веб-сайтом используется самостоятельно подписанный сертификат.
1.14. Самостоятельно подписанные сертификаты в дистрибутиве RHEL/CentOS
Ниже приведено краткое руководство по созданию самостоятельно подписанных сертификатов для организации защищенного соединения с веб-сайтом по протоколу HTTPS в дистрибутиве RHEL/CentOS. Вам, скорее всего, понадобятся следующие пакеты программного обеспечения:
[root@paulserver ~]# yum install httpd openssl mod_ssl Загружены модули: fastestmirror Loading mirror speeds from cached hostfile * base: ftp.belnet.be * extras: ftp.belnet.be * updates: mirrors.vooservers.com base | 3.7 kB 00:00 Setting up Install Process Пакет httpd-2.2.15-31.el6.centos.x86_64 уже установлен, и это последняя версия. Пакет openssl-1.0.1e-16.el6_5.15.x86_64 уже установлен, и это последняя версия. Пакет 1:mod_ssl-2.2.15-31.el6.centos.x86_64 уже установлен, и это последняя версия. Выполнять нечего
Воспользуемся утилитой openssl
для создания сертификата.
[root@paulserver ~]# mkdir certs [root@paulserver ~]# cd certs [root@paulserver certs]# openssl genrsa -out ca.key 2048 Generating RSA private key, 2048 bit long modulus .........+++ .........................................................+++ e is 65537 (0x10001) [root@paulserver certs]# openssl req -new -key ca.key -out ca.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. ----- Country Name (2 letter code) [XX]:BE State or Province Name (full name) []:antwerp Locality Name (eg, city) [Default City]:antwerp Organization Name (eg, company) [Default Company Ltd]:antwerp Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:paulserver Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: [root@paulserver certs]# openssl x509 -req -days 365 -in ca.csr -signkey ca.ke\ y -out ca.crt Signature ok subject=/C=BE/ST=antwerp/L=antwerp/O=antwerp/CN=paulserver Getting Private key
Скопируем файлы сертификата в директории, в которых их будет искать веб-сервер (возможно, в данном случае будет отсутствовать информация, необходимая системе контроля доступа SELinux).
[root@paulserver certs]# cp ca.crt /etc/pki/tls/certs/ [root@paulserver certs]# cp ca.key ca.csr /etc/pki/tls/private/
После этого добавим пути к директориям с файлами сертификата, а также директиву NameVirtualHost *:443
в файл конфигурации веб-сервера.
[root@paulserver certs]# vi /etc/httpd/conf.d/ssl.conf [root@paulserver certs]# grep ^SSLCerti /etc/httpd/conf.d/ssl.conf SSLCertificateFile /etc/pki/tls/certs/ca.crt SSLCertificateKeyFile /etc/pki/tls/private/ca.key
А также создадим файл конфигурации веб-сайта.
[root@paulserver certs]# vi /etc/httpd/conf.d/choochoos.conf [root@paulserver certs]# cat /etc/httpd/conf.d/choochoos.conf <VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/pki/tls/certs/ca.crt SSLCertificateKeyFile /etc/pki/tls/private/ca.key DocumentRoot /var/www/choochoos ServerName paulserver </VirtualHost> [root@paulserver certs]#
Наконец, создадим простой веб-сайт и перезапустим службу веб-сервера Apache.
[root@paulserver certs]# mkdir /var/www/choochoos [root@paulserver certs]# echo "Choo Choo клуб моделистов поездов с доступом по \ защищенному соединению HTTPS Choo Choo" > /var/www/choochoos/index.html [root@paulserver httpd]# service httpd restart Stopping httpd: [ OK ] Starting httpd:
А ваш браузер также наверняка выведет предупреждение о самостоятельно подписанном сертификате перед отображением веб-сайта.
1.15. Практическое задание: веб-сервер Apache
-
1. Убедитесь в том, что веб-сервер Apache установлен и исполняется в вашей системе.
-
2. Изучите руководство пользователя веб-сервера Apache в формате HTML.
-
3. Создайте три виртуальных сервера, которые будут принимать соединения на портах 8472, 31337 и 1201. Проверьте их работоспособность.
-
4. Создайте три именованных виртуальных сервера с именами startrek.local, starwars.local и stargate.local. Проверьте их работоспособность.
-
5. Создайте виртуальный сервер, который будет принимать соединения на отличном IP-адресе.
-
6. Защитите данные одного из своих веб-сайтов с помощью комбинации имени пользователя и пароля.
Предыдущий раздел: | Оглавление | Следующий раздел: |
Виртуальные серверы для заданных номеров портов в дистрибутиве CentOS | Знакомство с прокси-сервером Squid |