Я уже задал вопрос на форумах Docker но пока с ответом не повезло. Я надеюсь, что здесь мне повезет больше.
Я в процессе создания бастиона ssh (с fail2ban для безопасности) в контейнере Docker. Контейнер не будет служить никакой другой цели, кроме как быть бастионом ssh и будет служить для доступа к связанным томам через sshfs.
В настоящее время я использую, как мне кажется, очень плохой метод. Мой Dockerfile:
Это работает, с некоторыми оговорками (нет /var/log/auth.log для fail2ban, чтобы съесть, так что там довольно много искажений конфигурации), но я чувствую, что делаю это неправильно.
Проблема в том, что очень сложно найти информацию о том, как правильно делать то, что я пытаюсь сделать. Есть бесконечные страницы, на которых перечисляется, как использовать ssh в контейнере для отладки, резервного копирования и т. Д. несколько интересных страниц о том, почему вам не следует использовать ssh в контейнере. Но я не нашел страницу святого Грааля "вот как правильно настроить бастион ssh с fail2ban в контейнере Docker». Он вообще существует? Или я прав, что поступаю так, как есть?
Спасибо!
N.B. Я знаю, что это старый вопрос, но он возник в поисковой системе. Пишу свой ответ, чтобы помочь любому, у кого такой же вопрос.
Это Лучшая практика - иметь как можно меньше сервисов на контейнер.
Это снижает сложность обновления контейнеров и восстановления, если что-то пойдет не так.
У вас должно получиться два контейнера - один SSH
контейнер и Fail2Ban
контейнер.
Для SSH
контейнера, вы сопоставляете соответствующий файл журнала с каталогом на хосте. Настройте контейнер в соответствии с вашими потребностями.
В Fail2Ban
контейнеру потребуются разрешения для редактирования IPTables
брандмауэр на хосте. В Fail2Ban
контейнер также необходимо сопоставить с тем же SSH
файлы журнала (и даже добавить с :ro
для «только для чтения» в сопоставлении, так как запись в файлы журнала не требуется)