Войти через loginza
Закрыть панель

В предыдущей статье я затрагивал тему nginx.
А значит нужно его установить.
nginx [engine x] — это HTTP-сервер и почтовый прокси-сервер. Я начал разрабатывать nginx весной 2002 года, а осенью 2004 года вышел первый публично доступный релиз. В декабре 2009 года nginx использовался на 4% самых посещаемых сайтов в мире.
Я буду рассматривать установку в привычной и используемой мной системе Ubuntu Server 10.04 LTS, хотя думаю установка будет мало чем отличаться в любых Ubuntu-подобных системах, и возможно на Debian и его клонах.
Итак поехали.
Установка сводится к банальному
sudo aptitude install nginx
Готово. Теперь нужно немного подкорректировать конфиги , как самого nginx так и apache.
Начнем с apache :
Открываем /etc/apache2/ports.conf

NameVirtualHost *:80
Listen 80

меняем на :

NameVirtualHost *:88
Listen 88

Так как на 80 порту у нас теперь будет nginx.
Если у Вас уже было куча Виртуалхостов смените у них порты с 80 на 88 (хотя и это только для примера, — использовать можете любой).
И теперь коснемся самого nginx.
Редактировать мы будем секцию

http {
upstream backend
{
server 127.0.0.1:88;
}
server {
listen 80;
location ~/\.ht {
deny all;
}
location / {
proxy_pass http://backend/;
proxy_set_header Range "";
proxy_set_header Request-Range "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

Перезапускаем сервисы :

/etc/init.d/apache2 restart
/etc/init.d/nginx restart

 

Недавно наткнулся на статью про найденную уязвимость в веб-сервере apache.

Пять дней назад в листе рассылки Full Disclosure появился скрипт, по заявлению автора, убивающий Apache начиная от самых старых версий до самых новых.

Работает скрипт очень просто : запускает простой запрос в несколько десятков потоков.

HEAD / HTTP/1.1
Host: www.example.com
Range: bytes=0-,5-0,5-1,5-2,5-3,5-4,<...>,5-1299,5-1300
Accept-Encoding: gzip
Connection: close

В ответ на такой запрос Apache для подсчета Content-Length собирает в памяти длинный ответ из перекрывающихся кусков запрошенного файла, который может занять и занимает значительный объём памяти. При этом потребление памяти Apache начинает резко расти, как на том графике в начале, что при должном, совсем небольшом, количестве запросов приводит к DoS даже на приличных серверах.

Проверить, уязвим ли ваш сервер к этой атаке легко:

curl -I -H "Range: bytes=0-1,0-2" -s www.example.com/robots.txt | grep Partial

Если Вы увидели ответ :

206 Partial Content

То Ваш сервер 100% уязвим для такой атаки.

Что же делать и как поставить защиту ?

Самым простым способомбудет прописать для nginx запрет для проксирования пустых запросов :

proxy_set_header Range "";
proxy_set_header Request-Range "";

А вот если nginx у Вас нет, то рекомендую его установить. Или по сообщениям сайта  cybersecurity.ru :

Разработчики web-сервера Apache сообщают об исправлении опасной уязвимости CVE-2011-3192 , которая использовалась злоумышленниками для проведения атак на отказ в обслуживании web-серверов. Стоит отметить, что web-сервер Apache обеспечивает работу двух третей всех сайтов в мире.

Напомним, что опасная уязвимость была обнаружена независимыми специалистами в области информационной безопасности 20 августа. В тот же день в сети Интернет появился эксплоит, который позволял вывести из строя любой сайт, который использует Apache HTTP Server.

Уязвимость в Apache HTTP Server позволяла злоумышленникам аварийно завершать работу web-серверов, используя простую вредоносную программу. Ошибка заключалась в способе обработки большого количества Range запросов в HTTPD, что приводило к исчерпанию ресурсов удаленной системы. Ошибка была исправлена в новой версии Apache HTTP Server 2.2.20. Однако для того, чтобы предотвратить атаку, все администраторы сайтов, которые используют Apache HTTP Server, должны самостоятельно установить обновление.

 

Делаем Спойлеры в Worpress.

Для начала определимся для чего это нужно.

Применений Спойлерам очень много.

Основная задача, мне кажется, сэкономить место. Или скрыть от быстрого взгляда некоторую информацию.

Итак как это работает ? Пример можно посмотреть у меня же на блоге. Переведите взгляд правее и посмотрите на меню — Рубрики/метки/Голосование/Каталоги. Все это занимает бОльшую часть боковой колонки, место которой можно более еффективно использовать.

По заголовку можно раскрыть/скрыть содержимое.

Практика.

Сначала нужно задать соответсвующие стили. Для этого открываем CSS файл с описанием стилей и вносим соответствующий код:

.onner {font-size: 1.4em;font-variant: small-caps;color: #08970c;border-bottom: 1px solid #ccc; width: 260px;font-weight: bold;}
 .spoiler {border:0px solid #ddd; padding:3px;}
 .spoiler .inner {border:0px solid #eee; padding:1px;margin:1px;}

Оформление можете редактировать на свой вкус и цвет.

Далее между тегами <head> и </head> подключаем java-скрипт:

<script type="text/javascript"> 
function showSpoiler(obj) {var inner = obj.parentNode.getElementsByTagName("div")[0]; if (inner.style.display == "none") inner.style.display = ""; else inner.style.display = "none"; } 
</script>

Ну и теперь собственно сам код спойлера:

<div class="spoiler"> 
<span class="onner" onclick="showSpoiler(this);">Раскрыть/Скрыть</span> 
<div class="inner" style="display:none;">
Тут пишем любой контент
</div></div>