Зачастую люди создают сайты на личном компьютере и там же их тестируют. И только после загружают такие сайты на сервер виртуального хостинга, где впоследствии они оказываются неработоспособными. Такое обычно случается с новичками и вызывает бурю негодования: “Как это так? Я же сам видел, как сайт работал на моем компьютере, а на Вашем сервере он почему-то не работает. Плохой у Вас сервер, чините”.
Такой пользователь не задумывается о том, что он создавал сайт на персональном компьютере, к которому у него безграничный доступ и на котором работает только он сам. На виртуальном же хостинге работает множество людей (поэтому его еще называют shared-хостинг), и для их комфортной и безопасной работы вводится ряд ограничений. Любые ограничения – это неприятно, но те, что мы используем на нашем виртуальном хостинге, призваны помочь самому пользователю. Не будь их, пользователь столкнулся бы с другими проблемами, которые явно перевешивают неудобства от наших ограничений. Одним из существующих ограничений является файрвол (Firewall), об устройстве которого будет рассказано в этой статье.
На нашем виртуальном хостинге, функцию файрвола выполняет программный комплекс CSF. Это надстройка над файрволом iptables, который входит в ядро linux. CSF позволяет не только определить, к каким службам можно выполнить подключение, создав набор правил для Iptables, но и проводит аудит журнальных файлов сервера, выявляя попытки атак на наш сервер. Все сетевые соединения делятся на два типа: входящие и исходящие.
Входящие – это возможность подключаться к серверу. Тут все просто, мы блокируем все, кроме нескольких служб, которые необходимы для работы хостинга. Доступны только: веб-сервер, FTP-сервер, SSH-сервер, почтовый сервер и контрольная панель cPanel с возможностью использовать набор скриптов от Softaculous. Казалось бы, для работы сайта больше и не нужно. Ведь, например, на WordPress.com (компания, предлагающая хостинг для WordPress), вы столкнетесь с гораздо большими ограничениями, чем при работе с CMS WordPress на виртуальном хостинге. Но не всё так просто. К серверу баз данных, запущенному на своем персональном компьютере вы подключаетесь свободно и для редактирования базы данных используете любимую программу. Но, когда дело доходит до подключения из этой же программы к аналогичному серверу на виртуальном хостинге, у вас ничего не получается. Это происходит потому, что мы блокируем сетевые соединения к серверу баз данных, если соединения происходят не с нашего же сервера.
На первый взгляд – не очень удобно. Зачем же это было сделано? Очень просто: для поддержания безопасности. Чтобы удаленные машины-боты не могли заниматься подбором пароля к вашей базе данных. Никто не говорит, что у этих ботов получилось бы подобрать пароль, получить доступ и взломать сайт. Но, смотря, как современные мошенники тратят массу усилий, изощряются и придумывают все новые и новые методы взлома систем, стоит принимать любую, даже небольшую, вероятность всерьез.
Спросите, почему я назвал таких людей мошенниками, а не хакерами? Да все просто: в моем понятии последние это неплохие люди, с большим энтузиазмом, больше интересующиеся тем, как это устроено, и, как обойти ограничения для поддержания спортивного интереса, нежели тем, как сделать плохо ближнему. Не знаю почему, но такое у меня сложилось мнение. Так вот, сейчас мошенники периодически сканируют Ваш сайт, чтобы обнаружить проблемные места. Смотрят страницы с оповещениями об ошибках, собирают данные. Они, например, могут записать сообщение о невозможности подключиться к базе данных вашим скриптом (когда оно выводиться на странице, вместо сайта). После, зная логин и имя базы данных, пытаются подбирать пароль. И, даже если не создавать удаленных пользователей в базе данных и отбросить возможность того, что они подберут пароль, сам процесс подбора пароля и наличие массы соединений с сервером баз данных, несут уйму нежелательной нагрузки на сервер.
Но не все так плохо, и пользователь, который хочет редактировать базу данных не в веб интерфейсе, а, используя собственную программу, может использовать обходной путь. Например, он хочет загрузить дамп базы данных, размер которого превышает ограничение на загрузку файлов в php. Для этого пользователь может использовать протокол ssh. И речь не обязательно идет о том, что нужно будет заходить в консоль сервера и там, вводя необходимые команды, загружать дамп базы данных. Можно использовать проброс порта 3306 (если речь идет о mysql) на свой локальный компьютер, используя ssh соединение с сервером. Для этого, например, можно использовать программу Putty. Как видно из этого примера, у пользователя есть возможность обойти некоторые ограничения без подвержения сервера риску.
Теперь поговорим об исходящих ограничениях. На первый взгляд – это бессмысленная мера. Ведь исходящие соединения могут устанавливать только программы, запущенные из-под аккаунтов наших же пользователей. Тут, однако, есть нюансы. Как быть в тех случаях, когда аккаунт пользователя взламывают? Вирус крадет логин-детали из почтового клиента на компьютере пользователя, или находится уязвимость в коде сайта, или злоумышленник покупает аккаунт у нас, используя ворованную кредитную карту… Достаточно несложный Dark Mailer (программа для рассылки спама), вполне может отправить миллионы писем в обход локального почтового сервера, при чем в кратчайшие сроки. Это может стать причиной попадания сервера в публичные блэклисты. И, как результат, наши пользователи не смогут отправлять почту, используя этот сервер. По этой причине мы блокируем все исходящие соединения на порт 25 (SMTP). Аналогично и с другими портами, нет смысла разрешать исходящие соединения без крайней необходимости. Естественно, у нас есть исключения из правил, и некоторые порты у нас разрешены для исходящих соединений. Например, мы разрешаем подключаться к 80-ому порту (HTTP), так как многие CMS умеют скачивать дополнения и обновления из сети самостоятельно. Это явно лучше, чем каждый раз загружать их на сервер, используя FTP. Также, запрещая подключения к 25-ому порту, мы оставляем открытым 587(Submission), который также позволяет отправить почту через удаленный сервер, но на нем нужно авторизоваться.
Нельзя не отметить одну особенность нашего файрвола: он блокирует IP ареса компьютеров, с которых совершаются попытки подбора паролей или атаки на сайты наших пользователей. Под попыткой подбора паролей мы подразумеваем ошибки аутентификации в разных сервисах нашего сервера. Ошибки авторизации в почте, на FTP сервере или при входе в контрольную панель cPanel. Что касается атак, то это совпадения с правилами mod_security (набор правил, призванных предотвратить взлом вашего сайта). Если таких совпадений, при обращении к Вашему сайту окажется много, то ИП адрес посетителя может быть блокирован.
Не стоит переживать, любой подобный блок – это временная мера, и через 20 минут он будет снят. Но, если таких “временных” блоков будет более 4-х, то блок станет постоянным, и для его снятия Вам нужно будет обратиться к нам в техподдержку.
Чтобы подытожить написанное, хочу сказать, что все ограничения мы вводили исключительно для спокойствия и безопасности наших пользователей. Если вдруг Вы столкнетесь с какими-то проблемами, связанными с нашими сетевыми ограничениями, то не стесняйтесь обращаться с вопросами в нашу техподдержку, мы постараемся подсказать Вам наиболее удобный способ решить Ваши задачи без ущерба для безопасности всего сервера.
Если вы не уверены, удастся ли вам запустить проект и работать с ним на виртуальном хостинге без проблем, вы всегда можете изучить отзывы на хостинг, ведь в них обычно можно найти полезную информацию об ограничениях хостера и как они влияют на работу сайтов.
Но не все готовы мириться с ограничениями виртуального хостинга. Если вам подходит цена на выделенный сервер или VPS, то подумайте о переносе своего сайта.
Читайте также:
- Сервисы для email-рассылки
Попробуйте хостинг с кучей плюшек: автоустановщиком 330 движков, конструктором сайтов и теплой поддержкой 24/7!