Ремонт компьютера
Сборка, чистка, апгрейт ремонт любой техники.
Замена частей, установка ПО, установка Windows, антивируса.
Удаленная помощь без вызова на дом.
Создание сайта
Создание сайта с нуля, модулей, скриптов для сайта.
Движки Joomla, Wordpress, Opencart, Prestashop и тд.
SEO продвижение, ремонт, оптимизация сайта.

Доп защита wordpress для своего виртуального сервера

Недавно была массивная атака на вордпресс, и я убил кучу времени на улучшении безопасности сервера, который сам развернул. Сервером был использован обычный ПК, с высокой пропускной способностью в интернет, я писал как его развернуть тут. Ранее я разворачивал на начальных этапах сначала денвер, потом узнал о его уязвимости, и частых аттаках, и установил xampp. Он порадовал меня скоростью и стабильностью. Там apache. До недавней атаки, я не мог определить как он пробился, и как добавляет статьи на сайт (они были английские). Может даже кто то и увидел эти посты у себя в подписках на мой сайт.

Первая защита

В первую очередь я был уверен что использовали дыру вордпресс (wordpress), и потому использовал все возможные способы защиты в интернете от атаки. И только когда я поменял пользователя админа, и удалил стандартного админа, я увидел что записи добавляют дальше под пользователем которого нет. Я понял что добавляют через скрипт, который подключается к бд через конфиг видимо. Вначале я не мог его найти, нужно было изучать лог, а лога за столько лет оказалось очень много, а атаки продолжались. Мне важно было отследить запросы. Нужен был логгер типа graylog. И тогда я задумался о переходе на линукс.

Идея о виртуалке (VirtualBox)

Крайне не хотелось переходить на линукс (linux), так как иногда на сервере я играл. Я просто выделял для игры, немного ресурсов, а большую часть отдавал на сервер (с приоритетом реального времени). Потому сайты не тормозили когда были запросы, и я мог спокойно параллельно играть, не мешая никому. Потому я вспомнил про виртуалку, ранее я пробовал ее разворачивать, годами ранее. Ставил на виртуалку убунту(ubuntu 14.04) но она была крайне тяжела, и ела треть производительности, повысив потребление энергии, меня это не устраивало. Но недавно я услышал от коллеги, что он ставил дебиан (Debian), и тот очень легкий. Да я пробовал развернуть и homesteal но там было очень сложно подключать сайты, отладку делать, работать по сети с ними, может потом еще попробую, но тогда я разочаровался в этом методе, хоть и полностью развернул его тогда. Нету и графической части, только в консоли все делать, меня как привычного к винде (windows), это тормозило иногда (любые перемещения, нужно полным путем писать через cd), хотелось в окнах работать. Я не против консольки, просто удобнее визуально иногда, особенно когда на начальных этапах. Потому я сразу 2 виртуалки разворачивал под дебианом, 1 консольку (супер-облегченную которая и будет потом главной), а вторую с визуальным оформление xfce 4.10. Создал подпользователя и облегчил его по максимуму. И добавил в автозагрузку виртуальный сервер, и теперь чуть что можно не волноваться, если что при запуске он его запустит. Чем меньше моего участия тем лучше.

Преимущества виртуального сервера

Основное преимущество виртуалки (virtualbox), в том что личные данные раздельно. Его можно подключить как мост, и тогда по сети он как отдельное устройство, потому сложно понять, это виртуалка, или отдельный комп. И во время атаки будут атаковать виртуалку а не реальный комп,  Можно дальше не волноваться за личные данные, так как если даже взломают сервер, и удалят все, личные данные будут нетронуты, главное ставить мощный, и контролирующий файервол на главный комп (я например comodo поставил + еще 1). И с инета (static IP Internet) закрыть все порты кроме работающих для сервера, а лучше и изменять их для безопасности. Даже если удалит вирус все, или что то пойдет не так, важно периодично делать снимки виртуалки, и удалять старые снимки. Более того я вынес сайты и бд(базы данных) и логи и при монтировал их на изменяемую область (отдельный виртуальный диск), а систему оставил на другой, на неизменяемый диск, в случае падения, или повреждении системы, достаточно просто перезагрузить систему, и она откатиться автоматом на тот момент когда было все стабильно, что удобно, что снимки можно не делать этой области. Единожды настроив систему, можно не волноваться более. Все изменяемое по сайтам, и их настройкам важно также вынести вне неизменяемого диска, чтобы не терять.

Из минусов только то что потребления энергии чуть больше, но как показала практика, он больше 7% в пассивном режиме (минимум запросов) не ест при дебиане (визуальном), без виртуалки 3% при восьмиядерном на 4 ГГц.

NGINX

Мне важно было использовать все новое и исключить возможность дыры, и заодно избавиться от атаки, потому я использовал nginx + php 7.1. На тестах nginx себя неплохо показал, он очень быстро обрабатывает статические страницы, имеет тот же opcache, memcached. На вложенных циклах (миллион в миллионе) он показал обработку 7 сек против 8-15 сек в апаче (apache). Поэтому я и надеялся на повышение скорости. Но все оказалось наоборот, было падение скорости на всех сайтах при обработке, даже со всеми плюшками, мне удалось подвести его максимально близко к тем откликам что были и у апача, но разочарован чутка, более того атаки не прекратились, значит дело не в нем. Но с кешем nginx лучше себя показывает чем апач имейте ввиду.

Настройки nginx

Тут пришлось познакомиться со всем новым, оказывается тут все нужно прописывать ручками. Для безопасности это как раз большой плюс, не пашут .htaccess и другие к кому мы привыкли, все нужно это в конфиге писать.
Я подключил graylog, и благодаря ему нашел кто и куда отправлял запросы, добавил fail2ban. Неплохой способ защиты, если кто то создает ошибки, в комбе с nginx-naxsi. Получается что любой запрос с xss или любой другой запрос слишком длинный извне, блокирует naxsi а fail2ban отправит его еще и в бан за это. + ставим защиту от ddos на nginx + на модеме если поддерживается. И вполне что то для старта, а далее усиливаем защиту, дописывая регулярки для запросов сайта. Более того можно создать общий файл например для правил вордпреса, и просто их подключать для сайта:

server {
include wordpress; 
server_name chizi.by; 
root /путь/к/sites/chizi.by; 
}

А вот и настройка вордпресса с закрытием той самой атаки:

##
# Gzip Settings
##

gzip on;
gzip_disable "msie6"; # Do people still use Internet Explorer 6? In that case, disable gzip and hope for the best!
gzip_vary on; # Also compress content with other MIME types than "text/html"
gzip_types application/json text/css application/javascript; # We only want to compress json, css and js. Compressing images and such isn't worth it
gzip_proxied any;
gzip_comp_level 6; # Set desired compression ratio, higher is better compression, but slower
gzip_buffers 16 8k; # Gzip buffer size
gzip_http_version 1.0; # Compress every type of HTTP request

# запретить доступ к файлу защиты вордпресс
location ~ ^/\.user\.ini {
deny all;
}

#location ~ cron.php {
#deny all;
#}

# Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}

location = /favicon.ico {
log_not_found off;
access_log off;
}

location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}

location = /wp-config.php {
deny all;
}

location = /wp-blog-header.php {
deny all;
}

#location ~* ^\/[^\/]*.php {
#вирус
location = /wp-main.php {
deny all;
}

# библиотеки временно закрывал
#location ~* ^\/wp-includes\/.*\.php {
#deny all;
#}

location ~* ^/wp-json/ {
deny all;
}

location ~* ^/wp-content/uploads/.+\.php{
deny all;
}

location ~* .ini$ {
deny all;
}

# Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
location /RequestDenied {
#proxy_pass http://127.0.0.1:8080;
return 500;
}

location ~xmlrpc.php {
deny all;
return 404;
}

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}

location / {
# This is cool because no php is touched for static content.
# include the "?$args" part so non-default permalinks doesn't break when using query string

try_files $uri $uri/ /index.php?$args;
include /etc/nginx/naxsi.rules;
}

# защита админки
location = /wp-login.php {
limit_req zone=one burst=10 nodelay;

include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
}

location ~ \.php$ {

include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
}

#правильный IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

Теперь больше атак нету, и я счастлив, надеюсь кому то, это пригодится.

P.s Буду рад помощи с защитой сайтов на вордпресс вашими правилами в nginx. Или советами по улучшении безопасности. Если есть вопросы, или желаете чтобы я что то из этого расписал детальнее пишите в комментариях. Но все есть в интернете.

Название статьи при не правильной раскладке клавиатуры: Ljg pfobnf wordpress lkz cdjtuj dbhnefkmyjuj cthdthf
Если вдруг появилось желание поблагодарить автора,просто нажмите на рекламу чуть ниже, этого будет достаточно :)

Добавить комментарий

Ваш e-mail не будет опубликован.