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

7 янв. 2015 г.

Защита nginx на сервере

Защита nginx на сервере многогранна.

Одна из граней, пока у нас не увели рута или юзера с правами рута, то логи nginx нужно обогатить:

if ($request_method ~ "^POST$") {
    access_log /var/log/nginx/access-POST-$server_name.log main_post;
}
if ($request_method ~ "^(PUT|OPTIONS|HEAD|PATCH|DELETE|TRACE|CONNECT)$") {
    access_log /var/log/nginx/access-PUT-$server_name.log main_post;
}

ну и:

log_format main_post '$remote_addr [$time_local] $host "$request" '
    '$status $body_bytes_sent [$request_body] "$http_referer" '
    '"$http_user_agent"';

ну и client_body_buffer_size в /etc/nginx/nginx.conf установить как вам нужно, чтобы ваши запросы помещались, а хакерские нет :)
или наоборот, ставьте побольше, чтобы любой хакерский запрос поймать.

и защитить:

chown nginx:nginx /var/log/nginx
chmod 200 /var/log/nginx

последнее особенно удивительно для меня, самоучки, но логи пишутся, а больше убирать там нечего :)

UPDATE уже ночью
логи то пишутся, но после рестарта nginx хочет прочитать старое, чтобы добавить новое и не может.
поэтому

chmod 600 /var/log/nginx

и наблюдаем дальше...

И да, Ceterum censeo Lugansk esse delendam! Прочитать полностью...

15 нояб. 2014 г.

Unix nginx open() failed (13 permission denied)

Если вдруг на вашем любимом сервере NGINX + PHP-FPM после безобидных на первый взгляд действий перестали открываться все сайты с ошибкой 403 "HTTP/1.1 403 Forbidden", а в логе nginx пишет примерно такое даже при обращении к серверу по IP:

2014/11/15 13:46:58 [error] 25908#0: *27341 open() "/home/pupkin/www/5.6.7.8/index.html" failed (13: Permission denied), client: 1.1.1.1, server: 5.6.7.8, request: "GET /index.html HTTP/1.0", host: "5.6.7.8"

И вы уже проверили владельца папки и права доступа ко всему, что только можно, то пришло время проверить прова на переход по папкам сверху вниз командой namei -om ( owner + mode ), примерно так:

namei -om /home/pupkin/www/5.6.7.8/index.html

получите:

f: /home/pupkin/www/5.6.7.8/index.html
drw-r--r-- root root /
drwxr-xr-x root root home
drwx-----x pupkin users pupkin
drwxr-xr-x pupkin users www
drwxr-xr-x pupkin pupkin 5.6.7.8
-rw-rw-r-- pupkin pupkin index.html

Обратите внимание на первую строку. Если в процессе ваших настроек вы случайно дали команду

chmod 644 /

т.е. хотели какому-то файлу поставить права 644, но путь к файлу куда-то пропал и остался только путь к корню.

Лечится очевидно:

chmod 755 /

или более умно, мне помогло так.

Удалить из ридера
http://dmxo.blogspot.com/ - был блог и пропал автор навсега в 2012 году Прочитать полностью...

16 сент. 2013 г.

Два способа как экономить траф и ресурсы VDS - nginx.conf

nginx.conf

# Баним нахуй ботов

if ( $http_user_agent ~*

360Spider|80bot|80legs|Aboundex|Aboundexbot|AhrefsBot|
Baiduspider|BecomeBot|Blekkobot|DinoPing|Exabot|
Ezooms|Fasterfox|MJ12bot|MLBot|Morfeus|Nutch|
OmniExplorer_Bot|Searchmetrics|SemrushBot|
SeznamBot|Snoopy|SolomonoBot|Sosospider|SurveyBot|
TurnitinBot|URLAppendBot|WBSearchBot|YamanaLab-Robot|ZmEu|aiHitBot|archive.org|dataprovider.com|
discoverybot|dotbot|dotnetdotcom|findlinks|genieBot|
ia_archiver|integromedb|ip-web-crawler|linkcheck|
lipperhey|panopta.com|purebot|rogerbot|scrapbot|
sistrix|sitebot|spock

) {
return 444;
}

переносы строк я поставил для удобства чтения, а вообще-то они в одну строку живут у меня. Кстати, это одно не многих законных использований директивы if ( в конфигах энджинкса.

Потому что robots.txt они не читают, а если читают, то не выполняют, да и отдавать им robots.txt дюже жирно будет. Некоторые вписывают сюда Yandex, но учитывая его мировую экспансию на страны-члены-НАТО (Турция, например), я его не забанил.

Если какую тварь не упомянул или кого лишнего вписал - буду рад комментам.

Важная новость для тех, кто в танке, как я. Как оказалось http://clockworkorange.me/ с 01/01/2013 снова работает, и работает хорошо! Читайте, завидуйте, думайте, делайте. А то я поставил на мониторинг фид старого блога, а там:

Requesting http://www.clockworkorange.biz/feed .. Ok
Reply received (reply time: 469 ms)
-----------------------------------
HTTP/1.1 404 Not Found
Server: nginx/1.3.12
Date: Mon, 16 Sep 2013 11:33:22 GMT
Content-Type: text/html; charset=iso-8859-1
Content-Length: 291
Connection: close

Идите читать Блог Заводного Апельсина Ересь эпохи разума Прочитать полностью...

12 сент. 2013 г.

Прощай, Apache (вэбсервер такой). Я буду скучать.

Прощай, Apache (вэбсервер такой). Я буду скучать. Твоя прожорливость памяти и решето утечек памяти мне не по карману. Твои модули мне не осилить в плане "а ты отключи лишние модули и Апач будет хорошо работать". Я полностью переписал свои .htaccess в nginx.conf. PHP-FPM так же хорошо работает и без этой прожорливой пожилой жировой прослойки.

В плане переезда на современный софт перевооружения для войны со зверинцем, где заправляют Панда и Пингвин. Как памятку для highload doorway pages пишу этот пост. Начало истории тут  Centos. Как оказалось...

Советы грядущем поколениям по вопросу "как переписать конфиг апача .htaccess в конфиг энджинкса nginx.conf":

  • конфиг энджинкса это не программа на ПХП!
  • порядок следования директив в nginx.conf редко что-то означает, а точнее скачать ничего не означет
  • не используйте директиву if иначе как с return или rewrite ... last; - смотри пункт 1 и тут
  • в директиве if пробел перед скобкой обязятелен!
  • Читайте мануалы
  • Читайте мануалы на английском, там написано больше, чем на русском.
  • Читайте мануалы вопросы-ответы в том числе так вот так (гугл разумеется) site:nginx.org/ru rewrite или что ещё непонятно
  • Читайте мануалы так (гугл разумеется) site:mailman.nginx.org rewrite или что ещё непонятно
  • Ну и так тоже читайте мануалы (гугл разумеется) site:forum.nginx.org rewrite
  • Гуглите, ответы лично Игоря Сысоева на сложные вопросы попадаются в самых неожиданных местах.
  • Пишите свой конфиг от простого к сложному с нуля
  • Не включайте в свой конфиг ни единого символа, если не знаете точно, что он делает. Даже если нагуглили достойный пример - проверяйте все символы, зачем они указаны на что они влияют.

Желаю вам успешного избавления от Апача.

Удалить из ридера:
Ура! Ридер чист от говноблогов! Читайте Самосвала, он дело пишет! Прочитать полностью...

2 июл. 2013 г.

Centos Nginx PHP-fpm error child 1111 exited on signal 11 (SIGSEGV) after 2222 seconds from start

Если проблема, вынесенная в заголовок, вас волнует "Centos Nginx PHP-fpm child 1111 exited on signal 11 (SIGSEGV) after 2222 seconds from start", то после долгого гугления вы найдете два совета:

  1. выслать дамп коре куда-то для исправления бага
  2. стучать в бубен потому что никто не знает, от чего срабатывает защита от "сегментейшен фолт"
Ни то ни второе мне не понравилось и я пошел своим путем - перфекционизм. Включил отображение всех ошибок ПХП и начал избавлять от ворнингов и нотисов. Когда их количество уменьшилось в 10-100 раз, то и падение PHP-fpm от заезда в чужой сегмент памяти исчезло. Для проверки вернул старый набор классов - SIGSEGV вернулось. Для справки - это шоп от RX-P. Инвайты по почте после собеседования.

UPD
Забыл указать, что:
PHP 5.4.16
Nginx 1.5.1
Centos 5.9

Удалить из ридера - данунах, некогда. Прочитать полностью...