up
ГлавнаяБлогБезопасностьЖелезоПрограммированиеАдминистрирование
CPUHTMLLinuxRAMBashHDDCentOSPHPMySQLFreeBSDDebianBenchmarkPerlSSD

Популярные статьи

Пересборка Nginx с модулем rtmp

Ставим библиотеки:

CentOS
yum install gcc-c++ pcre-devel openssl-devel libxml2-devel libxslt-devel gd-devel GeoIP-devel

Debian
aptitude install gcc libpcre3-dev libxml2-dev make libssl-dev libxslt1.1 libgd2-xpm-dev libgeoip-dev libperl-dev

Скачиваем и распаковываем последнюю версию Nginx:
cd /usr/src
wget -q -O - http://nginx.org/download/nginx-1.10.2.tar.gz | tar xz
cd nginx-1.10.2

Скачиваем модуль rtmp:
git clone https://github.com/arut/nginx-rtmp-module.git

Saturday, 28 March 2015, 19:39Прочитано 11 раз

Установка Nginx на DirectAdmin

Обновляем сперва CustomBuild к версии 2.0:

cd /usr/local/directadmin
mv custombuild custombuild_1.x
wget -O custombuild.tar.gz http://files.directadmin.com/services/custombuild/2.0/custombuild.tar.gz
tar xvzf custombuild.tar.gz
cd custombuild
./build

Thursday, 20 November 2014, 14:20Прочитано 53 раза

Подсчет веса всех лог файлов Nginx

Иногда бывают ситуации, когда у веб-сервера, будь-то Nginx или Apache, есть много лог-файлов, с разными именами. Подсчитать весь их просто, посмотрев на вес директории. Но что делать, если лог-файлы размещены еще и в разных категориях? Если таких еще и немалое количество, но вывести суммарный вес получается затруднительно.

Но на самом деле подсчитать вес всех лог-файлов довольно просто. Покажу на примере Nginx:

ls -l `egrep '(access|error)_log' /etc/nginx/nginx.conf` 2>/dev/null | awk '{ sum+=$5 }; END {print sum/1024/1024 " MB"}'

В выводе будет только суммарный вес в мегабайтах.

Thursday, 04 June 2015, 15:50Прочитано 2 раза

Блокировка SYN flood по логам Nginx

При наличии атаки SYN flood на сервер, которую можно обнаружить с помощтю команды:

netstat -atun | grep SYN

заблокировать IP ботов можно анализируя логи Nginx:

cat /var/log/nginx/access.log | grep -E -e 'HTTP/1.(0|1)" (400|403|405|499|503)' -e '] "-" 400 0 "-" "-"' | awk '{print $1}' | sort -n | uniq -c | awk '{if($1>10)print $2}' | while read IP
do
    iptables -I INPUT -s $IP -j DROP
done

 

После можно провести ротацию логов (или просто очистить), чтобы не проводить повторнуюблокировку тех же IP.

logrotate -f /etc/logrotate.d/nginx

Это самое примитивное решение, но работает laugh

Wednesday, 11 November 2015, 18:50

Парсеры лога nginx

Ниже предоставлю разные выборки из access.log nginx.

Коды ответа сервера:

cat /var/log/nginx/access.log | cut -d '"' -f3 | cut -d ' ' -f2 | sort | uniq -c | sort -n

или с помощью awk:

awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -n

Monday, 18 August 2014, 08:58Прочитано 56 раз

Использование GeoIP в Nginx

Ставим библиотеки:

для Debian

aptitude install gcc libpcre3-dev libxml2-dev make libssl-dev libxslt-dev libgd2-xpm-dev libgeoip-dev libperl-dev

для CentOS

yum install gcc-c++ pcre-devel openssl-devel libxml2-devel libxslt-devel gd-devel GeoIP-devel

Скачиваем последние базы GeoLiteCity и GeoIP:

Thursday, 21 August 2014, 18:39Прочитано 41 раз

Подсчет трафика по доменам

Часто веб-мастера задаются вопросом, сколько трафика использует их конкретный домен или каждый в отдельности. Ни одна панель управления такого не считает, в лучшем случае только для одного пользователя.

Дле решения этой задачи нам понадобится отредактировать слегка конфиг веб-сервера nginx, и выполнить выборку из лога данных.

Открываем конфиг /etc/nginx/nginx.conf, ищем там "log_format  main" и добавляем [$host]. У меня получился следующий формат:

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" [$host] $request_time';

Thursday, 16 October 2014, 01:11Прочитано 36 раз

Как скрыть версии софта на сервере?

В целях безопасности лучше скрыть версии софта, установленного на сервере, при запросах из-вне. Естественно не стоит забывать что это не решает проблемы, и никак не избавляет от необходимости своевременно обновлять ПО сервера.

Нижеперечисленные директивы скрывают версию:

  • nginx server_tokens off
  • apache ServerTokens OS или ServerTokens MinimalServerSignature Off
  • ssh DebianBanner no - скрывает только частично
  • proftpd ServerIdent off
Sunday, 28 December 2014, 11:32Прочитано 45 раз

Установка модуля Page Speed для Nginx

Ставим зависимости.

RedHat, CentOS, or Fedora

yum install gcc-c++ pcre-dev pcre-devel zlib-devel make unzip

Ubuntu or Debian

apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip

Tuesday, 06 January 2015, 18:24Прочитано 30 раз

Шифрование ссылок на видео с помощью модуля Nginx Http_Secure_Link_Module

Для работы необходимо чтобы Nginx был собран с модулем Http_Secure_Link_Module.

Нижеизложенная реализация позволяет для каждого IP адреса посетителя выдавать разные адреса ссылок. Кроме этого есть ограничение по времени действия ссылки.

Конфиг nginx:

location /mp4/ {
    rewrite /mp4/([a-zA-Z0-9_\-]+)/([0-9]+)/(.+)\.mp4$ /real_mp4/$3.mp4?md5=$1&time=$2;
}
location /flv/ {
    rewrite /flv/([a-zA-Z0-9_\-]+)/([0-9]+)/(.+)\.flv$ /real_flv/$3.flv?md5=$1&time=$2;
}

location /real_mp4/ {
    secure_link $arg_md5,$arg_time;
    secure_link_md5 secret$uri$arg_time$remote_addr;

    if ($secure_link = "") {
        return 403;
    }
    if ($secure_link = "0") {
        return 404;
    }

    access_log  off;
    internal;
    mp4;
    mp4_buffer_size     512K;
    mp4_max_buffer_size 10m;
}
location /real_flv/ {
    secure_link $arg_md5,$arg_time;
    secure_link_md5 secret$uri$arg_time$remote_addr;

    if ($secure_link = "") {
        return 403;
    }
    if ($secure_link = "0") {
        return 404;
    }

    access_log  off;
    internal;
    flv;
}

Thursday, 29 January 2015, 22:41Прочитано 36 раз

Чаще всего ищут

Статистика блога
Статтей: 177
Безопасность: 9
Железо: 19
Программирование: 14
Администрирование: 134