Существует множество способов, которыми злоумышленник может воспользоваться известным открытым портом, начиная от использования ошибок в реализации TCP и вызывая отказ в обслуживании, заставляя ваш сервер выполнять дорогостоящие вычисления (вспомните недавний 2.2250738585072012e-308 ошибка?), что приводит к сбою вашей программы из-за переполнения буфера или даже выполнить произвольный код.
Безопасность платформы
В реализации TCP в некоторых операционных системах было несколько уязвимостей, в которых злоумышленник полагался на знание открытого порта на целевом хосте, например. атака SYN-флуда. Они были в значительной степени смягчены во всех основных операционных системах, но тот, кто отвечает за безопасность вашего хоста, должен постоянно следить за последними проблемами безопасности на платформе.
Безопасность сервера
Помимо уязвимостей в ОС и реализации TCP, существуют также потенциальные проблемы, связанные с самим сервером. Если ваш сервер может выполнять важные для безопасности операции в ответ на получаемые им запросы, злоумышленник может воспользоваться этим. К ним относятся чтение и запись файлов, выделение больших кусков памяти, отправка запросов к базам данных и т. д.
С точки зрения разработчика
Убедитесь, что ваш сервер может работать с низкими привилегиями и низкими ресурсами, что он проверяет все входные данные, полученные от пользователя, и экранирует все выходные данные, которые он отправляет в другие системы, и что он не выполняет никаких ненужных действий, связанных с безопасностью, — это первые шаги к тому, чтобы сделать его безопасный. Если вам нужно выполнять операции, связанные с безопасностью, вы можете инкапсулировать их в отдельный процесс и использовать IPC. Всестороннее тестирование вашей программы очень сложно, но также критично для ее безопасности.
С точки зрения администратора
Критические точки — убедиться, что последние обновления безопасности в ОС были применены, что ваш сервер действительно работает с самыми низкими возможными привилегиями и что он не может исчерпать критически важные системные ресурсы (например, ЦП, ОЗУ, открытые файловые дескрипторы, открытые TCP-соединения и т. д.) .
person
Adam Zalcman
schedule
05.03.2012