Я устанавливаю сервер Debian, подключенный напрямую к Интернету. Очевидно, я хочу сделать его максимально безопасным. Я хотел бы, чтобы вы, ребята / девушки, добавили свои идеи по его защите и какие программы вы для этого используете.
Я хочу, чтобы часть этого вопроса касалась того, что вы используете в качестве брандмауэра? Просто iptables настраивается вручную или вы используете какое-то программное обеспечение, чтобы помочь вам? Как лучше? Заблокировать все и разрешить только то, что необходимо? Может быть, есть хорошие учебники для новичков по этой теме?
Вы меняете свой порт SSH? Вы используете такое программное обеспечение, как Fail2Ban чтобы предотвратить атаки методом перебора?
Обязательно:
В зависимости от уровня паранойи дополнительно:
integrit
для проверки того, что некоторые части файловой системы не изменены [с контрольной суммой, хранящейся вне машины], например Tripwire /etc/passwd
поэтому добавлять новых пользователей немного сложнее-m state --satete ESTABLISHED
заботится о разрешении потока пакетов, пока вы используете один сеанс SSH]То, что я не делаю сам, но имеет смысл:
Просто примечание о брандмауэре вашей машины ...
amap
, и nmap
с -A
вариант. Сказав это, вы можете (и, вероятно, должны, если беспокоитесь) изменить свои службы, чтобы скрыть себя от посторонних глаз, например, следующее позволит злоумышленнику узнать точную версию OpenSSH
который вы запускаете, они могут искать эксплойты для этой конкретной версии. Если вы скрываете такие вещи, вы усложняете им задачу.[root@ud-olis-1 uhtbin]# telnet localhost 22 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. SSH-2.0-OpenSSH_3.9p1
Суть в том, что вам никогда не удастся сделать что-либо на 100% безопасным - это просто невозможно - поэтому цель состоит в том, чтобы сделать это настолько безопасным, насколько это возможно - если слишком много усилий, чтобы сломать вашу систему, это достаточно хорошо, и большинство ламеров скрипт-кидди перейдут на следующую систему.
iptables
подходит для любой системы Linux, но настройте ее самостоятельно.Никогда не используйте какое-либо «программное обеспечение безопасности», которое не основано на открытых стандартах - оно обречено на то, что будет плохо написано и будет взломано (не вопрос «если», а «когда»). Открытый исходный код и открытые протоколы открыты для всеобщего обозрения и постепенно превращаются в зрелый и надежный продукт; ПО с закрытым исходным кодом в основном полагается на уверенность авторов в том, насколько хорош / безопасен продукт Oни думаю, что это так - то есть небольшое количество глаз против целой земли глаз.
Надеюсь, это поможет :)
использовать denyhosts (или аналогичный)
напишите свой собственный скрипт iptbles (чтобы вы точно контролировали, что разрешить, и можете отказаться от всего остального)
принудительно использовать защищенную связь SSL / TLS и убедиться, что у вас есть действительные подписанные сертификаты с непросроченным сроком действия.
Начало здесь:
В качестве общей отправной точки я следую тестам / руководствам из Центр Интернет-безопасности, которые представляют собой исчерпывающий сборник лучших практик безопасности. Не похоже, что их тест Debian обновлялся через какое-то время, но общий обзор шагов таков:
Есть много ресурсов по всем этим различным настройкам, включая конкретные команды и файлы конфигурации, которые необходимо реализовать в системе в тестах CISecurity.
Я бы посоветовал не подключать машину напрямую к Интернету. Установите какой-нибудь брандмауэр между машиной и Интернетом. Это позволяет выполнять мониторинг безопасности и сети, не увеличивая нагрузку на сервер. Лично я считаю, что сегментация сети и функций часто упрощает поиск и устранение неисправностей в сети, хотя иногда дополнительная сложность действительно затрудняет анализ.
Самая безопасная, но самая неприятная в управлении политика брандмауэра - это запретить все и явно разрешить только тот трафик, который вы должны разрешить. Это раздражает, потому что часто требуется обновлять политику брандмауэра по мере необходимости изменения сети.
Я бы также предложил использовать на сервере какой-то брандмауэр интерфейса - ключевым моментом является глубокая защита. Использование нестандартных портов для служб, связанных с администрированием, не повредит. fail2ban в порядке. Ответьте на более конкретные вопросы о приложениях безопасности на Serverfault, чтобы найти больше идей.
Безопасность похожа на шутку о двух путешественниках и медведе: хотя никто не может достичь идеальной безопасности, полезно быть более сложной целью, чем другие парни.
Некоторые люди указали на Руководство по обеспечению безопасности Debian. Этого должно хватить на все, кроме военных.
Многие люди думают, что быть до смешного параноиком - это круто, профессионально или что-то в этом роде. Это не, это просто раздражает для других админов и сразу репрессивный для ваших пользователей. Большая часть рекомендаций, которые вы увидите, - это просто фиктивная занятость, чтобы казаться полезной для параноидального администратора, но не на самом деле полезной, поскольку реальное нарушение безопасности, вероятно, будет вызвано недостаточно обновленной системой и / или из внутреннего источника.
Тем не менее, я считаю одним из своих принципов не доверять чему-либо в локальной сети больше, чем чему-либо из Интернета. Поэтому настраиваю все так, чтобы требовалась аутентификация даже в локальной сети. Я шифрую и аутентифицирую весь трафик между каждым компьютером с помощью IPsec.
Я в процессе перехода на полное шифрование диска для всех моих серверов.
Устанавливаю только те сервисы, которыми пользуюсь. У меня нет файрвола; Я настраиваю службы, которые мне нужны, чтобы требовать аутентификации или ограничивать их (собственной конфигурацией программы или TCP-оболочками) определенными IP-адресами. Единственное, что мне нужно было заблокировать с помощью iptables, это memcached
, поскольку у него не было файла конфигурации и не использовались TCP-оболочки.
Пользуюсь хорошо, случайно сгенерированный пароли для моих учетных записей и доверять моему серверу SSH (и всем другим службам), чтобы те, кто не знает пароль, не разглашаются. fail2ban
предназначен только для тех, у кого ограниченное пространство для файлов журналов, IMO. (У вас должно быть достаточно надежных паролей, чтобы им можно было доверять.)
Прочтите это прекрасное руководство по адресу www.debian.org/doc/manuals/securing-debian-howto/
Я лично меняю порт ssh и использую fail2ban + denyhosts. И блокирую все, что не нужно. Чем больше вы блокируете, тем меньше вам нужно беспокоиться.