Skip to content


Запрет использования нашего редиректора левыми сайтами

В большинстве популярных CMS из SEO-соображений (или для логирования переходов с сайта на другие сайты) имеется специальный скрипт-перенаправлялка, с помощью которого публикуемые в user-generated-content внешние ссылки автоматом преобразуется во внутренние. Работает такой скрипт просто – заставляет веб-сервер вернуть ответ с HTTP-статусом 30x (301, 302 или 303) и с передачей броузеру URL-а для перехода в HTTP-заголовке "Location:". На моем сайте такой скрипт живет по адресу "/go/".

Недавно на мой apache httpd стали приходить многочисленные зловредные запросы вот такого примерно вида (access-лог пишется в формате combined):

87.104.60.5 - - [06/May/2015:13:29:54 +0300] "GET /go/url=http://www.salmon.ro/christina/archives/000021.html HTTP/1.1" 303 - "http://davischiropracticinc.com/rd/?dku=http://redirect.rankey.com/redirect.html?site_url=avz.org.ua/go/url=http://www.salmon.ro/christina/archives/000021.html" "Opera/9.80 (Windows NT 6.2; Win64; x64) Presto/2.12.388 Version/12.16"

87.104.60.5 - - [06/May/2015:13:29:54 +0300] "GET /go/url=http://www.salmon.ro/christina/archives/000021.html HTTP/1.1" 303 - "http://shop.monard.se/redirector.php?url=http://www.lugnet.com/jump.cgi?http://avz.org.ua/go/url=http://www.salmon.ro/christina/archives/000021.html" "Opera/9.80 (Windows NT 6.2; Win64; x64) Presto/2.12.388 Version/12.16"

87.104.60.5 - - [06/May/2015:13:29:54 +0300] "GET /go/url=http://www.salmon.ro/christina/archives/000021.html HTTP/1.1" 303 - "http://www.guchol.net/redirect.php?url=http://www.christiancinema.com/catalog/redirect.php?action=url&goto=avz.org.ua/go/url=http://www.salmon.ro/christina/archives/000021.html" "Opera/9.80 (Windows NT 6.2; Win64; x64) Presto/2.12.388 Version/12.16"

Так как такие запросы обычно приходят большими пачками, то в это время load average резко растет, сервер начинает ощутимо тормозить и посетители моего сайта не могут нормально им пользоваться. Очевидно, что какая-то редиска использует нас в каких-то своих гнусных целях. Это, конечно же, нужно пресечь. Сделать это можно с помощью следующих директив модуля mod_rewrite (для случая, если наш защищаемый сайт имеет домен avz.org.ua):

  1. RewriteCond %{HTTP_REFERER} !^http://(www\.)?avz\.org\.ua/.*
  2. RewriteCond %{HTTP_REFERER} !^https?://(www\.)?google\.com.*
  3. RewriteCond %{HTTP_REFERER} !^$
  4. RewriteRule go/url=.* - [F]

Это означает, что если обращение к нашему редиректору происходит не с нашего сайта И не с гугловой выдачи И с не пустым HTTP-заговком Referer, то такие обращения блокируются, выдавая HTTP status code 403 (Forbidden) вместо кода 30x. Выдать 403 сразу на уровне апача намного быстрее, чем передавать запрос на обработку интерпретатору PHP.

Размещено в категории Веб-приложения. Теги: , .

yum: лечим [Errno 14] problem making ssl connection

Однажды после добавления на сервере с CentOS 6 очередного репозитория в yum я обнаружил, что yum c ним работать отказывается, выдавая печальное сообщение об ошибке "problem making ssl connection":

  1. $ cat /etc/issue ; uname -r
  2. CentOS release 6.4 (Final)
  3. Kernel \r on an \m
  4.  
  5. 2.6.32-358.2.1.el6.x86_64
  6.  
  7. $ sudo yum install apache-maven
  8. Loaded plugins: fastestmirror, security
  9. Setting up Local Package Process
  10. Examining apache-maven-3.2.5-1.el6.noarch.rpm: apache-maven-3.2.5-1.el6.noarch
  11. Marking apache-maven-3.2.5-1.el6.noarch.rpm to be installed
  12. Loading mirror speeds from cached hostfile
  13.  * base: mirror.raystedman.net
  14.  * extras: yum.tamu.edu
  15.  * rpmforge: mirror.hmc.edu
  16.  * updates: mirror.cogentco.com
  17. <strong>http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-6/x86_64/repodata/repomd.xml: [Errno 14] problem making ssl connection</strong>
  18. Trying other mirror.

Сразу возник вопрос – какой нафиг SSL, если URL начинается с http? При более пристальном изучении URL-а с помощью curl-а оказалось, что там есть 302-ой редирект на URL, начинающийся с https:

  1. $ curl -v http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-6/x86_64/repodata/repomd.xml
  2. * About to connect() to repos.fedorapeople.org port 80 (#0)
  3. *   Trying 152.19.134.191... connected
  4. * Connected to repos.fedorapeople.org (152.19.134.191) port 80 (#0)
  5. > GET /repos/dchen/apache-maven/epel-6/x86_64/repodata/repomd.xml HTTP/1.1
  6. > User-Agent: curl/7.21.0 (x86_64-redhat-linux-gnu) libcurl/7.21.0 NSS/3.12.10.0 zlib/1.2.5 libidn/1.18 libssh2/1.2.4
  7. > Host: repos.fedorapeople.org
  8. > Accept: */*
  9. >
  10. < HTTP/1.1 302 Found
  11. < Date: Wed, 25 Feb 2015 12:19:43 GMT
  12. < Server: Apache/2.2.15
  13. < Location: https://repos.fedorapeople.org/repos/dchen/apache-maven/epel-6/x86_64/repodata/repomd.xml
  14. < Cache-Control: max-age=0
  15. < Expires: Wed, 25 Feb 2015 12:19:43 GMT
  16. < Content-Length: 352
  17. < Connection: close
  18. < Content-Type: text/html; charset=iso-8859-1
  19. <
  20. <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
  21. <html><head>
  22. <title>302 Found</title>
  23. </head><body>
  24. <h1>Found</h1>
  25. <p>The document has moved <a href="https://repos.fedorapeople.org/repos/dchen/apache-maven/epel-6/x86_64/repodata/repomd.xml">here</a>.</p>
  26. <hr>
  27. <address>Apache/2.2.15 Server at repos.fedorapeople.org Port 80</address>
  28. </body></html>
  29. * Closing connection #0

Так как свежий maven был все еще очень нужен, продолжаем разбираться дальше. У yum-а есть переменная окружения, включающая отладочный лог:

  1. # URLGRABBER_DEBUG=1 yum install apache-maven 2> /tmp/yum-debug.log

В результате в файле /tmp/yum-debug.log получаем 45КБ инфы от urlgrabber-а, самое полезная часть которой выглядит вот так:

  1. < HTTP/1.1 302 Found
  2. < Date: Wed, 25 Feb 2015 11:16:47 GMT
  3. < Server: Apache/2.2.15
  4. < Location: https://repos.fedorapeople.org/repos/dchen/apache-maven/epel-6/x86_64/repodata/repomd.xml
  5. < Cache-Control: max-age=0
  6. < Expires: Wed, 25 Feb 2015 11:16:47 GMT
  7. < Content-Length: 352
  8. < Connection: close
  9. < Content-Type: text/html; charset=iso-8859-1
  10. 2015-02-25 11:16:47,307 header ended:
  11. INFO:urlgrabber:header ended:
  12. <
  13. * Closing connection #0
  14. * Issue another request to this URL: 'https://repos.fedorapeople.org/repos/dchen/apache-maven/epel-6/x86_64/repodata/repomd.xml'
  15. * About to connect() to repos.fedorapeople.org port 443 (#0)
  16. *   Trying 152.19.134.191... * connected
  17. * Connected to repos.fedorapeople.org (152.19.134.191) port 443 (#0)
  18. * Initializing NSS with certpath: sql:/etc/pki/nssdb
  19. *   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  20.   CApath: none
  21. * NSS error -8092
  22. * Closing connection #0
  23. * SSL connect error
  24. 2015-02-25 11:16:47,522 exception: [Errno 14] problem making ssl connection
  25. INFO:urlgrabber:exception: [Errno 14] problem making ssl connection
  26. 2015-02-25 11:16:47,523 calling callback: (<bound method YumBaseCli.failureReport of <cli.YumBaseCli object at 0x7fd1ad643410>>, (), {})
  27. INFO:urlgrabber:calling callback: (<bound method YumBaseCli.failureReport of <cli.YumBaseCli object at 0x7fd1ad643410>>, (), {})
  28. http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-6/x86_64/repodata/repomd.xml: [Errno 14] problem making ssl connection
  29. Trying other mirror.
  30. 2015-02-25 11:16:47,523 MIRROR: failed
  31. INFO:urlgrabber:MIRROR: failed
  32. 2015-02-25 11:16:47,523 GR   mirrors: [] 0
  33. INFO:urlgrabber:GR   mirrors: [] 0
  34. 2015-02-25 11:16:47,524 MAIN mirrors: [http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-6/x86_64/] 0
  35. INFO:urlgrabber:MAIN mirrors: [http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-6/x86_64/] 0
  36. Error: Nothing to do

Не шибко информативно, однако. Но вот одна строчка из всей этой простыни NSS error -8092 навела на мысль, что можно попробовать обновить библиотеки NSS:

  1. $ rpm -qi nss | sed -r '/^Description/,$ !d'
  2. Description :
  3. Network Security Services (NSS) is a set of libraries designed to
  4. support cross-platform development of security-enabled client and
  5. server applications. Applications built with NSS can support SSL v2
  6. and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509
  7. v3 certificates, and other security standards.
  8.  
  9. $ sudo yum -y update nss

И таки случилось чудо! Yum перестал выдавать ошибку, подхватил свежедобавленный репозиторий и поставил мне нужные RPM-пакеты.

Happy End :)

Размещено в категории *nix, Howto. Теги: , , .

Ошибка Firefox: sec_error_reused_issuer_and_serial

Что делать если firefox пишет sec_error_reused_issuer_and_serial

Ошибка firefox sec_error_reused_issuer_and_serial

Как-то раз, когда в очередной раз возникла необходимость зайти на iDRAC подвисшего сервера Dell Mozilla Firefox напрочь отказался это делать, выдавая вот такое сообщение об ошибке:

Secure Connection Failed

You have received an invalid certificate. Please contact the server administrator or email correspondent and give them the following information:

Your certificate contains the same serial number as another certificate issued by the certificate authority. Please get a new certificate containing a unique serial number.

(Error code: sec_error_reused_issuer_and_serial)

The page you are trying to view cannot be shown because the authenticity of the received data could not be verified. Please contact the website owners to inform them of this problem. Alternatively, use the command found in the help menu to report this broken site.

Такое описание навело меня на мысль, что один или более сертификатов в хранилище броузера какие-то неправильные. Чисто интуитивно я стал искать среди них те, что имеют отношение к Dell:

Где в firefox находится управление SSL-сертификатами

Где в firefox находится управление SSL-сертификатами

И таки нашел:

Firefox SSL certificate manager

Удаляем SSL-сертификаты из Mozilla Firefox

После удаления этого сертификата броузер уже стал выдавать стандартное предупреждение о самоподписанном сертификате, давая возможность продолжить, выбрав вариант "I understand the risks...". Далее я попал в веб-интерфейс iDRAC и сервер был успешно перезагружен.

Размещено в категории Howto.

Чем смотреть производительность в linux

Софт для мониторинга производительности

Чем мониторить различные подсистемы сервера в linux

Размещено в категории Разное.

Страница 1 из 44123456789101112...Последняя »