Как узнать порт ssh
Перейти к содержимому

Как узнать порт ssh

  • автор:

Смена порта SSH-сервера как мера защиты от брутфорса

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

В этой статье мы опишем, как сконфигурировать SSH-сервер на альтернативном порту.

Особо отметим, что не стоит воспринимать описанный здесь метод, как панацею. Китайская мудрость гласит — «Security by Obscurity is no Security at all». Не забывайте и про другие методы защиты SSH, такие как правильная настройка межсетевого экрана, разрешение доступа только ограниченному набору IP-адресов, отказ от парольной аутентификации и использование ключей RSA/DSA, и т.п.

Конфиг SSH-сервера обычно располагается в /etc/ssh/sshd_config. Для редактирования этого файла вам потребуются привилегии суперпользователя root, или возможность выполнить sudo для получения таких привилегий текстовым редактором.

Выполните команду, например:

nano /etc/ssh/sshd_config

В открывшемся файле найдите следующую строку:

Port 22

Закомментируйте её и добавьте новую строку со случайным номером порта, например 58291. Номер порта не должен превышать 65535. Также удостоверьтесь, что выбранное вами значение не конфликтует с другими сервисами в системе, например mysqld использует порт 3306, httpd — 80, ftpd — 21. Рекомендуем выбрать пятизначное значение.

На всякий случай, для просмотра уже открытых в системе портов, выполните следующую команду:

netstat -tupln | grep LISTEN

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

#Port 22 Port 58291

Что-бы SSH-сервер начал слушать новый порт вместо прежнего, его нужно перезапустить:

/etc/init.d/ssh restart
/etc/init.d/sshd restart

Соединение с SSH-сервером на альтернативном порту

Итак, теперь когда у нас есть SSH-сервер, слушающий альтернативный порт, как с ним соединяться? Если вы попытаетесь соединиться при помощи командной строки Linux, то по умолчанию SSH-клиент попытается использовать стандартный порт, и это приведёт к ошибке подключения:

ssh putty.org.ru ssh: connect to host putty.org.ru port 22: Connection refused

Вместо этого вы должны передать SSH-клиенту номер порта значением параметра -p , примерно так:

ssh -p 58291 putty.org.ru

Теперь соединение пройдёт успешно.

Если вы используете свободный SSH-клиент PuTTY, то укажите порт в настройках сессии, как показано на картинке:

Как сменить номер порта для SSH

По умолчанию подключение к VPS от RUVDS с помощью SSH происходит через 22-й порт. Использование стандартного порта сильно увеличивает риск взлома вашего сервера при использовании брут фос (brute-force) атак. Как один из способов защиты, но не единственный, от данного вида атак является смена стандартного 22 порта.

Обычно информация об используемом порте находится на вашем виртуальном сервере (VPS) в файле sshd_config, который находится в директории /etc/ssh/

Чтобы сменить SSH-порт сделайте следующее:
1. Заходим на сервер помощью SSH-клиента PuTTY
2. Проверяем список открытых портов командой:

netstat -tupln | grep LISTEN

Таким образом мы проверим какие из портов уже используются, чтобы не использовать их повторно.

3. После проверки портов открываем файл sshd_config. Его вы можете открыть с помощью любого установленного текстового редактора:

Редактором vi:

vi /etc/ssh/sshd_config

Редактором nano:

nano /etc/ssh/sshd_config

4. Ищем в файле sshd_config запись:

Запись в файле sshd_config

5. Меняем номер порта на другой и сохраняем данные изменения при помощи команды:

Если редактор vi:

Если редактор nano:

После нажимаем подтвердить, с помощью клавиши Enter на клавиатуре

6. Чтобы изменения вошли в силу, перезагрузите ваш виртуальный SSH-сервер. Это можно сделать при помощи команды:

/etc/init.d/ssh restart
/etc/init.d/sshd restart
systemctl restart sshd.service

Войдите в раздел “Мои серверы” на сайте RUVDS.com и нажмите кнопку “Play” под скриншотом вашего сервера.

Мои серверы RUVDS

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

8. В случае, если вы забыли какой порт назначили для подключения по SSH, вы всегда сможете зайти на ваш VPS в аварийном режиме, через панель управления на сайте RUVDS, в разделе Мои серверы, кликнув мышью по скриншоту вашего сервера.

Как посмотреть открытые порты Linux

Visitors have accessed this post 71267 times.

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

В этом туториале мы покажем, как в Linux посмотреть порты, которые открыты, из командной строки.

1) Посмотреть открытые порты с помощью команды ss

Команда Linux ss предоставляет подробную информацию об открытых портах и прослушиваемых сокетах. Она извлекает информацию из ядра Linux и она более популярна, чем команда netstat, которая уже устарела.

Чтобы отобразить прослушиваемые TCP-соединения, выполните команду
$ ss -tl
Пример вывода

l — показывает прослушиваемые сокеты
t — означает порт TCP
Чтобы посмотреть прослушиваемые UDP-соединения, введите команду
$ ss -lu
Пример вывода

u — означает порт UDP.
Или для того, чтобы отобразить tcp и udp одновременно, введите имя процесса
$ ss -lntup
p — выдает список имен процессов, которые открыли сокеты.
Чтобы вывести все соединения между сокетами, просто используйте команду ss в ее формате по умолчанию
$ ss
Пример вывода

2) Посмотреть открытые порты с помощью команды netstat

Команда netstat — это инструмент командной строки, который используется для проверки открытых портов TCP и UDP вместе с другими атрибутами. Чтобы в Linux проверить открытые порты, введите команду:
$ netstat -pnltu
Пример вывода

Давайте подробнее рассмотрим параметры команды:
p — показывает идентификатор услуги или название программы;
n — отображает числовой номер запущенного порта, например, 3306 для mysqld и 22 для sshd;
l — показывает прослушиваемые сокеты;
t — показывает TCP-соединения;
u — показывает UDP-соединения.

3) Посмотреть открытые порты Linux с помощью команды lsof

Команда lsof — это сетевой инструмент, который также можно использовать, чтобы проверить открытые порты Linux. Для этого введите команду
$ lsof -i
Пример вывода

Чтобы посмотреть открытые сокеты, используйте команду lsof и перенаправьте вывод в grep, как показано ниже:
$ lsof -n -P | grep LISTEN
Пример вывода

Для просмотра всех TCP-соединений выполните следующую команду:
$ lsof -i tcp
Пример вывода

Чтобы посмотреть все UDP-соединения, выполните команду:
$ lsof -i udp
Пример вывода

4) Посмотреть открытые порты Linux с помощью утилиты Nmap

Nmap — это бесплатный инструмент с открытым исходным кодом для сканирования сети, обычно используется для обнаружения открытых портов удаленных систем. По умолчанию Nmap не установлен в ОС Linux. Чтобы установить Nmap, введите команду:
$ sudo apt install nmap (для Debian/ Ubuntu)
$ sudo yum install nmap (для RedHat/ CentOS)
$ sudo dnf install nmap (для Fedora)
$ pacman -S nmap (ArchLinux)
Чтобы найти открытые порты TCP, выполните команду:
$ nmap -sT -O localhost
Пример вывода

Чтобы найти открытые порты UDP, выполните команду:
$ nmap -sU localhost
Пример вывода

Каждую неделю мы в live режиме решаем кейсы на наших открытых онлайн-практикумах, присоединяйтесь к нашему каналу в Телеграм, вся информация там.

Если вы хотите освоить функционал системного администратора Linux на практике, приглашаем на наш практикум Linux by Rebrain.

Как поменять (изменить) порт у SSH сервера

url image

SSH — сетевой протокол прикладного уровня. Он позволяет безопасно передавать сетевые пакеты. Его используют для удаленного подключения к операционной системе, передачи файлов (как копирование обычных файлов, так и потоковая передача данных, например, с веб-камеры), подключения к базам данных, удаленного запуска команд и т.д. Данный протокол шифрует все данные, включая пароли, поэтому он считается безопасным. Однако для того, чтобы злоумышленники не получили доступ к учётным данным пользователя, у которого есть доступ по SSH, рекомендуется обезопасить свой сервер. По умолчанию SSH слушает порт 22. В целях безопасности рекомендуется сменить порт SSH на нестандартный. Это значительно усложнит жизнь ботам, которые постоянно сканируют серверы и открытые порты и пытаются подобрать логин и пароль для доступа к серверу по SSH по стандартному порту. Помимо смены порта можно настроить блокировку количества попыток подключений к серверу (например, с помощью утилиты fail2ban), отключить подключение по SSH пользователя root, отказаться от простых и угадываемых логинов (таких как admin, ivanov, zabbix и пр.), настроить запрет подключения по паролю и включить подключение только по ключу (требуется предварительная настройка и проверка, иначе можно потерять доступ к серверу по SSH). Как правило для подключения по SSH в терминале Linux используется следующая команда:

# ssh username@ip_address

Если изменить порт, то при подключении к серверу по SSH нужно явно указывать порт (возьмем для примера порт 2233):

# ssh -p 2233 username@ip_address
  • Изменение порта SSH
    • 1. Конфигурационный файл
    • 2. Перезапуск SSH
    • 3. Проверка

    Изменение порта SSH

    Конфигурационный файл

    Обязательно проверьте, что порт, на который мы хотим заменить стандартный порт SSH, не занят другими службами. Это можно сделать с помощью утилиты netstat. Для этого потребуется установить пакет net-tools.

    Debian/Ubuntu

    # apt install net-tools # netstat -tulpan | grep 22

    CentOS/AlmaLinux

    # yum install net-tools # netstat -anp | grep 22

    Вывод будет примерно таким:

    tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 132394/sshd: /: tcp6 0 0 . 22 . * LISTEN 132394/sshd:

    Видим, что порт 22 занят. Проверим 2233:

    #netstat -tulpan | grep 2233 для Ubuntu/Debian
    # netstat -anp | grep 2233 для CentOS/AlmaLinux

    Вывод пуст, можно занимать.

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

    # vim /etc/ssh/sshd_config
    # nano /etc/ssh/sshd_config
    Port 22

    Если строка начинается с символа #, его нужно удалить, и вместо 22 порта написать любой другой, например, 2233. Сохраняем изменения.

    Перезапуск SSH

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

    Debian/Ubuntu

    # systemctl restart ssh

    CentOS/AlmaLinux

    # systemctl restart sshd

    Так как текущая сессия SSH ещё активна, можно открыть новое окно и проверить, что подключение по новому порту работает:

    # ssh username@ip_address -p2233

    Если подключение удалось, то настройки верные. В противном случае что-то не так, и можно проверить конфигурацию в уже открытом подключении.

    Проверка

    Debian/Ubuntu

    # netstat -tulpan | grep ssh

    CentOS/AlmaLinux

    # netstat -anp | grep ssh

    Если все нормально, увидим похожий результат:

    tcp 0 0 *:2233 *:* LISTEN 3849/sshd tcp6 0 0 [::]:2233 [::]:* LISTEN 3849/sshd
    root sshd 813 3 tcp6 *:2233 *:* root sshd 813 4 tcp4 *:2233 *:*

    Готово. Мы сменили стандартный порт SSH на нестандартный, таким образом усилив безопасность своего сервера

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *