Я долго думал, стоит ли отвечать на вопрос здесь или пометить его как не по теме, но, поскольку «DevOps» в наши дни кажется повсеместным, он может предотвратить серьезный ущерб, когда станет более доступным.
Отказ от ответственности: есть книги, написанные на общую тему, и целая индустрия инженеров, занимающихся этим. Здесь можно дать только краткий обзор и некоторые подсказки. Кроме того, некоторые темы сильно упрощены. не полагаться исключительно на информацию, приведенную здесь.
Предположение в соответствии с передовой практикой: злоумышленник знает по минимум о вашей системе (сети, программном обеспечении, ОС и т. Д.) Столько же, сколько и вы.
Итак, давайте вспомним (некоторые из) общие риски.
Если вы не отслеживаете неудачные попытки входа в систему и не настраиваете автоматические действия после нескольких неудачных попыток от конкретного клиента (fail2ban - самый простой пример), можно взломать ваши учетные записи и пароли.
Кроме того, если вы не используете TLS, ваши соединения подвержены прослушиванию. В случае успеха злоумышленнику известны все учетные данные, отправленные на сервер.
Используя эксплойты, например, ssh-сервер, злоумышленник может похитить ваш компьютер. Этот риск увеличивается для каждой выставленной услуги. Эта атака, безусловно, самая опасная, поскольку ваши данные будут скомпрометированы и . Злоумышленник может использовать вашу систему для выполнения очень плохих вещей ™. На ваше имя и в некоторых юрисдикциях даже на вашем юридическом счете.
Белые IP-адреса, безусловно, полезны, но решительный злоумышленник может обойти это путем подмены IP-адресов. И вы должны предположить, что злоумышленник знает действительные IP-адреса источника и назначения. Кроме того, когда один из «белых» IP-адресов (частично) захвачен, атака вполне может исходить оттуда.
Теперь есть три основных способа борьбы с этими рисками:
- Снижение рисков, таких как правильное управление исправлениями и правильная настройка брандмауэра.
- Защита от вторжений, например fail2ban
- Обнаружение вторжения
Последнее заслуживает небольшого объяснения. Лучше всего полагать, что рано или поздно будет предпринята успешная атака против рассматриваемой системы. Крайне важно, чтобы системный администратор мог обнаружить вторжение, чтобы иметь возможность принять контрмеры. Однако, как только злоумышленник получит привилегии root, все контрмеры могут быть отменены. Поэтому крайне важно, чтобы злоумышленник мог получить непривилегированный доступ только на начальных этапах атаки, чтобы вы могли обнаружить его действия для повышения привилегий. И наоборот, это означает, что вы должны быть абсолютно уверены, что злоумышленник не может получить привилегии root на начальных этапах атаки (что является одной из многих причин, по которым ни одна из открытых служб не должна запускаться как root).
Предполагая, что вы не управляете сетью, вам придется прибегнуть к так называемому обнаружению вторжения на основе хоста или HIDS для краткости. HIDS, в свою очередь, относятся к двум категориям: HIDS на основе поведения и HIDS на основе состояния. OSSEC относится к последней категории и (относительно) прост в настройке и обслуживании, предлагая широкий спектр функций.
На другом уровне предоставление службы баз данных общедоступному Интернету почти всегда является верным признаком того, что с дизайном системы что-то не так. Если вы специально не хотите предоставлять услуги базы данных, у меня нет причин думать об этом.
Если вы хотите только предоставить данные: напишите для них REST- / SOAP- / what-API. Если ваши серверы баз данных доступны только через общедоступный Интернет по какой-то странной причине: используйте VPN или stunnel .
Подсказка: в зависимости от приложения, которое вы создаете, или юрисдикции, в которой вы живете, предоставление доступа к службе базы данных общедоступному Интернету может привести к нарушению правил, норм или даже закона
tl; dr: если вам нужно спросить, вы, вероятно, не должны этого делать.