Tuesday, September 1, 2020

Dangers of air-gapped networks

 Некоторые мысли по поводу безопасности изолированных сетей


Мне доводилось довольно много возиться с тем, что называют "air-gapped networks" - то есть с сетями, которых ни при каких обстоятельствах к Интернету подключать нельзя. Запрет этот диктуется, естественно, соображениями безопасности - "а вдруг нас хакнут". Идея предотвратить хаканье на корню отключением от Интернета, конечно, привлекательна своей простотой и радикальностью, но тем не менее, принимающие такое решение зачастую упускают из вида разные последствия, безопасность не улучшающие, а наоборот.


1. Самое очевидное - патчи и обновления антивирусов. Всякий раз при проектировании кто-нибудь говорит "ну, мы, конечно, будем их раз в месяц снимать, прогонять через систему санитизации и устанавливать", но с этим есть две проблемы:

1.1 Этого попросту не происходит. Всегда всем не до того.

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

В результате, если уж в нашу надёжно изолированную сеть каким-то образом проникла малварь, использующая недавно найденные дырки - ей будет раздолье. А проникнуть она может разными путями - либо процедура санитизации её попросту не обнаружит ввиду своих устаревших баз, либо юзер забьёт на инструкции и её обойдёт.


2. Отсутствие уведомлений - как об угрозах безопасности (антивирус нашёл малварь), так и всяких других (отказал хард-диск). К слову, смысл всякой high availability, будь то RAID или VRRP, лишь в том, чтобы позволить системе жить, пока мы, админы, устраняем неполадку. Но для этого нужно вовремя об этой неполадке узнать - а то за одним диском откажет другой, и прощай, RAID. 

Теоретически, можно поставить какой-нибудь SMS gateway для отсылки уведомлений админам на телефон - но на практике этого никто не делает.


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


4. Если сети маленькие, местные - значит, и бэкап будет лишь местный, а следовательно, могущий пасть жертвой пожара или ешё какого несчастья вместе с теми данными, что ему положено защищать. Опять же, можно вложиться, поставить бэкап-сервер или дисковый массив в удалённом надёжном месте, заказать отдельный шнурок для связи, настроить поверх него IPsec или иной вид шифрования трафика и бэкапить туда - но на практике, конечно, никто не станет этого делать.


5. Невозможность использовать существующие user identities - заводи отдельную Active Directory или иной каталог, раздавай юзерам отдельные пароли. Как легко догадаться, приводит это к паролям, записанным на пришпилиных к экранам бумажках, к десяти юзерам под одним аккаунтом и прочим прелестям.

Теоретически, можно использовать PKI со смарткартами и USB-токенами - и в обычных сетях, и в изолированных. Но:

5.1 Это, опять же, требует инвестиций,

5.2 Регуляции могут запрещать тыкать в "чистый" комп изолированной сети тот же девайс, что и в обычные,

5.3 Возникает вопрос отзыва сертификатов. Можно импортировать CRL, но опять же, кто будет это делать и как часто? А использовать OCSP вообще невозможно.


6. Отсоединённость от мировых часов. В принципе, существует множество железячных time servers, умеющих получать сигнал точного времени по GPS, GLONASS и даже по радио, и затем распространять его в сети по протоколам NTP & PTP, но это опять же инвестиция, которую никто совершать не желает.

Пока сеть остаётся синхронизованной внутри себя, относительно произвольного источника, это не прямая угроза безопасности. Однако, неприятно провести массу времени за копанием в логах, расследуя инцидент, и лишь потом обнаружить, что внутрисетевые часы с момента последней настройки убежали вперёд на 43 минуты, и ты всё это время рыл не там. А можно и не обнаружить.


В общем, мне думается, что оправдана полная изоляция может быть разве что если природа наших данных такова, что не позволяет нам доверять абсолютно никому, включая производителей операционных систем и файерволлов. В менее радикальных случаях лучше сеть к Интернету всё же подключать - через файерволл (или два последовательных файерволла, от разных вендоров), не открывающий никаких сервисов наружу, позволяющий лишь исходящий трафик, лишь на определённые сервисы и лишь для определённых машин в DMZ. Все прочие могут вовсе не иметь маршрута на 0.0.0.0/0.


Это позволит устранить большую часть рисков, оставляя угрозу взлома снаружи в разряде сугубо теоретических. Иначе же получается, что ради психологического спокойствия "ничто не связывает нас с Интернетом и его опасностями" мы подвергаемся опасностям с других сторон, причём куда более вероятным.