Как создать и настроить свой веб-сервер на VDS (05 сен 2024)

Осенью самое время заняться установкой и тюнингом своего веб-сервера. Не правда ли?

Рассылка спама с вашего сайта - реальность?!

Больше
9 года 2 нед. назад #1 от Arhitektorius
Недавно попал в бан лист на Masterpro.ws ! Казалось бы ни за что... Плохие слова в форум не писал, ничего противозаконного не делал... Однако, оказалось, что я "гадёныш", чего я сам от себя не ожидал :(
После моего обращения к Aleksej, оказалось, что я нахожусь в бане и парюсь веничком не так просто, а по причине массового спама с моего ip, на котором собственно и располагается несколько моих любимых и тестовых сайтиков...
Полез искать заразу и нашел... Около сотни заражённых файлов, рассылающих спам и парочку shell скриптов. О том, что я нашел и как искал написал здесь . Поиски продолжаются, т.к. дыру я так и не смог найти.
Во всяком случае, проверьте свои сайты, т.к. такую же заразу я нашел на хостинге spaceweb, на сайте клиента. Это меня натолкнуло на мысль о массовой атаке вируса. (Кстати поддержка спайсвеба так мягенько мне сказали, что им пофик :huh: )
Заражённые файлы найти просто командой в терминале:
Code:
grep -Hr '<?php ' /адрес_сайта/ #после тега <?php не меньше 10 пробелов
Файлы создаются "чем-то" автоматически, все переменные в них тоже имеют случайное название, файлы или создаются под случайным именем (типа ajax.php header.php, dir.php.....) Либо изменяется первая строка в существующий "родной" файл CMS.
Буду благодарен за любую информацию по поиску вируса (видимо я еще что-то упустил в поиске), поиску дырок, через которые он мог попасть ко мне. Или кто-то сталкивался с этим. Ну наконец, проверьте на всякий случай свой сайт ;) не будет лишним.
PS Сайты на Joomla, расширения от официальных разработчиков, версии обновляются до актуальных своевременно...

Моё хобби стало моей проффесией ;)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Dev banner 1
Больше
9 года 2 нед. назад #2 от Aleksej

Arhitektorius пишет: оказалось, что я нахожусь в бане и парюсь веничком не так просто, а по причине массового спама с моего ip, на котором собственно и располагается несколько моих любимых и тестовых сайтиков...


Я не имел отношения к бану, это произошло автоматом, ввиду попадания хоста в спам-базы.
Для начала пара-тройка вопросов:
  1. Контролировались ли на зараженных сайтах безопасные разрешения для файлов и каталогов?
  2. Был ли включен selinux на сервере?
  3. Применялись ли обычные для веб-серверов приемы безопасности, предположим:

Code:
register_globals=Off safe_mode=Off allow_url_fopen=Off allow_url_include=Off disable_functions=show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open open_basedir=/home/public_html:/tmp

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
9 года 2 нед. назад #3 от Arhitektorius

Aleksej пишет: Я не имел отношения к бану, это произошло автоматом, ввиду попадания хоста в спам-базы.

А я это и понял! И считаю, что это даже хорошо - лучше довериться машине в вычислении спамеров. Кроме того, я же туда попал не без причины, а за дело! А если бы не попал, то может еще пару недель и не догадывался бы ни о чем...
Сегодня почувствовал себя юзером ведь действительно я почти не менял исходные настройки php:
Code:
register_globals= было по умолчанию, видимо включено allow_url_include=On было включено disable_functions= не было запрета данных функций open_basedir= папка не была установлена
Вот и получил по заслугам... Как-бы вышел из машины, дверью хлопнул, а ключи оставил в замке зажигания..
Кстати, я не очень понял - safe_mode наверное лучше сделать On? Этот режим вроде как отключает все потенциально опасные функции...

Моё хобби стало моей проффесией ;)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
9 года 2 нед. назад - 9 года 2 нед. назад #4 от Aleksej

register_globals boolean
Регистрировать или нет переменные EGPCS (Environment, GET, POST, Cookie, Server) в качестве глобальных переменных.
Начиная с версии » PHP 4.2.0, значением по умолчанию для этой директивы является off.
Внимание
Данная возможность была помечена УСТАРЕВШЕЙ начиная с версии PHP 5.3.0 и была УДАЛЕНА в версии PHP 5.4.0.

safe_mode boolean
Включает/отключает безопасный режим в PHP. Если PHP скомпилирован с опцией --enable-safe-mode, то по умолчанию принимает значение On (включено), иначе - Off (выключено).
Внимание
Данная возможность была помечена УСТАРЕВШЕЙ начиная с версии PHP 5.3.0 и была УДАЛЕНА в версии PHP 5.4.0.


Версия пыха актуальна была? или нет? Как раз неделю назад пришлось переключать клиенту php в графической панели управления шареда Таймвеба до актуального релиза, по умолчанию у него так и было 5.3. Почему и вспомнил про эти директивы.
Удалось ли решить проблему? в смысле, всю дрянь вычистить? если да, то оптимально делистинг посредством CBL Lookup Utility, по ссылке .
Последнее редактирование: 9 года 2 нед. назад пользователем Aleksej.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
9 года 2 нед. назад #5 от Arhitektorius
Code:
Версия PHP 5.5.9-1ubuntu4.14 Веб-сервер Apache/2.4.7 (Ubuntu)
Чистил долго, возможно вычистил не всё.
Code:
IP Address 109.172.42.6 is listed in the CBL. It shows signs of being infected with a spam sending trojan, malicious link or some other form of botnet. It was last detected at 2015-11-21 08:00 GMT (+/- 30 minutes), approximately 13 days, 10 hours, 30 minutes ago. It has been relisted following a previous removal at 2015-11-20 08:38 GMT (14 days, 9 hours, 27 minutes ago)
Тут дата проверки как раз стоит во время начала всей котовасии и не обновлялась. Ругается на всё тот-же StearLat Infection... Видимо то, что я искал по описанию в моей статье (тег php + несколько пробелов). Соответственно все эти файлы очистил, пока что новых не появлялось, но есть вероятность, что еще что-то где-то осталось. Пока курю гугл по этой теме безрезультатно. Я хоть и нашел 2 шелла, но думаю требуется еще поискать, может еще и другой найдется...

Моё хобби стало моей проффесией ;)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
9 года 2 нед. назад #6 от evgenij

Arhitektorius пишет:

Code:
Версия PHP 5.5.9-1ubuntu4.14 Веб-сервер Apache/2.4.7 (Ubuntu)


В Дебиане selinux по-умолчанию выключен. В убунте... хм, не помню, скорей всего - тоже выключен? Это рождает ряд неудобств, имхо. Вернее ряд проблем безопасности, сроди только что описанной.

Have a lot of fun!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
9 года 2 нед. назад #7 от Arhitektorius
Selinux да, выключен. Я пока что начал изучать этого зверя, а то боюсь, что простым включением его я не отделаюсь!
Поставил пока что еще вдогонку fail2ban - за недельку у меня около 20 ip попались на него с попытками ssh подобрать. И несколько по proftpd логу.
Правда никак не могу ему log от джумлы скормить, чтобы тоже попытки подбора отсекал - мне не хватает знаний в регулярных выражениях python. Но думаю вскоре победю.

Моё хобби стало моей проффесией ;)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
9 года 2 нед. назад - 9 года 2 нед. назад #8 от Aleksej

Arhitektorius пишет: Selinux да, выключен. Я пока что начал изучать этого зверя, а то боюсь, что простым включением его я не отделаюсь!


Воот. Вот оно, вот.
Говорил же я тебе когда-то, начинай с Fedora. С Centos, еще лучше, или там RHEL бесплатный есть на Амазоне. С Red Hat, короче говоря. Ubuntu популярен, даже, я бы сказал, популяризован... но вот как раз ты и споткнулся там, где и должен был споткнуться. И вот как раз мне коллега говорит, в тему, почему selinux по-дефолту у тебя в бубунте отключен:

- я как то всегда на rpm-based, привык. И понять не могу, почему на дебианоподобных селинукс по дефолту отключен, 99% ведь не догадаются его включить. Когда то с мандривы офигевал, почему там фаер по дефолту отключен всегда был, сразу после инсталляции... тоже ведь не факт, что его включат.
- это историческое. 10-15 лет назад этот селинукс был оч. сырой когда его опенсорсу подарили.. и правила надо было писать наколенке и почти без документации... потому легче было отключить чем полгода затачивать. Ну так и осталось пока:) в рэдхатах его рэдхат развивает за деньги от комерс решений... а в дебиане кому... ждут пока станет продакшн полностью... вот и не включают.


Применительно к происшедшему. Я точно не скажу, что там нужно сегодня сделать, чтоб selinux адекватно работал на вебсервере под Ubuntu, или Debian; но ручаюсь, что, если выбираете под вебсервер Centos или RHEL - никаких проблем с безопасностью на сервере даже у начинающего линуксмена не возникнет, вся премудрость уместится для него (хотя бы поначалу) в двух-трех командах консоли: всего-то и нужно, что подарить ваш сайт апачу и сделать контекст:

Code:
$ sudo chown -R apache:apache /www $ sudo chcon -R -t httpd_sys_rw_content_t /www

Не забываем безопасные разрешения для файлов и каталогов:

Code:
$ sudo find /www -type d -exec chmod 0755 {} \; $ sudo find /www -type f -exec chmod 0644 {} \;

ну и еще, после очередного sudo yum update вам, вполне возможно, придется чуть подредактировать selinux применительно к отправке почты; а может быть, уже и не придется:

Code:
$ sudo setsebool -P httpd_can_sendmail 1 $ sudo setsebool -P httpd_can_network_connect 1

Все! неужто так уж сложно? а взамен - отличная система безопасности на серваке, механизм полностью отлажен и работает как часы. Повторяю: SELinux - Security-Enhanced Linux, система обеспечения мандатного контроля доступа - развивается (читай, финансируется) именно корпорацией Red Hat (ранее NSA, агентство национальной безопасности Соединённых Штатов (англ. National Security Agency, NSA)), а не сообществом убунтологов, это необходимо четко осознавать. Я, кстати, не впервые слышу эту историю, что на продакшене под убунтой selinux выключен; и админ даже не в курсах, что таковой вообще есть и его неплохо бы включить. Споры о том, какой дистр лучше - смысла, разумеется, не имеют, но если ты начинающий, и начинать хочешь не с того, чтоб твои интернет-проекты пожирали интернет-черви... начинай все-таки с редхата. Ну, это просто логичнее. А потом уже Ubuntu.

Для всех желающих, ищущих и страждущих - цикл статей (заголовки в левом сайдбаре страницы), озаглавленный Amazon Linux AMI Red Hat Enterprise Linux 7.1 - исчерпывающее руководство для новичков на тему Как поднять свой веб-сервер на RHEL, он же в просторечии Centos. SELinux, php, phpmyadmin, MariaDB, apache, чуть подкрутить префорк апача, при необходимости - и вперед. Какой там fail2ban, какие там могут быть питоны, если основа всего - сервер - не настроен у тебя должным образом? Не мучь животных.
Последнее редактирование: 9 года 2 нед. назад пользователем Aleksej.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
9 года 6 дн. назад - 9 года 6 дн. назад #9 от Aleksej
Вчера была зафиксирована попытка взлома и этого сайта, причем, на фоне работы обычных хакерских тузл, атака была в достаточной степени опасной. В связи с чем защита сайта усилена; обо всех проблемах в работе сайта - просьба сообщать либо на форуме, либо письмом info@masterpro.ws .

P.S. Arhitectoruius, рад, что удалось выйти наконец твоему хосту из блэклистов. А почему сайт закрыт, я вчера только пробовал зайти?
Последнее редактирование: 9 года 6 дн. назад пользователем Aleksej.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
9 года 6 дн. назад #10 от Arhitektorius
Aleksej, ну из блеклиста я вышел на следующий день, после того, как получил "весточку" - почистил все файлы, порченные обновил. Кстати собрал нехилую коллекцию троянов и спамрассыльщиков ;)
А про какой именно сайт ты говоришь? Если тот который wlip.ru, то всё очень просто - заказчик сдулся, сайт убран... Хреновенькое время я чую настало... :(

Моё хобби стало моей проффесией ;)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Работает на Kunena форум