Защита 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!
Прочитать полностью...
7 янв. 2015 г.
Защита nginx на сервере
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", то после долгого гугления вы найдете два совета:
- выслать дамп коре куда-то для исправления бага
- стучать в бубен потому что никто не знает, от чего срабатывает защита от "сегментейшен фолт"
UPD
Забыл указать, что:
PHP 5.4.16
Nginx 1.5.1
Centos 5.9
Удалить из ридера - данунах, некогда. Прочитать полностью...