Skip to content


Выборочная http-аутентификация в apache httpd 2.4

Что делать когда надо закрыть HTTP-аутентификацией не весь сайт полностью, а почти весь, но оставить исключение для некоторых урлов? Использовать примерно вот такой конфиг виртуального хоста (внутри директив <VirtualHost>...</VirtualHost>):

  SetEnvIfNoCase Request_URI ^/index.php/rest/V1 dont_require_auth=true
  
    AllowOverride All
    AuthType Basic
    AuthName "Ausweis"
    AuthBasicProvider file
    AuthUserFile "/usr/hosting/usercreds"
    
      Require env dont_require_auth
      Require all granted
    
    Require user dev
  

В результате благодаря объявленной в строке 1 переменной окружения dont_require_auth доступ без аутентификации (Require all granted в сочетании с логическим И Require env dont_require_auth) будет только по URL-ам, которые начинаются с /index.php/rest/V1. А на все остальные запросы будет приглашение ввести логин/пароль, и доступ будет разрешен только пользователю dev при условии ввода правильного соотвествующего ему пароля.

Или вот еще другой (обратный) пример, где запрос на аутентификацию будет только при НЕвыполнении условия:

SetEnvIfNoCase HOST ^dev\.avz\.org\.ua$ is_protected
SetEnvIfNoCase HOST ^test\.avz\.org\.ua$ is_protected

  
    Require all granted
    Require not env is_protected
  
  AuthType Basic
  AuthName "Ausweis"
  AuthUserFile "/usr/hosting/usercreds"
  Require valid-user

В документации, кстати, написано, что "when the Require directive is negated it can only fail or return a neutral result, and therefore may never independently authorize a request".

А а другой похожей статье вы можете почитать как сделать аутентификацию в apache на основе нескольких файлов с паролями.

Posted in *nix, Howto.

Tagged with .


Как должны работать истинно государственные банки

Похоже, в привате уже научились эффективным методам государственного управления:

Все правильно сделали, так держать!

Posted in Развлекуха.


Как найти нужный промежуточный SSL-сертификат

Часто бывает, что клиент присылает сертификат для своего домена без промежуточного сертификата или с неправильным промежуточным сертификатом. Почему-то чаще всего это наблюдается с теми, кто покупает сертификаты у RapidSSL. Причем проблема эта незаметна, пока не доходит дело до работы с сайтом с какого-нибудь Android-девайса. По слухам, обычные десктопные броузеры (Opera, Firefox, Chrome) умеют сами находить при необходимости недостающие промежуточные сертификаты и молча и незаметно для пользователя подгружать их в случае, если таковые не были предоставлены сервером. А вот броузеры на android-устройствах, а также curl, проявляют бОльшую принципиальность и выдают назойливое предупреждение в стиле "сертификат получен из недоверенного центра сертификации" если сервер не предоставил полную цепочку сертификатов из корневого и всех промежуточных.

Чтобы проверить, имеет ли сервер полную цепочку сертификатов, имеется чудесный сервис https://www.ssllabs.com/ssltest/. Вводим там домен и смотрим:

Находим сертификат по ingerprint -у

Как найти промежуточный SSL-сертификат с помощью SSLLABS

"Extra download" означает, что наш веб-сервер не предоставил сертификат и SSLLabs-у пришлось искать дополнительные сертификаты самостоятельно. Что, надо отметить, у него отлично получается :) Смотрим на Fingerprint SHA1 и видим там 47f2db11606b7a5836c5b9582cefc33a0d67c4fe. Далее забиваем fingerprint в google и смотрим что он знает по этому поводу. В моем случае нашлось по ссылке https://ssl-tools.net/subjects/154d4e79cc1ed804d85a622d56b4608e206cc935:

Intermediate-сертификат от Symantec CA

Найденный промежуточный сертификат Symantec Basic DV SSL CA - G2

Там дальше клацаем по кнопочке PEM и получаем искомый промежуточный SSL-сертификат, который нужно прописать в конфигах веб-сервера. Профит!

А в этой статье написано как сделать правильный c точки зрения SSLLabs конфиг haproxy.

Posted in Howto.


smartctl -x на RAID-контроллере HP Smart Array E200i

Как-то раз на просторах ынтернета попался мне совет запустить smartctl с параметром -x.

Я, конечно, как всякий homo sapiens, сначала почитал man:

-x, --xall
     Prints all SMART and non-SMART information about the device. For ATA
     devices this is equivalent to ´-H -i -g all -c -A -f brief
     -l xerror,error -l xselftest,selftest -l selective -l directory
     -l scttemp -l scterc -l devstat -l sataphy´.
     and for SCSI, this is equivalent to
     ´-H -i -A -l error -l selftest -l background -l sasphy´.

Не увидев там ничего стрёмного, выполнил вот такую командочку:

# smartctl -x -a -d cciss,0 /dev/cciss/c0d0
smartctl 5.43 2012-06-30 r3573 [x86_64-linux-2.6.32-642.13.1.el6.x86_64] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net
 
/dev/cciss/c0d0 [cciss_disk_00] [SCSI]: Device open changed type from 'sat,auto' to 'cciss'
Vendor:               SEAGATE 
Product:              ST91000640SS    
Revision:             0001
User Capacity:        1,000,204,886,016 bytes [1.00 TB]
Logical block size:   512 bytes
Logical Unit id:      0x5000c50025fd7283
Serial number:        9XG02CLM00009126234W
Device type:          disk
Transport protocol:   SAS
Local Time is:        Tue Jan 31 15:29:39 2017 UTC
Device supports SMART and is Enabled
Temperature Warning Enabled
SMART Health Status: OK
 
Current Drive Temperature:     22 C
Drive Trip Temperature:        68 C
Manufactured in week  of year 20
Specified cycle count over device lifetime:  10000
Accumulated start-stop cycles:  36
Specified load-unload count over device lifetime:  300000
Accumulated load-unload cycles:  36
Elements in grown defect list: 3
Vendor (Seagate) cache information
  Blocks sent to initiator = 791069177
  Blocks received from initiator = 8147385
  Blocks read from cache and sent to initiator = 6510918
  Number of read and write commands whose size <= segment size = 1294551
  Number of read and write commands whose size > segment size = 0
Vendor (Seagate/Hitachi) factory information
  number of hours powered up = 37972.70
  number of minutes until next internal SMART test = 12
 
Error counter log:
           Errors Corrected by           Total   Correction     Gigabytes    Total
               ECC          rereads/    errors   algorithm      processed    uncorrected
           fast | delayed   rewrites  corrected  invocations   [10^9 bytes]  errors
read:    8169902        0         0   8169902          0       2604.051           0
write:         0        0         0         0          0          4.359           0
 
Non-medium error count:        1
 
[GLTSD (Global Logging Target Save Disable) set. Enable Save with '-S on']
No self-tests have been logged
Long (extended) Self Test duration: 12198 seconds [203.3 minutes]
Segmentation fault (core dumped)

И... консолька замерла, связь с сервером пропала, пинга нет. Слава Хэнку, что сервер был не из production-кластера. И через пару минут самостоятельно поднялся.

При этом стоит отметить, что командочка smartctl -a -d cciss,0 /dev/cciss/c0d0 (то же самое, но без -x) там же пару минут ранее выполнялась несколько раз без каких-либо проблем. OS – CentOS 6.8 x86_64, RAID-контроллер HP Smart Array E200i.

Мораль: будьте осторожны со smartctl. Я предупредил.

Posted in *nix.

Tagged with , .