Сменить порт ssh centos 7

Обновлено: 08.07.2024

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

В этом руководстве объясняется, как изменить порт SSH по умолчанию в Linux. Мы также покажем вам, как настроить брандмауэр, чтобы разрешить доступ к новому порту SSH.

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

В следующих разделах объясняется, как изменить порт SSH в системе Linux.

1. Выбор нового номера порта

В Linux номера портов ниже 1024 зарезервированы для хорошо известных служб и могут быть связаны только с пользователем root. Хотя вы можете использовать порт в диапазоне 1-1024 для службы SSH, чтобы избежать проблем с распределением портов в будущем, рекомендуется выбрать порт выше 1024.

В этом примере изменится порт SSH на 5522, вы можете выбрать любой порт, который хотите.

2. Настройка брандмауэра

Перед изменением порта SSH вам необходимо настроить брандмауэр, чтобы разрешить трафик на новый порт SSH.

Если вы используете UFW, инструмент настройки брандмауэра по умолчанию для Ubuntu, выполните следующую команду, чтобы открыть новый порт SSH:

В CentOS инструментом управления брандмауэром по умолчанию является FirewallD. Чтобы открыть новый порт, выполните:

Пользователям CentOS также необходимо настроить правила SELinux:

Если вы используете iptables в качестве брандмауэра, чтобы открыть новый порт, запустите:

3. Настройка SSH

Откройте файл конфигурации SSH /etc/ssh/sshd_config текстовом редакторе:

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

После этого сохраните файл и перезапустите службу SSH, чтобы изменения вступили в силу:

В CentOS служба ssh называется sshd :

Чтобы убедиться, что демон SSH прослушивает новый порт 5522, введите:

Результат должен выглядеть примерно так:

Использование нового порта SSH

Чтобы указать порт, вызовите команду ssh за которой следует параметр -p <port_number> :

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

Выводы

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

Удалённое администрирование Linux, как правило, осуществляется при помощи SSH (Secure Shell) — сетевого протокола прикладного уровня, позволяющего производить туннелирование TCP-соединений. Вышедший в 1995-м году SSH широко используется и в наши дни. С помощью этого протокола, помимо администрирования операционной системы с помощью командной оболочки, можно выполнять файловые операции и монтировать удалённые файловые системы.

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

Как изменить порт SSH?

В большинстве разновидностей Linux конфигурационный файл SSH-сервера располагается по пути /etc/ssh/sshd_config. Тем не менее, можно воспользоваться и поиском для того, чтобы узнать наверняка. Воспользуйтесь командой:

sudo find /etc/ -name "sshd_config"


В данном случае файл там, где и должен быть. Откройте в текстовом редакторе файл sshd_config:

sudo nano /etc/ssh/sshd_config


Сохраните файл. Далее следует перезапустить демон SSH. Выполните команду:

sudo systemctl restart sshd

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

sudo netstat -tupln | grep ssh

Будут показаны открытые порты SSH на вашем компьютере:


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

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

Если у вас в качестве файрвола установлен UFV, выполните команду:

sudo ufw allow 222/tcp

Для тех, кто использует iptables, необходимо разрешить новый порт с помощью команды:

sudo /sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 222 -j ACCEPT

В операционных системах, использующих firewalld, выполните такую команду:

sudo firewall-cmd --permanent --add-port=222/tcp
sudo firewall-cmd reload

Здесь порт 222 - это порт SSH, назначенный мною для примера. Теперь вы знаете как поменять порт SSH чтобы его не трогали боты. А какие методы защиты от ботов используете вы? Напишите в комментариях!

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

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

Для безопасности любого сервера, настоятельно рекомендуем менять стандартный порт SSH 22 на любой другой не занятый. Так как это самый часто задаваемый вопрос у новичков, мы публикуем инструкцию.

Если у Вас на сервере стоит брандмауэра, то в первую очередь нужно разрешить доступ по этому порту. К примеру если Вы используете UFW, то если мы хотим сменить стандартный порт на 3753, то выполните команду:

В CentOS обычно используется FirewallD, то для открытия нового порта нужно выполнить команды:

Если CentOS еще необходимо настроить правила SELinux

Если же на сервере стоит iptables, то выполните следующую команду:

Для FreeBSD / OpenBSD / NetBSD Unix брандмаузером является pf firewall

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

Стандартно он находится по следующему пути sshd_config Вот его нам и нужно отредактировать.

Мы рекомендуем использовать для редактирования файлов редактор nano (команда для установки apt-get install nano), стандартный vi, мы считаем не удобным, хотя это дело привычки и вкуса.
Что бы отредактировать конфигурационный файл выполняем команду на открытие в редакторе:

Если редактор vi, то открываем:

ssh Port 22

Сохраняем, закрываем файл и перезапускаем службу:

CentOS / RHEL / Fedora Linux: sudo service sshd restart

CentOS / RHEL / Fedora Linux с systemd: sudo systemctl restart sshd

Ubuntu / Debian / Mint Linux: sudo service ssh restart

Ubuntu / Debian / Mint Linux с systemd: sudo ystemctl restart ssh

Настройка SSH в CentOS 7

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

Установка компонентов и запуск сервера

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

Установка сервера и клиента SSH в CentOS 7 через терминал

Ввод пароля для установки компонентов SSH в CentOS 7 через терминал

Первая команда для активации сервиса SSH в CentOS 7

Вторая команда для активации сервиса SSH в CentOS 7

Проверка работоспособности порта протокола SSH в CentOS 7

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

Редактирование конфигурационного файла

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

    Советуем использовать редактор nano, установить который в систему поможет команда sudo yum install nano . По завершении инсталляции запустите конфигурационный файл через sudo nano /etc/ssh/sshd_config .

Переход к конфигурационному файлу SSH в CentOS 7

Редактирование конфигурационного файла SSH в CentOS 7

Перезапись конфигурационного файла SSH в CentOS 7

Выход из редактирования конфигурационного файла SSH в CentOS 7

Перезапуск сервисов SSH в CentOS 7

Проверка статуса работоспособности сервера SSH в CentOS 7

Создание пары RSA-ключей

Криптографический алгоритм RSA (аббревиатура от фамилий Rivest, Shamir и Adleman) используется сервисом SSH для создания пары ключей. Такое действие позволить максимально обезопасить клиентскую и серверную часть при проведении соединений. Задействовать придется обе цепи, чтобы создать пару ключей.

    Для начала зайдите на клиентский компьютер и введите в консоли ssh-keygen .

Создание пары ключей для клиента в утилите SSH в CentOS 7

Выбрать файл для расположения пары ключей клиента SSH в CentOS 7

Ввод парольной фразы для пары ключей утилиты SSH в CentOS 7

Успешное создание пары ключей для утилиты SSH в CentOS 7

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

Копирование открытого ключа на сервер

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

Утилита ssh-copy-id

Копирование ключей с помощью специальной утилиты SSH в CentOS 7

The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)?

Оно обозначает, что сервер не находится в списке надежных источников и будет задан вопрос, стоит ли проводить дальнейшее подключение. Выберите вариант yes .

Подтверждение первого входа на удаленный компьютер SSH в CentOS 7

Осталось только ввести пароль от учетной записи сервера, и на этом процедура копирования через упомянутую утилиту будет успешно завершена.

Ввода пароля для удаленного входа на компьютер SSH в CentOS 7

Копирование открытого ключа по SSH

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

    Команда cat позволит считать и сразу же добавить ключ в файл на серверном компьютере. Для этого просто введите cat

/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p

Автоматическое копирование ключей через подключение SSH в CentOS 7

Выбрать место сохранения скопированных ключей SSH в CentOS 7

Ручное копирование открытого ключа

Иногда случаются ситуации, когда невозможно использовать утилиту ssh-copy-id, а также отсутствует доступ по паролю. Тогда копирование осуществляется вручную.

    Сперва узнайте этот ключ через уже знакомую команду cat, введя в консоли cat

Узнать содержимое файла с ключами в терминале SSH в CentOS 7

Ознакомиться с созданным открытым ключом SSH в CentOS 7

Создать папку для хранения открытого ключа SSH в CentOS 7

Скопировать открытый ключ на удаленный компьютер SSH в CentOS 7

На этом процедура копирования ключа успешно завершена. Благодаря этому теперь доступна аутентификация к серверу путем ввода ssh username@remote_host . Однако подключиться можно и через пароль, что понижает безопасность такой сети.

Отключение аутентификации по паролю

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

    На удаленном сервере запустите конфигурационный файл SSH через sudo nano /etc/ssh/sshd_config .

Открыть конфигурационный файл для редактирования SSH в CentOS 7

Отключить вход по паролю для SSH в CentOS 7

Сохранить изменения конфигурационного файла SSH в CentOS 7

Перезапустить сервис после изменений конфигурации SSH в CentOS 7

На этом статья, в которой вы были ознакомлены с основными конфигурационными моментами протокола SSH, подходит к концу. Настоятельно рекомендуем изучить содержимое выдачи после активации команд, поскольку там иногда содержатся описания ошибок. Их решение ищите в официальной документации инструмента или дистрибутива CentOS.

Закрыть

Мы рады, что смогли помочь Вам в решении проблемы.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Закрыть

Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.

Настройка firewalld CentOS 7 с примерами команд


Centos 7, в отличие от CentOS 6, в базе идет с новым брандмауэром - firewalld. Его можно отключить и заменить на старый добрый iptables, но если к этому нет прямых предпосылок, то лучше привыкать к чему-то новому, а не упираться в старое. Это не значит, что Windows 10 лучше Windows 7, а Windows XP лучше Windows 7 ;) Хороший пример на эту тему - selinux. Если вначале почти все (и я тоже) его отключали и даже немного ругали, то теперь почти никто это не советует, только если есть уверенность, что так надо. Напротив, многие уже привыкли (или привыкают) пользоваться semanage. Не будем и мы сразу отключать firewalld, а попробуем, как он на вкус.

Firewalld - это не принципиально иной брандмауэр. Это другая надстройка над netfilter, поэтому если вы обладаете опытом работы с iptables, то помучившись немного вы спокойно начнете пользоваться новым инструментом.


Запуск и остановка firewalld

Проверим, запущен ли firewalld:

Тут будет расширенная информация. Чтобы коротко, да (работает) или нет можно так:

Зоны firewalld

В firewalld широко используется понятие зоны. Список всех допустимых зон по-умолчанию:

Назначение зон (условно, конечно):

  • drop - все входящие пакеты отбрасываются (drop) без ответа. Разрешены только исходящие соединения.
  • block - входящие соединения отклоняются (rejected) с ответом icmp-host-prohibited (или icmp6-adm-prohibited). Разрешены только инициированные системой соединения.
  • public - зона по-умолчанию. Из названия ясно, что эта зона нацелена на работу в общественных сетях. Мы не доверяем этой сети и разрешаем только определенные входящие соединения.
  • external - зона для внешнего интерфейса роутера (т.н. маскарадинг). Разрешены только определенные нами входящие соединения.
  • dmz - зона DMZ, разрешены только определенные входящие соединения.
  • work - зона рабочей сети. Мы все еще не доверяем никому, но уже не так сильно, как раньше :) Разрешены только определенные входящие соединения.
  • home - домашняя зона. Мы доверяем окружению, но разрешены только определенные входящие соединения
  • internal - внутренняя зона. Мы доверяем окружению, но разрешены только определенные входящие соединения
  • trusted - разрешено все.

Список всех активных зон:

Ага, зона public, к которой присоединен сетевой интерфейс enp1so. Дальше в зону public добавим новый порт, на котором будет висеть sshd.

Зная имя сетевого интерфейса (например, enp1s0), можно узнать, к какой зоне он принадлежит:

А можно узнать, какие интерфейсы принадлежат конкретной зоне:

Пример: разрешаем ssh на нестандартном порте

Давайте разрешим доступ к серверу по ssh на порте 2234/tcp, а не на 22/tcp, как по-умолчанию. Попутно чуть-чуть коснемся selinux.

Сначала посмотрим, что вообще разрешено постоянно на нашем сервере:

Я не использую пока ipv6, поэтому сразу уберу соотв. правило из firewalld:

Разрешим на постоянной основе (чтобы после перезагрузки не потерлось) соединение на порт 2234/tcp (на него повесим sshd):

Ок, порт открыт. Редактируем конфиг sshd:

Но SELinux, которую вы, надеюсь, не отключали, не даст подключиться к ssh на нестандартном порте (порт 2234/tcp для sshd - нестандартный). Вы можете этот шаг пропустить и проверить, как сработатет защита SELinux, а можете сразу все настроить:

Вот теперь все ок. Проверяем подключение по ssh на новом порте. Если все ок, закрываем доступ к порту 22:

Смотрим, что получилось:

Разные полезные команды:

Включить режим блокировки всех исходящих и входящих пакетов:

Выключить режим блокировки всех исходящих и входящих пакетов:

Узнать, включен ли режим блокировки всех исходящих и входящих пакетов:

Перезагрузить правила firewalld без потери текущих соединений:

Перезагрузить правила firewalld и сбросить текущие соединения (рекомендуется только в случае проблем):

Добавить к зоне сетевой интерфейс:

Добавить к зоне сетевой интерфейс (сохранится после перезагрузки firewall):

Можно в конфиге ifcfg-enp1s0 указать, какой зоне принадлежит этот интерфейс. Для этого добавим ZONE=work в файл /etc/sysconfig/network-scripts/ifcfg-enp1s0. Если параметр ZONE не указан, будет назначена зона по-умолчанию (параметр DefaultZone в файле /etc/firewalld/firewalld.conf.

Разрешить диапазон портов:

Маскарад (masquerade, он же nat, он же. ):

Здесь надо отметить, что вы можете включить masquerade и для зоны public, например.

На этом закончу, т.к. примеров может быть бесконечно много. Добавлю только, что лично я не составил окончательно свое мнение по поводу нововведения firewalld, т.к. к синтаксису привыкаешь долго и если в вашем зоопарке встречаются разные OS Linux, то по первости могут быть проблемы именно с привычкой. Но освоив firewalld, вы расширите кругозор - чаще всего, это стоит затраченных усилий.

Преимущества firewalld

Основное преимущество - вы немного абстрагируетесь от цепочек iptables.Для включения перенаправления портов не придется думать про PREROUTING или POSTROUTING в дополнение к FORWARD. Вам дается "API от iptables от производителя", что-то в этом роде. Если вы включили nat, то неважно, где конкретно (под каким порядковым номером текущих правил) размещено правило. Вы просто указываете - включи nat на eth0. И без глупостей ;) Это может быть удобно, если надо организовать web интерфейс управления брандмауэром.

Недостатки firewalld

Основной недостаток, на мой взгляд, это то, что при привыкании начнется отвыкание от "чистого" iptables, который и в Debian, и в Ubuntu, и в CentOS и, вообще, везде. Даже, кстати, в микротик синтаксис и цепочки похожи по типу на iptables. Это на любителя, конечно. И профессионалу все равно, с чем работать, если есть конкретные условия, он будет работать с тем, что есть. Но. я ретроград и отчаянно сопротивляюсь (при отсутсвии явных преимуществ) новинкам, которые каждый крупный игрок реализует под себя. RedHat выгодно, если все больше новых специалистов будут асами в firewalld.

И если вы перешли на firewalld, то уже чистый синтаксис iptables вам только помешает - будет каша или просто сломается работа брандмауэра, если вы начнете изменять/дополнять правила не с помощью стандартного синтаксиса firewalld.

Не хочу firewalld! Верните мне старый iptables!

Если все же вы хотите вернуть прошлое и заменить firewalld на iptables, то сделать это совсем не трудно:

Новичкам тут не место:

Ставим старый добрый iptables:

Автозапуск при включении:

Для сохранения правил iptables после перезагрузки:

Текущие правила находятся в файлах:
/etc/sysconfig/iptables
/etc/sysconfig/ip6tables

Читайте также: