SSH - Secure Shell
SSH (Secure Shell) — это протокол сетевой безопасности, который используется для защищенного удаленного доступа к компьютерам и другим устройствам. Он шифрует весь сетевой трафик между клиентом и сервером, что делает его безопасным для передачи конфиденциальной информации.
Несмотря на то, что SSH обычно считается безопасным, существует несколько уязвимостей, которые могут быть использованы хакерами. Рассмотрим некоторые из них и способы их устранения.
Слабые пароли
Самая распространенная уязвимость SSH — это использование слабых паролей. Хакеры могут использовать атаку «Brute-force» (перебор паролей) или атаку «Dictionary» (атака на основе словаря), чтобы угадать пароль и получить доступ к системе. Чтобы уменьшить уязвимость, нужно применять политики надежных паролей, включая использование длинных и сложных паролей, а также двухфакторную аутентификацию или аутентификацию с открытым ключом.
Атаки «Brute-force»
Хакеры могут использовать автоматизированные инструменты для проведения атак на SSH-серверы, пытаясь угадать username&password или открытый ключ. Для защиты от этой уязвимости можно использовать инструменты, которые могут обнаруживать и блокировать подозрительные попытки входа в систему, а также ограничивать скорость входа в систему. Часто используюмый словарь хакеров является rockyou. Rockyou.txt - это список из более чем 14 миллионов паролей в открытом виде, полученных в результате взлома сайта RockYou в 2009 году. Пароли из этого списка часто используются в заданиях по тестированию на проникновение и CTF-соревнованиях. По умолчанию файл находится в директории /usr/share/wordlists/ на установках Kali Linux. Вы можете проверить командой, находится ли ваш пароль в этом списке :
cat rockyou.txt | grep "вашпароль"
Атаки «Man-in-the-middle»
Эти атаки происходят, когда хакер перехватывает трафик между клиентом и сервером, например, в общественной Wi-Fi-сети. Эту уязвимость можно уменьшить с помощью надежного шифрования, проверки ключа хоста сервера и использования проверки подлинности с открытым ключом.
Некорректно настроенные серверы
Неправильно настроенные SSH-серверы могут быть уязвимы для различных атак, таких как повышение привилегий или атаки с переполнением буфера. Чтобы уменьшить уязвимость, серверы должны быть правильно настроены и регулярно обновляться.
Компрометация ключа
Если закрытый ключ клиента скомпрометирован, хакер может использовать его для получения несанкционированного доступа к удаленной системе. Например, если хакеру удается получить доступ к закрытому ключу пользователя, он может использовать его для подделки идентификационной информации и получения доступа к системе, несмотря на наличие аутентификации по паролю или открытому ключу.
Чтобы уменьшить риски компрометации закрытых ключей, необходимо принимать следующие меры:
- Защитите закрытые ключи паролем: при генерации ключей следует указывать парольную фразу, которая будет запрашиваться при использовании закрытого ключа. Это позволит убедиться в том, что только вы сможете использовать ваш закрытый ключ, даже если он будет скомпрометирован.
- Используйте несколько ключей: вместо того, чтобы использовать один и тот же ключ для всех серверов, следует генерировать отдельные ключи для каждого сервера. Если один ключ будет скомпрометирован, это не повлияет на безопасность других серверов.
- Храните закрытые ключи в безопасном месте: закрытые ключи следует хранить в безопасном месте, например, на отдельном компьютере или на защищенном носителе, который доступен только вам.
ssh-keygen -t rsa -b 4096 -C "email@example.com"
ssh-copy-id user@remote_host
ssh-keygen -R remote_host
ssh-agent bash ssh-add /путь/к/private_key
- Использование параметра
-iдля указания пути к закрытому ключу при подключении к удаленному серверу:
ssh -i /путь/к/private_key user@remote_host
Эти команды могут помочь обеспечить безопасность SSH-ключей и уменьшить риски компрометации закрытых ключей.
Nmap команда для поиска уязвимости системы:
nmap -A -T5 --script=vuln 0.0.0.0/24
Список из 10 наиболее критических уязвимостей протокола SSH:
- CVE-2018-15473 - данная уязвимость позволяет хакерам пройти аутентификацию на сервере без ввода пароля.
- CVE-2016-6210 - уязвимость, которая позволяет злоумышленникам выполнить произвольный код на сервере.
- CVE-2016-0777 и CVE-2016-0778 - эти уязвимости позволяют атакующему производить man-in-the-middle атаки и перехватывать данные между клиентом и сервером.
- CVE-2015-8325 - данная уязвимость позволяет злоумышленнику производить отказ в обслуживании (DoS) путем отправки специально сформированного пакета.
- CVE-2014-2532 - эта уязвимость позволяет атакующему пройти аутентификацию на сервере с использованием недействительного ключа.
- CVE-2014-1692 - данная уязвимость позволяет атакующему выполнить произвольный код на сервере.
- CVE-2013-1896 - уязвимость, которая позволяет атакующему получить удаленный доступ к файлам на сервере.
- CVE-2012-0814 - данная уязвимость позволяет злоумышленнику получить доступ к файлам, которые не должны быть доступны удаленно.
- CVE-2010-5107 - эта уязвимость позволяет атакующему производить DoS атаки на сервер.
- CVE-2008-0166 - уязвимость, которая позволяет атакующему производить man-in-the-middle атаки и перехватывать данные между клиентом и сервером.
Список критических уязвимостей SSH может изменяться со временем, поэтому необходимо следить за новостями и выпусками обновлений для SSH. Кроме того, важно применять рекомендуемые практики безопасности, такие как использование сильных паролей, двухфакторную аутентификацию, использование открытых ключей и т.д. Однако следует помнить, что безопасность SSH зависит не только от безопасности ключей, но и от других факторов, таких как политики паролей, защита от атак «Brute-force» и «Man-in-the-middle», настройки серверов и другие.