Показаны сообщения с ярлыком apache. Показать все сообщения
Показаны сообщения с ярлыком apache. Показать все сообщения

среда, 1 июля 2015 г.

Настройка mod_ssl в apache 2.2.x

Поправил дефолтные настройки mod_ssl для Apache 2.2.x

<IfModule mod_ssl.c>
  SSLRandomSeed startup builtin
  SSLRandomSeed startup file:/dev/urandom 512
  SSLRandomSeed connect builtin
  SSLRandomSeed connect file:/dev/urandom 512
  AddType application/x-x509-ca-cert .crt
  AddType application/x-pkcs7-crl    .crl
  SSLPassPhraseDialog  builtin
  SSLSessionCache        shmcb:${APACHE_RUN_DIR}/ssl_scache(512000)
  SSLSessionCacheTimeout  300
  SSLMutex  file:${APACHE_RUN_DIR}/ssl_mutex
  SSLCipherSuite kEECDH+AESGCM+AES128:kEECDH+AES128:kRSA+AESGCM+AES128:kRSA+AES128:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv2
  SSLHonorCipherOrder on
  SSLProtocol All -SSLv2 -SSLv3
</IfModule>

Если прописать такие настройки в /etc/apache2/mods-available/ssl.conf, то SSL Server Test не выдает дополнительных рекомендаций.

воскресенье, 10 марта 2013 г.

Редирект через mod_rewrite превращает POST запрос в GET

Если использовать редирект POST запроса через mod_rewrite, то в результате POST превратится в GET

<IfModule mod_rewrite.c>
  RewriteCond %{REQUEST_URI} ^auth.php$
  RewriteRule (.*) http://auth.example.com/login.php [R=301,L]
</IfModule>

Несмотря на всю костыльность самой идеи есть способ, который позволит избежать этой проблемы. Вместо 301 редиректа нужно использовать 307.

<IfModule mod_rewrite.c>
  RewriteCond %{REQUEST_URI} ^auth.php$
  RewriteRule (.*) http://auth.example.com/login.php [R=307,L]
</IfModule>

Решение было найдено моим коллегой в википедии.

четверг, 21 февраля 2013 г.

Предоставление доступа по известному ip адресу или через HTTP авторизацию

Если стоит задача разрешить доступ для некоторых клиентов (с известными ip адресами), а у остальных запрашивать HTTP авторизацию, то для Apache это можно сделать так:

Order Allow,Deny
Allow from x.x.x.x
Allow from y.y.y.y

AuthType basic
AuthName "Limited access. Login first!"
AuthUserFile /path/to/valid/.htpasswd
Require valid-user
Satisfy any

В этом случае если посетитель имеет ip адрес x.x.x.x или y.y.y.y, то ему будет предоставлен доступ без запроса пароля, в ином случае будет использована HTTP авторизация.

mod_fcgid: read data timeout in 40 seconds

Сегодня обнаружилось, что на одном из серверов PHP скрипты падают с различными ошибками. В логах нашлось следующее

[Thu Feb 21 13:43:48 2013] [warn] [client 192.168.1.117] mod_fcgid: read data timeout in 40 seconds
[Thu Feb 21 13:43:48 2013] [error] [client 192.168.1.117] Premature end of script headers: install.php

Поскольку на сервере стоит cPanel, то проблема решается так:
  • увеличить лимит ожидания ответа (я выставил 3600 секунд), для этого нужно добавить в
    /usr/local/apache/conf/includes/pre_virtualhost_global.conf
    <IfModule mod_fcgid.c>
        FcgidIOTimeout 3600
    </IfModule>

  • обновить конфигурацию apache
    /scripts/rebuildhttpdconf

  • перезапустить apache
    service httpd restart

четверг, 5 июля 2012 г.

Maintenance page для сайтов, которые обслуживаются Apache

Я уже писал про maintenance page для сайтов, которые обслуживаются Nginx, а сегодня добавлю пример такой страницы для Apache.

Содержимое страницы maintenance.html остается прежним:

<html>
<head>
<title>Server Maintenance</title>
</head>
<body>
<center>
<h1>Server maintenance</h1>
Our apologies for the temporary inconvenience. The page is temporarily unavailable as server is down for scheduled maintenance. We will be back soon.
</center>
</body>
</html>
/var/www/maintenance/maintenance.html

Чтобы Apache выдавал страницу с кодом 503, нужно немного доработать .htaccess:

ErrorDocument 503 /maintenance.html 

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^/maintenance.html$
    RewriteCond %{REMOTE_ADDR} !1.2.3.4
    RewriteRule .* /maintenance.html [R=503,L]
</IfModule>
/var/www/maintenance/.htaccess

После этого maintenance страницу будет показывать всем кроме тех, кто заходит на сайт с ip 1.2.3.4.

понедельник, 12 декабря 2011 г.

Disable SSLv2 and weak ciphers

Comprehensive guide how to disable SSLv2 and weak ciphers. As a quick reference for Apache:

<IfModule mod_ssl.c>
    SSLProtocol -ALL +SSLv3 +TLSv1
    SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM
</IfModule>

To test new settings:
$ openssl s_client -ssl2 -connect servername:443
CONNECTED(00000003)
32386:error:1407F0E5:SSL routines:SSL2_WRITE:ssl handshake failure:s2_pkt.c:428:

$ openssl s_client  -connect servername:443 -cipher LOW:EXP

CONNECTED(00000003)
32391:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:s23_clnt.c:602:

понедельник, 26 июля 2010 г.

Сокрытие версии апача и php в ответе сервера.

Понадобилось скрыть версии апача и php в ответе сервера. С ходу нагуглил решение для апача и php. Себе помечу как памятку.

Apache
ServerTokens ProductOnly
ServerSignature Off

PHP
expose_php = Off