Как разработчик программного обеспечения я очень привык устанавливать свой типичный стек (java, mysql и tomcat / apache) на свою машину разработки. Но установка и обеспечение безопасности производственной машины - это не то, чем я могу быть уверен. Есть ли руководство от А до Я для чайников по настройке и защите рабочего сервера? Сильно ли различается процесс в зависимости от платформы (Windows или Linux)? Есть ли какие-то общие правила, которые можно применять на разных платформах (и стеках приложений)?
Есть ли руководство от А до Я для чайников по настройке и защите рабочего сервера?
Нет. Для этого существует слишком много возможных комбинаций программного обеспечения, кода, платформы, оборудования и т. Д. Однако, если вы разделите свой стек, вы найдете полезную информацию для каждого уровня (например, усиление защиты вашей ОС, рекомендации по безопасности веб-приложений и т. Д.).
Сильно ли различается процесс в зависимости от платформы (Windows или Linux)?
В обработать закалки то же самое, но детали реализации нет.
Есть ли какие-то общие правила, которые можно применять на разных платформах (и стеках приложений)?
Да. Вы должны создать профиль конфигурации вашего приложения: задокументировать зависимости вашего приложения (любые службы, которые должны быть запущены; любые сетевые порты / протоколы, которые должны быть открыты (входящие и выходящие); любые сторонние библиотеки / компоненты) для установки базовые требования для работы вашего приложения. Систематически удаляйте / отключайте любые службы, приложения и порты, которые вам не нужны; запускать службы и приложения с минимальными необходимыми привилегиями. Испытайте каждый шаг на пути; ты воля сломать что-нибудь.
Приобретите надлежащий брандмауэр и включите фильтрацию исходящего трафика (если ваш ящик переходит в собственность, не позволяйте ему устанавливать прямые TCP-соединения); используйте прокси из белого списка, чтобы разрешить исходящий HTTP только для необходимых обновлений (windowsupdate.com и др., репозитории Linux). Настройка предупреждений и надлежащее ведение журнала: предупреждение о неудачных попытках входа в систему, запуске / остановке служб, установке, повышении привилегий и т.д. Важное значение имеет управление исправлениями; разработать разумный интервал обслуживания и придерживаться его. Не позволяйте обновлениям накапливаться слишком долго.
Если это веб-приложение, посмотрите на свои точки входа, сопоставления HTTP-глаголов с URI и внесите в белый список свои параметры POST или GET, очистите формы (не доверяйте никаким входам), экранируйте свой SQL (или используйте 3-й партийная библиотека, которая делает это за вас), регистрируйте все ваши SQL-запросы, и так далее.
Существует множество общих правил, применимых ко всем типам серверов, например:
Удалите неиспользуемое программное обеспечение и отключите неиспользуемые порты / службы. Они тратят ресурсы впустую и представляют собой возможную уязвимость.
Применяйте исправления и обновления постоянно, особенно при обнаружении ошибок или слабых мест.
Измените все пароли по умолчанию и / или отключите гостевые / стандартные учетные записи, когда это возможно.
Используйте надежные пароли.
Используйте SSL для защиты ваших транзакций, когда это применимо и целесообразно.
Также для каждой конкретной службы могут быть советы по ее обеспечению.
используйте брандмауэр, например iptables, и уделите время планированию того, какие подключения к машине должны быть возможными и необходимыми. ограничивать входящий И ДАЖЕ исходящий трафик.
Специальный совет для tomcat: привяжите его порты к localhost и используйте правильный веб-сервер (например, apache httpd) в качестве интерфейса. Многие из последних слабых мест Tomcat можно было использовать, только если у вас был доступ к приложению-менеджеру.
Поэтому, если ваше приложение запущено и работает, неплохо также избавиться от приложения-менеджера. Отключите автоматическое развертывание.
В полной мере используйте различные роли - веб-серверу httpd не нужен доступ на уровне операционной системы к файлам, которые предоставляет tomcat, и наоборот. Поэтому, если кто-то воспользуется уязвимостью httpd и перейдет к командной строке, убедитесь, что он не может написать ничего важного.
Взгляните на ISO 27001 - есть также форум обмена стеками, который специализируется на безопасность.
В дополнении к Халедответ:
Измените имена учетных записей по умолчанию, включая:
sa
имя учетной записи в SQL Server или MySQLadministrator
имя учетной записи в WindowsВ случае SQL Server или любого другого сервера БД отключите удаленные подключения, если они не нужны, а если они необходимы, рассмотрите возможность блокировки портов, которые использует сервер, и занесения в белый список разрешенных IP-адресов.