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

King аватар

SSH-доступ - самый популярный вид управления сервером.
Популярность оправдана - высокая защищенность от взлома благодаря мощному шифрованию, высокая скорость, возможность организации защищенных туннелей и многое другое.
Хотя вероятность подбора пароля к SSH хакерами при условии выбора надежного пароля крайне низка, однако в Интернете находится множество любителей подобрать пароль к вашему серверу, в чем легко убедиться, заглянув в лог /var/log/secure, а также в ежесуточных отчетах logwatch, высылаемых сервером по email, в которых можно увидеть множество попыток брутфорса и других атак.

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

Методика
Если вы не хотите столкнуться с "сюрпризами", рекомендуется придерживаться данной последовательности действий.


1. Первым придумаем себе новый порт для SSH.
Поскольку, как известно, хакеры обычно тусуется на портах с низкими номерами, выискивая там незащищенные сервисы, лучше выбрать номер порта выше 1024. Некоторые онлайновые сканеры, например, Nmap Online по умолчанию сканируют диапазон до 5000, поэтому есть смысл выбрать значение еще выше.

Например, 47539

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

Для этого в конфиг-файл /etc/sysconfig/iptables после строки

  1. :RH-Firewall-1-INPUT - [0:0]

где находятся строки вроде этой
  1. -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

но перед строкой с режектами, а тем более перед
  1. COMMIT

а лучше сразу после строки с SSH/22, добавляем строку с новым портом для SSH:
  1. -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 47539 -j ACCEPT

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

3. Перезапускаем сервис файрвола:

  1. # service iptables restart

Он должен выполниться без ошибок.

4. Теперь пришла пора изменить порт SSH-сервиса.
Для этого в конифг-файле /etc/ssh/sshd_config раскомментируем строку с дефолтовым портом:

  1. #Port 22

и вписываем в нее новый порт

  1. Port 47539

5. И наконец, перезапускаем SSH-сервис:

  1. service sshd restart

6. Теперь можете попробовать законнектиться по новому порту:

  1. ssh  -p47539 king@myserver.com

Если коннектиться по MC (Shell-соединение), строка в окне "Shell-соединения с удаленной машиной" будет выглядеть так:
  1. king@myserver.com:47539

И если все получилось - можете себя поздравить!
Если нет - спросить себя: и для чего я только все это затеял?


* Примечание
Еще раз по поводу удаления дефолтовой строки:
- если ее удалить или закомментировать, то при обращению к серверу по дефолтовому порту 22 будем получать сообщение

ssh: connect to host 213.155.20.56 port 22: No route to host

- если ее оставить работать, то сообщение будет иное

ssh: connect to host 213.155.20.56 port 22: Connection refused

Второй вариант может быть полезнее, являясь для хакеров приманкой и вводя их в заблуждения относительно "найденного" открытого порта..


Проверено на CentOS 5.4.

Приложение
1. Запрещение удаленного root-доступа.
2. Запрещение подключения с пустым паролем или отключение входа по паролю.
3. Выбор нестандартного порта для SSH-сервера.
4. Использование длинных SSH2 RSA-ключей (2048 бит и более). По состоянию на 2006 год система шифрования на основе RSA считалась надёжной, если длина ключа не менее 1024 бит.
5. Ограничение списка IP-адресов, с которых разрешен доступ (например, настройкой файервола).
6. Запрещение доступа с некоторых потенциально опасных адресов.
7. Отказ от использования распространенных или широко известных системных логинов для доступа по SSH.
8. Регулярный просмотр сообщений об ошибках аутентификации.
9. Установка детекторов атак (IDS, Intrusion Detection System).
10. Использование ловушек, подделывающих SSH-сервис (honeypots).


Литература
1. SSH - Википедия
2. О смене порта ssh
3. Смена порта SSH-сервера как мера безопасности

Ваша оценка: Ничего Средняя оценка: 9.4 (7 votes)

Чтоб не потерять доступ по SSH при перестройке портов, имеет смысл указать в sshd_config, чтоб sshd слушал по двум портам. Когда все настроишь, старый порт можно закомментировать.

King аватар

Спасибо, хороший совет

Приложение
1. Запрещение удаленного root-доступа.

А как это реализуется?

Запрещение удаленного root-доступа.

В тот же /etc/ssh/sshd-config внести правку:

  1. #PermitRootLogin yes
  2. PermitRootLogin no

Abdula аватар

Разрешить соединение только определенным пользвателям:

AllowUsers user1 [user2] [user3] ...

63rS3rK аватар

Не помешало бы еще denyhosts добавить, чтобы угомонить брутфор серов.

Я очень вежливый, если я вас пошлю - то обязательно вечером перезвоню и спрошу как вы добрались!

RSS-материал