Search
Write a publication
Pull to refresh
1
0
Send message
UFO landed and left these words here
UFO landed and left these words here
У такой географии есть простое объяснение — толпы «DevOps» инженеров, которые не знают основ администрирования и оставляют тысячи и более сервисов светить портами в интернет, сканировали, знаем ;) А, например, там нет Китая (где тоже все очень печально в этом плане), так как GFW намертво отсекает UDP, так как многие пытаются делать VPN via UDP.

Просто надо не забывать, что кроме iptables есть ip6tables. Просто раскладывать по всем тачкам свои типовые rules.v4 и rules.v6. Default to deny на входе — просто вопрос гигиены.

Подобные белые списки в iptables не всегда достаточны.
Многие сервисы по-дефолту биндятся еще и на ipv6, который по-дефолту опять же, часто включен. И получаем мы открытый сервис. Так что либо бинд на локалхост, либо отключение ipv6 либо (зачем?) iptables6
Мне проще новый сервис один раз настроить на localhost и больше не думать об этом.

Ну из такой логики, проще не есть сахар и зубы вообще не чистить или не пачкаться и мыться раз в полгода… Однако, всё таки, чревато.


Просто поверьте, что торчать открытыми портами наружу — не есть гуд (в независимости от использования тех портов).


Как пример:
допустим у вас есть сервис XYZ-1.0 слушающий порт 1234. Вы его настроили в xyz.conf, например:


[XYZ]
LocalHostOnly = true

А завтра по обновлению на версию 1.1 случилось:


  • опцию убрали и заменили на ListenerAddr = 127.0.0.1, ...(т.е. при апдейте вы проигнорили/проглядели N варнингов подряд, что LocalHostOnly is obsolete — т.е. есть устаревшая штука и закончится с версией 1.1);
  • оно было всегда localhostonly, а конфиг xyz.conf вдруг стал case-sesitive (и ваша LocalHostOnly теперь просто переменная INI-файла без смысловой нагрузки);
  • что-то (апдейтом) или кто-то (у вас несколько "поваров" у одной кастрюли, а шеф-повару следить лень) затер весь этот конфиг и/или инклюд оригинальным-стоковым, где теперь ListenerAddr = any;
  • если то был инклюд, он вдруг потерялся (и после рестарта действует стоковый конфиг с listen from anywhere).
  • у версии 1.1 был баг, который внезапно игнорит LocalHostOnly-опцию;
  • у совтины появился плагин (и он активирован по умолчанию ибо "необходим как вода"), слушающий порт 1235 с пробросом JSON-а развернутого в формат XYZ на listener к порту 1234;
  • и т.д. и т.п.

Смысл понятен, надеюсь...

Ну если так, то чем тогда вообще unix-socket не угодил

Не все слушает unix socket.
dns/ntp/почта для локальных нужд, или какой-то свой сервис, который просто не умеет в unix socket.


Если завтра что-то поставится/расширится на другой порт/протокол (вы видимо всегда читаете changelog-и всего чего апдейтите)?

Да в том-то и дело, что не очень читаю и апдейчу.
Мне проще новый сервис один раз настроить на localhost и больше не думать об этом.
Но это наверное применимо, только когда машина одна.
Если машин несколько и они ходят друг к другу на какие-то внутренние службы, проще будет уже вариант с iptables (там есть разные способы, но они уже более сложные).

чем настраивать iptables, проще настроить сервисы слушать только loopback.

Ну если так, то чем тогда вообще unix-socket не угодил (я про /var/run/memcached/memcached.sock).


Вопрос-то не про проще, а как правильно...


  1. Система из одной машины? Всегда ли порты службы за NAT (не торчат наружу)?


  2. Если завтра что-то поставится/расширится на другой порт/протокол (вы видимо всегда читаете changelog-и всего чего апдейтите)?


  3. Вы разницу между открыть слушающее соединение и изменить правило в firewall (netfiltering), в контексте "делегирования привелегий" представляете?
    Кто может создать listener? (кто угодно), а кто может открыть порт? (рут/судоер)

И т.д. и т.п… На самом деле есть куча всего, почему то, что вы написали (без firewall) — как минимум не комильфо.

На мой вкус, одно другому не третье. Оставить в фаерволе только то, что нужно И объяснить сервисам, чтобы слушали только там, где нужно.

Имхо, чем настраивать iptables, проще настроить сервисы слушать только на 127.0.0.1.
И в конце не полениться проверить выхлоп netstat -nl

По-умолчанию memcache прослушивает весь UDP трафик на порте 11211 в последней версии.

На даже минимально нормально настроенном сервере (с портами наружу) совершенно по барабану кто где что слушает.
Т.е. тупо не хватало чего-нибудь типа белого списка по accept на входящие, например простейшего:


# NTP
iptables -A INPUT -i $device -m state --state NEW -p udp --dport 123 -j ACCEPT
...
# memcached
iptables -A INPUT -i $device -m state --state NEW -p tcp --dport 11211 -j ACCEPT
...

А ещё лучше чего-нибудь следующего вида (хотя бы для udp, если вообще нужен):


...
# memcached from my-subnet only:
iptables -A INPUT -i $device -m state --state NEW -s $my_sub_net -p tcp --dport 11211 -j ACCEPT
iptables -A INPUT -i $device -m state --state NEW -s $my_sub_net -p udp --dport 11211 -j ACCEPT
...

Детский сад, честное слово.
С connectionless протоколами нужно быть особенно осторожным. Ударение на всегда.
Если сегодня какой-нибудь сервис не слушает UDP, то завтра каким-нибудь коммитом оно всё может измениться.
Так то ведь все читают changelog после каждого обновления для каждой софтины. Ага.

Если вы про самоподписанный то с некоторых пор у клиента в броузере больно много шума от этого. Возня с исключениями и тд. Ну и в целом, с точки зрения клиента ситуация непонятная «некий поц с горы клянется что сайт тот за кого себя выдает» это неубедительно.
А внести свой СА в список корневых стоит негуманно дорого.

Для сервиса VPN, к примеру, самоподписанные то что доктор прописал.
Для DV сертификатов (которые бесплатно дает LE) достаточно и раз в 10-20 лет. Остальное и правда маркетинг.
Надо делать раз в 3 месяца, как в LetsEncrypt :)
и бесплатно.
Все остальное глупый маркетинг.
CA то денег побольше срубят. А как это поможет безопасности?
Вроде ж сертификаты прекрасно отзываются в случае компроментации. В чем смысл снижать срок действия сертификатов? Даже наоборот — чаще меняем сертификаты, нужно больше телодвижений, больше вероятность ошибки.

А, то есть теперь с клиента можно брать деньги не раз в три года, а раз в два. И акция "успейте купить трехлетний сертификат". Всё целях безопасности, конечно (и то, и другое). :)

3. Если вдруг произойдёт взлом бесплатного сертификата, то денежную компенсацию никто вам не предоставит.
впервые слышу про взлом выданных сертификатов. Там уж скорее были случаи, когда выдавались вторые, и третьи сертификаты.

Information

Rating
Does not participate
Registered
Activity