Настройте сервер OpenSSH в Linux с максимальной безопасностью

SSH или также известный как Secure Shell , это протокол и имя программы, которая его реализует. SSH широко известен как безопасный протокол для удаленного администрирования серверов, маршрутизаторов, коммутаторов и большого количества компьютеров. Протокол SSH позволяет полностью управлять сервером или сетевым устройством через интерпретатор команд, кроме того, мы также можем перенаправлять X-трафик для выполнения графических программ через сам сеанс SSH.

Другими фундаментальными характеристиками SSH являются то, что он позволяет нам: безопасно копировать данные, как файлы, так и папки, по протоколу SFTP (SSH FTP), протокол, созданный с нуля и не имеющий ничего общего с FTPS или FTPES (FTP через SSL / TLS). Протокол SSH необходим в области сетей и систем, кроме того, мы можем детально настроить его, чтобы обеспечить нашей системе максимально возможную безопасность.

Настройте сервер OpenSSH в Linux с максимальной безопасностью

Протокол SSH обеспечивает конфиденциальность (данные зашифрованы точка-точка), идентификация (мы можем аутентифицироваться перед SSH-сервером несколькими способами, с помощью пользователя / ключа, криптографии с открытым ключом, и мы даже можем настроить второй фактор аутентификации), целостность (да, данные, изменяемые или изменяемые злоумышленником, могут быть обнаружены, поскольку он использует HMAC для проверки целостности всех без исключения данных).

Существует две версии SSH, версия 1 сегодня не рекомендуется, по сути, по умолчанию всегда используется версия SSHv2. По умолчанию SSH использует протокол TCP транспортного уровня, а номер порта - 22, однако мы можем изменить номер порта, чтобы уменьшить возможное сканирование ботами службы SSH.

В этом руководстве, которое мы представляем сегодня, мы научим вас настраивать SSH-сервер OpenSSH, программу, доступную для операционных систем на базе Unix и Linux, такие как FreeBSD, OpenBSD, Debian, Red Hat Enterprise Linux и многие другие дистрибутивы. В этом руководстве мы не только научимся правильно настраивать файл конфигурации sshd_config, но также будем использовать дополнительные программы для обеспечения максимально возможной безопасности системы. В этом руководстве все настройки будут выполняться с помощью Debian, однако все меры безопасности могут быть реализованы в любой операционной системе на основе Linux и Unix.

Установка и запуск OpenSSH

OpenSSH - это программа SSH-сервер / клиент, наиболее используемая маршрутизаторами, коммутаторами, серверами и многими другими устройствами. Эта программа полностью бесплатна и имеет открытый исходный код. В установка этого SSH-сервера (если он еще не установлен по умолчанию) очень просто, нам просто нужно ввести следующую команду в терминал:

sudo apt install openssh-server

После установки мы должны учитывать определенные каталоги и команды для запуска, остановки и перезапуска службы SSH.

Чтобы отредактировать конфигурация SSH-сервера мы должны сделать в консоли:

sudo nano /etc/ssh/sshd_config

Еще один каталог, который мы должны принять во внимание, - это каталог известных хостов, поскольку именно здесь мы будем настраивать криптографические ключи RSA / DSA. В каталог, в котором расположены известные хосты и открытые ключи заключается в следующем:

/home/usuario/.ssh/

Этот каталог по умолчанию скрыт (.ssh), и для каждого пользователя операционной системы есть каталог, который подключается к удаленному серверу.

Чтобы запустить сервер:

sudo /etc/init.d/ssh start

Чтобы остановить сервер:

sudo /etc/init.d/ssh stop

Чтобы перезапустить сервер:

sudo /etc/init.d/ssh restart

После того, как мы установили SSH-сервер, мы знаем, где находятся файлы конфигурации сервера и каталог, в котором хранятся открытые ключи, мы переходим к настройке sshd_config, поскольку это основной файл конфигурации OpenSSH.

Конфигурация sshd_config для максимальной безопасности

Измените порт по умолчанию для SSH-сервера

По умолчанию серверы SSH используют порт 22 для подключений. Рекомендуется изменить этот номер порта, чтобы предотвратить попытки ботов или киберпреступников войти в систему, хотя само по себе это не обеспечивает безопасности, мы можем остаться незамеченными при массовом сканировании из Интернета. Если, например, мы хотим использовать порт 22445, мы должны поместить в файл конфигурации следующее:

  • Порт 22445

Блокировать root-доступ для удаленных подключений

По умолчанию любой пользователь операционной системы, имеющий разрешения Shell, сможет войти на сервер. Кроме того, мы должны помнить, что если у нас активирован пользователь root, он также сможет подключаться к серверу локально или удаленно, избегая того, чтобы злоумышленник «угадывал» имя пользователя. По умолчанию боты всегда пытаются атаковать порт 22 и пользователя «root».

Отключив самого пользователя root и используя sudo для повышения прав суперпользователя, мы избежим этого. Кроме того, OpenSSH также позволит нам отключить вход пользователя root для обеспечения большей безопасности системы:

  • PermitRootLogin no

Таким образом, корневые подключения будут заблокированы, что не позволит неавторизованным пользователям проводить атаки методом грубой силы на наш SSH-сервер, чтобы угадать учетные данные пользователя root. У нас также есть другие варианты в этом разделе, например " PermitRootLogin без пароля », Где аутентификация разрешена, но не с использованием имени пользователя и пароля, а с использованием криптографических ключей RSA.

Дополнительные настройки безопасности

Есть и другие рекомендуемые конфигурации, чтобы избежать нежелательных подключений к нашему SSH-серверу. Эти соединения:

  • Войти : Мы установим время, необходимое для ввода пароля, чтобы злоумышленнику не приходилось «много думать».
  • MaxAuthTries : Количество разрешенных попыток при вводе пароля перед отключением.
  • МаксСтартапы : Количество одновременных входов в систему с IP-адреса, чтобы избежать использования грубой силы в нескольких сеансах одновременно.
  • Разрешить пользователей : Это для создания белого списка пользователей. Этот параметр позволяет нам настроить пользователей, которые смогут подключиться. Это очень ограничительная мера, но в то же время очень безопасная, поскольку она блокирует все подключения пользователей, которых нет в списке. Пользователи, которые у нас здесь, смогут подключиться, а остальные - нет.
  • Запретить пользователей : Аналогично предыдущему, но теперь мы создаем черный список. Пользователи, которые у нас здесь, не смогут подключиться, а остальные подключатся.
  • Разрешить группы / запретить пользователей : Точно так же, как указано выше, но вместо создания черного / белого списка пользователей это группы пользователей.

Например, файл конфигурации для sshd_config будет следующим:

Port 22445
PermitRootLogin no
LoginGraceTime 30
MaxAuthTries 3
MaxStartups 3
AllowUsers sergio sergio2
DenyUsers adrian adrian2

Дополнительной мерой безопасности является настройка алгоритмов обмена ключами, симметричного шифрования, а также конфигурации HMAC для проверки целостности. В настоящее время рекомендуется применять следующую конфигурацию для обеспечения очень высокой безопасности:

KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256 Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com

С этой конфигурацией у нас будут лучшие криптографические наборы для сервера, однако старые клиенты могут не иметь возможности подключиться, поскольку они не поддерживают эти алгоритмы. Мы должны принять во внимание эту деталь и проверить, какие алгоритмы совместимы, а какие нет.

Если мы создали новые ключи RSA или DSA для ключей с большей битовой длиной, мы должны поместить их в файл конфигурации (или заменить предыдущие, и, таким образом, нам не придется трогать файл конфигурации), таким образом мы получим дополнительная безопасность, если, например, мы используем ключи RSA длиной 4096 бит или выше.

HostKey /etc/ssh/ssh_host_ed25519_key
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key

Чтобы сгенерировать новые 4096-битные ключи RSA, нам просто нужно выполнить следующую команду:

ssh-keygen -f /etc/ssh/ssh_host_rsa_key -t rsa -b 4096

Если мы хотим сгенерировать новые ключи ECDSA (с максимальной длиной 512 бит) или ED25519, нам нужно будет ввести следующие команды:

ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key -t ecdsa -b 521
ssh-keygen -f /etc/ssh/ssh_host_ed25519_key -t ed25519

Аутентификация в SSH: все режимы подробно описаны

В этом разделе мы собираемся показать вам различные методы аутентификации, доступные на сервере. Обычно у нас есть в основном два метода: имя пользователя и пароль (что-то, что мы знаем), а также с криптографическими ключами (что-то, что у нас есть). Однако мы можем обеспечить системе дополнительную безопасность, объединив эти аутентификации, например, с одноразовым паролем, сгенерированным таким приложением, как Google Authenticator или Latch OTP. Кроме того, мы также можем предоставить систему защелки, чтобы предотвратить вход любого пользователя в систему, если у нас не открыта «защелка».

Пользователь и пароль

Если мы хотим разрешить вход в службу через системное имя пользователя и пароль, файл конфигурации должен содержать такую ​​инструкцию:

  • ПарольАутентификация да

В противном случае, если мы хотим предотвратить аутентификацию по имени пользователя / паролю и разрешить соединения только с помощью криптографических ключей, мы должны указать «нет»:

  • Пароль Аутентификация нет

Это предложение касается всех пользователей системы. Чтобы не остаться без доступа к серверу, мы должны убедиться, что PubkeyАутентификация для оператора установлено значение «да», чтобы разрешить вход с криптографическими ключами.

Есть еще одно предложение, связанное с этим: ВызовОтветАутентификация , если мы установим конфигурацию на «нет», это не позволит соединениям, с которыми взаимодействует клавиатура, поэтому, если, например, у нас настроен одноразовый пароль, мы не сможем войти в систему. Если мы собираемся использовать только криптографические ключи, вы можете без проблем установить «нет».

Открытый ключ SSH

Чтобы настроить доступ открытого ключа к серверу, мы должны установить для следующего оператора значение «yes»:

  • PubkeyAuthentication да

Вот как мы активируем конфигурацию с открытым ключом SSH в системе, однако есть еще некоторые шаги, которые мы должны сделать, чтобы мы могли подключиться к этому серверу, а именно передать открытый ключ самому компьютеру. Для этого мы должны разрешить (на данный момент) аутентификацию с помощью имени пользователя и пароля, после того как мы завершим все шаги, мы сможем без проблем отказать в аутентификации с помощью имени пользователя и пароля.

На компьютере, на котором мы хотим подключиться к серверу с криптографическими ключами, мы должны создать эти ключи и передать их серверу. Чтобы создать ключи RSA длиной 4096 бит, мы должны ввести следующую команду в SSH-клиенте:

ssh-keygen -t rsa -b 4096

В мастере создания этих ключей он сообщит нам, хотим ли мы сохранить их в /home/usuario/.ssh/id_rsa, мы говорим «да». Впоследствии это позволит нам поставить сквозной пароль к закрытому ключу, таким образом, если мы потеряем закрытый ключ, ничего не произойдет, потому что они не смогут подключиться, так как всегда необходимо вводить проход -слово для правильного подключения.

После того, как мы создали открытый и закрытый ключи на нашем компьютере, мы должны отправить открытый ключ на SSH-сервер там, где мы хотим подключиться, будьте осторожны: открытый ключ.

ssh-copy-id usuario@IP_servidor

Открытый ключ будет автоматически скопирован на указанный сервер, и мы сможем включить аутентификацию только с открытым ключом, и мы автоматически зарегистрируемся. Вывод, предлагаемый этой командой, должен выглядеть примерно так:

The authenticity of host '12.34.56.78 (12.34.56.78)' can't be established.
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '12.34.56.78' (RSA) to the list of known hosts.
user@12.34.56.78's password:
Now try logging into the machine, with "ssh 'user@12.34.56.78'", and check in:
~/.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.

В этих выходных данных пользователь должен подтвердить, что он хочет добавить удостоверение, и ввести учетные данные для входа в учетную запись, которую он хочет использовать в этой службе. По этой причине важно, чтобы мы по-прежнему поддерживали возможность аутентификации с использованием имени пользователя / пароля на сервере. Как только этот процесс будет завершен, мы сможем войти в систему на этом компьютере без ввода пароля:

ssh usuario@IP

Не забудьте установить директиву «PasswordAuthentication no», чтобы не разрешать доступ через имя пользователя и пароль.

Имя пользователя и пароль с одноразовым паролем (Google Authenticator или Latch OTP)

В этой части руководства мы собираемся аутентифицироваться с обычным именем пользователя / паролем, но также мы должны использовать OTP с Google Authenticator или Latch OTP для входа в сеанс. То есть мы предоставим SSH-серверу двухэтапную проверку.

Первое, что мы должны сделать, это установить ряд зависимостей, необходимых для настройки двойной аутентификации на нашем SSH-сервере. Для этого мы откроем терминал и наберем:

sudo apt install libpam0g-dev make gcc wget ssh

После того, как зависимости будут установлены в нашей системе, мы можем загрузить программное обеспечение для двойной аутентификации.

sudo apt install libpam-google-authenticator

В нашей операционной системе уже установлен Google Authenticator. Следующие шаги - это настройка инструмента, чтобы можно было использовать его в нашем SSH.

Чтобы начать настройку Google Authenticator, нам просто нужно ввести в терминал:

google-authenticator

ПРИМЕЧАНИЕ. Запустите его без прав суперпользователя (sudo), то есть запустите его от имени «обычного» пользователя. Если вы запустите его как root, этот Google Auth будет доступен только в самом root, и его отключение в SSH ничего не даст.

Далее мы увидим простой мастер из терминала. Первое, что нас спросит, - хотим ли мы, чтобы наши токены доступа были привязаны ко времени. Затем мы увидим закрытый ключ, ключ проверки и коды экстренных служб, если у нас нет под рукой мобильного телефона. Мы должны надежно хранить все эти данные, чтобы мы могли восстановить доступ в случае потери ключа аутентификации.

Затем мы говорим ему сохранить изменения в файле в нашей папке / home, и он спросит нас, хотим ли мы, чтобы каждый токен использовался только один раз, даже если это ограничивает вход в систему каждые 30 секунд. Чтобы защитить себя от возможных атак MITM, мы выбираем да. Наконец, он спросит нас, хотим ли мы продлить срок действия каждого кода вместо 1 минуты 30 секунд (чтобы избежать проблем с синхронизацией времени). Чтобы избежать атак грубой силы, мы также можем ограничить количество подключений до 3 на каждые 30 секунд.

Сканирование QR-кода или ввод кода вручную можно выполнить в таких программах, как Google Authenticator, Authy, Latch и т. Д. Мы рекомендуем использовать Google Authenticator или Latch.

Следующим шагом, который мы должны сделать, является открытие файла конфигурации «sshd», чтобы указать ему использовать этот модуль для входа в систему. Для этого мы можем сделать «clear», чтобы очистить терминал и ввести его:

sudo nano /etc/pam.d/sshd

И мы добавим в конец файла следующую строку:

auth required pam_google_authenticator.so

Сохраняем изменения и открываем файл sshd_config следующей командой:

sudo nano /etc/ssh/sshd_config

И мы меняем строку «ChallengeResponseAuthentication no» на «ChallengeResponseAuthentication yes».

Мы перезапускаем сервер с помощью «sudo /etc/init.d/ssh restart», и как только он запустится снова, у нас будет включена двухэтапная аутентификация.

После этого у нас также будет запрашиваться одноразовый пароль - код, сгенерированный нашим мобильным приложением.

Открытый ключ SSH с одноразовым паролем (Google Authenticator или Latch OTP)

Конфигурация на уровне открытого ключа должна быть такой же, как и раньше, а также на уровне установки и конфигурации Google Authenticator. Единственная разница в том, что в sshd_config файл у нас должен быть примерно такой:

PasswordAuthentication no
ChallengeResponseAuthentication yes
PubKeyAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive

А в файле /etc/pam.d/sshd у нас должно быть что-то вроде этого:

#@include common-auth
auth required pam_google_authenticator.so

Очень важно поставить знак решетки (#), чтобы прокомментировать @include, таким образом, мы будем правильно аутентифицироваться с помощью открытого ключа и кода OTP, сгенерированного мобильным телефоном. Таким образом, мы сообщим серверу принимать только аутентификацию с открытым ключом.

Конфигурация защелки в OpenSSH и позже выберите метод аутентификации

Latch для OpenSSH в настоящее время имеет ограничение, заключающееся в том, что мы можем использовать его только для одного пользователя, то есть, если мы собираемся попытаться войти на SSH-сервер с несколькими пользователями, мы не сможем защитить нашу команду с помощью Latch, потому что это ограничивается только одним. Мы рекомендуем вам доступ к официальному сайту плагина Latch для Unix на GitHub , там вы найдете пошаговое руководство по правильной настройке с помощью службы SSH, если вам интересно. Мы должны помнить, что он позволяет подключать только одного пользователя.

Дополнительные меры безопасности: межсетевой экран, блокировка портов, fail2ban и DenyHosts.

В этом разделе мы собираемся использовать дополнительное программное обеспечение для защиты SSH-сервера, поскольку необходима дополнительная безопасность. Мы будем использовать как брандмауэр на основе iptables, например, выбивание портов, чтобы всегда скрывать службу за брандмауэром, а также fail2bat и DenyHost для обнаружения возможных атак грубой силы и остановки их с помощью брандмауэра.

Конфигурация межсетевого экрана iptables для защиты SSH

Брандмауэр iptables, включенный в большинство систем на базе Linux, позволит нам ограничить количество одновременных подключений к нашему серверу, а также мы сможем использовать специальный модуль под названием «недавний» для сохранения всех из них в базе данных. попытки подключения, идеально подходят для предотвращения атак грубой силы.

Ограничить количество одновременных подключений в iptables

Если злоумышленник пытается подключиться несколько раз с одного и того же IP-адреса, мы можем ограничить это количество подключений, чтобы смягчить его атаку. Это не пресекает возможную атаку в зародыше, но смягчает ее с двумя целями: не иметь большой памяти и ЦП потребление на компьютере путем открытия нескольких подключений SSH, задерживая возможную атаку методом грубой силы, открывая несколько подключений.

Этот оператор ПРИНИМАЕТ до 5 подключений, которые происходят с одного и того же общедоступного IP-адреса, шестое подключение мы блокируем. Если у нас несколько сетевых интерфейсов, мы должны использовать «-i», чтобы установить интерфейс, для которого мы применяем это правило, если мы ничего не укажем, оно будет применяться ко всем из них.

iptables -A INPUT -p tcp --dport 22445 -m connlimit --connlimit-upto 5 --connlimit-mask 32 -j ACCEPT

iptables -A ВВОД -j DROP

Настройте последний модуль для предотвращения атак методом грубой силы на службу SSH.

Последний модуль служит для ограничения количества подключений в секунду на уровне IP, это идеально для защиты нас от атак на порт SSH, потому что злоумышленник попытается ввести несколько паролей. В следующем примере мы зарегистрируем все подключения к TCP-порту назначения 22445 в базе данных и зарегистрируем источник этих подключений (общедоступный IP-адрес возможного злоумышленника).

Впоследствии проверяем, что в таблице не более 4 совпадений за последние 60 секунд. Если совпадений больше 4, мы переходим к блокировке всех подключений оттуда.

iptables -A INPUT -p tcp --dport 22445 -m conntrack --ctstate NEW -m recent --set --name ssh --rsource

iptables -A INPUT -p tcp –dport 22445 -m conntrack –ctstate NEW -m latest –rcheck –seconds 60 –hitcount 4 –name ssh –rsource -j DROP

Этот модуль отличается от предыдущего тем, что проверяет эти соединения по времени. Обычно для защиты службы SSH лучше использовать этот последний модуль, чем предыдущий.

Port-Knocking, чтобы «скрыть» службу SSH

Блокировка портов - это незаметный метод открытия портов, которые брандмауэр по умолчанию держит закрытыми. Он работает, требуя попыток подключения к ряду закрытых предопределенных портов. Когда получена правильная последовательность «касаний» (попыток подключения) порта, брандмауэр открывает определенный порт (ы). Преимущество состоит в том, что при обычном сканировании портов может показаться, что служба порта просто недоступна.

Port Knocking - это приложение, которое по умолчанию не устанавливается в операционных системах, вы можете установить его через официальные репозитории. В нашем случае при использовании Debian 9 установка будет такой:

sudo apt-get install knockd

После установки мы должны включить его, отредактировав:

sudo nano /etc/default/knockd

И положив: START_KNOCKD = 1

Далее запускаем сервис:

sudo service knockd start

Файл конфигурации knockd находится в /etc/knockd.conf

Мы должны редактировать его любым файловым редактором, с необходимыми правами root. Файл будет выглядеть так:

[options] UseSyslog

[openSSH] последовательность = 7000,8000,9000
seq_timeout = 5
команда = / sbin / iptables -A INPUT -s% IP% -p tcp –dport 22445 -j ACCEPT
tcpflags = син

[closeSSH] последовательность = 9000,8000,7000
seq_timeout = 5
команда = / sbin / iptables -D INPUT -s% IP% -p tcp –dport 22445 -j ACCEPT
tcpflags = син

А чтобы «открыть» порт службы SSH, надо в консоли поставить «стук IP_address 7000 8000 9000». После того, как мы использовали службу, мы можем закрыть ее с помощью оператора, который мы ранее поместили в файл конфигурации, это не обязательно должно быть наоборот (это зависит от того, как вы настроили файл выше).

Другой вариант, который у нас есть в Port Knocking, - это временная разблокировка сервера, таким образом мы откроем порт на 10 секунд (или как хотите), и тогда нам придется войти в службу. Позже порт будет закрыт, и если мы войдем в систему, он не выкинет нас с этого сервера.

[options] UseSyslog

[SSH] последовательность = 5438,3428,3280,4479
tcpflags = син
seq_timeout = 15
start_command = / sbin / iptables -A INPUT -s% IP% -p tcp –dport 22445 -j ПРИНЯТЬ
cmd_timeout = 10
команда stop_command = / sbin / iptables -D INPUT -s% IP% -p tcp –dport 22445 -j ACCEPT

Таким образом, когда мы покидаем сервер, нам не нужно будет «закрывать» дверь, как в предыдущем случае, поскольку она была открыта всего 10 секунд.

Fail2ban для смягчения атак методом грубой силы на SSH

Мы также можем установить программу fail2ban для запрета IP-адресов, которые делают много неудачных попыток подключения (с неправильным паролем). Эта программа хорошо известна и используется, так как ее очень легко настроить и запустить. Мы можем установить его, поставив

sudo apt install fail2ban

Теперь мы копируем файл .conf в тот же файл .local, чтобы применить эту конфигурацию:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Теперь мы можем создать с помощью fail2ban настраиваемое правило для SSH, мы создаем новый файл конфигурации, который будет отвечать за перезапись предыдущего основного файла jail.local.

sudo nano /etc/fail2ban/jail.d/sshjail.local

И вставляем это:

[sshd] enabled = true
port = 22445
bantime = 3600
findtime = 600
filter = sshd
maxretry = 3

И мы запускаем его, останавливаем и перезапускаем, как если бы это был SSH, в данном случае start = start:

sudo /etc/init.d/fail2ban restart

Чтобы увидеть ЖУРНАЛЫ соединений, вам нужно будет посмотреть путь /var/log/auth.log, а чтобы увидеть журналы fail2ban, вы должны посмотреть их здесь: /var/log/fail2ban.log

DenyHosts: как fail2ban, но специально ориентированный на SSH

У нас также есть еще одна программа, предназначенная исключительно для SSH, она называется DenyHost и имеет большую базу данных IP-адресов, известных как злоумышленники. Это еще одно решение для возможных атак, если у нас всегда есть наш SSH-сервер, подключенный к Интернету. DenyHosts работает так же, как fail2ban, он просматривает журналы подключений, чтобы определить, сталкиваемся ли мы с атакой грубой силы, а также проверяет базы данных IP, чтобы определить, являются ли они ботнетами.

Для установки этой программы нам нужно будет сделать это из официальных репозиториев, мы предполагаем, что в /etc/apt/source.list:

sudo apt install denyhosts

Первая часть настройки выполняется в пути /etc/hosts.allow, здесь нам нужно будет поместить белый список с нашими компьютерами, чтобы он никогда не блокировал нас, это важно, чтобы не блокировать себя через брандмауэр, особенно если вы используете удаленный сервер, этот шаг действительно важен.

sudo nano /etc/hosts.allow

Вам следует использовать следующий синтаксис:

sshd: DIRECCION_IP

Например, при этом вы разрешите три исходных IP-адреса:

sshd: 192.168.1.2

сшд: 192.168.1.3

сшд: 192.168.1.4

Мы сохраняем, чтобы применить изменения, и теперь нам нужно будет отредактировать глобальный файл конфигурации DenyHosts:

sudo nano /etc/denyhosts.conf

В этом файле конфигурации мы увидим комментарии к различным доступным параметрам конфигурации, синтаксис очень похож на Fail2ban, поэтому у вас не возникнет проблем при его настройке.

Pam_tally2: еще одна настоятельно рекомендуемая альтернатива

Этот инструмент также очень похож на предыдущие, он выполняет точно такую ​​же функцию: управлять неудачными попытками на SSH-сервере. Эта программа позволит нам подсчитывать попытки доступа разных пользователей с соответствующими исходными IP-адресами. Если будет слишком много неудачных попыток входа в систему, им автоматически будет отказано в доступе через брандмауэр. Этот инструмент состоит из двух частей: pam_tally2.so, который является модулем PAM, который мы можем настроить в нашей операционной системе Linux, и у нас также будет pam_tally2, который является самой программой.

Наконец, SSH-охрана Программа также настоятельно рекомендуется для адекватной защиты нашего SSH-сервера от попыток вторжения.

Как проверить безопасность моего SSH-сервера

Сегодня у нас есть несколько инструментов для проверки безопасности нашего сервера OpenSSH, который мы только что настроили, эти программы будут отвечать за анализ конфигурации сервера, устанавливая соединения с сервером, чтобы обнаружить какой-либо тип неправильной или небезопасной конфигурации. Некоторые из наиболее рекомендуемых программ: Rebex SSH Проверить который настоятельно рекомендуется онлайн-сканер, кроме того, у нас также есть SSH-аудит это инструмент, который устанавливается локально, где SSH-сервер должен проверять безопасность сервера.

До сих пор мы пришли с этим руководством о том, как подробно настроить службу SSH на нашем сервере. Если у вас есть вопросы, вы можете оставить комментарий, и мы с радостью ответим.