Безопасность и оптимизация Linux.Редакция для Red Hat

       

Компиляция и оптимизация


Шаг 1

Веб сервер Apache, подобно многим приложениям, которые мы инсталлировали, не должен запускаться из-под суперпользователя root. Из этих соображений мы должны создать специального пользователя, который имеет минимальный доступ в систему и предназначен только для запуска демона веб сервера.

[root@deep /]# useradd -c “Apache Server” -u 80 -s /bin/false -r -d /home/httpd www 2>/dev/null :



Шаг 2

Внедрение модуля mod-ssl в дерево исходных кодов Apache

Если вы хотите использовать и включить поддержку SSL шифрования данных в ваш веб сервер Apache, то переместитесь в новый каталог с исходными кодами mod_ssl (cd mod_ssl-version-version/) и введите следующие команды на вашем терминале:

CC="egcs" \

CFLAGS="-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions" \

./configure \

--with-apache=../apache_1.3.12 \

--with-crt=/etc/ssl/certs/server.crt \

--with-key=/etc/ssl/private/server.key



Опция “--with-apache” определяет месторасположения каталога с исходными кодами Apache (мы допустили, что в нашем примере используем Apache версии 1.3.12), опция “--with-crt” определяет месторасположения вашего существующего публичного ключа для SSL шифрования, и опция “--with-key” определяет месторасположение вашего существующего приватного ключа для SSL шифрования.

ЗАМЕЧАНИЕ. Программное обеспечение OpenSSL должен быть уже проинсталлировано на вашем сервере, публичный и приватные ключи тоже должны уже существовать или быть созданы, или вы получите сообщение об ошибке во время конфигурирования модуля mod_ssl. Смотрите главу 16 этой книги “Серверное программное обеспечение (Сетевой сервис шифрования)”, для большей информации.

Шаг 3

Улучшение параметра MaxClients в Apache

По умолчанию в конфигурационном файле Apache (httpd.conf) максимальное число устанавливаемое для параметра MaxClients Parameter равно 256. Для загруженных сайтов и для улучшения производительности рекомендуется увеличить этот параметр. Вы можете сделать это редактируя файл “src/include/httpd.h” в дереве исходных кодов Apache и изменить это значение по умолчанию.


2) Сейчас, мы должны сконфигурировать и инсталлировать PHP4 на нашем Linux сервере:

CC="egcs" \

CFLAGS="-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions -I/usr/include/openssl" \

./configure \

--prefix=/usr \

--with-exec-dir=/usr/bin \

--with-apache=../apache_1.3.12 \

--with-config-file-path=/etc/httpd \

--disable-debug \

--enable-safe-mode \

--with-imap \ (если вы хотите поддержку IMAP & POP).

--with-ldap \ (если вы хотите поддержку сервиса каталогов LDAP).

--with-pgsql \ (если вы хотите поддержку баз данных PostgreSQL).

--with-mm \

--enable-inline-optimization \

--with-gnu-ld \

--enable-memory-limit

Эти опции говорят PHP4:

  • Компилировать без символов отладки.


  • Включить safe mode по умолчанию.


  • Включить поддержку IMAP & POP.


  • Включить поддержку сервиса каталогов LDAP.


  • Включить поддержку базы данных PostgresSQL.


  • Включить поддержку mm для улучшения производительности.


  • Включить внутренний оптимизацию для лучшей производительности.


  • Компилировать с поддержкой ограничения памяти.


  • компилятору C использовать GNU ld.


  • [root@deep php-4.0]# make

    [root@deep php-4.0]# make install

    Шаг 5

    Внедрение mod_perl в исходные коды

    Если вы хотите использовать и включить поддержку языка программирования Perl в ваш веб-сервер Apache, то перейдите к каталог с исходными кодами mod_perl (cd ../mod_perl-1.24/) и введите следующие команды на вашем терминале:

    perl Makefile.PL \

    EVERYTHING=1 \

    APACHE_SRC=../apache_1.3.12/src \

    USE_APACI=1 \

    PREP_HTTPD=1 \

    DO_HTTPD=1

    [root@deep mod_perl-1.24]# make

    [root@deep mod_perl-1.24]# make install

    Шаг 6

    Создание/Инсталляция Apache с/без mod_ssl +- PHP4 и/или mod_perl Сейчас, когда вы добавили в исходные коды Apache все модули, которые хотели, наступило время скомпилировать и проинсталлировать его. Переместитесь в каталог с исходными кодами Apache (cd ../apache_1.3.12/) и введите следующие команды на вашем терминале:

    SSL_BASE=SYSTEM \ (требуется если вы хотите включить поддержку mod_ssl в Apache).



    EAPI_MM=SYSTEM \ ( требуется если вы хотите включить поддержку mm библиотеку разделяемой памяти в Apache).

    CC="egcs" \

    OPTIM="-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions" \

    CFLAGS="-DDYNAMIC_MODULE_LIMIT=0" \

    ./configure \

    --prefix=/home/httpd \

    --bindir=/usr/bin \

    --sbindir=/usr/sbin \

    --libexecdir=/usr/lib/apache \

    --includedir=/usr/include/apache \

    --sysconfdir=/etc/httpd/conf \

    --localstatedir=/var \

    --runtimedir=/var/run \

    --logfiledir=/var/log/httpd \

    --datadir=/home/httpd \

    --proxycachedir=/var/cache/httpd \

    --mandir=/usr/man \

    --add-module=src/modules/experimental/mod_mmap_static.c \ (требуется если вы хотите использовать mod_mmap, смотрите секцию “Оптимизация Apache” в этой главе для большей информации).

    --add-module=src/modules/standard/mod_auth_db.c \ (требуется если вы хотите использовать mod_auth_db, смотрите секцию “Безопасность Apache” в этой главе для большей информации).

    --enable-module=ssl \ (требуется если вы хотите включить поддержку mod_ssl в ваш Apache).

    --enable-rule=SSL_SDBM \ (требуется если вы хотите включить поддержку mod_ssl в ваш Apache).

    --disable-rule=SSL_COMPAT \ (требуется если вы хотите включить поддержку mod_ssl в ваш Apache).

    --activate-module=src/modules/php4/libphp4.a \ (требуется если вы хотите включить поддержку PHP4 в ваш Apache).

    --enable-module=php4 \ (требуется если вы хотите включить поддержку PHP4 в ваш Apache).

    --activate-module=src/modules/perl/libperl.a \ (требуется если вы хотите включить поддержку mod_perl в ваш Apache).

    --enable-module=perl \ (требуется если вы хотите включить поддержку mod_perl в ваш Apache).

    --disable-module=status \

    --disable-module=userdir \

    --disable-module=negotiation \

    --disable-module=autoindex \

    --disable-module=asis \

    --disable-module=imap \

    --disable-module=env \

    --disable-module=actions

    Эти опции говорят Apache выполнить следующие установки:

  • модуль mod_mmap для улучшения производительности.




  • модуль mod_auth_db для парольной аутентификации пользователей.


  • модуль mod_ssl для шифрования данные и безопасного соединения.


  • модуль mod_php4 для поддержки языка подготовки сценариев на стороне сервера php и улучшения загрузки веб страниц созданных в PHP.


  • модуль mod_perl для лучшей безопасности и производительности работы cgi скриптов.


  • выключить модуль status


  • выключить модуль userdir


  • выключить модуль negotiation


  • выключить модуль autoindex


  • выключить модуль asis


  • выключить модуль imap


  • выключить модуль env


  • выключить модуль actions


  • ЗАМЕЧАНИЕ. Важно заметить, что удаление всех необязательных модулей во время конфигурирования улучшит производительность вашего веб сервера Apache. В нашей конфигурации приведенной выше, мы удалили большинство неиспользуемых модулей для уменьшения времени загрузки и ограничения риска безопасности вашего веб сервера. Смотрите документацию Apache, чтобы получить информацию о каждом удаленном модуле.

    Шаг 7

    Сейчас, мы должны инсталлировать Apache на вашем Linux сервере:

    [root@deep apache_1.3.12]# make

    [root@deep apache_1.3.12]# make install

    [root@deep apache_1.3.12]# rm -f /usr/sbin/apachectl

    [root@deep apache_1.3.12]# rm -f /usr/man/man8/apachectl.8

    [root@deep apache_1.3.12]# rm -rf /home/httpd/icons/

    [root@deep apache_1.3.12]# rm -rf /home/httpd/htdocs/

    [root@deep apache_1.3.12]# cd /var/tmp/php-4.0

    [root@deep php-4.0.0]# install -m 644 php.ini.dist /usr/lib/php.ini

    [root@deep php-4.0.0]# rm -rf /etc/httpd/conf/ssl.crl/

    [root@deep php-4.0.0]# rm -rf /etc/httpd/conf/ssl.crt/

    [root@deep php-4.0.0]# rm -rf /etc/httpd/conf/ssl.csr/

    [root@deep php-4.0.0]# rm -rf /etc/httpd/conf/ssl.key/

    [root@deep php-4.0.0]# rm -rf /etc/httpd/conf/ssl.prm/

    [root@deep php-4.0.0]# rm -f /etc/httpd/conf/srm.conf srm.conf.default access.conf access.conf.default

    Команда “make” будет компилировать все файлы с исходными кодами в исполняемые двоичные, команда “make install” будет инсталлировать исполняемые и сопутствующие им файлы в тербуемые места. Команда “rm -f” удалит небольшой скрипт “apachectl” отвечающий за запуск и остановку демона Apache, так как мы используем для этого срипт “httpd” находящийся в “/etc/rc.d/init.d/”. Мы также удаляем каталог “/home/httpd/icons”, который используется веб сервером Apache при автоматической индексации файлов. Эта возможность несет в себе риск безопасности и из-за этого мы ее отключили. Каталог “/home/httpd/htdocs” содержит все файлы с документацией на Apache, поэтому после прочтения, мы спокойно можем его удалить. Команда “install - m” проинсталлирует файл “php.ini.dist” в каталог “/etc/httpd/” и переименует его в “php.ini”; Этот файл контролирует многие аспекты работы PHP. Каталоги “ssl.crl”, “ssl.crt”, “ssl.csr”, “ssl.key” и “ssl.prm” в “/etc/httpd/conf” связаны с SSL, и в них хранятся публичные и приватные ключи. Так как для хранения ключей мы используем другой путь, “/etc/ssl/”, мы можем их спокойно удалить. В заключении, мы удаляем неиспользуемые файлы “srm.conf”, “srm.conf.default”, “access.conf” и “access.conf.default”, вместо которых сейчас используется одни файл “httpd.conf”.

    Очистка после работы.

    [root@deep /]# cd /var/tmp

    [root@deep tmp]# rm -rf apache-version/ apache-version.tar.gz mod_ssl-version-version/ mod_ssl-version-version.tar.gz php-version/ php-version.tar.gz mod_perl-version/ mod_perl-version.tar.gz

    Команды “rm” будет удалять все файлы с исходными кодами, которые мы использовали при компиляции и инсталляции Apache, mod_ssl, mod_perl и php. Также будут удалены сжатые архивы Apache, mod_ssl, mod_perl и php из каталога “/var/tmp”.


    Содержание раздела