Как защитить сайт и сервер?

Добрый день, уважаемые участники.

Вчера заметил переходы со странного сайта — acunetix-referrer.com. Прочитал, что это сканер уязвимости сайтов.

Этот сервис создавал ссылки вида
sitename/?wvstest=javascript:domxssExecutionSink(1,%22%27\%22%3E%3Cxsstag%3E()locxss%22)

после чего, (а может быть в результате других атак ниже) стерлись некоторые статьи из базы данных. На сайте около 500 статей, из которых стерлись 5.

Как стерлись?
В БД некоторые строки удалились. (случайным образом. В некоторых статьях строка body (основной текст, в некоторых иконка и т.д.))

Далее, сегодня утром обнаружил такие записи в журнале:

PDOException: SQLSTATE[23000]: Integrity CONSTRAINT violation: 1062 Duplicate entry 'node-110-0-0-und' FOR KEY 'PRIMARY': INSERT INTO {field_data_field_fivestar} (entity_type, entity_id, revision_id, bundle, delta, LANGUAGE, field_fivestar_rating, field_fivestar_target) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5,
Читать дальше

Можно ли определить PTR запись IP-адреса средствами Nginx? Если да, то насколько это правильно?

Здравствуйте.
Возникла задача отфильтровать IP-адреса по PTR записям, лучше всего ( на мой взгляд ), сделать это средствами Nginx.
В PHP ( бэкенд этого хоста ) есть функция dns_get_record(«ip address», DNS_PTR), которая делает то, что мне нужно.
Однако, насколько эффективным будет её использование, в сравнении с средствами Nginx, я не знаю. К тому же, хотелось бы реализовать задуманное в самом конфиге, не задействуя PHP и не создавая лишней нагрузки на low-cost машину.
Знаю что нжинкс поддерживает Lua в качестве скриптового языка, однако никогда не писал на нём. Возможно есть какой-нибудь модуль по работе с DNS записями?
Благодарю за внимание. Удачного дня.

Как правильно настроить локальный кеш сервер на nginx?

Всем доброго!
Пытаюсь решить задачу медленого доступа к некоторым ресурсам путем локального прокси сервера.
Но вот что тот не могу правильно конфиг написать (особо я не сталкивался с nginx), при проверке командой nginx -t получаю ошибку:
nginx: [emerg] https protocol requires SSL support in /usr/local/nginx/conf/nginx.conf:14 nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed

вот мой nginx.conf:
events { worker_connections 1024; } http { proxy_cache_path /var/cache/nginx_cache levels=1:2 keys_zone=all:32m max_size=2g; server { listen 80; server_name localhost; location / { proxy_pass some.site.com; proxy_cache all; } } }

Собствено ошибка в proxy_pass some.site.com;

Подскажите пожалуйста как правильно будет написать конфиг?

П.С. для того, что бы потом достучатся к сайту some.site.com; нужно в браузере вводить адрес localhost или же просто в настройках браузера указать прокси сервер свой localhost?

Как добавить модуль upstream в nginx?

os: Ubuntu 16.04

nginx version: nginx/1.12.2

configure arguments:
--with-cc-opt=-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2
--with-ld-opt=-Wl,-z,relro -Wl,-z,now
--prefix=/usr/share/nginx
--conf-path=/etc/nginx/nginx.conf
--http-log-path=/var/log/nginx/access.log
--error-log-path=/var/log/nginx/error.log
--lock-path=/var/lock/nginx.lock
--pid-path=/run/nginx.pid
--modules-path=/usr/lib/nginx/modules
--http-client-body-temp-path=/var/lib/nginx/body
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi
--http-proxy-temp-path=/var/lib/nginx/proxy
--http-scgi-temp-path=/var/lib/nginx/scgi
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi
--with-debug
--with-pcre-jit
--with-http_ssl_module
Читать дальше

Не загружаются изображения на сервер?

При попытки сменнить аватар загрузить лого добавить изображение поста файл не загружается никаких ошибок нет в консоли стоит isp manager 5 lite + php 7.2 в режиме fast cgi
Accept: */* Accept-Encoding: gzip, deflate Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7 Connection: keep-alive Content-Length: 6142 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary5mBCLFeiCJirlMDa Cookie: src=1; user_id=99503d3d6f3bea09e4ca17ea068f6c419901e4df38b892d17d5e6a9a6826d46bea440cb528666988c76fc22972602cd585beccfb9be283c8; PHPSESSID=d61c35211d2333d17e221dd8535c5ed0; ad-con=a%3A2%3A%7Bs%3A4%3A%26quot%3Bdate%26quot%3B%3Bs%3A10%3A%26quot%3B2018-03-24%26quot%3B%3Bs%3A3%3A%26quot%3Bads%26quot%3B%3Ba%3A0%3A%7B%7D%7D; _us=1521970868 Host: мой сайт Origin: мой сайт Referer: мой сайт User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36 X-Requested-With: XMLHttpRequest

------WebKitFormBoundary5mBCLFeiCJirlMDa
Content-Disposition: form-data; name=«postPhotos[]»; filename=«logo.png»
Content-Type: image/png

Ошибка NGINX — дублируется путь до index.php?

Товарищи, есть локальный сервер с выходом в веб.
NGINX 1.6.2
панель Ajenty 1.x + Ajenti-V(обвязка веб хостинга)
Настроено на 80 порт.
Итак.
Открываем локально: 192.168.1.2 стартует морда phpmyadmin
Открываем через веб: domain.ru стартует морда phpmyadmin

Задача заставить NGINX открывать phpmyadmin по урл: domain.ru/phpmyadmin/

но
По урл 192.168.1.2/phpmyadmin/ — 404 ошибка
По урл domain.ru/phpmyadmin/ — 404 ошибка

Смотрим логи ошибок phpmyadmin:
2018/03/15 18:21:31 [error] 4055#0: *56 "/srv/phpmyadmin/phpmyadmin/index.html" is not found (2: No such file or directory), client: 94.25.169.95, server: example.com, request: «GET /phpmyadmin/ HTTP/1.1», host: «domain.ru»

Почему задваивается(дублируется) путь ???

Вот стандартный конфиг панели Ajenti созданный самой панелью:
Читать дальше

В Apache есть две переменные — SetEnvIfNoCase и BrowserMatchNoCase. Какая лучше/быстрее?

Приветствую

Читаю и не понимаю отличие в скорости работы двух переменных:
SetEnvIfNoCase;
BrowserMatchNoCase.

Первая, как я понимаю, ищет/берет сразу несколько параметров и можно выбрать какой именно параметр нужен (user-agent, host и прочие), а вторая ищет/берет только user-agent. Если абстрагироваться, то получается так, что если надо использовать какое-то из правил в файле .htaccess, то при первом варианте поиска user-agent (SetEnvIfNoCase) будет выполнено минимум на одну операцию больше (поиск всех данных и вычленение из них user-agent), а при втором варианте (BrowserMatchNoCase) только одна операция. И в первом случае будет израсходовано больше ресурсов (экономия на спичках, но все же, мне это интересно).

Пытаюсь выбрать один из нескольких вариантов блокировки нежелательных ботов и из-за поверхностного представления работы Apache, сложно определиться.

Есть такие варианты:
# вариант 1 SetEnvIfNoCase User-Agent «yandex.ru» fuck_you SetEnvIfNoCase User-Agent «google.ru» fuck_you… Deny from env=fuck_you # вариант 2 BrowserMatchNoCase «yandex.ru» fuck_you BrowserMatchNoCase «google.ru» fuck_you… Deny from env=fuck_you # есть еще другие варианты, но хотелось бы получить представление о работе именно этих двух.
Что посоветуете?

Подозрительные запросы к серверу?

Здравствуйте! Помогите разобраться, с самого момента регистрации vps-сервера к серверу идут запросы на поиск уязвимостей, запросы идут с разных ip адресов, техподдержка хостера говорит что это не их проблемы, на данный момент сменить хостера нет возможности. Подскажите как с этим бороться?
Запросы вида:
/catalog/?arrFilter_23_2322626082=Y%26amp%3Bset_filter%3DY%20UNION%20ALL%20SELECT%20NULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%23
/phpma/index.php
/db/index.php
/pmamy2/index.php
/scripts/setup.php
/sql/scripts/setup.php
/webdb/
/agSearch/SQlite/main.php
/SQlite/main.php
/bitrix/cache/js/s1/romza_shinmarket_1.4.0/kernel_main/kernel_main.js?1483711787412009
/zabbix/jsrpc.php

Почему не получается установить session.gc_maxlifetime?

Здравствуйте!
Вот чать конфигурации:
session.auto_start = 1 session.gc_probability = 100 session.gc_divisor = 1 session.gc_maxlifetime = 100
То есть сессии должны отчищаться с частотой 1 секунда со 100%-й вероятностью
Вот код:

Я обновляю страницу каждые 5 секунд (сессия в это время должна отчиститься), и почему то сессия до сих пор жива! Ведь прошло аж 5 секунд! И счетчие почему то инкрементируется! Что я делаю не так?
У меня получается, что сессия умирает только если закрыть браузер.
Заранее спасибо.

Правильность и оптимизация конфига nginx?

В панели ISPmanager 5 Lite использую свзяку Nginx + PHP-FPM (версия php 7.1). Потихоньку отхожу от привычной связки Nginx + Apache. В связи с тем, что классический .htaccess использовать нельзя, вношу некоторые правки в конфиг /etc/nginx/vhosts/siteru/site.ru.conf

Кто хорошо знаком со свзякой Nginx + PHP-FPM, подкажите, можно ли этот конфиг как-то улучшить? (смущает, что приходится дублировать все данные) Или же он идеален? :)

server { server_name site.ru www.site.ru; charset off; disable_symlinks if_not_owner from=$root_path; include /etc/nginx/vhosts-includes/*.conf; include /etc/nginx/vhosts-resources/site.ru/*.conf; access_log /var/www/httpd-logs/site.ru.access.log; error_log /var/www/httpd-logs/site.ru.error.log notice; ssi on; set $root_path /var/www/siteru/data/www/site.ru; root $root_path; location / { location ~ [^/]\.ph(p\d*|tml)$ { try_files /does_not_exists @php; } location / { try_files $uri $uri/ /index.php?$args; } } listen xx.xxx.xx.xx:80; index index.php; return 301 https://$host:443$request_uri; location @php { fastcgi_index index.php; fastcgi_param PHP_ADMIN_VALUE «sendmail_path = /usr/sbin/sendmail -t -i -f webmaster@site.ru»; fastcgi_pass unix:/var/www/php-fpm/siteru.sock; fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$; try_files $uri =404; include fastcgi_params; } location = /wp-login.php { try_files /does_not_exists @deny; } location @deny { allow xx.xxx.xx.xxx; deny all; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } # Запрещаем доступ к скрытым файлам location ~ /\. { deny all; } # Запрещаем доступ к файлам .php в директории uploads location ~* /(?:uploads|files)/.*\.php$ { deny all; } } server { server_name site.ru www.site.ru; ssl on; ssl_certificate "/var/www/httpd-cert/siteru/site.ru_le1.crtca"; ssl_certificate_key "/var/www/httpd-cert/siteru/site.ru_le1.key"; ssl_ciphers EEEEH:+AEEE56:-EEES:REE+AES:!NULL:!RC4; ssl_prefer_server_ciphers on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_dhparam /etc/ssl/certs/dhparam4096.pem; charset off; index index.php; disable_symlinks if_not_owner from=$root_path; include /etc/nginx/vhosts-includes/*.conf; include /etc/nginx/vhosts-resources/site.ru/*.conf; access_log /var/www/httpd-logs/site.ru.access.log; error_log /var/www/httpd-logs/site.ru.error.log notice; ssi on; set $root_path /var/www/siteru/data/www/site.ru; root $root_path; listen xx.xxx.xx.xx:443 ssl http2; location / { location ~ [^/]\.ph(p\d*|tml)$ { try_files /does_not_exists @php; } location / { try_files $uri $uri/ /index.php?$args; } } location @php { fastcgi_index index.php; fastcgi_param PHP_ADMIN_VALUE «sendmail_path = /usr/sbin/sendmail -t -i -f webmaster@site.ru»; fastcgi_pass unix:/var/www/php-fpm/siteru.sock; fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$; try_files $uri =404; include fastcgi_params; } location = /wp-login.php { try_files /does_not_exists @deny; } location @deny { allow xx.xxx.xx.xxx; deny all; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } # Запрещаем доступ к скрытым файлам location ~ /\. { deny all; } # Запрещаем доступ к файлам .php в директории uploads location ~* /(?:uploads|files)/.*\.php$ { deny all; } }