G|Translate: English EN Français FR Deutsch DE Italiano IT Русский RU Español ES

Порты вебсервера и их основная защита

Для чего сделаны разные порты вебсервера и зачем их защищать?

Порты вебсервера и их основная защита

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

Для взаимодействия с пользователями (посетителями, админом) вебсервер использует отдельные порты (с номером), по которым доступен соответствующий сервис. Номер порта обычно указывается через двоеточие после IP-адреса.

Например, 192.168.1.1:22 – порт для сервиса SSH для администратора (фактически командная строка Linux).

В таблице

Номер Сервис Описание
20   FTP (File Transfer Protocol) – порт данных Передача файлов на удаленный сервер
21 FTP (File Transfer Protocol) – порт управления Передача файлов на удаленный сервер
22 SSH (Secure SHell) В отличие от стандартного FTP он шифрует и команды, и данные. Подключение командной строки управления сервером
23 TELNET (TELetype NETwork) Удаленное управление сервером на базе своих команд (без шифрования)
25 SMTP (Simple Mail Transfer Protocol ) Отправка писем без шифрования
80 HTTP Отдача сайтов посетителю без шифрования
110 POP3 Получение писем
143 IMAP Синхронизация писем на сервере
443 HTTPS Отдача сайтов с шифрованием по SSL или TLS
465 SMTPS (SMTP Secure) SMTP с шифрованием по SSL или TLS
8888 Панель управления хостингом На усмотрение хостера

Диапазон 49152—65535 содержит динамически выделяемые или частные порты, которые не регистрируются IANA.

В основном мощные ботнеты (IP > 1000 или > 10 000) “работают” по двум портам – 22 SSH (логин обычно root) и 21 FTP (логин обычно хакерам неизвестен):

  • несмотря на сложность пароля – его все равно подберут за конечное время
  • и вся эта деятельность ботнетов сильно нагружает процессор (вместо того, что бы сайты посетителям отдавать)

С этим надо бороться:

Малоэффективные способы:

  • хороший пароль – все равно подберут за конечное время, слишком большой объем брутфорса
  • fail2ban с блокировкой IP – не поможет особо, т.к. таких IP может оказаться больше (>1000 или > 10 000), чем ресурсы сервера (например в VPS OpenVZ всего 256 цепочек для заблокированных IP можно создать)
  • разрешить вход только с IP админа – у большой части пользователей IP обычно динамический

 

Хорошие способы:

  • увеличение интервала между неудачными входами с одного IP  (например, не более 2-х попыток в минуту)
  • меняем пользователя root на другого, например myroot
  • смена номера порта на что-нибудь № 55555 – отлично, отсекаем 99% атакующих (остальные 1% умеют порты сканировать…)
  • открываем/закрываем порт по обращению к другому порту
  • используем вход по ключу (созданному на сервере) вместо пароля
  • открытие порта на заданное время

Защищаем порт 22 SSH

SSH был разработан в 1995 году для замены telnet (порт 23) и ftp (порт 21), поэтому автор программы Тату Илтонен выбрал порт 22 по умолчанию, и его утвердили в IANA.

Логин обычно root – осталось подобрать пароль.

И желающих подобрать пароль – много.

Нет, не так.

МНОГО. Весь мир хочет пробиться на адрес 192.168.1.1:22 (условно – в реальности IP адрес Вашей VPS) с логином root.

Ниже (например) список из fail2ban

Порты вебсервера и их основная защита

Вот 18 попыток за 3 сек.

Лог обычно хранится в /var/log/auth.log.

# grep "Failed password" /var/log/auth.log

Причем большая часть таких IP – это зараженные машины добропорядочных пользователей. Нельзя делать вечный бан – он нужен только на время атаки.

А боты умные – с одно IP делаю несколько попыток в секунду и меняют IP. Итого в секунду может быть до 6-10 попыток с 3-5 разных IP.

fail2ban – вещь конечно хорошая, но против массовых ботнетов он неэффективен:

  • “плохие” IP будут баниться пачками, может не хватить ресурсов сервера (особенно OpenVZ)
  • процессор всё равно грузится всей этой чепухой

Читаем статью

Защита ssh средствами Iptables

Как хороший и интересный вариант – комбинируем открытие по стуку и смену порта:

  • “стук” на 192.168.1.1:55555 – открывает порт SSH (например 55557)
  • входим на SSH 192.168.1.1:55557
  • после выхода – “стук” на 192.168.1.1:55556 – закрываем SSH

 

В результате даже сканирование портов (как по возрастанию, так и по убыванию = не поможет открыть порт SSH)

55555 -> 55556 -> 55557 (SSH)  и 55557 (SSH) -> 55556 -> 55555

“Стукать” в порт умеет программа telnet (собственно, переборщик портов на IP делает примерно то же самое)

Например, с помощью простого “батника” с запросом пароля и программы PuTTY

telnet SERVER_NAME 55555
@echo off 
set /P var="Enter password: " 
"C:\Program Files\PuTTY\putty.exe" -ssh USER_NAME@SERVER_NAME -P 55557 -pw %var%
telnet SERVER_NAME 55556

На Windows 7 (и старше –  программа telnet по умолчанию отключена),  получим служебное сообщение

 Порты вебсервера и их основная защита

Включаем через “Программы и компоненты”->”Включение или отключение компонентов Windows”

Порты вебсервера и их основная защита

Проверяем на 192.168.1.1

Порты вебсервера и их основная защита

Вот, например, наш роутер отвечает :)

Защищаем порт 21 FTP

Порт 21 FTP – тоже желающие сломать есть, но меньше – т.к. логин обычно неизвестен. У FTP на самом деле два порта:

  • 21 – управление
  • 20 – передача данных

Лог обычно хранится в var/log/profftd/

“no such user found from 139.201.165.190” – тут еще атакующим надо логин найти :)

Порты вебсервера и их основная защита

Одной минуты еще не прошло.

Если у Вас VPS – имеет смысл доступ через FTP вообще отключить, т.е. есть SSH и root-доступ.

При наличии виртуального хостинга – есть только FTP для передачи данных.

Windows машина и порт 3389 RDP

Да – это порт для “Удаленного рабочего стола“, он же RDP. Для сервера на Windows.

Пока машина работает в локальной сети (за роутером) – до неё из интернета не достучаться. Как только Ваша машина на Windows стала доступна из большого интернета (или сервер или Вы сделали проброс портов на роутере для доступа к ПК в локальной сети) – на порт 3389 тут же набегут сетевые боты (даже скажем прямо, ботнеты со всего мира с пачкой разных IP адресов…). 

Меняем порт 3389 на другой, например на 55555

Справка:

• стандартные порты  от 0 до 1023 — назначаются и контролируются IANA (Internet Assigned Numbers Authority), и обычно используются низкоуровневыми системными программами;
• зарегистрированные порты от 1024 до 49151 — также назначаются и контролируются IANA, но выделяются для частных целей;
• Динамические и/или приватные порты от 49152 до 65535 — могут быть использованы любым процессом с любой целью. 

Что нужно сделать:

  • изменить порт в Windows по умолчанию с 3389 на 55555
  • разрешить к нему доступ в брандмауэре (файервол Windows) 
  • и теперь запускать RDP для подключения надо в виде 192.168.1.2:55555

 

Меняем порт 3389 на 55555 в реестре Windows

Запускаем редактор Regedit и идем в раздел реестра 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp

Выбираем параметр PortNumber

Порты вебсервера и их основная защита 

Переключаемcя в десятичный формат и задаем порт 55555

Порты вебсервера и их основная защита

Готово.

Порты вебсервера и их основная защита

Разрешаем подключение к порту 55555

Брандмауэре Windows -> Дополнительные параметры -> Правила для входящих подключений

Порты вебсервера и их основная защита

Создаем новое правило для порта

Порты вебсервера и их основная защита

Указываем наш порт 55555

Порты вебсервера и их основная защита

Разрешаем подключения

Порты вебсервера и их основная защита

Указываем, для каких профилей

Порты вебсервера и их основная защита

Создаем название и краткое описание (по желанию)

Порты вебсервера и их основная защита

Готово. Теперь можно подключаться с указанием порта по адресу 192.168.1.2:55555

 

Оставляем только нужные порты для вебсервера

По хорошему:

  • внешним пользователям от вебсервера нужен только сайт (80 или 443),
  • администратору – управление (SSH и панель управления)
  • возможность отправлять/получать email с сервера (WordPress например использует php-mail).  

Все остальные порты на веб-сервере можно заблокировать (точнее- разрешить только нужные порты)

Читаем статью

Защита VPS от нечисти с помощью fail2ban  и iptables


Вы можете сохранить ссылку на эту страницу себе на компьютер в виде htm файла