Лучшие практики безопасности куда проще, чем кажутся на первый взгляд.
Навигация по панели управления вашего сайта WordPress может предоставить значительный контроль над его функциональностью и внешним видом. Однако что касается управления сервером, тут WordPress не предлагает вариантов для прямого взаимодействия. На помощь приходит Secure Shell Access (SSH).
SSH — это протокол, который обеспечивает безопасный и эффективный способ подключения к вашему веб-сайту или веб-серверу для внесения любых изменений.
В этой статье мы углубимся в то, что такое Secure Shell (SSH), как он работает и почему он полезен. Мы рассмотрим всё: от основ подключения по SSH до общих команд и рекомендаций по обеспечению безопасной связи и передачи файлов.
Secure Shell или SSH — это сетевой протокол связи, который обеспечивает безопасный метод взаимодействия компьютеров и обмена данными через незащищённую сеть.
SSH использует криптографию для аутентификации и шифрования соединений, обеспечивая безопасность связи между устройствами. Он позволяет авторизованным пользователям удалённо управлять серверами и устройствами, выполнять команды и передавать файлы, сохраняя при этом целостность и конфиденциальность данных.
Secure Shell работает по модели клиент-сервер, аналогично тому, как владелец магазина может управлять своим магазином удалённо, давая инструкции своим сотрудникам. Клиент SSH инициирует соединение, и после успешной аутентификации сервер SSH позволяет клиенту выполнять команды и передавать данные.
Пример подключения SSH с использованием OpenSSH в терминале Windows
Надёжное шифрование делает SSH подходящим для использования в незащищённых сетях. SSH часто используется для управления инфраструктурой, удалённого управления серверами и безопасной передачи файлов. Он также поддерживает туннелирование или переадресацию портов, позволяя пакетам данных перемещаться по сетям, недоступным в ином случае.
Представьте, что вы работаете удалённо и подключаетесь к общедоступной сети Wi-Fi для удалённого доступа к серверу вашего веб-сайта. Без SSH ваши данные для входа и все передаваемые данные потенциально могут быть перехвачены любым, кто прослушивает эту сеть.
SSH же выступает в качестве защитной оболочки, гарантируя, что ваши взаимодействия остаются конфиденциальными и защищёнными от посторонних глаз даже в общедоступной сети.
Ранние интернет-протоколы, такие как Telnet и FTP, в первую очередь были ориентированы на подключение. Эти протоколы передавали данные (включая конфиденциальную информацию, например пароли) в виде обычного текста. Это сделало их уязвимым для так называемого «сниффинга» — метода, с помощью которого злоумышленники могли легко перехватывать и читать передаваемые данные.
В 1995 году, после атаки со сниффингом паролей в Хельсинкском технологическом университете, один из студентов этого университета по имени Тату Юлёнен быстро обнаружил уязвимости в интернет-коммуникациях.
Чтобы решить эту проблему, Тату разработал SSH (Secure Shell), зашифрованный протокол, предназначенный для защиты передачи данных и гарантирующий, что пароли и конфиденциальная информация не будут переданы в открытом виде. Это нововведение, принятое в рамках одного университета, в конечном итоге превратилось в важный инструмент для безопасной связи в глобальном масштабе.
SSH работает по модели клиент-сервер. Когда SSH-клиент желает установить соединение, он безопасно взаимодействует с SSH-сервером. Прежде чем начнётся фактическая передача данных, они проходят процесс установления связи для аутентификации и установки шифрования.
Для этого SSH использует пары открытого и закрытого ключей. Когда пользователь хочет получить доступ к серверу, он использует свой закрытый ключ, который соответствует открытому ключу, хранящемуся на сервере. Если ключи совпадают, доступ предоставляется.
Давайте посмотрим на различные этапы этого процесса.
Этап 1. Обмен ключами
Сначала клиент отправляет серверу запрос на соединение SSH вместе с открытым ключом клиента.
Обмен закрытыми и открытыми ключами SSH
Этап 2. Проверка ключа
Получив открытый ключ клиента, сервер отправляет клиенту случайный текст. Затем клиент шифрует этот случайный текст с помощью закрытого ключа и отправляет его обратно на сервер.
Проверка частного открытого ключа SSH
Поскольку это шифрование с асимметричным ключом, сервер теперь может использовать открытый ключ клиента для расшифровки полученного текста. Если расшифрованный текст соответствует тексту, отправленному сервером, сервер подтверждает, что у него правильный открытый ключ, и отправляет подтверждение клиенту.
Этап 3. Передача данных
После аутентификации соединения начинается непосредственно передача данных.
Установленный сеанс SSH-соединения
Данные внутри сеанса шифруются с использованием симметричного шифрования. Клиент и сервер используют один ключ шифрования, который действителен только для этого конкретного сеанса. И даже если кто-то перехватит данные, расшифровать их без использования уникального ключа не выйдет.
Использование SSH вместо FTP имеет несколько основных преимуществ, большинство из которых связаны с безопасностью веб-сайтов и серверов.
Пользователи Windows могут следовать пошаговым инструкциям ниже, чтобы настроить SSH и подключиться к своему веб-сайту.
Шаг 1. Загрузите и установите SSH-клиент.
Пользователям Windows необходимо будет использовать приложение командной строки, такое как Cmder, или выделенный SSH-клиент, чтобы установить SSH-соединение с веб-сайтом. В этом примере мы будем использовать PuTTY, поэтому для начала стоит загрузить последнюю версию PuTTY с официального сайта и установите её на свой компьютер.
Шаг 2. Подключитесь к серверу с помощью SSH.
Откройте PuTTY, где вам будет предложено ввести имя хоста и указать номер порта. На первый взгляд это даже похоже на подключение по FTP.
SSH-клиент PuTTY для Windows имеет открытый исходный код и прост в использовании.
Введите хост или IP-адрес вашего сервера. Расположение этой информации зависит от вашего хостинг-провайдера, но многие провайдеры предоставляют к ней доступ через вашу панель управления.
После ввода имени хоста и номера порта в PuTTY и нажатия кнопки «Открыть» запустится командная строка. Теперь вам будет предложено ввести имя пользователя и пароль. Если они не работают, проверьте панель управления хостингом на наличие раздела «Доступ по SSH» для получения более подробных инструкций.
Шаг 3. Взаимодействуйте с вашим сервером через командную строку.
Командная строка позволяет выполнять различные действия, такие как перемещение файлов, удаление папок, создание новых каталогов и изменение разрешений пользователя с помощью соответствующих команд.
Например, после входа на сервер вашего сайта через SSH вы окажетесь в корневой папке сервера. Чтобы увидеть, какие файлы и каталоги он содержит, введите команду «ls» и нажмите Enter. Имена, выделенные синим текстом, представляют собой папки, а белый текст — обычные файлы.
Чтобы получить доступ к конкретной папке, используйте следующую команду:
cd имя_каталога
Чтобы вернуться в предыдущий каталог, наберите «cd» и примените без каких-либо дополнений. По мере того, как вы освоитесь с командной строкой, вы сможете изучить более сложные команды и функции.
Пользователи macOS или Linux могут просто использовать системную командную строку для установки SSH-соединения с вашим веб-сайтом, не прибегая к помощи сторонних программ.
Используя терминальную оболочку, напишите следующую команду:
ssh exampleuser@serverip
Чтобы продолжить, вам нужно будет заменить exampleuser своим фактическим именем пользователя, а serverip вашим общим или выделенным IP-адресом.
Хотя панель администратора WordPress удобна для пользователя и оснащена множеством функций, навигация по ней иногда может быть длительным и не самым удобным процессом. Для более простого метода управления вашим веб-сайтом вы можете рассмотреть возможность использования интерфейса командной строки WordPress (WP-CLI).
WP-CLI предоставляет высокоэффективное и надёжное решение для управления вашей установкой WordPress. Он позволяет обновлять основные файлы и плагины, настраивать многосайтовые установки и даже создавать резервные копии вашего веб-сайта WordPress.
С помощью официального инструмента WP-CLI вы можете напрямую взаимодействовать со средой WordPress с помощью текстовых команд. Эти команды вводятся в окно Secure Shell, которое подключено к серверу вашего веб-сайта.
Чтобы помочь новым пользователям легко ориентироваться в среде своего сервера, рекомендуем воспользоваться вот этим списком из самых распространённых команд SSH, которые вы можете использовать для выполнения задач через оболочку терминала.
Существует ряд шагов, которые вы можете предпринять, чтобы минимизировать риск для протокола SSH и защитить ваш сервер Linux или среду VPS.
Чтобы свести к минимуму потенциальные автоматические атаки на ваш сервер, используйте нестандартный порт для вашего SSH-соединения. Это помогает снизить вероятность появления вашего сервера на радаре хакеров.
Как изменить номер порта SSH:
Какой порт SSH по умолчанию?
SSH можно использовать для безопасной переадресации портов или туннелирования, что обеспечивает безопасную передачу данных с локального порта на порт на удалённом сервере. По умолчанию сервер SSH прослушивает порт 22 стандартного протокола управления передачей (TCP).
Пары ключей SSH — один из наиболее безопасных методов аутентификации клиент-сервер. Чтобы настроить ключи SSH, сгенерируйте пару ключей на клиентском компьютере, который используется для подключения к серверу. После создания пары ключей поместите открытый ключ на нужный сервер с помощью инструмента «ssh-copy-id».
Как генерировать пары частных и общедоступных ключей SSH в Windows
Генератор ключей PuTTY позволяет легко генерировать пары открытого и закрытого ключей для Windows:
Putty Windows Key Generator легко генерирует новые пары открытого и закрытого ключей для Windows
Чтобы начать, просто откройте генератор ключей Putty, затем нажмите кнопку «Создать», чтобы создать новую пару открытого и закрытого ключей для вашего использования.
Как генерировать пары частных/публичных ключей SSH в Linux/macOS
Чтобы создать пару частного/открытого ключей для вашей среды Linux, вы можете использовать инструмент ssh-keygen, который представляет собой утилиту командной строки. Просто выполните команду «ssh-keygen» на своём терминале, чтобы сгенерировать пару частного и открытого ключей SSH.
Из соображений безопасности рекомендуется отключить вход в систему с правами root и использовать обычную учётную запись и команду «su» — для переключения на пользователя root.
Процесс создания пары открытого и закрытого ключей в Linux и macOS с терминала
Важно: убедитесь, что вы добавили учётную запись, которая может получать root-доступ, прежде чем фактически отключать root-вход.
Если вы используете ключи для аутентификации, рассмотрите возможность полного отключения аутентификации по паролю на сервере. Это добавляет ещё один уровень защиты от атак методом брутфорс.
Чтобы отключить вход по паролю для SSH, необходимо:
Используйте команду SSH или клиент, например PuTTY, для входа в систему:
ssh root@serverip(где serverip — IP-адрес вашего сервера)
В системе на базе Linux используйте следующую команду, чтобы создать нового пользователя с именем «user»:
useradd -m -s /bin/bash user
Затем установите пароль пользователя с помощью команды «passwd»:
passwd user
Добавьте пользователя в группу sudo (повышенные привилегии):
— для Ubuntu/Debian
usermod -aG sudo user
— для CentOS/RHEL/Fedora
usermod -aG wheel user
Создайте пару ключей:
ssh-keygen -t rsa
Установите открытый ключ на удалённом сервере с помощью команды «ssh-copy-id» следующим образом:
ssh-copy-id -i $HOME/.ssh/id_rsa.pub user@serverip
Войдите на сервер, используя вновь созданного пользователя:
ssh user@serverip
Отредактируйте файл «/etc/ssh/sshd_config»:
sudo vi /etc/ssh/sshd_config
Найдите и добавьте или отредактируйте следующие записи:
Сохраните и закройте файл. Теперь перезагрузите или перезапустите SSH-сервер в Linux командой ниже:
/etc/init.d/ssh reload
Попробуйте войти в систему как root:
ssh root@serverip
Вы должны увидеть надпись «Отказано в доступе (открытый ключ)».
Далее попробуйте войти только с паролем:
ssh user@serverip -o PubkeyAuthentication=no
Вы также должны увидеть «Отказано в доступе (открытый ключ)».
Наконец, проверьте все настройки с помощью следующей команды (одной строкой):
sudo sshd -T | grep -E -i
'ChallengeResponseAuthentication|PasswordAuthentication|UsePAM|PermitRootLogin'
Прежде чем отключать вход с правами root, убедитесь, что вы создали обычную учётную запись пользователя и предоставили этому пользователю разрешение на получение доступа на уровне root с помощью команд «su» или «sudo». Не забывайте перезапускать или перезагружать SSHD после редактирования файла.
iptables — утилита Linux, которая включена в большинство дистрибутивов Linux и может использоваться для установки правил брандмауэра, которые ограничивают или разрешают трафик на основе IP-адреса, порта или сетевого протокола. Вы можете использовать его для определения правил, которые ограничивают входящий SSH-трафик определённым IP-адресом или подсетью, тем самым повышая безопасность вашего сервера.
Блокировка порта 22, который по умолчанию используется для SSH-подключений, может помочь предотвратить несанкционированный доступ и даже смягчить многие DDoS-атаки. Однако важно убедиться, что вы случайно не заблокируете собственный SSH-трафик.
Вот краткий пример того, как вы можете использовать iptables для ограничения входящего SSH-трафика, разрешая доступ к нему только определённому IP-адресу или подсети.
Замените «123.456.78.90» на IP-адрес, который вы хотите внести в белый список, в команде ниже. Если вы используете подсеть, это может выглядеть примерно так: «10.10.10.0/24»:
sudo iptables -A INPUT -p tcp -s 123.456.78.90 --dport 22 -j ACCEPT
Сохраните правила iptables, чтобы они сохранялись после перезагрузки системы:
sudo iptables-save
Чтобы просмотреть все правила iptables, используйте команду «iptables -L». Вы также можете добавить параметр «-v» для получения более подробной информации и «-n» для отображения вывода в числовом формате.
Если вы хотите очистить все правила iptables и начать с нуля, используйте команду «iptables -F». Это особенно полезно, если вы не уверены, всё ли настроено правильно.
SSH — мощный и неотъемлемый инструмент любого администратора веб-сайта. Он обеспечивает безопасную связь и передачу данных по незащищённым сетям, обеспечивая безопасную среду для управления вашим веб-сайтом и сервером. Понимая его работу и применяя лучшие практики, вы можете гарантировать, что ваш сервер будет хорошо защищён, а ваши данные останутся конфиденциальными.
Если вы владелец или администратор веб-сайта и все ещё используете FTP для передачи файлов, самое время подумать о переходе на SSH в качестве более безопасной альтернативы. Учитывая рост числа автоматических атак и вредоносных действий, использование устаревших протоколов, таких как FTP, не стоит риска.
Однако важно помнить, что безопасность — это непрерывный процесс. Регулярные обновления, мониторинг веб-сайтов и своевременное реагирование на потенциальные угрозы необходимы для поддержания безопасной серверной среды.
Лишь сохраняя бдительность и узнавая о новейших методах обеспечения безопасности, вы сможете эффективно бороться с потенциальными угрозами и гарантировать, что ваш веб-сайт останется безопасным и надёжным.
Никаких овечек — только отборные научные факты