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

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

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

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

Например, 47539

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

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

Код: Выделить всё

:RH-Firewall-1-INPUT - [0:0]
где находятся строки вроде этой

Код: Выделить всё

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

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

Код: Выделить всё

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

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

Код: Выделить всё

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

Код: Выделить всё

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

Код: Выделить всё

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

Код: Выделить всё

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

Код: Выделить всё

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 при перестройке портов, имеет смысл указать в sshd_config, чтоб sshd слушал по двум портам. Когда все настроишь, старый порт можно закомментировать.

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

Код: Выделить всё

#PermitRootLogin yes
PermitRootLogin no
В этой строке мы запрещаем авторизацию пользователя root. Теперь злоумышленнику прийдется подбирать не только пароль, но и логин, что намного сложнее. Чтобы получить доступ с правами суперпользователя, необходимо сначала зайти на сервер под обычной учетной записью, а затем выполнить команду "su -" и ввести пароль пользователя root.

источник http://poplinux.ru/node/113 (внешка)

Аватара пользователя
AgentSIB
Сообщения: 329
Зарегистрирован: 17.05.2010
Файрвол это уже отдельная тема... Например на опенсусе он по другому настраивается...
Frustra fit per plura quod potest fieri per pauciora © Закон "Бритвы Оккама"

Woin
Сообщения: 436
Зарегистрирован: 28.12.2009
Незнаю, мне не пришлось ничего делать с iptables
Сменил порт в Ubuntu Server 10.04 и все отлично из локалки и из внешней сети заработало.

Аватара пользователя
AgentSIB
Сообщения: 329
Зарегистрирован: 17.05.2010
Woin писал(а):Незнаю, мне не пришлось ничего делать с iptables
Сменил порт в Ubuntu Server 10.04 и все отлично из локалки и из внешней сети заработало.
Хм... Либо у тебя вообще файрвол отключен, либо открытие происходит не по порту, а по приложению)
Frustra fit per plura quod potest fieri per pauciora © Закон "Бритвы Оккама"

Woin
Сообщения: 436
Зарегистрирован: 28.12.2009
Да он неактивен. Будет свободное время, нужно будет правила по создавать ему...

Ответить