Jump to content

anomal3

Пользователи
  • Content Count

    28
  • Joined

  • Last visited


Reputation Activity

  1. Like
    anomal3 got a reaction from alexis for запись, Блокировка IP по геопризнаку Nginx   
    Всем привет народ, я тут новенький.
    Почитав тему
    решил немного дополнить, точнее раскрыть свою тему.
    Почему тут конфиги для Nginx а не для apache расскажу под спойлером в истории.
    Рекомендую прочесть, чтобы понять что к чему.
    и вот немного отступления.
     
    История...
    Рассуждая что лучше Апач или Нджинкс вычитал.
    Но мне попалась хорошая статься сравнений этих демонов
    https://habr.com/post/267721/

    И было принято решение полностью отказаться от apache.
    Сделав резервную копию базы и сайта /var/www/html
    Я поставил систему с нуля, и запустил на нём Nginx. Так же подключил php и mysql.
    И тут началось самое интересное. Настройки
     
    После того как Nginx запущен и сделаны первоначальные настройки(они расписаны в любой статье), он никак не может распознать php.
    В интернете полно статей о том как настроить конфиг.
    location ~ \.php$ { try_files $uri =404; include /etc/nginx/fastcgi.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } Данный код подключает php, но в следствии за ним ещё куча настроек, таких как время ожидания, Максимальный размер файла и прочих. Благо на ownCloud есть уже готовый пример, правда пришлось немного его править.
    В итоге получил полностью рабочий конфиг который хранится в /etc/nginx/sites-avalible/default
    server { listen 80; server_name _; error_page 404 /custom_404.html; location = /custom_404.html { root /usr/share/nginx/html; internal; } root /var/www/html; access_log /var/log/nginx/ng.access.log; error_log /var/log/nginx/ng.error.log; index index.php index.html index.htm; error_page 403 /core/templates/403.php; error_page 404 /core/templates/404.php; client_max_body_size 100M; # set max upload size fastcgi_buffers 64 4K; rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect; rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect; rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect; location / { # The following 2 rules are only needed with webfinger rewrite ^/.well-known/host-meta /public.php?service=host-meta last; rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last; rewrite ^/.well-known/carddav /remote.php/carddav/ redirect; rewrite ^/.well-known/caldav /remote.php/caldav/ redirect; rewrite ^(/core/doc/[^\/]+/)$ $1/index.html; try_files $uri $uri/ index.php; } location ~ ^(.+?\.php)(/.*)?$ { try_files $1 =404; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$1; fastcgi_param PATH_INFO $2; fastcgi_keep_conn on; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; } } Теперь всё работает, и время распаковать ранее сохраненные бэкапы.
    После того как я всё вернул на круги своя, сменив апач на нджикс, я решил оставить все как есть, проверить будет ли дос атака. И спустя время дос опять начался.

    Ну раз я уже начитан, и знаю что дальше делать, я принялся менять конфиги и защищать себя от доса по геопризнаку.
    Мне известно, что все наши клиенты из России, так же по логам я видел, что злоумышленник не просто караулит меня, а делает это с изыском. С помощью API сайта https://proxycheck.io/ гореть им в аду за это, я понимал, что клиентам из других стран нечего делать в нашем облаке.

    А посему было принято решение на уровне демона определять страну и отсылать уже в выше упомянутою страну ПОПЕНГАГЕН.

    Первым делом, вооружившись гайдам, я скачать от сюда http://www.maxmind.com/app/geolitecountry latest GeoLite Country Binary Format (это бесплатный вариант базы стран и соответствующих им блоков IP адресов).
    Распаковываем архив и кидаем файл GeIP.dat в папку
    /usr/local/etc/nginx/conf/geo если такой папки нет, создайте её или их.
    Далее нужно отредактировать файл /etc/nginx/nginx.conf
    секцию http в любом месте секции, вписываем
    geoip_country /usr/local/etc/nginx/conf/geo/GeoIP.dat; # подключаем GeIP базу map $geoip_country_code $bad_country { # модуль map создает переменные, значения которых зависят от других переменных, очень полезная штука default 1; # значение по умолчанию include /usr/local/etc/nginx/conf/geo/good_countries; # инклудим файл, его нужно будет создать чуть позже } Этот блок map, означает, что все страны находящиеся в базе данных, являются запрещенными по умолчанию, а в файле good_countries, будут перечислены разрешенные страны.

    Теперь в файл настроек (мой это ) /etc/nginx/sites-avalible/default вписываем после
    server { listen IP:80; server_name testhost.com;  
    вот этот код
    if ($bad_country){ # если данная переменная установлена, то есть если страна не перечислена в файле good_countries return 444; # выдаем клиенту пустой ответ ( незачем отдавать 403 ошибку или еще какую-либо ) } Теперь создадим "тот файл", если хотяб краем глазом смотрели что вписываете, то увидели подключаемый файл
    good_countries. Создаем его в директории /usr/local/etc/nginx/conf/geo/
    И вписываем значения
    UZ 0; RU 0; То есть тем самым разрешая вход на ваш сервер Узбекам и Русским. Ограничивать, точнее разрешать можно кому угодно, страны по двум буквам можно найти в гугле.
    После того как все сделали, просто перезагружаем демон nginx.
    Ну и собсно проверяем, зайдём через какой-нибудь веб прокси. И о чудо! действительно! Всё работает как надо.
    И теперь спустя уже почти 2 месяца, тормозов замечено небыло. Всё работает как часы, тьфу тьфу тьфу.
  2. Like
    anomal3 got a reaction from alexis for запись, Блокировка IP по геопризнаку Nginx   
    Всем привет народ, я тут новенький.
    Почитав тему
    решил немного дополнить, точнее раскрыть свою тему.
    Почему тут конфиги для Nginx а не для apache расскажу под спойлером в истории.
    Рекомендую прочесть, чтобы понять что к чему.
    и вот немного отступления.
     
    История...
    Рассуждая что лучше Апач или Нджинкс вычитал.
    Но мне попалась хорошая статься сравнений этих демонов
    https://habr.com/post/267721/

    И было принято решение полностью отказаться от apache.
    Сделав резервную копию базы и сайта /var/www/html
    Я поставил систему с нуля, и запустил на нём Nginx. Так же подключил php и mysql.
    И тут началось самое интересное. Настройки
     
    После того как Nginx запущен и сделаны первоначальные настройки(они расписаны в любой статье), он никак не может распознать php.
    В интернете полно статей о том как настроить конфиг.
    location ~ \.php$ { try_files $uri =404; include /etc/nginx/fastcgi.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } Данный код подключает php, но в следствии за ним ещё куча настроек, таких как время ожидания, Максимальный размер файла и прочих. Благо на ownCloud есть уже готовый пример, правда пришлось немного его править.
    В итоге получил полностью рабочий конфиг который хранится в /etc/nginx/sites-avalible/default
    server { listen 80; server_name _; error_page 404 /custom_404.html; location = /custom_404.html { root /usr/share/nginx/html; internal; } root /var/www/html; access_log /var/log/nginx/ng.access.log; error_log /var/log/nginx/ng.error.log; index index.php index.html index.htm; error_page 403 /core/templates/403.php; error_page 404 /core/templates/404.php; client_max_body_size 100M; # set max upload size fastcgi_buffers 64 4K; rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect; rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect; rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect; location / { # The following 2 rules are only needed with webfinger rewrite ^/.well-known/host-meta /public.php?service=host-meta last; rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last; rewrite ^/.well-known/carddav /remote.php/carddav/ redirect; rewrite ^/.well-known/caldav /remote.php/caldav/ redirect; rewrite ^(/core/doc/[^\/]+/)$ $1/index.html; try_files $uri $uri/ index.php; } location ~ ^(.+?\.php)(/.*)?$ { try_files $1 =404; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$1; fastcgi_param PATH_INFO $2; fastcgi_keep_conn on; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; } } Теперь всё работает, и время распаковать ранее сохраненные бэкапы.
    После того как я всё вернул на круги своя, сменив апач на нджикс, я решил оставить все как есть, проверить будет ли дос атака. И спустя время дос опять начался.

    Ну раз я уже начитан, и знаю что дальше делать, я принялся менять конфиги и защищать себя от доса по геопризнаку.
    Мне известно, что все наши клиенты из России, так же по логам я видел, что злоумышленник не просто караулит меня, а делает это с изыском. С помощью API сайта https://proxycheck.io/ гореть им в аду за это, я понимал, что клиентам из других стран нечего делать в нашем облаке.

    А посему было принято решение на уровне демона определять страну и отсылать уже в выше упомянутою страну ПОПЕНГАГЕН.

    Первым делом, вооружившись гайдам, я скачать от сюда http://www.maxmind.com/app/geolitecountry latest GeoLite Country Binary Format (это бесплатный вариант базы стран и соответствующих им блоков IP адресов).
    Распаковываем архив и кидаем файл GeIP.dat в папку
    /usr/local/etc/nginx/conf/geo если такой папки нет, создайте её или их.
    Далее нужно отредактировать файл /etc/nginx/nginx.conf
    секцию http в любом месте секции, вписываем
    geoip_country /usr/local/etc/nginx/conf/geo/GeoIP.dat; # подключаем GeIP базу map $geoip_country_code $bad_country { # модуль map создает переменные, значения которых зависят от других переменных, очень полезная штука default 1; # значение по умолчанию include /usr/local/etc/nginx/conf/geo/good_countries; # инклудим файл, его нужно будет создать чуть позже } Этот блок map, означает, что все страны находящиеся в базе данных, являются запрещенными по умолчанию, а в файле good_countries, будут перечислены разрешенные страны.

    Теперь в файл настроек (мой это ) /etc/nginx/sites-avalible/default вписываем после
    server { listen IP:80; server_name testhost.com;  
    вот этот код
    if ($bad_country){ # если данная переменная установлена, то есть если страна не перечислена в файле good_countries return 444; # выдаем клиенту пустой ответ ( незачем отдавать 403 ошибку или еще какую-либо ) } Теперь создадим "тот файл", если хотяб краем глазом смотрели что вписываете, то увидели подключаемый файл
    good_countries. Создаем его в директории /usr/local/etc/nginx/conf/geo/
    И вписываем значения
    UZ 0; RU 0; То есть тем самым разрешая вход на ваш сервер Узбекам и Русским. Ограничивать, точнее разрешать можно кому угодно, страны по двум буквам можно найти в гугле.
    После того как все сделали, просто перезагружаем демон nginx.
    Ну и собсно проверяем, зайдём через какой-нибудь веб прокси. И о чудо! действительно! Всё работает как надо.
    И теперь спустя уже почти 2 месяца, тормозов замечено небыло. Всё работает как часы, тьфу тьфу тьфу.
  3. Like
    anomal3 got a reaction from alexis for запись, Блокировка IP по геопризнаку Nginx   
    Всем привет народ, я тут новенький.
    Почитав тему
    решил немного дополнить, точнее раскрыть свою тему.
    Почему тут конфиги для Nginx а не для apache расскажу под спойлером в истории.
    Рекомендую прочесть, чтобы понять что к чему.
    и вот немного отступления.
     
    История...
    Рассуждая что лучше Апач или Нджинкс вычитал.
    Но мне попалась хорошая статься сравнений этих демонов
    https://habr.com/post/267721/

    И было принято решение полностью отказаться от apache.
    Сделав резервную копию базы и сайта /var/www/html
    Я поставил систему с нуля, и запустил на нём Nginx. Так же подключил php и mysql.
    И тут началось самое интересное. Настройки
     
    После того как Nginx запущен и сделаны первоначальные настройки(они расписаны в любой статье), он никак не может распознать php.
    В интернете полно статей о том как настроить конфиг.
    location ~ \.php$ { try_files $uri =404; include /etc/nginx/fastcgi.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } Данный код подключает php, но в следствии за ним ещё куча настроек, таких как время ожидания, Максимальный размер файла и прочих. Благо на ownCloud есть уже готовый пример, правда пришлось немного его править.
    В итоге получил полностью рабочий конфиг который хранится в /etc/nginx/sites-avalible/default
    server { listen 80; server_name _; error_page 404 /custom_404.html; location = /custom_404.html { root /usr/share/nginx/html; internal; } root /var/www/html; access_log /var/log/nginx/ng.access.log; error_log /var/log/nginx/ng.error.log; index index.php index.html index.htm; error_page 403 /core/templates/403.php; error_page 404 /core/templates/404.php; client_max_body_size 100M; # set max upload size fastcgi_buffers 64 4K; rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect; rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect; rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect; location / { # The following 2 rules are only needed with webfinger rewrite ^/.well-known/host-meta /public.php?service=host-meta last; rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last; rewrite ^/.well-known/carddav /remote.php/carddav/ redirect; rewrite ^/.well-known/caldav /remote.php/caldav/ redirect; rewrite ^(/core/doc/[^\/]+/)$ $1/index.html; try_files $uri $uri/ index.php; } location ~ ^(.+?\.php)(/.*)?$ { try_files $1 =404; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$1; fastcgi_param PATH_INFO $2; fastcgi_keep_conn on; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; } } Теперь всё работает, и время распаковать ранее сохраненные бэкапы.
    После того как я всё вернул на круги своя, сменив апач на нджикс, я решил оставить все как есть, проверить будет ли дос атака. И спустя время дос опять начался.

    Ну раз я уже начитан, и знаю что дальше делать, я принялся менять конфиги и защищать себя от доса по геопризнаку.
    Мне известно, что все наши клиенты из России, так же по логам я видел, что злоумышленник не просто караулит меня, а делает это с изыском. С помощью API сайта https://proxycheck.io/ гореть им в аду за это, я понимал, что клиентам из других стран нечего делать в нашем облаке.

    А посему было принято решение на уровне демона определять страну и отсылать уже в выше упомянутою страну ПОПЕНГАГЕН.

    Первым делом, вооружившись гайдам, я скачать от сюда http://www.maxmind.com/app/geolitecountry latest GeoLite Country Binary Format (это бесплатный вариант базы стран и соответствующих им блоков IP адресов).
    Распаковываем архив и кидаем файл GeIP.dat в папку
    /usr/local/etc/nginx/conf/geo если такой папки нет, создайте её или их.
    Далее нужно отредактировать файл /etc/nginx/nginx.conf
    секцию http в любом месте секции, вписываем
    geoip_country /usr/local/etc/nginx/conf/geo/GeoIP.dat; # подключаем GeIP базу map $geoip_country_code $bad_country { # модуль map создает переменные, значения которых зависят от других переменных, очень полезная штука default 1; # значение по умолчанию include /usr/local/etc/nginx/conf/geo/good_countries; # инклудим файл, его нужно будет создать чуть позже } Этот блок map, означает, что все страны находящиеся в базе данных, являются запрещенными по умолчанию, а в файле good_countries, будут перечислены разрешенные страны.

    Теперь в файл настроек (мой это ) /etc/nginx/sites-avalible/default вписываем после
    server { listen IP:80; server_name testhost.com;  
    вот этот код
    if ($bad_country){ # если данная переменная установлена, то есть если страна не перечислена в файле good_countries return 444; # выдаем клиенту пустой ответ ( незачем отдавать 403 ошибку или еще какую-либо ) } Теперь создадим "тот файл", если хотяб краем глазом смотрели что вписываете, то увидели подключаемый файл
    good_countries. Создаем его в директории /usr/local/etc/nginx/conf/geo/
    И вписываем значения
    UZ 0; RU 0; То есть тем самым разрешая вход на ваш сервер Узбекам и Русским. Ограничивать, точнее разрешать можно кому угодно, страны по двум буквам можно найти в гугле.
    После того как все сделали, просто перезагружаем демон nginx.
    Ну и собсно проверяем, зайдём через какой-нибудь веб прокси. И о чудо! действительно! Всё работает как надо.
    И теперь спустя уже почти 2 месяца, тормозов замечено небыло. Всё работает как часы, тьфу тьфу тьфу.
×