Не открывайте порты в мир — вас поломают (риски) / Хабр
Снова и снова, после проведения аудита, на мои рекомендации спрятать порты за white-list’ом встречаюсь со стеной непонимания. Даже очень крутые админы/DevOps’ы спрашивают: “Зачем?!?”
Предлагаю рассмотреть риски в порядке убывания вероятности наступления и ущерба.
- Ошибка конфигурации
- DDoS по IP
- Брутфорс
- Уязвимости сервисов
- Уязвимости стека ядра
- Усиление DDoS атак
Ошибка конфигурации
Наиболее типичная и опасная ситуация. Как это бывает. Разработчику надо быстро проверить гипотезу, он поднимает временный сервер с mysql/redis/mongodb/elastic. Пароль, конечно, сложный, он везде его использует. Открывает сервис в мир — ему удобно со своего ПК гуём коннектиться без этих ваших VPN. А синтаксис iptables вспоминать лень, все равно сервер временный. Еще пару дней разработки — получилось отлично, можно показывать заказчику. Заказчику нравится, переделывать некогда, запускаем в ПРОД!
Пример намеренно утрированный с целью пройтись по всем граблям:
- Ничего нет более постоянного, чем временное — не люблю эту фразу, но по субъективным ощущениям, 20-40% таких временных серверов остаются надолго.
- Сложный универсальный пароль, который используется во многих сервисах — зло. Потому что, один из сервисов, где использовался этот пароль, мог быть взломан. Так или иначе базы взломанных сервисов стекаются в одну, которая используется для [брутфорса]*.
Стоит добавить, что redis, mongodb и elastic после установки вообще доступны без аутентификации, и часто пополняют коллекцию открытых баз. - Может показаться, что за пару дней никто не насканит ваш 3306 порт. Это заблуждение! Masscan — отличный сканер, и может сканировать со скоростью 10М портов в секунду. А в интернете всего 4 миллиарда IPv4. Соответственно, все 3306-ые порты в интернете находятся за 7 минут. Карл!!! Семь минут!
“Да кому это надо?” — возразите вы. Вот и я удивляюсь, глядя в статистику дропнутых пакетов. Откуда за сутки 40 тысяч попыток скана с 3-х тысяч уникальных IP? Сейчас сканят все кому не лень, от мамкиных хакеров до правительств. Проверить очень просто — возьмите любую VPS’ку за $3-5 у любого** лоукостера, включите логирование дропнутых пакетов и загляните в лог через сутки.
Включение логирования
В /etc/iptables/rules.v4 добавьте в конец:
-A INPUT -j LOG –log-prefix “[FW — ALL] ” –log-level 4
А в /etc/rsyslog.d/10-iptables.conf
:msg,contains,”[FW — ” /var/log/iptables.log
& stop
DDoS по IP
Если злоумышленник знает ваш IP, он может на несколько часов или суток заддосить ваш сервер. Далеко не у всех лоукост-хостингов есть защита от DDoS и ваш сервер просто отключат от сети. Если вы спрятали сервер за CDN, не забудьте сменить IP, иначе хакер его нагуглит и будет DDoS’ить ваш сервер в обход CDN (очень популярная ошибка).
Уязвимости сервисов
Во всем популярном ПО рано или поздно находят ошибки, даже в самых оттестированных и самых критичных. В среде ИБэшников, есть такая полу-шутка — безопасность инфраструктуры можно смело оценивать по времени последнего обновления. Если ваша инфраструктура богата торчащими в мир портами, а вы ее не обновляли год, то любой безопасник вам не глядя скажет, что вы дырявы, и скорее всего, уже взломаны.
Брутфорс
Как описал выше, есть база с полу миллиардом паролей, которые удобно набирать с клавиатуры. Другими словами, если вы не сгенерировали пароль, а набрали на клавиатуре рядом расположенные символы, будьте уверены* — вас сбрутят.
Уязвимости стека ядра.
Бывает**** и такое, что даже не важно какой именно сервис открывает порт, когда уязвим сам сетевой стек ядра. То есть абсолютно любой tcp/udp-сокет на системе двухлетней давности подвержен уязвимости приводящий к DDoS.
Усиление DDoS-атак
Напрямую ущерба не принесет, но может забить ваш канал, поднять нагрузку на систему, ваш IP попадет в какой-нибудь black-list*****, а вам прилетит абуза от хостера.
Неужели вам нужны все эти риски? Добавьте ваш домашний и рабочий IP в white-list. Даже если он динамический — залогиньтесь через админку хостера, через веб-консоль, и просто добавьте еще один.
Я 15 лет занимаюсь построением и защитой IT-инфраструктуры. Выработал правило, которое всем настоятельно рекомендую — ни один порт не должен торчать в мир без white-list’a.
Например, наиболее защищенный web-сервер*** — это тот, у которого открыты 80 и 443 только для CDN/WAF. А сервисные порты (ssh, netdata, bacula, phpmyadmin) должны быть как минимум за white-list’ом, а еще лучше за VPN. Иначе вы рискуете быть скомпрометированным.
У меня все. Держите свои порты закрытыми!
- (1) UPD1: Здесь можно проверить свой крутой универсальный пароль (не делайте этого не заменив этот пароль на рандомные во всех сервисах), не засветился ли он в слитой базе. А тут можно посмотреть сколько сервисов было взломано, где фигурировал ваш email, и, соответственно, выяснить, не скомпрометирован ли ваш крутой универсальный пароль.
- (2) К чести Amazon — на LightSail минимум сканов. Видимо, как-то фильтруют.
- (3) Еще более защищенный web-сервер это тот, что за выделенным firewall’ом, своим WAF, но речь о публичных VPS/Dedicated.
- (4) Segmentsmak.
- (5) Firehol.
Порты, используемые при работе Business Studio [BS Docs 5]
Вопрос:
Какие порты используются при работе Business Studio?
Ответ:
При работе Business Studio используются следующие порты
Порт | Какое приложение предоставляет (нужно разрешение для входящих подключений для соответствующего порта) | Какие приложения подключаются (нужно разрешение для исходящих подключений для соответствующего порта) |
---|---|---|
UDP 1434, TCP 1433 либо динамический1) | MS SQL Server (SQL Browser и Database Engine) | Business Studio, сервер портала, служебные процессы портала, DB Администратор, МetaЕdit |
5555 | Сервер лицензий (служба BS_PingHost) | Business Studio, MetaEdit, служебные процессы портала |
5554 | Сервер портала (служба BS_PortalService) | Утилиты “Управление Business Studio Portal Server”, в том числе находящиеся на других компьютерах |
5556 | СУБД MySQL для веб-сервера (служба BS_WebService_MySql) | Служебные процессы портала на основном сервере портала (запись и использование структуры портала), веб-сервер Apache |
5557 | Сервер портала (служба BS_PortalService) | Приложения Business Studio (запуск портала, открытие окна утилиты «Управление Business Studio Portal Server») и веб-сервер Apache (переформирования портала, аутентификация пользователей). |
5558 | Веб-сервер Apache (служба BS_WebService) | Служебные процессы портала, веб-браузеры пользователей для просмотра локальной справки и использования портала. |
5550, 80, 443 | Сервер контроля лицензий (внешняя служба ГК СТУ) | Сервер лицензий (при использовании онлайн-лицензии) |
5553, 80, 443 | Сервер обслуживания клиентов (внешняя служба ГК СТУ) | Business Studio (решения по ошибкам, уведомления, запросы ссылок на обновление, регистрации пользователя) |
UDP/ TCP 137-139, 4452) | Сетевые папки на сервере портала (служба Server операционной системы Windows, SMB) | Служебные процессы портала (сохранение отчетов) |
При обычной работе Business Studio (через клиентское приложение) должны быть открыты порты, которые используются для соединения с сервером MS SQL и с сервером лицензий.
Для работы портала необходимо открыть порты 5554-5558 на основном сервере и 5554, 5555 на вспомогательных серверах.
При необходимости используемые порты можно изменить:
Порт 5555: на сервере лицензий в соответствии с инструкцией из статьи Доступ к серверу лицензий;
Порт 5554: на основном и вспомогательных серверах портала в файле <Путь, по которому установлена Business Studio>\Business Studio.exe.config заменить номер порта в следующей строке
<add key=”BS_PortalService_Port” value=”5554″ />;Порты 5556-5558: на основном сервере портала в файле <Путь, по которому установлена Business Studio>\Business Studio.exe.config заменить номера портов в следующих строках
<add key=”BS_WebService_Port” value=”5558″ />
<add key=”BS_WebService_MySQL_Port” value=”5556″ />.
Business Studio, Microsoft SQL Server
1) Динамический (по умолчанию) либо фиксированный порт. Для его определения используется обращение к Обозревателю SQL по фиксированному порту 1434 UDP. Экземпляры “по умолчанию” используют порт 1433 TCP. Подробнее можно узнать на сайте Microsoft
2) Подробнее см https://support.microsoft.com/ru-ru/help/832017#method43
Включить порты 80 (HTTP) и 443 (HTTPS)
РУКОВОДСТВА ПО ПРОДУКЦИИ
Руководство PaperCut NG и PaperCut MF
ПРЕДСТАВЛЕННЫЕ ПРОДУКТЫ
По умолчанию PaperCut NG/MF прослушивает порты 9191 и 9192 для обмена данными по протоколам HTTP и HTTPS соответственно. Эти порты были выбраны, поскольку они обычно не используются другими приложениями. Поскольку PaperCut NG/MF — это веб-приложение, вам может понадобиться, чтобы интерфейс был доступен через стандартные порты HTTP и HTTPS (80 и 443 соответственно). Одной из причин этого является упрощение URL-адресов, передаваемых в устной форме (поскольку пользователю не нужно указывать номер порта).
Процедура настройки отличается для каждой операционной системы. Инструкции см. ниже. Важно: Прежде чем начать, убедитесь, что на сервере, на котором размещается PaperCut NG/MF, не установлены никакие другие приложения (например, IIS или Apache), которые используют порты 80 или 443.
ВАЖНО
В следующих указаниях подробно описано, как включить порт 80 в дополнение к порту 9191. Рекомендуется включить дополнительный порт вместо изменения существующего порта. Порт 9191 также используется для связи сервер-сервер и клиент-сервер, поэтому важно, чтобы этот порт оставался доступным.
Также убедитесь, что вы включили порты 80 и 443 брандмауэра, если пользователи получают доступ к PaperCut NG/MF через устройства брандмауэра.
Окна
Откройте файл:
[путь к приложению]\server\server.properties
Включите порт 80 (и 443), изменив соответствующие настройки с
N
наY
. Они должны выглядеть так:server.enable-http-on-port-80=Y
server.enable-https-on-port-443=Y
Измените порт сервера у всех провайдеров, установленных в вашей сети. Порт сервера задается в файле
print-provider.conf
в каталоге провайдера.Измените порт сервера в файле конфигурации User Client:
[путь-приложения]\клиент\config.properties
.ВАЖНО
Если клиент установлен локально на рабочих станциях, измените файл конфигурации на каждой рабочей станции. В системах Linux/Unix сервер работает под привилегией учетной записи без полномочий root. Некоторые системы запрещают пользователям без полномочий root привязываться к портам ниже 1024. Альтернативным вариантом является использование перенаправления портов TCP на уровне ядра (например, iptables).
Перезапустите сервер приложений. (См. раздел Остановка и запуск сервера приложений).
Протестируйте и убедитесь, что веб-интерфейс работает. например
http://[myserver]/admin
Линукс
В системах Linux только привилегированные программы, работающие под root
, могут использовать порты ниже 1024. В соответствии с рекомендациями по безопасности PaperCut запускается от имени непривилегированного пользователя. Чтобы включить порты 80 и 443, используйте iptables
(или ipchains в старых системах) для переадресации портов с 80 на 9.191. Примером могут служить следующие команды. Обратитесь к документации вашего дистрибутива, чтобы узнать, как сохранить правила iptables
между перезагрузками системы:
/sbin/iptables -t nat -I PREROUTING --src 0/0 --dst
-p tcp --dport 80 -j REDIRECT --to-ports 9191
/sbin/ iptables -t nat -I PREROUTING --src 0/0 --dst
-p tcp --dport 443 -j REDIRECT --to-ports 9192
(Эти команды обычно помещаются в сценарий rc init
или сценарий конфигурации запуска iptables, предоставленный вашим дистрибутивом. )
Когда вы закончите, перезапустите сервер приложений. (См. раздел Остановка и запуск сервера приложений).
Mac
Подход к системам Mac аналогичен Linux. С выпуском Mac OS X 10.11 (El Capitan) и включением защиты целостности системы (SIP) модификации /System/ отключены по умолчанию, и отключение этой функции не рекомендуется. Следующая информация работает для Mac OS X 10.10. Для Mac OS X 10.10 и более поздних версий поддержка брандмауэра IPFW была удалена в пользу PF.
Mac OS X 10.10
Начиная с Mac OS X 10.10, для изменения брандмауэра Mac необходимо использовать команду pfctl
.
Создайте файл привязки:
sudo vi /etc/pf.anchors/com.papercut
Измените файл
/etc/pf.anchors/com.papercut
, добавив следующие строки:rdr пройти по протоколу lo0 inet tcp с любого на собственный порт 80 -> порт 127.0.0.1 9191
rdr передать по протоколу tcp en0 inet с любого на любой порт 80 -> 127. 0.0.1 порт 9191
rdr пройти по en1 inet proto tcp с любого на любой порт 80 -> 127.0.0.1 порт 9191
Проверить файл привязки:
sudo pfctl -vnf /etc/pf.anchors/com.papercut
Добавьте файл привязки в файл pf.conf:
sudo vi /etc/pf.conf
Затем добавьте следующие строки под каждым соответствующим разделом — например, строка rdr-anchor под текущей строкой rdr-anchor и якорь загрузки под текущим оператором load-anchor:
rdr-anchor "port80"
загрузить якорь "port80" из "/etc/pf.anchors/com.papercut"
Автоматически загружать файл pf.conf при запуске путем редактирования текущего демона для pf:
sudo vi /System/Library/LaunchDaemons/com.apple.pfctl.plist
Затем в разделе с подробным описанием аргументов программы
ProgramArguments pfctl
-e
-f
/etc/pf. conf Затем сохраните файл, выйдите и перезапустите сервер для проверки.
Чтобы протестировать этот метод вручную (перезагрузка не требуется), вы можете использовать команду pfctl:
sudo pfctl -ef /etc/pf.conf
Это загружает и включает
pf.conf
, который затем вызывает файл привязкиcom.papercut
.Перезапустите сервер приложений. (См. раздел Остановка и запуск сервера приложений).
Mac OS X 10.9 и более ранние версии
В Mac OS X 10.9 и более ранних версиях необходимо использовать команду ipfw
для изменения брандмауэра Mac:
sudo /sbin/ipfw добавить 102 fwd 127.0.0.1,9191 tcp с любого на любой 80 в
См. ipfw
справочная страница со всеми страшными подробностями!
Что такое порт 443? Техническое руководство пользователя О порте HTTPS 443
Порт 443 используется для защиты передачи данных между клиентом и сервером.
Вы пришли сюда в поисках ответов на свои вопросы о Порт 443 ?
Вы обратились по адресу.
В этой статье основное внимание будет уделено порту HTTPS 443 , тому, как он работает, что он защищает и зачем он нам нужен.
Перед этим давайте немного поговорим о порте и о том, как он работает.
Что такое порт?
Существуют разные типы сетевых портов, которые нумеруются по-разному, например, порт 22, порт 80, порт 443, порт 465 и т. д. С помощью этих портов компьютер направляет трафик в нужные места.
Возможно, вы знаете, что ваша система будет обращаться к хост-серверу при посещении веб-сайта.
Процесс ищет соединение через порт HTTP или HTTPS, в зависимости от того, какой из них связан с веб-трафиком.
После подключения к порту сервер отправляет обратно информацию о веб-сайте, которую ваша система получит на тот же порт.
Порты видят, что сетевые подключения делаются в нужное место. Кроме того, они гарантируют, что трафик не испортится.
Что такое порт 443?
Вы должны были посетить веб-сайт с протоколом HTTPS и серым замком в адресной строке браузера. Это означает, что веб-сайт подключается к серверу через порт 443. На веб-сайте включен сертификат SSL, и он защищен. Обычный веб-сайт без SSL обслуживается через порт 80. Порт 443 указывает на то, что сайт достаточно защищен для проведения онлайн-транзакций, не беспокоясь о киберкраже. Веб-сайт, подключающийся к серверу через порт 443.
Теперь вы понимаете, что порт 443 — это порт просмотра веб-страниц, используемый для защиты связи через веб-браузер или служб HTTPS.
Более 95% защищенных веб-сайтов используют HTTPS через порт 443 для безопасной передачи данных.
Обеспечивает шифрование и транспортировку через защищенные порты. Таким образом, данные, которые вы передаете по таким соединениям, обладают высокой устойчивостью к прослушиванию и прерыванию со стороны третьих лиц.
Более того, подлинность сервера, к которому вы подключаетесь удаленно, может быть достоверно подтверждена.
Как только соединение будет установлено, веб-браузеры будут отображать знаки, такие как замок, неповрежденный ключ и т. д., в области состояния вашего окна, информируя вас о защищенных соединениях.
Дешевые SSL-сертификаты от $8.00/год!
Получите самые низкие цены на проверенные бренды SSL от ClickSSL.
Купить сейчас
Почему выбран порт 443?
В настоящее время кибер-воры пытаются украсть информацию, которая перемещается между сервером и клиентом. Если на веб-сайте отсутствует сертификат SSL, это означает, что сайт работает по HTTP, а не по HTTPS, и информация, которая проходит между двумя концами, останется в виде обычного текста. Порт 443 гарантирует, что веб-сайт работает на защищенной версии HTTPS. Однако, если порт 443 недоступен, сайт будет загружаться по защищенному соединению через порт 80. Таким образом, кибер-воры не смогут перехватить текущую связь.
Как включить порт 443?
Чтобы включить порт 443, необходимо добавить его в брандмауэр Windows.
Шаг № 1: Перейдите в панель управления брандмауэром, выбрав «Пуск» >> «Выполнить» и введите «firewall.cpl».
Шаг 2: С левой стороны нажмите «Дополнительные настройки», затем нажмите «Правила для входящих подключений», отображаемые слева.
Шаг 3: Теперь нажмите «Новое правило» на правой панели под заголовком «Действие», как показано на изображении выше.
Шаг 4: Появится новое окно, в котором выберите «Порт» и нажмите кнопку «Далее».
Шаг 5: Теперь выберите «TCP» и «Определенные локальные порты», где вам нужно написать 443 в данном поле.
Шаг 6: На следующем экране «Разрешить подключение» и нажмите кнопку «Далее».
Шаг 7: Теперь выберите «Домен» и «Частный» и нажмите кнопку «Далее».
Шаг 8: Здесь, в следующем окне, введите имя «Образцы WCF-WF 4.0» и нажмите кнопку «Готово».
Чтобы продолжить работу с правилами для исходящих подключений, выполните шаги 2–8.
Что защищает HTTPS-порт 443 и зачем он нам нужен?
HTTPS обеспечивает безопасность данных или конфиденциальной информации, которыми обмениваются ваш браузер и сервер. Это гарантирует, что ваш интернет-провайдер (или кто-либо еще в сети) не сможет читать или вмешиваться в разговор, шифруя обмены и предоставляя конфиденциальность.
Сертификат SSL имеет значок замка, который появится в адресной строке при его установке. Это свидетельствует о том, что ваш сайт безопасен.
Но не заблуждайтесь в отношении этой функции надежной блокировки. Он, конечно, шифрует канал связи, но не гарантирует, что злоумышленник не сможет контролировать веб-сайт, к которому вы подключаетесь.
Более того, если на вашем сайте есть уязвимые места, хакеры воспользуются ими и скомпрометируют ваши данные. Установки сертификата SSL/TLS недостаточно, чтобы гарантировать, что ваш сайт никогда не будет атакован.
Обратите внимание, что хотя HTTPS будет шифровать данные прикладного уровня и защищать их, дополнительная информация, добавленная к сетевому или транспортному уровню, может быть раскрыта.
Когда ваш браузер устанавливает HTTPS-соединение, TCP-запрос отправляется через порт 443 для установления соединения. При этом данные, передаваемые между клиентом и сервером, шифруются. Но он не может защитить пользователей от атак с использованием отпечатков пальцев.
Тип информации, к которой может получить доступ злоумышленник, включает:
- IP-адрес и местоположение пользователя
- Размер данных
- Связанный веб-сайт
- Количество подключений
Теперь перейдем к тому, почему HTTPS-порт 443 важен. Если вы используете веб-сайт, который требует безопасности, например, для банковских операций, покупок и т. д., вы будете обмениваться платежной информацией на своем сайте.
Шифрование имеет решающее значение для защиты конфиденциальной информации. При обычном HTTP вся информация, которой вы обмениваетесь между вашим компьютером и веб-сайтом, будет доступна для чтения любому, поскольку она будет доступна в виде обычного текста.
Более того, ваши клиенты не захотят иметь дело с вашим бизнесом, если вы не уделяете большое внимание онлайн-безопасности и не демонстрируете подлинность. Сайт HTTPS может завоевать доверие вашего клиента.
Есть и другие преимущества, связанные с сайтом HTTPS, в том числе более высокий рейтинг в поисковых системах, обновленные уровни браузера и увеличение числа конверсий.
Как работает HTTPS?
HTTPS использует протокол шифрования, называемый Transport Layer Security (TLS) или Secure Sockets Layer (SSL), для шифрования связи.
Этот протокол обеспечивает безопасность связи с использованием инфраструктуры асимметричного открытого ключа. Эта система безопасности реализует два разных ключа для шифрования связи между двумя сторонами, известные как закрытый ключ и открытый ключ.
Владелец сети имеет контроль над закрытым ключом, и он находится на веб-сервере. Его функция заключается в расшифровке информации, которую шифрует открытый ключ.
Открытый ключ доступен всем, кто хочет безопасно взаимодействовать с сервером. Когда открытый ключ шифрует информацию, только владелец сети может расшифровать ее с помощью закрытого ключа.
Всякий раз, когда вы просматриваете сайт HTTPS и ваш браузер подключается к серверу, сервер отвечает своим сертификатом. Этот процесс называется рукопожатием SSL.
Цели:
- Убедиться, что клиент подключается к нужному серверу.
- Обе стороны должны иметь согласие на набор шифров. Он включает в себя, какой алгоритм шифрования будет использоваться при обмене данными.
- Обе стороны должны иметь согласие на любые необходимые ключи для этого алгоритма
Источник: Medium.com
Основной целью SSL-квитирования является обеспечение целостности данных и конфиденциальности информации, передаваемой между клиентом и сервером. Процесс рукопожатия SSL включает в себя несколько шагов, которые происходят между клиентом и сервером, и весь процесс выполняется в фоновом режиме. Точные шаги зависят от алгоритма обмена ключами и поддерживаемых наборов шифров.
Client Hello : Клиент запускает процесс с сообщением «Hello» серверу. Он включает в себя наборы шифров и версию TLS/SSL, поток случайных байтов (случайный клиент).
Server Hello : Сервер отправляет обратно сообщение «Hello» с SSL-сертификатом, выбранные шифровальные костюмы из списка отправленных клиентом и строку случайных байтов (случайный сервер).
Аутентификация : Затем клиент проверяет подлинность сервера с помощью предоставленного SSL-сертификата. Его необходимо сверить со списком открытых ключей доступных центров сертификации.
Premaster Secret : после подтверждения подлинности сервера и сертификата SSL клиент отправляет зашифрованную строку случайных байтов, используя открытый ключ сервера. Открытый ключ доступен с сертификатом SSL. Эту строку случайных байтов можно расшифровать с помощью закрытого ключа сервера. Этот процесс отправки зашифрованной строки случайных байтов называется Premaster Secret.
Расшифровка Premaster Secret : Сервер получает зашифрованную строку случайных байтов и расшифровывает ее своим закрытым ключом.
Генерация сеансового ключа : Теперь и клиент, и сервер создают сеансовые ключи, используя случайный клиент, случайный выбор сервера, набор шифров и предварительный секрет.
Клиент завершил сообщение : Клиент отправляет зашифрованное сообщение Finished с ключом сеанса.
Serve Finished Message: сервер, получив сообщение от клиента, отправляет собственное зашифрованное готовое сообщение с сеансовым ключом.
Защищенное соединение установлено : Таким образом завершается процесс квитирования SSL, и дальнейший обмен зашифрованными сообщениями будет осуществляться с использованием сеансовых ключей.