GreaterGlider
@GreaterGlider

Какие подходы используются сейчас при построении веб-серверов?

Добрый всем день. В сферической бюджетной организации от предыдущего админа осталось два хостинг сервера, по примерно 50 сайтов на каждом. Всё это дело работает на Дебиане с Apache 2 и MySQL 5.x. Сайты на самых разных движках, в том числе и очень древних, админы которых давно пропали. Вся безопасность это fail2ban, chroot jail'ы для sftp пользователей и смененный порт SSH :)

Просьба к шарящим людям подсказать как организовать грамотно (и главное безопасно) веб-сервер в 2020 году. Что там сегодня в моде, всякие докеры, кубернейтсы и прочее или в какую сторону копать. Спасибо.
  • Вопрос задан
  • 121 просмотр
Решения вопроса 1
shambler81
@shambler81 Куратор тега Linux
И так что вам понадобится.
1. поскольку разные движки и особенно старые вам нужно от хостинга
а) php5.2(если реально для него что-то есть) php5.3 php5.4 php5.6 php7.0 php7.1 php7.1 php7.2 php7.3 php7.4 - FastCGI или mod_apache, при этом 5.2-5.3 компилить прийдется уже их тарболов, поскольку в репках их нет
б) php7.0 php7.1 php7.1 php7.2 php7.3 php7.4 - PHP-FPM - эти со всеми видами представлений одной командой.
в) nginx +apache - поскольку в старых сайтах переписывать .htaccess на чичтый nginx+FPM это маразм.
г) сказал бы что virusdie подключеный на каждый сайт, но они сделали ребрендинг и подняли цену в 100 раз так что не увольте.
однако делать с виурсами что-то нужно
так что
будем делать с вирусами
1. su_exec вкл выкл для сайта - запрещяет функцию exec для старых сайтов она как правило не нужна.
2. опен бейс дир смысла ставить нет.
3. нужна моментальная система отката для старых сайтов, возможно просто накатывать бэкап раз в месяц ( если сайты уже статичны) это дешевле чем разбираться с каждым из них постоянно.
4. Взять большое файловое хранилище или яндекс облако или hetzner там дешевые 10 тб хранилищя, примонтировать их через clifs и бэкапить туда все раз в месяц, удалять раз в 5 лет, тоже по крону.
отдельно папку для почищены от вирусов сайто которая лежит всегда, и если сайт по какой-то причине просрался то нужно чтоб был ооочень старый бэкап помима обычных. Желательно где-то еще.
5. старым сайтам должна быть возможность отключить почту, это можно сделать через настройки апача, главное в морду вывести.
что-то вроде
disable_functions=exec,passthru,shell_exec,system,proc_open,popen,curl_multi_exec,parse_ini_file,show_source,mail,apache_child_terminate, apache_setenv, define_syslog_variables, escapeshellarg, escapeshellcmd, eval, fp, fput, ftp_connect, ftp_exec, ftp_get, ftp_login, ftp_nb_fput, ftp_put, ftp_raw, ftp_rawlist, highlight_file, ini_alter, ini_get_all, ini_restore, inject_code, openlog, passthru, php_uname, phpAds_remoteInfo, phpAds_XmlRpc, phpAds_xmlrpcDecode, phpAds_xmlrpcEncode, popen, posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, posix_setuid, posix_uname, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, syslog, system, xmlrpc_entity_decode, mail

так же было бы неплохо собирать в лог файл какие конкретно файлы отправляют спам и с какой строки, поскольку это постояннго будет причиной бана адерсов, так что за этим нужно будет следить.
mail.add_x_header = On
mail.log = syslog
В этом сулчае прям в сислог, но можн ои в отдельный файл, ну и в мониторинг его .
Так же нужно будет следить за очередью почты, при резких пиках нужно будет реагировать.

Возможно понадобятся curl mpdf zend_optimizer (php 5.2) zend guzrd_loader ( 5.3) ioncube.
и тому подобные специические темы.

лично я собираю все это на ispconfig 3
плюс модуль nginx, плюс своя кастомка.
600 сайтов полет нормальный.
Так же было бы неплохо подключить какой-то антивирус и сканить систему что-то типа ai-bolit.php или веб серисы.
НО у вас точно должна быть функция быстрого отката,а для совсем древиних сайтов так и по крону можно их ломают так часто что все вышесказанное мало поможет.
для особо жопных сайтов можно перевести их в html
хостинг должен поддерживать letsencrypt а так же нужно мониторить что сертификаты могут выдаться, как правило в 99% панелей если хоть один из сертификатов не выдался не выдадутся и остальные.

Могу предожить vestacp
braynicp
biyrix vm
все они ставятся с одного клика, у каждого есть свои плюсы и минусы.
Ну или как вариант
у яндекс в kubernetas есть возможность вобще бесплатно хостить html сайты, а для php сделать впс, там и бэкапы слайсов можно делать, и примонтировать местное храниллище.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
@vitaly_il1
DevOps Consulting
Что там сегодня в моде, всякие докеры, кубернейтсы и прочее или в какую сторону копать

Я бы забыл о моде и K8S.
Чтобы действительно было правильно и безопасно, надо обновлять все. Но при обновлении может что-то сломаться.
Поэтому программа-минимум (ИМХО):
- бэкапы, бэкапы, бэкапы
- закрыть все ненужные порты
- SSH - только по ключу
- удалить уволенных за эти десять лет пользователей, поменять пароли на "серьезные" у оставшихся

После этого, потихоньку пробовать
- обновлять все что получается
- разделить пользователей и права на файлы
Ответ написан
CityCat4
@CityCat4
Если я чешу в затылке - не беда!
Вам модно или безопасно? Докеры и кубернетесы - это модно-стильно-молодежно (так же как раньше были "облака"), но если они в задачу не лезут - незачем их туда тащить.
Если же все-таки безопасно, то:
- сначала полный (полный!, то есть включающий все без исключения старые сервера) бэкап - чтобы было куда вернуться.
- потом идентификация всех имеющихся юзеров и всех, кто неизвестен - в бан
- для всех, кто известен - смена паролей
- Если есть возможность, ограничение ssh по ip и переход на аутентифкацию по ключу.
- проверка всех торчащих наружу сервисов и отстреливание лишних
- постепенная замена всех движков на их современные версии, обновление мускла
Ответ написан
@Karpion
Какой движок использовать для сайта - определяется функциональностью этого сайта. Где-то годится простой HTML, где-то надо больше.

Общие соображения по безопасности Вам уже сказали, я с ними согласен. Хотя про движок предыдущие авторы не сказали ничего осмысленного - ну так в первой фразе я обосновал, почему они и не могли ничего посоветовать: нет информации.

Хотя степень изоляции сайтов - тоже зависит от задачи.
В ряде случаев можно вообще не изолировать, а запустить вирт.серверы в рамках Apache - IP-based или DNS-based. По кр.мере, это нормально для статических сайтов на простом HTML (хотя JS, AdobeFlash и прочие программы, выполняющиеся на стороне клиента - тут ничего не меняют). Но у Вас MySQL - значит, работают server-side скрипты, а вот их надо изолировать. Но как именно изолировать - зависит от задачи.
Ответ написан
@Stqs
senior software developer
Я б поднял кубернетс кластер, и по одному сайту б докеризировал и деплоилв в к8. А потом просто потушил эти сервера несчастные
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы