gifts2017

Защита данных ликбез.

Опубликовал Василий Казьмин (awk) в раздел Администрирование - Системное

Мотивом написания данной статьи стали вопросы о безопасности поднятые в комментариях к моим статьям. Так что же такое безопасность и с чем ее «едят»? Тут я бы хотел процитировать кузнеца из фильма «формула любви» - «Что один человек сделал, другой завсегда сломать может». Нет абсолютно безопасных систем — есть системы с повышенной безопасностью.

Защита данных ликбез.

Мотивом написания данной статьи стали вопросы о безопасности поднятые в комментариях к моим статьям. Так что же такое безопасность и с чем ее «едят»? Тут я бы хотел процитировать кузнеца из фильма «формула любви» - «Что один человек сделал, другой завсегда сломать может». Нет абсолютно безопасных систем — есть системы с повышенной безопасностью.

Что же нам предпринять что бы повысить безопасность нашей системы? Давайте по порядку:

  1. Поставить брандмауэр и ограничив тем самым площадь для атаки.

  2. Ограничить права пользователя для доступа к нашим таблицам на сервере баз данных см. примечание 1.

Начнем по порядку брандмауэр:

Что же такое брандмауэр?

Фаервол это некая программа которая фильтрует проходящую через нее информацию. Они работают на разных уровнях модели OSI/ISO — но мы рассмотрим только пакетный фильтр и и прокси (он же брандмауэр уровня приложений).

Какие брандмауэры бывают?

Будем выбирать из следующих вариантов:

  1. Microsoft ISA server

  2. Kerio firewall

  3. iptables

  4. PF

  5. IPFW

  6. IPFILTER

Microsoft ISA server и Kerio firewall будут исключены мной по следующим соображениям:

  1. Это платный и не дешевый продукт.

  2. По требованиям безопасности исходный код должен быть открыт. То есть данные системы не могут быть сертифицированы выше класса С2 американского или пятого класса нашего стандарта безопасности см примечание 2.

IPTABLES — прекрасный брандмауэр, но работает на линукс-системах.

Почему нет спросити вы?

Просто потому, что линукс — это только ядро, а системы на его базе это плод работы многих компаний. И тут я просто боюсь нарваться на спор какой из сборок линукс лучше. Вторая причина — некоторые сборки линукс ставят с собой кучу того, чего нам не потребуется, а отключать это все - не для новичков. Так что, красота — это когда ничего лишнего, и осмелюсь добавить сложного. Третий момент — это моя предвзятость. На клиентских машинах у меня прекрасно работает линукс, но как серверная система она мне не нравится. И это субъективно!!! Вот мои субъективные причины:

  1. Свалка в /etc

  2. Автоматическая разбивка диска при установке есть только некоторых дистрибутивах.

  3. Многие настройки по умолчанию не безопасны.

Что оcталось?

Оставшиеся варианты работают на BSD системах. Самые известные из них — это OpenBSD (цель проекта полностью безопасная система), NetBSD (цель проекта самая переносимая система, говорят, что она будет работать даже на кофеварке, если у той будет процессор) и FreeBSD (золотая середина, заточена на быстродействие). Почему не OpenBSD или NetSD? Первая сложна в установке, но не волнуйтесь мы будем использовать её штатный брандмауэр. А на кофеварку мы ставить его то же не будем — поэтому не NetBSD(шутка).

Установка.

Итак: получение дистрибутива.

Получить его можно с фтп сервера по адресу: ftp://ftp.freebsd.org/pub/FreeBSD/. Полный список источников: http://www.freebsd.org/releases/8.0R/announce.html. И ссылка на русскую документацию. Перед установкой НАСТОЯТЕЛЬНО РЕКОМЕНДУЮ ПРОЧЕСТЬ!!!

Скачали записали. Дальше вставляем записанный диск в DVD привод (надеюсь вы скачали и установили DVD образ) и видим экран из семи пунктов — нам нужен первый пункт. После загрузки мы видим выбор региона и выбираем 182 Russian Federation. Приятно видеть, что иностранный дистрибутив (американский) знает, что есть другие страны. В пункте OPTIONS я поменял только источник установки на CDROM (можно ставить и с фтп сервера и из многих других мест). После чего заходим в Partitions, тут я выбрал нажав клавишу английскую «A», весь диск, но его можно было и порезать вопрос для чего. Нажав «Q» мы видим запрос о том надо ли записывать загрузчик.

  1. Вариант это просто поставить стандартый MBR(без загрузчика).

  2. Стандартный загрузчик BSD(если есть еще системы).

  3. Ничего никуда не писать.

Дальше перейдя в label я рекомендую нажать «А», так как разбивка партиции на слайсы по умолчанию нас вполне устроит.

Distributions — здесь я рекомендую зайти в custom и добавить пункты ports и src — это программное обеспечение и исходные тексты ядра которые вам могут потребоваться в дальнейшем.

До нажатия comit ничего не будет записано. Сохраним же результаты нашей работы.

После распаковки и установки файлов sysinstall, а именно так называется программа в которой мы работали, предложит сделать еще пару настроек. Согласимся и перейдем к ним.

 

  1. Выбрав root password зададим пароль суперпользователя.

  1. Перейдем в Console и зададим шрифт Font я всегда выбираю IBM 866,

  2. Keymap Koi-8r .

  3. Screen map зададим как KOI-8R to IBM 866.

  4. Осталась зайти в ttys и выбрать cons25r.

  5. Возвращаемся через exit и задаём временную зону (Time zone).

  6. Кому как, а мне с мышь в консоли удобно. Заходим в mouse и выбираем enable. В 90% случаев мышь начинает работать. Exit.

  7. Networking — здесь мы зададим пару параметров.

    1. Interfaces — настроим ip адрес шлюз dns server. (задайте только внешний интерфейс)

    2. Поставить надо галочку Gateway — мы же должны через себя пропускать трафик.

    3. И SSHD — это даст нам возможность заходить на машину удаленно.

Уф.. Кажется все... Как же это элементарно сделать и сложно описать. Более подробно смотрите на виде которое я прикрепил. Перезагрузка....

Продолжение следует...

Продолжение после перезагрузки.

Что бы зайти на компьютер набираем root и пароль который мы для него задали. Надеюсь вы его ещё не забыли. Но работать из-под суперпользователя, так ещё называют пользователя root — это дурной тон администраторов windows систем (не всех правда). Так что давайте создадим нового пользователя. Сделать это можно с помощью sysinstall или скриптом adduser. Я предпочитаю второй вариант, просто потому, что он не сложнее, а возможностей предоставляет больше. А точнее он предоставляет возможность поставить класс пользователя, а это, если ставить программы, позволяет не утруждать себя их русификацией (если ставить из портов). Но об том позже.

Добавление пользователя.

freebsd#adduser

Username: ЖелаемоеИмяПользователя

Full name:Полное имя нашего пользователя можно писать по русски и с пробелами

Uid (Leave empty for default):Просто нажмите ввод

Login group [ad]:Просто нажмите ввод

Login group is ad. Invite ad into other groups? []:wheel //Если не указать, то пользователь не сможет получить права суперпользователя.

Login class [default]:russian // Это что бы работать с системой на родном языке.

Shell (sh csh tcsh nologin) [sh]:tcsh // Остальное кому что нравится

Home directory [/home/ad]:Просто нажмите ввод

Home directory permissions (Leave empty for default):Просто нажмите ввод

Use password-based authentication? [yes]:Просто нажмите ввод

Use an empty password? (yes/no) [no]:Просто ввод нам не нужно отсутствие пароля

Use a random password? (yes/no) [no]:Если лень придумывать пароль, то yes, иначе no, мне лень.

Lock out the account after creation? [no]:Просто ввод

И тут появиться то что вы ввели. Проверяйте. Правильно — yes иначе no. Если вы указали случайный пароль, то вам его покажут и спросят добавить ли еще пользователя.

Установка ip адресов.

В юниксподобных системах для задания ip адресов для сетевых интерфейсов(карт) есть команда ifconfig. Набрав эту команду в консоли(командной строке) — вы увидите список ваших интерфейсов. Так выглядит вывод этой команды на одном из моих брандмауэров:

rl0: flags=8843 metric 0 mtu 1500

options=8

ether 00:c0:0c:72:66:23

inet 192.168.11.10 netmask 0xffffff00 broadcast 192.168.11.255

media: Ethernet autoselect (100baseTX )

status: active

rl1: flags=8843 metric 0 mtu 1500

options=8

ether 00:e0:30:50:15:94

inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255

media: Ethernet autoselect (100baseTX )

status: active

rl2: flags=8843 metric 0 mtu 1500

options=8

ether 00:e0:4c:76:be:37

inet «Цензура. Здесь мой внешний ip» netmask 0xffffff00 broadcast «То же цензура»

media: Ethernet autoselect (100baseTX )

status: active

lo0: flags=8049 metric 0 mtu 16384

inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4

inet6 ::1 prefixlen 128

inet 127.0.0.1 netmask 0xff000000

pfsync0: flags=0<> metric 0 mtu 1460

syncpeer: 224.0.0.240 maxupd: 128

pflog0: flags=141 metric 0 mtu 33204

gif0: flags=8051 metric 0 mtu 1280

tunnel inet «Цензура. Здесь мой внешний ip» --> «Цензура. Здесь другой мой внешний ip»

inet 192.168.1.3 --> 192.168.0.1 netmask 0xffffff

gif1: flags=8051 metric 0 mtu 1280

tunnel inet «Цензура. Здесь мой внешний ip» --> «Цензура. Здесь другой мой внешний ip»

inet 192.168.1.3 --> 192.168.10.1 netmask 0xffffff

rl0, rl1, rl2 — это сетевые карты. lo0 — это интерфейс обратной петли. Вот выдержка из Википедии:

Виртуальный сетевой интерфейс

Все TCP/IP реализации поддерживают loopback механизмы, которые реализует виртуальный сетевой интерфейс исключительно программно и не связаны с каким-либо оборудованием, но при этом полностью интегрированы во внутреннюю сетевую инфраструктуру компьютерной системы. Любой трафик, который посылается компьютерной программой на интерфейс loopback тут же получается тем же интерфейсом.

Соответственно, Internet Protocol специфицирует сеть loopback. В IPv4 это сеть с префиксом 127/8 («this network», RFC 3330). Наиболее широко используемый IP адрес в механизмах loopback — 127.0.0.1. В IPv4, в него также отражается любой адрес в пределах от 127.0.0.0 до 127.255.255.255. IPv6 определяет единственный адрес для этой функции — 0:0:0:0:0:0:0:1 (также записывается как ::1), имеющий префикс ::1/128 (RFC 3513). Стандартное, официально зарезервированное, доменное имя для этих адресов — localhost (RFC 2606).

На системах Unix, интерфейс loopback обычно имеет имя lo или lo0.

Интерфейс loopback имеет несколько путей применения. Он может быть использован сетевым клиентским программным обеспечением, чтобы общаться с серверным приложением, расположенном на том же компьютере. То есть если на компьютере, на котором запущен веб сервер, указать в веб браузере URL http://127.0.0.1/ или http://localhost/ , то он попадает на веб сайт этого компьютера. Этот механизм работает без какого-либо активного подключения, поэтому он полезен для тестирования служб, не подвергая их безопасность риску, как при удаленном сетевом доступе. Подобным образом, пингование интерфейса loopback — это основной тест функционирования IP стека в операционной системе.

Почему я про него так подробно рассказываю, а для того, что бы не объяснять, почему мы этот интерфейс исключим из фильтрации брандмауэра. Однако давайте зададим настройки ваших сетевых карт:

ifconfig <ваша внешний сетевой интерфйс> inet <ваш внешний ip> netmask <уточните у провайдера>

ifconfig <ваша внутренний сетевой интерфйс> inet <ваш внутренний ip> netmask <маска вашей сети>

Если не угадаете внешний и внутренний интерфейс — нестрашно, всегда можно переставить провода. А вот с сетевой маской сложнее. Для начала, что это за «зверь»?

Сетевая маска.

В терминологии сетей TCP/IP маской подсети или маской сети называется битовая маска, определяющая, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети. Например, узел с IP-адресом 12.34.56.78 и маской подсети 255.255.255.0 находится в сети 12.34.56.0/24 с длиной префикса 24 бита. В случае адресации IPv6 адрес 2001:0DB8:1:0:6C1F:A78A:3CB5:1ADD с длиной префикса 32 бита (/32) находится в сети 2001:0DB8::/32.

Другой вариант определения— это определение подсети IP-адресов. Например, с помощью маски подсети можно сказать, что один диапазон IP-адресов будет в одной подсети, а другой диапазон соответственно в другой подсети.

Чтобы получить адрес сети, зная IP-адрес и маску подсети, необходимо применить к ним операцию поразрядной конъюнкции (логическое И). Например, в случае более сложной маски (битовые операции в IPv6 выглядят идентично)

Был у меня забавный случай. Принимали мы человека на должность системного администратора. И вот спрашиваю я его, он рассказывает складно так. И образование у него высшее. И тут на вопрос о маске подсети он отвечает. Ну я точного определения не помню, но это то, чем ограничевают доступ в интернет. После пары наводящих вопросов, он понял что сморозил глупость. На работу я его не взял. Маской доступ не закрывают и не открывают. Маской делят сеть на подсети и отделяют адреса компьютеров от адресов сетей.

Однако продолжим. Что бы все что мы натворили осталось после перезагрузки, нам надо это все добавить в /etc/rc.conf.

RC.CONF

rc.conf — это главный конфигурационный файл системы. В нем дожны быть строки жизненно важные для нашего будущего брандмауэра:

gateway_enable="YES"

ifconfig_<ваша внешний сетевой интерфйс> inet <ваш внешний ip> netmask <уточните у провайдера>

ifconfig_<ваша внутренний сетевой интерфйс> inet <ваш внутренний ip> netmask <маска вашей сети>

defaultrouter="ip шлюза вашего провайдера"

gateway_enable="YES" — должно присутствовать, т. к. мы это сделали при установке, да и один из интерфейсов должен был быть задан. Defaultrouter — должен был быть задан, но о нем мы еще не говорили. А это всего навсего адрес куда будут посланы все пакеты адреса назначения которых неизвестны нашей системе. У русских это слово из трёх букв.

Что мы еще не сделали? А мы с вами не задали мы адреса DNS.

Что такое DNS?

DNS (англ. Domain Name System — система доменных имён) — распределённая система (распределённая база данных), способная по запросу, содержащему доменное имя хоста (компьютера или другого сетевого устройства), сообщить IP адрес или (в зависимости от запроса) другую информацию. DNS работает в сетях TCP/IP. Как частный случай, DNS может хранить и обрабатывать и обратные запросы, определения имени хоста по его IP адресу — IP адрес по таблице соответствия преобразуется в доменное имя.

Или иначе это те машины которые скажут вам IP адрес mail.ru, ya.ru и т. д. Где же они задаются? А задаются они в файле /etc/resolv.conf вот пример моего:

# cat /etc/resolv.conf

search selenia.ru

nameserver 194.8.160.90

nameserver 195.131.52.130

nameserver 192.168.11.1

После подстановки DNS вашего провайдера мы можем сделать ping ya.ru и если все в порядке на этом пока закончить. Продолжение, как всегда следует.

Обычно после этого я ухожу из серверной в свой любимый кабинет.

Итак мы у себя в кабинете, в удобном кресле с чашечкой кофе (опционально).

Как же нам добраться до только что поставленного сервера? Если вы работаете в Linux, то ssh <имя пользователя(не root)>@<адрес машины>. Но как гласит статистика — 95% используют системы Windows. Этим системам ничего не известно ни о ssh ни о sftp. Поэтому давайте немного о программном обеспечении, для доступа:

PuTTY

Putty — свободно распространяемый клиент для протоколов SSH, TELNET и RLOGIN. Там все просто и информации в интернете достаточно.

WinSCP

WinSCP — графический клиент протоколов SCP и SFTP. Поддерживает интеграцию с pagent (putty). Его особенностью является возможность написания скриптов. И поддержка файловой синхронизации. Детальнее его описание можно посмотреть на http://winscp.net/eng/docs/lang:ru.

Брандмауэр.

Поскольку на FreeBSD присутствует пакетный фильтр портированный из OpenBSD не вижу причин его не использовать. Для начала маленькое отступление. Что бы что-то защищать надо знать что мы хотим защитить. И как должны реагировать на нарушения.

Случай из жизни:

Работал я в одной компании. И уже не помню почему, но оказался у президента компании в кабинете подключая не помню уже что к чему. В один прекрасный момент, на мониторе появляется порнуха. Мы с админом посмеялись и забыли об этом. Нам до личной жизни президента компании, да и до рядовых сотрудников дела нет. Политики то же не было и мы руководствуясь принципом не вмешательства и не разглашения ушли. Через два часа. В кабинете президента компании заседание директоров. И на экран во всеувидинье вылетает эта сценка. На что все поворачиваясь к Директору по IT (женщине): «Что это?». Та невозмутимо сообщает: «Порнуха». Финансовый директор: «А почему на моём компьютере такого нет?». Дело кончилось чисткой компьютера президента компании.

Почему же это произошло? Потому, что системный администратор не имел понятия, как реагировать на появившуюся порнографию. И принял единственно верное решение — не делать ничего.

Нам надо выработать так называемую «политику безопасности». Я рекомендую указать в ней следующие пункты:

  1. Какие ресурсы мы собираемся защищать. (нельзя защитить все)

  2. Кто имеет право использовать эти ресурсы.

  3. Кто отвечает за информационную безопасность.

  4. Как реагировать на нарушение безопасности.

    1. Предовать ли огласке? (по закону "Об информации, информационных технологиях и о защите информации" статье 16. должны)

    2. Определить приоритет отказоустойчивости по отношению безопасности.

Самое сложное скорее всего будет убедить руководство в необходимости данного документа. А без него дальнейшее бессмысленно или является самодейтельностью.

Допустим мы все же умудрились создать данный документ и теперь знаем что нам надо защищать, от кого и как.

Допустим наш внешний интерфейс на брандмауэре em0 ip xxx.xxx.xxx.xx2 шлюз xxx.xxx.xxx.xx1 внутренний интерфейс em1 ip 192.168.0.1 подсеть 192.168.0.0/24 запишем:

ext_if=«em0»

int_if=«em1»

my_lan=«192.168.0.0/24»

gw=«xxx.xxx.xxx.xx1»

Пусть у нас в сети есть веб сервер, сервер баз данных, терминальный сервер и сервер 1С. Возьмём листок блокнот и напишем:

www_srv=«192.168.0.2»

sql_srv=«192.168.0.3»

rdp_srv=«192.168.0.4»

Теперь нам надо определить какие снаружи порты нам нужны. И тут многие делают ошибку — я не знаю что мне надо я открою всё. Это только и ждут «трояны», «черви» и «бэк доры». Поверьте, о том что вам надо узнать намного проще, чем о взломе системы. Что же мы откроем? Я бы открыл: http — да и пожалуй все. Все остальное должно быть внутри сети. Но... Но не волнуйтесь как только мы включим брандмауэр, то сразу узнаем что нам надо.

inet_ports= «http 3128» # Сюда мы будем дописывать по необходимости

Теперь какие порты нужны для доступа к нашему брандмауэру? Только ssh. Обычно у меня он является ещё и почтовым сервером и веб сервером, и сервером DNS, и сервером DHCP — так что сюда то же можно в последствии дописать много.

self_ports=«ssh»

Теперь давайте определим места откуда наши внутренние сервисы будут доступны:

serv_users = «ip1 ip2 ... ipN»

Теперь какие нужны опции.

set skip on lo0

scrub in all

Думаю этого вполне достаточно. Первая опция нормализует входящий трафик, вторая не фильтрует пакеты на интерфейсе обратной петли.

Теперь займёмся переадресацией. У нас вроде только один адрес, а серверов целых три.

rdr on $ext_if proto tcp \

from { $serv_users } \

to $ext_if port http \

tag RDR_TAG $www_srv port http

Как это звучит по русски? Пакеты приходящие на внешний интерфейс по протоколу tcp экранирование перевода строки от пользователей таких-то экранирование перевода строки на порт http экранирование перевода строки помечаем тегом RDR_TAG и переадресуем на веб сервер порт http.

rdr on $ext_if proto tcp \

from { $serv_users } \

to $ext_if port 3128 \

tag RDR_TAG $rdp_srv port 3128

Пакеты приходящие на внешний интерфейс по протоколу tcp экранирование перевода строки от пользователей таких-то экранирование перевода строки на порт 3128 экранирование перевода строки помечаем тегом RDR_TAG и переадресуем на веб сервер порт 3128.

А переадресацию На SQL сервер — давайте оставим на домашнее задание.

Но как же пользователи внутри нашей сети? Они не попадут на наш www сервер по внешнему ip адресу. Давайте их переадресуем.

rdr on $int_if proto tcp \

to ($ext_if:0) port http \

tag RDR_TAG $www_srv port http

Теперь давайте разберёмся с исходящими пакетами. Наверное неплохо было бы скрыть адрес в пользователя из локальной сети и поставить наш внешний адрес вместо него. Это называется натирование или ip маскарадинг.

nat on $ext_if from $my_lan to any -> ($ext_if:0)

Перейдем теперь к правилам фильтрации. Правила в pf работают по принципу победы последнего из правил. То есть чем ниже правило — тем оно важнее.

# Политика

block drop all # Все что ниже не будет разрешено — запрещено

pass on $ext_if icmp # разрешаем пинг

pass on { $int_if $ext_if } from self # разрешим трафик от брандмауэра

pass in on $int_if from $my_lan to port { $inet_ports } # разрешаем входящий трафик к внешним портам

pass out on $ext_if from $my_lan to { $inet_ports } # Разрешим исходящий трафик к внешним портам

pass in $ext_if tagged RDR_TAG # Разрешаем трафик помеченный как переадресация.

pass out $int_if tagged RDR_TAG #

В принципе минимальный набор... Осталось только определить откуда можно по ssh на брандмауэр заходить. Это будет домашним заданием.

Теперь этот файл сохраняем как pf.conf и отправляем на брандмауэр.

Если вам что-то не понятно, задавайте вопросы, но сначала советую почитать http://house.hcn-strela.ru/BSDCert/BSDA-course/apcs02.html.

Если вы не делали ничего сверх описанного, то файл вы сохранили в домашней папке пользователя под которым заходите на брандмауэр. Теперь его надо поместить в директорию /etc

#cp ~/pf.conf /etc/

и добавить разрешение на запуск брандмауэра.

#echo 'pf_enable=«Yes»' >> /etc/pf.conf

Теперь запустим сам брандмауэр.

#pfctl -nf /etc/pf.conf

Этим мы проверим файл на ошибки. Не забывайте перед внесении изменений тестировать на ошибки. Если все хорошо то:

#/etc/rc.d/pf start

 

Продолжение следует....

 

Примечание 1: 1С использует только одного пользователя, поэтому если вы даете доступ напрямую к 1С, то теоретически можно разрушить базу или внести в неё любую другую информацию. Как вариант это атаки типа «инъекция» или «переполнение буфера». Так же вы можете получить успешную атаку на отказ в обслуживании как связанную с особенностью защиты 1С с помощью аппаратных ключей, так и с другими особенностями реализаций сервера 1С.

Примечание 2: Классы безопасности

В "Оранжевой книге" определяется четыре уровня доверия - D, C, B и A. Уровень D предназначен для систем, признанных неудовлетворительными. По мере перехода от уровня C к A к системам предъявляются все более жесткие требования. Уровни C и B подразделяются на классы (C1, C2, B1, B2, B3) с постепенным возрастанием степени доверия.

Всего имеется шесть классов безопасности - C1, C2, B1, B2, B3, A1. Чтобы в результате процедуры сертификации систему можно было отнести к некоторому классу, ее политика безопасности и уровень гарантированности должны удовлетворять заданным требованиям, из которых мы упомянем лишь важнейшие.

Класс C1:

  • доверенная вычислительная база должна управлять доступом именованных пользователей к именованным объектам;

  • пользователи должны идентифицировать себя, прежде чем выполнять какие-либо иные действия, контролируемые доверенной вычислительной базой. Для аутентификации должен использоваться какой-либо защитный механизм, например пароли. Аутентификационная информация должна быть защищена от несанкционированного доступа;

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

  • должны быть в наличии аппаратные и/или программные средства, позволяющие периодически проверять корректность функционирования аппаратных и микропрограммных компонентов доверенной вычислительной базы;

  • защитные механизмы должны быть протестированы на предмет соответствия их поведения системной документации. Тестирование должно подтвердить, что у неавторизованного пользователя нет очевидных способов обойти или разрушить средства защиты доверенной вычислительной базы;

  • должны быть описаны подход к безопасности, используемый производителем, и применение этого подхода при реализации доверенной вычислительной базы.

Класс C2 (в дополнение к C1):

  • права доступа должны гранулироваться с точностью до пользователя. Все объекты должны подвергаться контролю доступа;

  • при выделении хранимого объекта из пула ресурсов доверенной вычислительной базы необходимо ликвидировать все следы его использования;

  • каждый пользователь системы должен уникальным образом идентифицироваться. Каждое регистрируемое действие должно ассоциироваться с конкретным пользователем;

  • доверенная вычислительная база должна создавать, поддерживать и защищать журнал регистрационной информации, относящейся к доступу к объектам, контролируемым базой;

  • тестирование должно подтвердить отсутствие очевидных недостатков в механизмах изоляции ресурсов и защиты регистрационной информации.

Класс B1 (в дополнение к C2):

  • доверенная вычислительная база должна управлять метками безопасности, ассоциируемыми с каждым субъектом и хранимым объектом;

  • доверенная вычислительная база должна обеспечить реализацию принудительного управления доступом всех субъектов ко всем хранимым объектам;

  • доверенная вычислительная база должна обеспечивать взаимную изоляцию процессов путем разделения их адресных пространств;

  • группа специалистов, полностью понимающих реализацию доверенной вычислительной базы, должна подвергнуть описание архитектуры, исходные и объектные коды тщательному анализу и тестированию;

  • должна существовать неформальная или формальная модель политики безопасности, поддерживаемой доверенной вычислительной базой.

Класс B2 (в дополнение к B1):

  • снабжаться метками должны все ресурсы системы (например, ПЗУ), прямо или косвенно доступные субъектам;

  • к доверенной вычислительной базе должен поддерживаться доверенный коммуникационный путь для пользователя, выполняющего операции начальной идентификации и аутентификации;

  • должна быть предусмотрена возможность регистрации событий, связанных с организацией тайных каналов обмена с памятью;

  • доверенная вычислительная база должна быть внутренне структурирована на хорошо определенные, относительно независимые модули;

  • системный архитектор должен тщательно проанализировать возможности организации тайных каналов обмена с памятью и оценить максимальную пропускную способность каждого выявленного канала;

  • должна быть продемонстрирована относительная устойчивость доверенной вычислительной базы к попыткам проникновения;

  • модель политики безопасности должна быть формальной. Для доверенной вычислительной базы должны существовать описательные спецификации верхнего уровня, точно и полно определяющие ее интерфейс;

  • в процессе разработки и сопровождения доверенной вычислительной базы должна использоваться система конфигурационного управления, обеспечивающая контроль изменений в описательных спецификациях верхнего уровня, иных архитектурных данных, реализационной документации, исходных текстах, работающей версии объектного кода, тестовых данных и документации;

  • тесты должны подтверждать действенность мер по уменьшению пропускной способности тайных каналов передачи информации.

Класс B3 (в дополнение к B2):

  • для произвольного управления доступом должны обязательно использоваться списки управления доступом с указанием разрешенных режимов;

  • должна быть предусмотрена возможность регистрации появления или накопления событий, несущих угрозу политике безопасности системы. Администратор безопасности должен немедленно извещаться о попытках нарушения политики безопасности, а система, в случае продолжения попыток, должна пресекать их наименее болезненным способом;

  • доверенная вычислительная база должна быть спроектирована и структурирована таким образом, чтобы использовать полный и концептуально простой защитный механизм с точно определенной семантикой;

  • процедура анализа должна быть выполнена для временных тайных каналов;

  • должна быть специфицирована роль администратора безопасности. Получить права администратора безопасности можно только после выполнения явных, протоколируемых действий;

  • должны существовать процедуры и/или механизмы, позволяющие произвести восстановление после сбоя или иного нарушения работы без ослабления защиты;

  • должна быть продемонстрирована устойчивость доверенной вычислительной базы к попыткам проникновения.

Класс A1 (в дополнение к B3):

  • тестирование должно продемонстрировать, что реализация доверенной вычислительной базы соответствует формальным спецификациям верхнего уровня;

  • помимо описательных, должны быть представлены формальные спецификации верхнего уровня. Необходимо использовать современные методы формальной спецификации и верификации систем;

  • механизм конфигурационного управления должен распространяться на весь жизненный цикл и все компоненты системы, имеющие отношение к обеспечению безопасности;

  • должно быть описано соответствие между формальными спецификациями верхнего уровня и исходными текстами.

Такова классификация, введенная в "Оранжевой книге". Коротко ее можно сформулировать так:

  • уровень C - произвольное управление доступом;

  • уровень B - принудительное управление доступом;

  • уровень A - верифицируемая безопасность.

 

 

Скачать файлы

Наименование Файл Версия Размер
video 157
.7z 33,46Mb
12.12.09
157
.7z 33,46Mb Бесплатно

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Артур Аюханов (artbear) 12.12.09 08:35
Я правильно понял, что статья еще не закончена? :)
2. Василий Казьмин (awk) 12.12.09 13:27
Да... Ставлю это всё гораздо быстрее чем описываю...
3. Djony Admin (antb) 12.12.09 18:16
Размер видео файла = 0. Скачать невозможно
4. Василий Казьмин (awk) 12.12.09 21:23
5. Алексей (Alav) 14.12.09 10:12
Зачем "По требованиям безопасности исходный код должен быть открыт. " -если 90 % пользователей все равно глядеть на него не будет. А если и посмотрят, то все равно не поймут. Тогда уж надо с Windows на Linux, т.е. на открытое программное обеспечение переходить. Не говоря уже о том, что 1С и безопасность мало совместимые вещи.
6. Dmitry Afanasyev (afanasko) 14.12.09 10:36
(5)
Не говоря уже о том, что 1С и безопасность мало совместимые вещи.

Это почему же? :D

Автору: Респект за статью! Но слова "фаерфол" и "фаервол" режут глаз.
7. Вячеслав Кадацкий (marsohod) 14.12.09 10:49
Немного сумбурно...
Так, давайте по порядку...
1. Мне кажется, что правильнее было бы назвать статью "Первые шаги по установке FreeBSD для 1С-ников" :D
2. Статья в процессе написания. Рановато выложили в общий каталог.
3. Забыли упомянуть Agnitum Outpost Firewall - на мой взгляд один из лучших файрволов для Windows-систем.
4. Хотелка: раз уж речь зашла о безопасности, то очень кстати было бы объяснить "на пальцах" почему в Linux-системах нет антивирусов, почему у них врожденный иммунитет к "заразе". :)
8. Василий Казьмин (awk) 14.12.09 11:01
(5) - безопасность должна быть доказуема. Я конечно понимаю, что есть люди, для которых и бинарник является исходником, но их мало. Кстати закрытость кода не сильно затрудняет поиск дыр, а вот выявлению и исправлению ошибок препятствует. Стабильность, надежность и безопасность Linux - сильно зависит от сборки(я писал это не цельная система и вариантов слишком много). FreeBSD - это законченный продукт с открытым исходным кодом. Если честно, то и Windows вполне надёжная система, при условии грамотного администрирования.

(6) Огромное спасибо... Меняю на брандмауэр...
9. ValeriTim (ValeriTim) 14.12.09 11:10
Если честно, все это конечно хорошо, но для одинесника, по моему, сложновато. Если уж вы захотели описать простую, быструю и, что самое главное, не сложную установку BSD/Linux сервера, то надо было бы выбрать другой дистрибутив.
Сам использую Ubuntu. Ставится за 10 минут, никаких лишних программ, никакого графического интерфейса.
Но, если честно, пока не пойму какое отношение все это имеет к 1С ...
10. Василий Казьмин (awk) 14.12.09 11:19
(7)

Миф №1 под UNIX нет вирусов и антивирусов.
Миф №2 у UNIX встроенный иммунитет к вирусам.

Субъективно: В моем понятии слово windows и безопасность лежат в разных плоскостях. Поэтому, я не верю, что на "дырявой" системе можно построить безопасность.

Про 1С. БЕЗОПАСНОСТЬ = СТОИМОСТЬ / УДОБСТВО.
11. Василий Казьмин (awk) 14.12.09 11:21
(9) - Почему Ububntu? Может Fedora? Или Debian? OpenSuSe? Может... Вариантов много... И у всех свои нюансы...
12. ValeriTim (ValeriTim) 14.12.09 11:32
(11) я не агитирую к какому то дистрибутиву, а всего лишь написал что использую сам.
И я бы еще не стал отбрасывать керио - да он не бесплатен, но он того стоит ! И уж в нем описать правила маршрутизации будет куда проще, чем в том же IPFW. Думаю, что стоит сразу предупредить читателя, что только для описания принципа работы брандмауэра придется написать как минимум 4 такие статьи. И после прочтения оных вопросов появится на порядок больше, чем было до того. :D
13. Василий Казьмин (awk) 14.12.09 11:59
(12)
Субъективно: В моем понятии слово windows и безопасность лежат в разных плоскостях. Поэтому, я не верю, что на "дырявой" системе можно построить безопасность.


По требованиям безопасности исходный код должен быть открыт. То есть данные системы не могут быть сертифицированы выше класса С5 американского или пятого класса нашего стандарта безопасности.
14. Вячеслав Кадацкий (marsohod) 14.12.09 12:44
(13) Так бы сразу и говорили... :D
А каким классам безопасности соответствует FreeBSD? И альтернативные варианты?
15. p m (pm74) 14.12.09 12:48
интресный ликбез
смысл последнего параграфа не совсем понятен
16. Алексей (Alav) 14.12.09 12:53
Ну по требованиям безопасности компьютер должен находится в бетонно-свинцовом бункере и не должен быть подключен ни к ЛВС ни тем более к Интернету.
17. ValeriTim (ValeriTim) 14.12.09 13:29
(13) Ну, в таком случае, посмотрите сколько заплаток безопасности выходит к той же фрюхе и попробуйте вспомнить из анекдота почему неуловимый Джо такой неуловимый. Мы все очень хорошо умеем рассуждать о "дырявости" виндов, но почему то вспоминать о "дырявости" BSD/Linux систем не хотим и считаем их чуть ли не эталоном безопасности. :D
Я сильно сомневаюсь что большая часть контор будет сертифицировать свои маршрутизаторы ...
18. Василий Казьмин (awk) 14.12.09 13:44
(16) Критерии я указал в статье... Дернул из оранжевой книги...
(17) Сколько? Заплатка... При монтировании флешки пользователь может получить привилегии суперпользователя если встанет на левую ногу коснется правой рукой левого уха и т.д... Угу.. Есть такое... Только по умолчанию монтировать что-либо может только суперпользователь, 2 - у меня на серверах обычно стек USB отключён. Не нравится FreeBSD - OpenBSD найдено 2 уязвимости за 15 лет. Опечатка в документации - критическая ошибка, повод не допускать код до релиза...
19. GSoft. (GSoft) 14.12.09 14:09
а я бы кстати послушал и про линукс на клиентских машинах
20. Василий Казьмин (awk) 14.12.09 14:19
(19) Какова задача? То есть какие приложения должны на нём работать?
21. GSoft. (GSoft) 14.12.09 15:06
стандартный офисный набор + 1С
22. GSoft. (GSoft) 14.12.09 15:06
стандартный офисный набор + 1С, 7-локально, 8-ка в терминале
23. Djony Admin (antb) 14.12.09 20:41
Стандартный офисный набор в виде OpenOffece присутствует в практически в любом десктопном дистрибутиве Linux`a.
24. Александр Зубцов (iov) 15.12.09 00:57
аппаратные фаерволы не раскрыты.
:)
почему BSD/Linux - надежность.
почему не BSD/Linux - больше вопросов чем ответов.
и так до бесконечности.

И самый вопрос - при чем тут 1С?
7.7 - дыра на дыре.
8.0 8.1 защита уже начала поддаваться не только гуру.
да и прой цель не взлом и получение пароля а именно кража информации..
причем не всегда все и сразу.. ;)
И не многие компании готовы тратить 40% на опеспечение защиты информации.
25. Василий Казьмин (awk) 15.12.09 08:36
(24) Украсть информацию через сеть сложнее, чем через пользователей. А вот завалить - пожалуйста... Те кто не готов платить, не теряет столько денег на сетевых атаках или финансовые потери для них приемлемы.

Из аппаратных знаю CISCO, D-Link, 3-Com. Первая падала у провайдера раз в неделю - что не добавило ей рейтинг (субъективно). Две оставшиеся, да и не только они - это Linux ядро 2.6 с iptables. Правда на семинаре Microsoft рассказывал про аппаратные железки с ISA, но озвученная стоимость... Короче ISA при этом стоил в 10 раз меньше...

(22) Запустить windows приложение на linux клиенте можно тремя способами:
1. Wine - работает не все... А если работает, то не всегда стабильно.
2. Виртуальная машина - требует боле-менее нормального железа.
3. Клиент к терминальному серверу. Пока нет поддержки 6 версии rdp протокола. Citrix.
26. Владислав Цылёв (vet7777) 15.12.09 10:08
Comodo Firewall - бесплатный, работает под windows XP, Vista, и Windows 7, по рейтингам в тройке лидеров.... ;)
27. Wolf_DA (Wolf_DA) 15.12.09 10:12
(25) Полностью с Вами согласен по поводу безопасности, открытости кода и то что windows не место в этой нише. Стоимость шлюза+файл-сервера+прокси+ftp+т.д. на FreeBSD/OpenBSD в разы (много раз) меньше стоимости решений на windows.
(24) При чем 1С? Сейчас практически у всех доступ в сети по широкому каналу в инет и кража данных 1С это лишь частный случай.
28. blackoperator (fastwriter) 16.12.09 08:29
Плюсанул. Очень поучительно. Особенно для российских айтишников, в большинстве своем зомбированных мелкомягкими.
29. Василий Казьмин (awk) 16.12.09 08:45
(28) Как только цена копии мелкомягких превысит 60 рублей (пиратка)... IT-шников сильно поубавится...
30. Наталья Власова (vlas) 16.12.09 11:39
интересно почитать с таким вот прочтением, спасибо
31. Vlad П (JIGIT) 16.12.09 13:22
спасибо за труд и + однозначно
32. Vlad П (JIGIT) 16.12.09 14:44
33. Кирилл Краснов (kirillkr) 16.12.09 23:33
Работаю уже давно с Linux'ом и 1С. То что здесь написано - большой труд, но бесполезный. Абсолютно...
По новому российскому законодательству в сертифицированных конторах запрещено использовать 1С 8.x в качестве программы по учету ЗП, т.к. она не сертифицирована. И какие бы вы ухищрения не ставили в проверке это не поможет.
По каналам: здесь тоже дела обстоят туго. На сколько я знаю (могу сильно ошибаться) еще ни одна версий Linux не сертифицирована как связующее звено по шифрованию канала между офисами (ОСОБЕННО ЭТО КАСАЕТСЯ ДЛЯ ОФИСОВ РАЗДЕЛЕННЫХ ГРАНИЦАМИ - те, у которых канал проходит через госграницу). Проблемы также есть с сертификатами у HP. Лучше обстоят дела с Cisco, но какую категорию защиты они обеспечивают - только узнаю.

Главное что здесь полезно описано - это категории защиты, в которых указывается, что любая деталь по доступу к этой информации ДОЛЖНА БЫТЬ ДОКУМЕНТИРОВАНА. Т.е. пользователь именно такой, какой указан. Имеет доступ к тому-то тому и только с этого рабочего места, только выполнив соответствующие шаги и по другому никак.. И т.д.

(0) awk, я прошу прощения за столь резкий отзыв, но именно с этим сейчас приходится разбираться и столько подводных камней, которые куда более критичны, чем выбор дистрибутива, автоматического разбиение диска и т.п. Поэтому статью лучше назвать по-другому: установка 1С на Linux'е или еще как-нибудь, но только не Защита данных.
34. hren hren (hren) 17.12.09 03:19
35. Василий Казьмин (awk) 17.12.09 11:35
(34) Минусуй тогда. Но можно прокомментировать почему?

(35)
1. 80% контор плевать на сертификацию.
2. Причем здесь ЗУП или ЗИК?
3. Сертифицирована - то ли ALT, то ли ASP, то ли ещё кто - врать не хочу.
4. Причем здесь каналы? Я про VPN еще да же не упоминал.
5. Категории защиты - это обобщение оранжевой книги. Автор её не я.
6. Там написано в заголовке еще ликбез? Не относитесь к статье как к чему то большему, чем оно есть.
Спасибо за интересный комментарий...
36. Василий Казьмин (awk) 17.12.09 12:07
(35) Уточняю по поводу первого пункта:
Давайте разделим понятие деюро и дефакто. Деюро 98% систем на рынке продуктов IT не имеют право на "жизнь" из-за отсутствия тех или иных документов. Однако, 70% дефакто попадают под те или иные требования. Да же всеми горячо любимая операционная система Microsoft попадает под класс С2, а до B1 не дотягивает парой-тройкой пунктов. Так же известная вам FreeBSD или OpenBSD никогда не станут UNIX. Просто в силу того, что UNIX - это зарегистрированная торговая марка. Принадлежит эта марка Novell и сертификация на соответствие стоит БОЛЬШИХ денег. Как специалисту по информационной безопасности, проводящему аудит фирмы, мне плевать чем вы защищены, мне важно выявить узкие места и дать рекомендации по их исправлению. Как хакеру, мне тем более безразлично наличие у системы бумажек. Конечно юридическая безопасность - это не маловажный факт, но пока вы малое или среднее предприятие риск связанный с попаданием на этом менее одного процента. В силу отсутствия ресурсов контролирующих органов. Плюс откаты не столь велики.
37. Саша Ильенко (legion1C) 17.12.09 12:36
А кто нибудь сталкивался с 8.2? По правде сказать, я работал только на 77. Сейчас пытаемся перейти на 8.2. Задача состоит в подключении через инет большого количества пользователей. Какие могут быть угрозы безопасности?
38. Василий Казьмин (awk) 17.12.09 13:14
(37)
Примечание 1: 1С использует только одного пользователя, поэтому если вы даете доступ напрямую к 1С, то теоретически можно разрушить базу или внести в неё любую другую информацию. Как вариант это атаки типа «инъекция» или «переполнение буфера». Так же вы можете получить успешную атаку на отказ в обслуживании как связанную с особенностью защиты 1С с помощью аппаратных ключей, так и с другими особенностями реализаций сервера 1С.

Я бы рекомендовал SSL и сертификаты для пользователей. VPN не ах-как удобно. Пиши в личку отвечу более подробно...
39. g120776 (g120776) 20.12.09 16:07
Статья хорошая, и очень толковые ответы на комментарии.
Сам, когда работал админом, ставил FreeBSD, правда использовал IPFW.

Вопрос:
Есть ли существенные различия в системах PF и IPFW?

Спасибо за статью, и заранее благодарю за ответ.
40. Василий Казьмин (awk) 21.12.09 08:38
Различия есть, вот только не смогу рассказать какие. Давно им не пользовался... Как минимум это синтаксис. Плюс, в ipfw выигрывает первое правило, а в pf последние. В ipfw можно указать маску пакета для фильтрации, а в pf для этого надо задействовать стороннюю программу. А вообще вот тут: http://vkontakte.ru/topic-265_21379072 обсуждение было.
41. Boris Leleko (Boris-Leleko) 09.02.10 14:56
Пока не проверяется трафик на уровне приложения, нельзя говорить о полноценной безопасности. То что здесь описано, это просто фильтрация пакетов, а внутрь пакетов никто не заглядывает. Дорогие брадмауеры типа ISA сервера именно это и делают. И деньги платятся за этот функционал. Кто-нибудь знает бесплатный брандмауер, который анализирует содержимое пакетов?
42. Василий Казьмин (awk) 10.02.10 11:10
(41) perl + tcpdump. :) В статье части про проксирование не хватает...
43. Leonid Stepanushkin (lstep) 07.12.11 04:12
44. Тигран Лалаян (hackerk700) 21.12.11 15:40
А про проксирование ничего не будет?
45. stark temp (stark.temp) 19.01.12 11:45
Спасибо автору за статью, будем ждать продолжения данной темы.
46. genadyichnew genadyichnew (genadyichnew) 21.01.12 14:25
Спасибо. Меняю брандмауэр
47. Илья Кабышев (BAPPKAH) 01.02.12 23:27
Статья хорошая, и очень толковые ответы на комментарии.

Спасибо за статью, и заранее благодарю за ответ.
48. Hamlet (Hamlet) 01.03.12 19:19
Спасибо автору за статью, понравилось систематизирование элементарных вещей, разбросанных в инете по комментам, в одну статью-мануал с толковыми разъяснениями.
Надеюсь, автор закончит свой труд.
49. Serg Serega (Crazy1CC) 01.03.12 23:12
Статья интересная, комментарии не менее интересны
50. Вячеслав Салин (juker) 14.05.12 12:44
Приведенное описание безопасности, на мой взгляд, актуально не только в связке с 1С. Данная статья хорошо описывает принцип документированности уровней безопасности, что является самой сложной частью и основой безопасной системы организации. Плюсую.
51. Andrey Dyak (electronik) 28.05.12 12:11
Автору респект за труд молодец собрал кучу информации виложеной на сотне сайтов. Но на мой взгляд по даной теме можно писать и писать и создавать целые книги и сайты. Тема настольно обширна что имеет множество нюансов и особеностей.
52. EfiopReal (Созинов) 26.07.12 12:50
(25) awk,
Из аппаратных знаю CISCO, D-Link, 3-Com. Первая падала у провайдера раз в неделю - что не добавило ей рейтинг (субъективно). Две оставшиеся, да и не только они - это Linux ядро 2.6 с iptables. Правда на семинаре Microsoft рассказывал про аппаратные железки с ISA, но озвученная стоимость... Короче ISA при этом стоил в 10 раз меньше...

CISCO требует очень серьезных навыков, чтобы реально хорошо ее настроить, то что она падала раз в неделю говорит либо о недостатке компетенции админа у провайдера, либо провайдер экономил и взял железку не того класса, отсюда и падения, т.к. не справлялась с нагрузкой. И да, цены на такое оборудование колются, но в средних и крупных компаниях без этого никак, хотя у нас до CISCO стоял сервер с FreeBSD (и до сих пор стоит, только задействован под другие задачи), и вроде справлялся с задачами маршрутизации (админ у нас неплохой был).
53. Вячеслав Салин (juker) 02.10.15 22:36
Rjvfy(52) EfiopReal, Как вам команда включения интерфейса циски - no shutdown (дословный перевод на русский - включить)! :)
Ну и нормальный антоним включения - shutdown (выключить). :)
... Чисто субъективно - циска не падает, если её не ронять.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа