Как закрыть порт 22 в роутере
SSH по умолчанию работает на порту 22. Это не совпадение. Вот история, как ему достался этот порт.
Когда я (Тату Илонен) впервые опубликовал эту историю в апреле 2017 года, она стала вирусной: её прочитали около 120 000 читателей за три дня.
Я написал первую версию SSH (Secure Shell) весной 1995 года. В то время широко использовались Telnet и FTP.
Но я всё равно разработал SSH для замены и telnet (порт 23) и ftp (порт 21). Порт 22 был свободен и удобно располагался между портами для telnet и ftp. Я подумал, что такой номер порта может стать одной из тех маленьких деталей, которые придадут некоторую ауру доверия SSH. Но как его получить? Я никогда не распределял порты, но я знал тех, кто этим занимается.
В то время процесс выделения портов был довольно простым. Интернет был меньше, и мы находились на самых ранних стадиях интернет-бума. Номера портов выделяла организация IANA (Internet Assigned Numbers Authority). В то время это означало уважаемых первопроходцев интернета Джона Постела и Джойс К. Рейнольдс. Среди всего прочего, Джон являлся редактором таких незначительных протоколов, как IP (RFC 791), ICMP (RFC 792) и TCP (RFC 793). Возможно, кто-то из вас слышал о них.
Меня откровенно пугал Джон как автор всех основных RFC для Интернета!
Так или иначе, но перед анонсом ssh-1.0 в июле 1995 года я отправил в IANA такое электронное письмо:
From ylo Mon Jul 10 11:45:48 +0300 1995
From: Tatu Ylonen <[email protected]>
To: Internet Assigned Numbers Authority <[email protected]>
Subject: request for port number
Organization: Helsinki University of Technology, Finland
Я написал программу для безопасного входа с одной машины на другую по небезопасной сети. Это значительное улучшение безопасности по сравнению с существующими протоколами telnet и rlogin и их реализациями. В частности, она предотвращает спуфинг IP, DNS и маршрутизации. Мой план состоит в том, чтобы свободно распространять программу в интернете и обеспечить как можно более широкое её использование.
Ниже прикладываю проект RFC для протокола. Программное обеспечение локально используется несколько месяцев и готово для публикации, за исключением номера порта. Если можно оперативно присвоить номер порта, я хотел бы выложить программу уже на этой неделе. В настоящее время в бета-тестировании я использую порт 22. Было бы отлично использовать этот номер (в настоящее время в списках он обозначен как «неприсвоенный»).
Название сервиса для программного обеспечения — "ssh" (Secure Shell).
Тату Илонен <[email protected]>
… затем следуют спецификации протокола ssh-1.0
На следующий день в почтовом ящике лежало письмо от Джойс:
Мы присвоили порт 22 для SSH, указав вас контактным лицом.
У нас получилось! Теперь у SSH порт 22.
По умолчанию сервер SSH по-прежнему работает на порту 22. Однако бывает иначе. Одна из причин — тестирование. Другая — запуск нескольких конфигураций на одном хосте. Редко бывает, что сервер работает без рутовых привилегий, в этом случае он должен размещаться на непривилегированном порту (т. е. с номером 1024 или больше).
Номер порта можно настроить, изменив директиву Port 22 в /etc/ssh/sshd_config. Он также указывается параметром -p <port> в sshd. Клиент SSH и программы sftp тоже поддерживают параметр -p <port> .
Параметр -p <port> можно использовать для указания номера порта при подключении с помощью команды ssh в Linux. В SFTP и scp используется параметр -P <port> (примечание: заглавная P). Указание из командной строки переопределяет любое значение в файлах конфигурации.
Исходящий SSH
Настройка исходящего SSH в файрволе очень проста. Если есть ограничения на исходящий трафик вообще, просто создайте правило, разрешающее исходящие соединения по порту TCP 22. Вот и всё. Если требуется ограничить адреса назначения, можно создать соответствующее правило, разрешив доступ только к серверам вашей организации в облаке или к jump-серверу, который защищает доступ к облаку.
Обратное туннелирование — это риск
Однако неограниченный исходящий SSH может быть рискованным. Протокол SSH поддерживает туннелирование. Основная идея в том, что сервер SSH на внешнем сервере прослушивает подключения отовсюду, переправляет их в организацию и устанавливает соединение с каким-то внутренним сервером.
В некоторых случаях это удобно. Разработчики и системные администраторы часто используют туннелирование, чтобы получить удалённый доступ из дома или с ноутбука во время путешествий.
Но обычно туннелирование нарушает политику безопасности и отнимает контроль у администраторов файрвола и команды ИБ. Например, оно может нарушать правила PCI, HIPAA или NIST SP 800-53. Его могут использовать хакеры и спецслужбы, чтобы оставить бэкдоры в локальной сети.
Программа CryptoAuditor контролирует туннелирование в файрволе или в точке входа в группу облачных серверов. Она работает в связке с Universal SSH Key Manager для получения доступа к ключам хоста, используя их для расшифровки сеансов SSH в брандмауэре и блокировки несанкционированного форвардинга.
Для входящего доступа есть несколько вариантов:
- Настройте файрвол для пересылки всех подключений к порту 22 на определённый IP-адрес во внутренней сети или DMZ. Запустите по этому IP-адресу CryptoAuditor или jump-сервер, чтобы контролировать и проверять дальнейший доступ в организацию.
- Используйте разные порты на файрволе для доступа к разным серверам.
- Разрешайте доступ по SSH только после входа в систему с помощью VPN, обычно по протоколу IPsec.
Iptables — это файрвол хоста, встроенный в ядро Linux. Обычно он настроен для защиты сервера, предотвращая доступ ко всем портам, которые не были явно открыты.
Если на сервере включен iptables, следующие команды могут разрешить входящий доступа SSH. Их следует запускать из-под рута.
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Если хотите сохранить правила навсегда, то в некоторых системах это можно сделать командой:
Зачем это нужно?
Порт – это натуральное число, которые указывается в заголовках транспортного уровня. Каждый пакет любой программы, которая работает с сетью или интернетом, отправляется через один из нескольких тысяч портов.
Физически на роутере порт – это разъем, в который вставляется обжатый кабель. Если кабель напрямую воткнут в разъем компьютера – вникать в настройки портов не придется. Чаще всего, в этом случае все они открыты по умолчанию. Но если в квартире стоит маршрутизатор – информация об их настройке может быть полезна.
Как открыть порты на роутере?
Настройка оборудования зависит от модели производителя устройства. Но есть предварительные установки, одинаковые для всех. Для начала следует определить адрес роутера.
Если IP-адрес роутера уже настраивался и не соответствует тому, который указан на наклейке снизу устройства – узнавать его придется вручную. Реализуется это просто – сочетанием клавиш Win+R можно открыть окно Выполнить. И вписать туда команду, вызывающую оснастку сетевых подключений – ncpa.cpl.
Это же можно сделать и другим способом – через «Панель управления», найдя там «Сеть и Интернет», а в нем – «Сетевые подключения». Затем определить активное соединение, которое происходит через роутер, зайти в сведения о нем.
Для выполнения дальнейших действий необходимо авторизоваться в административном интерфейсе роутера. Данные либо указаны на самом устройстве, либо уже менялись пользователем и их необходимо вспомнить. Можно сбросить маршрутизатор до заводских настроек, если на нем не было важных изменений, а порты пробросить необходимо. Если же пользователь не в курсе, как после сброса восстановить настройки подключения, то лучше обратиться к специалистам или техподдержке провайдера.
Работа производится в два этапа. Сперва задается адрес компьютеру, а потом открываются порты.
Для открытия или закрытия портов на роутере Асус, после авторизации в Администрировании необходимо перейти в «Локальную сеть» и там «DHCP-сервер».
В нижней части страницы будет «Включить назначение вручную», выбрать «Да».
Еще ниже будет список MAC-адресов. Следует подключить компьютер, которому будет задан статический адрес, «Добавить», а после – «Применить».
Обычно человек, который собирается открывать порты на роутере, знает, какой именно следует открыть. Если это не так – стоит уточнить данные. Для проброса выбирается «Интернет», а в нем – «Переадресация портов». В подпункте «Включить переадресацию» ставится «Да». После важно заполнить все необходимые поля, «Добавить» и «Применить». После этого роутер перезагружается и работает по новым правилам.
Huawei
Необходимо проверить галочку у Enable Port Mapping и нажать Apply. После перезагрузки все заработает.
Tenda
Маршрутизаторы Tenda имеют весьма дружественный интерфейс. В дополнительных параметрах следует найти привязку IP-MAC и сверить/вписать IP.
Затем в переадресации вписывается нужный адрес устройства. После – внутренний и внешний порты.
Netis
TP-Link
Для TP-Link правила таковы: переходим в «Forwarding», а оттуда в «Virtual Servers» , слева кнопка «Add New..».
Поле Service port – добавление порта, IP Address – путь к устройству.
D-Link
Далее настраивается по принципу остальных маршрутизаторов.
Ростелеком
Следует ввести MAC-адрес, он прописывается через двоеточия и IP.
Затем добавляются нужные порты и адрес локальный через «Триггер» во вкладке «NAT».
Возможные проблемы
При настройке проблемы чаще всего связаны с ошибками в них или багами оборудования. Сперва стоит перепроверить введенные данные и перезагрузить маршрутизатор. Если до этого роутер был настроен под другие нужды – его стоит сбросить до заводских настроек удерживанием клавиши «Reset» и перенастроить заново.
Стоит учесть, что открыть заданный порт можно лишь для одного устройства в сети, для этого в любом роутере прописывается конечное, получающее заданный доступ рабочее место.
Итак, начнем с простого. Поскольку микротик имеет на борту свой собственный DNS сервер, то 53 порт смотрит у него наружу и просит его использовать. Чем грозит открытый 53 порт? Падением скорости вашего интернет-соединения. В моей практике был случай, когда в качестве роутера стоял Mikrotik RB951Ui. Провайдер давал 80 мегабит канал, а фактическая скорость у клиента не превышала 2-3 мегабита. Клиент ругался с провайдером, приезжали монтажники, проверяли линию, но все тщетно. Когда я приехал, то сделал следующее.
Подключаемся к нашему пациенту по Winbox и открываем раздел IP->Firewall->Filter Rules. На скриншоте ниже у меня уже добавлены необходимые правила для обработки трафика на 53 порту.
Что бы сделать так же, добавляем первое правило.
И второе правило.
- Chain – input
- Protocol – 17(udp)
- Dst.port – 53
- In.Interface – ваш интерфейс, куда включен провайдер
- Action – drop
Отключаем стандартные порты
Обычные пользователи не обращают на них внимания, но я рекомендую всем либо выключить к ним доступ, либо настроить правила фильтрации. Самое простое, как закрыть порты:
Заходим IP-Services и видим список портов. Я всегда закрываю все, кроме Winbox потому что мне нет в них необходимости. Можно просто выключить, а можно изменить номер порта на тот, который вам нравится, но стоит быть внимательными, не советую менять порты 443, 80. Это служебные порты и их изменение может привести к потере доступа в Интернет. У меня выглядит вот так:
Закрываем любой порт
Для того, что бы закрыть любой порт для подключения из внешней сети достаточно одного правила, которое по своей сути очень простое. В нем мы указываем тип трафика – снаружи, номер порта или диапазон портов, на каком интерфейсе слушать и что с этим трафиком делать. Для примера давайте закроем порт 8080.
IP->Firewall->Filter Rules->New Firewall rule (синий плюсик)
- Chain – input
- Protocol – tcp
- Dst.port – 8080
- In.Interface – ваш интерфейс
- Action – drop
Все! Вот так просто! Порт закрыт. Но будьте предельно аккуратны, не стоит беспорядочно закрывать все. В mikrotike с завода идет принцип запрещено все, что не разрешено. Поэтому сильно заморачиваться нет необходимости.
В следующий раз напишу, как закрыться от брутфорса и флуда, если нет возможности закрыть порт целиком.
На транспортном уровне модели TCP / IP у нас есть два типа протоколов: TCP и UDP. Оба они постоянно используются различными программами и протоколами прикладного уровня, такими как порт 80 и 443 для просмотра веб-страниц, порт 22 для протокола SSH или популярный порт 1194 для виртуальных частных сетей OpenVPN. Некоторые из этих портов весьма опасны, если мы не отфильтруем их правильно с помощью брандмауэр, потому что они могли проводить разные виды атак и даже взламывать наше оборудование. Сегодня в этой статье мы покажем вам, какие порты мы должны защищать, чтобы избежать проблем.
Что такое порты TCP и UDP?
TCP и UDP относятся к протоколу транспортного уровня, используемому для сквозной связи между двумя хостами, порты являются частью сегмента TCP или дейтаграммы UDP для правильной установки связи. Мы могли бы сказать, что «порты» - это что-то вроде «дверей» для определенной службы, независимо от того, используем ли мы TCP или UDP, поскольку оба протокола используют порты. Сами порты не опасны, порт является портом, и не имеет значения, является ли он портом 22 или портом 50505, что наиболее важно, так это использование, которое дается порту, опасно иметь порт, открытый для служба прикладного уровня, которая не защищена, потому что любой может подключиться к этой службе и использовать уязвимости или взломать нас напрямую. Конечно, всегда необходимо, чтобы если мы открыли порт для Интернета, мы контролировали трафик с помощью IDS / IPS для обнаружения возможных атак и обновляли программу, которая прослушивает этот порт.
Известные порты
Эфемерные порты
Диапазон этих портов от 49152 до 65535, этот диапазон портов используется клиентскими программами, и они постоянно используются повторно. Этот диапазон портов обычно используется при передаче на известный или зарезервированный порт с другого устройства, такого как пассивный Интернет или FTP. Например, когда мы посещаем веб-сайт, порт назначения всегда будет 80 или 443, но порт источника (чтобы данные знали, как возвращаться) использует порт эпиметра.
Какие порты я должен особенно защищать?
Все порты, которые используются для установления удаленной связи, будь то для обмена файлами, удаленного управления через консоль и даже приложений удаленного рабочего стола, e-mail и другие службы, подверженные атакам, должны быть надлежащим образом защищены. Затем у вас есть список портов (TCP), которые вы должны защищать особенно, и закрывайте их, когда мы не собираемся его использовать, потому что в будущем возможно, что они уже используются, и мы забыли защитить их должным образом.
- Порт 21: используется протоколом FTP для передачи файлов.
- Порт 22: используется протоколом SSH для удаленного управления компьютерами.
- Порт 23: используется протоколом Telnet для удаленного управления компьютерами (небезопасно)
- Порты 80, 8080, 8088, 8888 и 443: мы должны закрыть все веб-ориентированные порты, если у нас нет веб-сервера, и если у нас есть, мы должны контролировать его должным образом, чтобы смягчить возможные веб-атаки, такие как атаки SQL-инъекций, XSS и другие.
- Порт 4444: этот порт обычно используется троянами и вредоносными программами в целом, рекомендуется всегда блокировать его.
- Порты 6660-6669: эти порты используются популярным IRC, если мы их не используем, мы не будем их открывать.
- Порт 161 UDP: он используется протоколом SNMP для просмотра конфигурации и управления различным оборудованием, таким как маршрутизаторы, коммутаторы, а также серверы. Желательно закрыть его, если вы не собираетесь им пользоваться.
- Порт 53 UDP: порт, используемый протоколом DNS, этот порт может использоваться для эксфильтрации информации в самих запросах DNS.
Конечно, все эти порты, которые мы объяснили, являются самыми простыми, но мы всегда должны следовать политике блокировки всего, кроме тех, которые используются, таким образом мы не забудем закрыть разные порты. Если мы заблокируем все (кроме тех, которые используются и разрешены), у нас будет хорошо защищенная система, так как наличие открытого порта - это первый шаг к вторжению.
Как мне правильно защитить порты?
По умолчанию все порты должны быть закрыты, если только вы не используете определенную службу и не должны ее открывать. Очень важно всегда иметь наименьшее количество экспортируемых локальных сервисов, так как поверхность атаки будет меньше. Брандмауэры позволят нам автоматически закрыть все порты и открывать только те, которые нам нужны.
Используемое программное обеспечение, открывающее сокет TCP или UDP, важно, чтобы оно было актуальным, мало полезно закрывать все порты, кроме одного, если служба, работающая на этом порту, не обновлена и имеет недостатки безопасности. По этой причине так важно обновлять все программное обеспечение, всегда рекомендуется использовать программное обеспечение, которое все еще поддерживается, для получения различных обновлений.
Если для доступа к определенной службе требуется аутентификация, необходимо, чтобы учетные данные были надежными, по возможности используйте цифровые сертификаты или ключи SSH (если вы собираетесь аутентифицироваться на сервере SSH). Например, всегда рекомендуется закрывать порт 23 Telnet, потому что это небезопасный протокол, и поэтому его лучше не использовать ни при каких обстоятельствах.
Настоятельно рекомендуется отслеживать, какие порты TCP и UDP используются, чтобы обнаруживать возможные проблемы вторжений или заражения троянами. Важно исследовать любой странный трафик или порты, которые открыты, хотя этого не должно быть. Также очень важно знать, как определенная служба (прослушивающая определенный порт) ведет себя при нормальном использовании, чтобы идентифицировать необычное поведение.
Наконец, в дополнение к использованию брандмауэров для закрытия всех портов, которые мы не используем, также настоятельно рекомендуется использовать IDS / IPS для обнаружения странного поведения на сетевом уровне, и было бы даже целесообразно установить IDS самостоятельно. ПК, чтобы он обнаружил любую аномалию.
Читайте также: