Еще раз о Malware

Еще раз о Malware.

Жалобы за несколько дней

В последнее время участились вопросы пользователей хостинга об установке прав 555(чтение и исполнение) на их папку www.

Отчего же это происходит?
Дело в том, что на серверах хостинга установлен защитный скрипт, который работает так:
Если обнаружено множественного подключение к внешним SMTP серверам на порт 25/tcp от имени пользователя, то:
1. Запускается антивирусный сканер Clamav/Maldet для поиска вирусов в папке пользователя.
2. Устанавливаются права 555 для того, чтобы предотвратить последующее заражение через различные уязвимости сайтов, в частности старых версий Joomla, Wordpress, DLE и тому подобных.

Другие хостинг провайдеры просто блокируют сайт пользователя при получении уведомления о рассылаемом спаме, мы же стараемся, чтобы сайты клиентов продолжали работать бесперебойно, несмотря на их заражение. Дело в том, что при правильно настроенной CMS вполне достаточно прав 555 (чтение и исполнение) для её работы.

Каким же образом отправлять письма?

Вы можете пользоваться нашими серверами для отправки до 50 писем в час(используя явную авторизацию на сервере) или другими почтовыми службами, подключаясь к ним на защищенные порты(любой кроме 25/tcp). Google, например, использует порт 465(требуется SSL) и порт 587(требуется TLS). Здесь нет никаких ограничений.

Зачем мы вообще пользуемся антивирусами?
Если ими не пользоваться, то сайты уязвимых CMS наполняются вирусами, которые рассылают спам, собирают пароли, работают в ботнетах.

Например, на одном из сайтов было недавно обнаружено 179 различных вредоносных скриптов(сайт не обновлялся с 2011 года, Joomla 1.5). Подобные сайты часто вызывают до 1000 одновременных подключений на внешние серверы для прямой доставки спама.

Помимо дополнительной нагрузки на серверы, наши диапазоны IP попадют в черные списки, что ведет к запрету на отправку писем обычными пользователями, блокировке в поисковых системах и другим подобным вещам. Мы стараемся максимально быстро вытаскивать IP из черных списков. И на данный момент ни один из наших адресов в них не находится.

Очень желательно своевременно устанавливать обновления CMS и не выставлять права, разрещающие запись файлов на сайт(кроме отдельных директорий). Приносим извинения за возможные неудобства.

Перенос сайтов в США

В связи с частыми сбоями в ДЦ Datotel(примерно раз в 2 недели) было принято решение перенести сайты клиентов в ДЦ BHS на границе США и Канады. Изменения коснутся клиентов на серверах u1.cishost.ru и u2.cishost.ru.
На новых серверах доступны выделенные IP, а также значительно увеличена пропускная способность канала.
Перенос будет осуществлен незаметно для клиентов.
Приносим извинения за возможные неудобства.

Новое оборудование

Уважаемые пользователи хостинга!
Рады сообщить Вам, что несмотря на кризис, мы продолжаем развиваться.
В этот раз мы купили новые серверы под VDS хостинг

Напоминаем Вам, что стоимость услуг VDS хостинга остается неизменной. Спасибо за то, что выбираете нас!

С Уважением, коллектив CISHost.ru

Поздравляем наших партнеров!


10 февраля нашему главному поставщику ПО для автоматизации работы хостинга исполнилось 11 лет.
Несомненно, если бы не существовало ISPsystem, нам было бы очень тяжело, ведь только они стоят в одному ряду с ведущими западными разработчиками ПО для предоставления услуг хостинга.
Мы очень любим ISPsystem и от всей души поздравляем их с 11-и летием!
Спасибо Вам за замечательное и полезное ПО, которое позволяет развивать Российский сегмент хостинга!
#ispsystem

Внимание! Изменение цен на услуги.

Уважаемые пользователи хостинга!
Информируем вас о повышении цен на выделенные IP-адреса с 9-го февраля 2015 года.
В связи с инфляцией, мы вынуждены повысить цены на выделенные IP-адреса.
Мы прилагаем все возможные усилия, чтобы не повышать цены на услуги и рады сообщить, что цены на виртуальный хостинг и VDS хостинг остаются без изменений.

С наступающим Новым годом!

Уважаемые пользователи хостинга!

Коллектив хостинга CISHost поздравляет Вас с наступающим Новым 2015 годом и Рождеством!

В наступающем году мы желаем Вам новых достижений, неисчерпаемого источника идей и реализации всех намеченных проектов и планов, Пусть для Вас и ваших близких праздники и новый год будут наполнены большой радостью, счастьем и успехом. Пусть удача сопутствует во всех начинаниях, а все желания обязательно сбудутся!

Всегда рады сотрудничать с Вами!




Подробнее

Технические работы 16.09.2014

Уважаемые пользователи хостинга! Уведомляем Вас, что 16.09.2014 в период с 03:00 до 05:00 будут проходить плановые работы на сетевом оборудовании в Москве. Во время проведения работ будет отсутствовать доступ к сайтам, расположенным в данном сегменте сети. Ожидаемый перерыв составит 20 минут. Работы направлены на повышение отказоустойчивости сервисов во время сетевых атак.

Замена роутера

Роутер

Уважаемые пользователи хостинга!
Наш роутер Mikrotik Cloud Core не выдержал последнего SYN-флуда или на него негативно повлияло суперлуние. Нам пришлось произвести экстренную замену на новый. Перебои с сайтами на российских серверах наблюдались с 21:35 по 01:40 по московскому времени. На данный момент все сервисы восстановлены и работают в полном объеме.
Приносим свои извинения за доставленные неудобства.

Базы данных InnoDB vs MyISAM

Наш опыт подсказывает, что лучше использовать таблицы InnoDB. Таблицы MyISAM часто блокируются при нагруженном одновременном чтении и записи. Ну если на сайт Joomla одновременно зашли примерно 1000 пользователей, то ситуация выглядит так:

Вывод mytop:

Id      User    Host    db      Command Time    State   Info    Progress
108751  user_main  localhost       user_j15   Query   146980  closing tables  SELECT * FROM jos_session WHERE session_id = 'dfeodu7tv41tbgg4pts44s2kk6'       0.000
108753  user_main  localhost       user_j15   Query   146980  updating        DELETE FROM jos_session WHERE ( time < '1405526121' )   0.000
108774  user_main  localhost       user_j15   Query   146978  Waiting for table level lock    SELECT * FROM jos_session WHERE session_id = 'g2j9kt3stbtkg75tct5r2dvkb6'       0.000
108829  user_main  localhost       user_j15   Query   146977  Waiting for table level lock    SELECT * FROM jos_session WHERE session_id = 'et6833daba2v5t6hptk4e72jr4'       0.000
108834  user_main  localhost       user_j15   Query   146976  Waiting for table level lock    SELECT * FROM jos_session WHERE session_id = 'r35kp3balnt1kt9qnrdclf1k30'       0.000
108930  user_main  localhost       user_j15   Query   146975  Waiting for table level lock    SELECT * FROM jos_session WHERE session_id = '8fssht7k44uiq5kdellgtfe6o7'       0.000
108936  user_main  localhost       user_j15   Query   146969  Waiting for table level lock    SELECT * FROM jos_session WHERE session_id = 'qfvubpisihl1p10k3gkd6tg1v4'       0.000
109030  user_main  localhost       user_j15   Query   146964  Waiting for table level lock    SELECT * FROM jos_session WHERE session_id = '250oati4c74eac3fth5lcpf696'       0.000
109038  user_main  localhost       user_j15   Query   146964  Waiting for table level lock    SELECT * FROM jos_session WHERE session_id = 'f910sn4upaijefoehb546b66h7'       0.000
109121  user_main  localhost       user_j15   Query   146959  Waiting for table level lock    SELECT * FROM jos_session WHERE session_id = 'mo6c9pg63l7m693bpeomas7j60'       0.000


Была попытка одновременного удаления строк из таблицы с сессиями Joomla 1.5 и чтения записей. Такое происходит нечасто, но бывает.
Можно обратить внимание, что запросы исполняются уже 146980 секунд, что препятствует нормальной работе сайта. Если бы таблица jos_session была не MyISAM, а InnoDB, такого бы не произошло. Находя при помощи диагностики подобные ситуации мы конвертируем таблицу MyISAM -> InnoDB самостоятельно, после этого сайт работает без проблем.

Об отправке почты

У нас нельзя отправлять почту просто функцией PHP mail, потому что спамеры, регулярно взламывающие незащищенные Joomla и Wordpress сайты используют домены клиентов для своих рассылок и затем уже почта добросовестных клиентов совершенно не доходит получателям.

Рекомендуем следующие скрипты для отправки почты:

Библиотека smtp-func.php

<?php

function smtpmail($mail_to, $subject, $message, $headers='') {

        //Настройки почты
        $config['smtp_username'] = '[email protected]';  //Смените на имя своего почтового ящика из ISPManager.
        $config['smtp_password'] = 'Пароль от почтового ящика из панели ISPManager';  //Измените пароль.
        $config['smtp_from']     = 'Test Mailbox'; //Ваше имя - или имя Вашего сайта. Будет показывать при прочтении в поле "От кого".
        //Обычно эти настройки менять не стоит
        $config['smtp_host']     = 'localhost';  //Сервер для отправки почты (для наших клиентов менять не требуется).
        $config['smtp_port']     = '25'; // Порт работы. Не меняйте, если не уверены.
        $config['smtp_debug']    = false;  //Если Вы хотите видеть сообщения ошибок, укажите true вместо false.
        $config['smtp_charset']  = 'UTF-8';   //Кодировка сообщений.

        $SEND =   "Date: ".date("D, d M Y H:i:s") . " +0300\r\n";
        $SEND .=   'Subject: =?'.$config['smtp_charset'].'?B?'.base64_encode($subject)."=?=\r\n";
        if ($headers) $SEND .= $headers."\r\n\r\n";
        else
        {
                $SEND .= "Reply-To: ".$config['smtp_username']."\r\n";
                $SEND .= "MIME-Version: 1.0\r\n";
                $SEND .= "Content-Type: text/plain; charset=\"".$config['smtp_charset']."\"\r\n";
                $SEND .= "Content-Transfer-Encoding: 8bit\r\n";
                $SEND .= "From: \"".$config['smtp_from']."\" <".$config['smtp_username'].">\r\n";
                $SEND .= "To: $mail_to <$mail_to>\r\n";
                $SEND .= "X-Priority: 3\r\n\r\n";
        }
        $SEND .=  $message."\r\n";
         if( !$socket = fsockopen($config['smtp_host'], $config['smtp_port'], $errno, $errstr, 30) ) {
            if ($config['smtp_debug']) echo $errno."<br>".$errstr;
            return false;
         }

            if (!server_parse($socket, "220", __LINE__)) return false;

            fputs($socket, "EHLO " . $config['smtp_host'] . "\r\n");
            if (!server_parse($socket, "250", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Не могу отправить EHLO!</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, "AUTH LOGIN\r\n");
            if (!server_parse($socket, "334", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Не могу найти ответ на запрос авторизации!</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, base64_encode($config['smtp_username']) . "\r\n");
            if (!server_parse($socket, "334", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Логин авторизации не был принят сервером!</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, base64_encode($config['smtp_password']) . "\r\n");
            if (!server_parse($socket, "235", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Пароль не был принят сервером как верный! Ошибка авторизации!</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, "MAIL FROM: <".$config['smtp_username'].">\r\n");
            if (!server_parse($socket, "250", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Не могу отправить команду MAIL FROM:</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, "RCPT TO: <" . $mail_to . ">\r\n");

            if (!server_parse($socket, "250", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Не могу отправить команду RCPT TO:</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, "DATA\r\n");

            if (!server_parse($socket, "354", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Не могу отправить команду DATA!</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, $SEND."\r\n.\r\n");

            if (!server_parse($socket, "250", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Не могу отправить тело письма. Письмо не было отправлено!</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, "QUIT\r\n");
            fclose($socket);
            return TRUE;
}
function server_parse($socket, $response, $line = __LINE__) {
        global $config;
        $server_response="";
    while (substr($server_response, 3, 1) != ' ') {
        if (!($server_response = fgets($socket, 256))) {
                   if ($config['smtp_debug']) echo "<p>Проблемы с отправкой почты!</p>$response
$line
";
                   return false;
                }
    }
    if (!(substr($server_response, 0, 3) == $response)) {
           if ($config['smtp_debug']) echo "<p>Проблемы с отправкой почты!</p>$response
$line
";
           return false;
        }
    return true;
}

//Отправить почту сразу нескольким получателям, ящики получателей пишем через запятую.

function smtpmassmail($mail_to, $subject, $message, $headers='')
{
$mailaddresses=explode(",",$mail_to);
foreach ($mailaddresses as $mailaddress) smtpmail($mailaddress,$subject,$message,$headers);
}

?>


и сам файл отправки mailer.php

<?php
//Замените настройки на нужные.
$mail_to = '[email protected]'; //Вам потребуется указать здесь Ваш настоящий почтовый ящик, куда должно будет прийти письмо.
$type = 'plain'; //Можно поменять на html; plain означает: будет присылаться чистый текст.
$charset = 'UTF-8';

include('smtp-func.php');
if ($_REQUEST['message'])
{
   $name = $_REQUEST['name'];
   $phone = $_REQUEST['phone'];
   $message = $_REQUEST['message'];
   $replyto = '[email protected]';
   $headers = "To: \"Administrator\" <$mail_to>\r\n".
              "From: \"$replyto\" <$mail_from>\r\n".
              "Reply-To: $replyto\r\n".
              "Content-Type: text/$type; charset=\"$charset\"\r\n";
   $sended = smtpmail($mail_to, $name, $message, $headers);
   
   echo '<html>
        <head>
        <meta http-equiv="content-type" content="text/html; charset='.$charset.'">
        </head>
              <body>';
   if (!$sended) echo 'Письмо не удалось отправить. Пожалуйста свяжитесь с администратором сайта по адресу: '.$mail_to;
   else echo 'Письмо было успешно отправлено.';
   echo '</body>';
   exit;
}
?>