В продължение на предния ми пост за оптимизация на WHM сървъри, сега ще споделя и как се защитавам срещу brute force атаки към wordpress сайтове, хостнати на WHM сървър, с помощта на modsecurity!
За целта е нужно първо да имаме инсталиран modsecurity с активиран OWASP ModSecurity Core Rule Set V3.0.
Правилата се добавят от : Home »Security Center »ModSecurity™ Tools »Rules List - Add Rule
Както може би повечето от вас знаят, аз съм голям фен на nginx! В работата ми обаче неизбежно присъства и apache – главно заради WHM/Cpanel сървърите които поддържам!
Накратко – до сега използвах преправен от мен скрипт (engintron) който кръстих fosnginx!
Той работи на принципа на прокси, като слага nginx на порт 80 и сменя порт-а на apache-то на 8081, но праща всички php заявки към apache! Така всичко що го има в .htaccess файловете на клиентите продължава да работи! До тук добре, обаче се появи letsencrypt!
Благодарение на него, вече имаме безплатни валидни SSL сертификати което е супер! Обачеее в моят случай всички HTTPS заявки продължават да се обработват от apache!
Тук идва и въпросът с оптимизацията на apache, за да могат тези сайтове да зареждат еднакно бързо както на http, така и на https!
Аз много харесвам онлайн туул-а varvy.com и с него правя тестове когато ми се налага да оптимизирам сайт!
В този пост ще споделя как глобално се активира gzip компресията във WHM/Cpanel за да може да се спести излишен трафик при зареждане на сайт (Apache global gzip compression in WHM/Cpanel)!
Логваме се във WHM/Cpanel сървъра и отиваме до : Home »Service Configuration »Apache Configuration »Include Editor и отваряме Pre VirtualHost Include и слагаме следните редове в „All Versions“ на апачето :
В този пост ще споделя за най-често използваните методи от мен за така наречения webserver monitoring.
Идеята е ясна – като уеб администратор, за мен е много важно да знам винаги какво се случва зад колисите на уеб сървъра.
Типичен пример за нужда от мониторинг е когато сървърът ни е вдигнал висок load, и е необходимо да разберем от къде идва той.
netstat
netstat е моят най-добър приятел в подобни ситуации. С годините съм се осъвършенствал в използването му и съм открил най-добрата комбинация от параметри с които лесно да откривам от кой сървърът ми е „flood“-нат.
Същата комбинация може да се използва и за порт 443!!
Алтернатива на netstat може да бъде командата : ss
Когато имаме IP адресите, можеш бързо и лесно чрез whois да разберем кой от къде идва, и да предприемем съответните мерки.
Приермно да ги блокираме :
iptables -I INPUT -s $IP -j DROP
Access Logs
Много е важно правилното разчитана на логовете на уеб сървъра. Много често ни нападат така наречените „ботове„, които отварят wp-login.php и пробват да влязат в нашият wordpress. Всеки такъв опит обаче отваря нова заявка към php и mysql сървърите ни, и „яде“ процесорно време и памет.
top е командата която използвам най-често за мониторинг в реално време – тя ми показва кой процес товари най-много сървъра ни и така мога лесно да се ориентирам къде да търся проблема.
mytop е алтернатива на top специализирана за мониторинг на mysql сървъри. Чрез него можем да наблюдаваме заявките в реално време на машината, като можем да kill-ваме директно по ID-та, да наблюдаваме репликацията (ако има такава) и още много други!
graphics
Разбира се за къде сме без графиките.
Аз лично използвам LibreNMS и Netdata за наблюдение на сървърите ми и рисуване на графиките им.
Наскоро ми беше хрумнала идея за видео сайт с детски филмчета за малката. За целта на една виртуална машина (ubuntu 14.04) инсталирах clip-bucket, и в този пост ще покажа стъпка по стъпка как става това. Само да отбележа, че след инсталацията всичко работи перфектно! Качването и конвертирането на големи клипове функционира безупречно!
Днес ще пиша за един наболял за мен проблем свързан с толкова омразното apache и проблема му със symlink защитита. Оказва се че при apache 2.2 такава защита по подразбиране няма. Има опция която може да се пусне : -FollowSymLinks , но тя лесно може да бъде заобиколена, от слагането на един прост .htaccess файл със следните неща:
А проблема в случая е следния. Имаме cpanel сървър и много умрели Joomla и wordpress сайтове пълни с какви ли не стари и по-стари темплейти и плугини.
Някой псевдо хакер намира дупка в тях, и качва така накеченият експлойт (по-долу ще го покажа)
След като го стартира, самият експлойт прави symlink на всички home директории и на главната / . С опциите пуснати по-горе (+Indexes и +FollowSymLinks) хакерът вече може съвсем спокойно да си разцъка из директориите на другите потребители и да разгледа техните конфиг файлове на сайтовете. Тук е ясно какви могат да бъдат последствията.
Аз много съжалявам, че на тези наши сървъри apache-то още работи, но докато от Cpanel.net не накарат WHM/Cpanel да работят изцяло с nginx и php5-fpm примерно, ще имаме тези проблеми. Само да вметна , че за nginx има една проста опция :
disable_symlinks on;
която оправя този проблем…. но когато използваме nginx пред apache само за прокси, трябва да търсим решение на проблема в самото apache.
Решението:
Решението се оказа доста просто, но беше необходимо време докато го намеря.
Изпълнява се следният код :