TGViewer
LinuxCamp | DevOps LinuxCamp | DevOps @linuxcamp_tg · 13.6K subscribers
Post #609 6.01K
Безопасность сервера на котором уже крутится твой мега-стартап

Иногда безопасность ломается не из-за супер-0day, модной вирусни, user/password от бд: postgres/postgres (все совпадения случайны), а из-за банального: у тебя на VPS торчит порт, который временно открыл и забыл. А интернет не забывает, его постоянно сканируют.

Что реально происходит в сети

У твоего сервера есть публичный IP. Для внешнего мира он как витрина, туда стучатся все кому не попадя. И по этой витрине ходят роботы. Очень типичная цепочка выглядит так:


Скан → найден порт → баннер/версия → подбор пароля/эксплойт → закрепление


Сканируют все, всегда, без личных причин. Просто потому что это дёшево и масштабируется.

Кто ты воин?

Если хочешь быстро почувствовать как оно, посмотри на свой сервер глазами атакующего (с другого хоста):


nmap -sS -sV -Pn -p- <твой ip>


Тебя интересует только открыт ли 22 (ssh), а любые неожиданные вещи: 2375 (Docker API), 9200 (Elasticsearch), 5432 (PostgreSQL), 6379 (Redis), 8080/8000 (админки), 9090 (метрики/Prometheus) и т.д.

Главная мысль: "Если сервис слушает 0.0.0.0, он уже считается публичным!", даже если там есть пароль.

Почему пароль слабая защита

Пароль - это последняя линия. Первая линия - это, чтобы до сервиса вообще не дошли. Потому что есть брутфорс и словари, есть утечки паролей, есть баги в сервисах, есть неверные настройки, есть админки без rate-limit. И даже без взлома, открытый порт = лишний шум в логах + лишняя нагрузка.

База: закрыть все, кроме нужного


Самый спокойный подход: default deny, и дальше открываешь только то, что реально нужно. Пример минимального nftables: разрешаем установленные соединения, loopback, SSH и HTTP/HTTPS, остальное в drop.


nft add table inet filter

nft 'add chain inet filter input { type filter hook input priority 0; policy drop; }'

nft add rule inet filter input ct state established,related accept
nft add rule inet filter input iif lo accept

nft add rule inet filter input tcp dport 22 accept
nft add rule inet filter input tcp dport { 80, 443 } accept


Если хочешь сделать ещё правильнее, ограничь SSH по IP (например, только твой офис/VPN):


nft add rule inet filter input ip saddr <YOUR_IP>/32 tcp dport 22 accept


И сразу становится заметно: даже если на сервере случайно поднялся Redis на 0.0.0.0, то извне его не видно.

Важный вывод

Если порт открыт, то им кто-то уже интересуется. Сделай так, чтобы интересоваться было нечем.

LinuxCamp | #security
  • 👍 39
  • 🔥 12
  • ❤‍🔥 3
  • ❤ 3
  • 🥱 1
More from @linuxcamp_tg
  1. Sep 28, 2026Проекту GNU вчера исполнилось 43 года 1983 год: Ричард Столлман объявил планы разработать…
  2. Sep 25, 2026Linux будет работать на ноутах с Snapdragon X2. Qualcomm добавляет полноценную поддержку L…
  3. Sep 24, 2026Так все по делу)) Советует же самый быстрый фикс LinuxCamp | #memes
  4. Sep 23, 2026Планы на 3 октября — прийти на RWB Infra x Security Meetup Мы направим прожекторы на инфра…
  5. Sep 22, 2026Ещё одна рекордная неделя для AI-разработки в Linux. На прошлой неделе в ядро попало 1 634…
  6. Sep 17, 2026Открыл плейлист, а как выйти - непонятно 😁 LinuxCamp | #memes
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →