В данной статье будет рассмотрена настройка стандартной Linux-системы (с учетом стандартного ПО, поставляющегося в комплекте с дистрибутивом) для соответствия стандарту PCI DSS на примерах RHEL 5 и Fedora Core 12.
Автор: Кулишов Фёдор, специалист по ИБ компании "Positive Technologies"
В данной статье будет рассмотрена настройка стандартной Linux-системы (с учетом стандартного ПО, поставляющегося в комплекте с дистрибутивом) для соответствия стандарту PCI DSS на примерах RHEL 5 и Fedora Core 12. Для каждого требования стандарта будут даны рекомендации по настройке системы, как на основе существующих технических стандартов (CIS, NIST, SANS), так и на основе опыта настройки подобных систем.
В качестве целевого Linux-дистрибутива был выбран RedHat Enterprise Linux, т.к. он, наряду с Novell SUSE Enterprise Linux Server/Desktop, пользуется наиболее широкой поддержкой производителей аппаратного и программного обеспечения и имеет множество опций коммерческой поддержки, из-за чего широко применяется в бизнес-сообществе, в том числе среди компаний, ведущих операции с пластиковыми картами. FC12 служит базой для будущего RHEL6.
Примечание. Данная публикация представляет лишь одну из точек зрения на проблему аудита соответствия требованиям PCI DSS. Аудиторы, проверяющие конкретные системы обработки данных, могут иметь свое видение безопасных настроек, не всегда совпадающее с рекомендациями этой статьи, т.к. некоторые пункты стандарта допускают множество толкований. Однако данная работа может послужить отправной точкой для получения RH-систем, не только удовлетворяющих требованиям стандарта, но и настроенных безопасно.
Основными разработчиками стандарта PCI DSS (Payment Card Industry Digital Security Standard) являются платежные системы Visa и Master Card. Как указано в официальном документе «Требования и процедура аудита безопасности», «... стандарт безопасности данных индустрии платежных карт (PCI DSS) разработан в целях упрощения внедрения и распространения мер по обеспечению безопасности данных о держателях карт. В основе данного стандарта лежат 12 требований, сгруппированных таким образом, чтобы упростить процедуру аудита безопасности. Данный стандарт предназначен для использования аудиторами при проверке торгово-сервисных предприятий и поставщиков услуг на соответствие его требованиям» (в соответствие с [1]).
Стандарт предъявляет множество технических и организационных требований, например:
Требования предъявляются ко всей инфраструктуре (относящейся к обработке данных пластиковых карт) проверяемого объекта. В то же время, существуют как общепризнанные (такие, как семейство CIS, SANS, NIST), так и различные внутрикорпоративные стандарты информационной безопасности, где даются четкие рекомендации по технической настройке определенных целевых систем. При этом установление соответствия между требованиями PCI DSS и, например, требованиями CIS для конкретной ОС представляется нетривиальной задачей.
Дело осложняется тем, что часто требования PCI DSS «размыты», то есть с первого взгляда не очевидно, какие подсистемы необходимо под них настраивать, дадут ли полученные системные настройки полное покрытие требований и существуют ли вообще техническая возможность выполнить конкретное требование стандарта. С другой стороны, CIS и другие технические стандарты защиты оперируют конкретными параметрами системы (например, для UNIX-систем в CIS приводятся даже сценарии, выполняющие требуемые настройки).
Тем не менее, при более глубоком изучении стандарта PCI DSS оказывается, что многие, поначалу казавшиеся неконкретными, требования могут быть технически удовлетворены. Предлагаемая Вашему вниманию статья ставит своей целью сближение абстрактного «аудиторского» языка стандарта PCI DSS с четкими терминами системных администраторов и технических специалистов по информационной безопасности. В качестве целевой системы выступают дистрибутивы RHEL5 и Fedora 12, причем последняя рассмотрена как база для выходящего скоро RHEL6 (доступного в бета-версии с апреля 2010 года). Структура статьи в целом повторяет структуру PCI DSS, для каждого пункта стандарта приводятся соответствующие технические рекомендации.
Попытки конкретизировать требования PCI DSS применительно к определенным операционным системам предпринимались уже неоднократно. Примерами могут служить публикации [2], [3] и [4]. Однако ни в одной из работ не были приведены полные и детальные настройки ОС; анализ требований не покрывал технической части стандарта целиком и в основном ограничивался несколькими главами PCI DSS, либо был слишком общим и не затрагивал конкретных настроек ОС (команд, конфигурационных файлов, списка применимого ПО).
Здесь и далее будем считать, что на целевой системе RHEL установлено только ПО из стандартной поставки; исключения из этого правила оговариваются отдельно. Предполагается, что узлы под управлением RHEL выступают либо в роли серверов, либо в роли рабочих станций сети обработки данных; серверы RHEL также могут выполнять некоторые функции в DMZ. Настройка межсетевых экранов между DMZ и сетью обработки данных, а также между DMZ и сетью Интернет детально не рассматривается, т.к. в крупных организациях Linux-узлы (с установленными дистрибутивами общего назначения) обычно не выполняют функции маршрутизаторов и шлюзов безопасности.
Многие требования являются сугубо организационными или их применение для самой операционной системы нелогично: например, многие пункты главы 3 описывают порядок хранения данных платежных карт, которые в реальной жизни отражаются в базе данных, то есть на уровне прикладного, а не системного, ПО. Если в тексте не упомянуто требование, это означает, что оно организационное или не применимо к данной платформе. Для краткости изложения требования PCI DSS часто приводятся в сокращенном виде.
ВАЖНО. Несмотря на то, что настройка ОС и прикладного ПО, несомненно, важна для безопасной обработки данных, немалую часть стандарта PCI DSS занимают требования к документации и внедрению. Более того, во многих технических требованиях стандарта указано, что определенные механизмы должны быть не только настроены, но и внедрены. Это означает, что документации тоже стоит уделить внимание, хотя бы для того, чтобы успешно пройти аудит на соответствие стандарту PCI DSS.
Стандарт содержит главы 9 (физический доступ к данным платежных карт), 11 (тесты на проникновение) и 12 (политики безопасности), которые не описывают защищенную настройку ОС. Таким образом, в части настройки ОС они игнорируются.
Краткое содержание
Глава начинается с сугубо организационных требований, технические требования приводятся с пункта 1.1.5.b. Как следует из описания, большая их часть требует настройки Netfilter и при необходимости — tcp_wrappers. Однако в стандарте CIS для RHEL упоминается только настройка tcp_wrappers (пункт 3.2), а Netfilter в текущей редакции (v.1.1.2 от 06.2009) упоминается лишь один раз, в части запуска служб при старте системы; настройки правил фильтрации трафика там не оговариваются.
Далее, возникает вопрос, к какому типу трафика отнести VPN-туннели до смежных центров обработки данных: к локальному, DMZ или Интернет-трафику. Более того, в следующих главах стандарта не уделяется должного внимания VPN-каналам. Также не совсем ясно, допускает ли стандарт передачу Интернет-трафика от узлов сети обработки данных через прокси-серверы в DMZ.
Проанализировав требования, можно сделать следующий вывод о рекомендуемой архитектуре сети:
1.1.5.b Выявить разрешенные небезопасные сервисы, протоколы и порты, проверить их необходимость, а также то, что механизмы защиты документированы и внедрены, путем изучения стандартов конфигурации межсетевых экранов и маршрутизаторов и настроек каждого сервиса.
Основной смысл этого требования — избавиться, где это возможно, от прикладных протоколов, передающих трафик (как данные, так и информацию аутентификации) в открытом виде. Мешать исполнению этого требования будут:
На этом шаге настройки межсетевых экранов (в стандартной поставке это Netfilter и tcp_wrappers) не рассматриваются, требования к ним будут приведены ниже.
Приблизительный аналог данного требования в CIS — главы «Minimize Boot Services» и «Minimize Xinetd Network Services» (номера 3 и 4).
1.2.1.а Проверить, что входящий и исходящий трафик ограничен только необходимыми для среды данных о держателях карт соединениями и что ограничения документированы
Собственно, данное требование и относится к настройкам системных и прикладных межсетевых экранов. При этом в нем не уточняется, на каких узлах сети должен фильтроваться трафик; будем считать, что под это требование подпадают настройки как маршрутизаторов/шлюзов безопасности, так и серверов, рабочих станций и портативных компьютеров пользователей, имеющих доступ в сеть обработки платежной информации.
Для выполнения этого требования необходимо создать четкие ACCEPT-правила, желательно по принципу «один сервис — одно правило» (из-за особенностей Netfilter на один сервис будет в действительности приходиться два правила — по одному в цепочках INPUT и OUTPUT или оба в FORWARD, если целевой узел — маршрутизатор), в iptables и при необходимости дополнить их настройками tcp_wrappers в /etc/hosts.allow.
Очевидно, межсетевой экран должен работать на старте системы. В большинстве случаев это решается включением сервиса iptables на старте системы:
chkconfig iptables on
Тем не менее, в некоторых случаях системному администратору может быть удобнее поместить список правил фильтрации в сценарий, запускаемый при старте системы. Этот сценарий может вызываться, например, из /etc/rc.d/rc.local. Удобство такого подхода — сценарий всегда перед глазами, при необходимости можно быстро изменить и применить правила. Недостаток описан в требовании 1.2.2.
Косвенное следствие этого требования — отключение протокола IPv6 в случае, если он не используется для передачи данных. В системах на базе RHEL для этого необходимо запретить загрузку модуля ipv6.ko, добавив следующую запись в файл внутри каталога /etc/modprobe.d (например, /etc/modprobe.d/blacklist.conf):
install ipv6 /bin/true
В результате модуль поддержки IPv6 не будет загружаться, даже если этого потребует какое-либо приложение или часть ОС (например, ip6tables). Команда
modprobe ipv6
также откажется загружать модуль; единственным способом загрузки при таких настройках останется использование insmod.
Подобные действия можно выполнить и для других сетевых протоколов, не использующихся в системе (SCTP, …).1.2.1.b Проверить, что весь иной входящий и исходящий трафик явно запрещен
Решается установкой стандартных политик межсетевого экрана через iptables в DROP:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP,
а также путем запрета всего неразрешенного трафика в tcp_wrappers с помощью следующей записи в
/etc/hosts.deny: ALL: ALL
1.2.2 Проверить, что конфигурационные файлы маршрутизаторов синхронизированы, например, рабочие конфигурационные файлы и конфигурационные файлы, используемые при перезагрузке маршрутизатора, имеют одинаковую безопасную конфигурацию
Формулировка, приведенная в тексте требования, вполне ясна. Однако стоит отметить, что это требование также применимо к настройке Netfilter на серверах и рабочих станциях.Вы можете проверять на совпадение вывод команды iptables-save и файл правил /etc/sysconfig/iptables. Процедуру несложно оптимизировать при помощи текстовых фильтров и md5sum.
Необходимо помнить, что если правила фильтрации трафика описаны не в стандартном сценарии, запускаемом при старте системы (см. п. 1.2.1.а), то автоматизировать процедуру будет гораздо сложнее.
Tcp_wrappers в подобной проверке синхронизации настроек не нуждается.
1.3.2 Проверить, что входящие Интернет-соединения ограничены только адресами, находящимися в DMZ
Потребуется настройка серверов (см. п. 1.2.1.а) и маршрутизатора/шлюза безопасности на границе сети обработки данных и DMZ. Таким образом, трафик будет фильтроваться и на шлюзе, и на узлах сети обработки данных.
1.3.3 Проверить, что отсутствуют прямые входящие и исходящие маршруты между сетью Интернет и средой данных о держателях карт
Формально требование является частью 1.2.1.а, однако имеет более широкие последствия.
Отсюда вытекает следующее:
1.3.5 Проверить, что исходящий трафик из среды данных о держателях карт имеет доступ только к IP-адресам, расположенным в DMZ
Формально является частью требований 1.2.1.а и 1.3.3, однако не дает ответа на вопрос, как расценивать VPN-трафик между сетями обработки данных, расположенными на разных площадках и соединяющихся через VPN-туннель, проходящий через Интернет.
1.3.7 Проверить, что базы данных расположены во внутренней сети, отделенной от DMZ
Данная настройка тривиальна, однако проверка в условиях большой DMZ-сети может быть затруднена.
Первым шагом проверки может быть запуск nmap с узла внутри DMZ:
nmap -sS -sV -T5 dmz-net/dmz-mask
nmap -sU -sV -T5 dmz-net/dmz-mask
Может оказаться, что СУБД разрешено прослушивать только loopback-интерфейс или только локальный UNIX-сокет; кроме того, доступ к порту может быть закрыт межсетевым экраном. В этом случае потребуется провести анализ вручную или использовать специализированный сканер (способный авторизоваться на целевых узлах) для выявления запущенных баз данных.
С этим пунктом можно сопоставить требование CIS 4.18 с доработками по остальным базам данных (Oracle, IBM DB2 и т.д.).
1.3.8 Для нескольких межсетевых экранов и маршрутизаторов проверить работоспособность механизма трансляции адресов для предотвращения раскрытия внутренних адресов
Из этого требования явно следует, что сеть обработки данных не должна иметь реальных IP-адресов, т.к. в любом случае будет использоваться NAT.
1.4.а Проверить, что на все мобильные и принадлежащие сотрудникам компьютеры, имеющие прямой доступ в сеть Интернет и используемые для доступа к локальной сети организации, установлены персональные межсетевые экраны
Netfilter входит в стандартную поставку, необходимо только проверить настроенные в нем правила фильтрации трафика аналогично требованиям пункта 1.2.1.а.
В этом и следующем пункте подразумеваем, что RHEL/Fedora установлены на рабочие ноутбуки пользователей. В таком случае не лишними будут и организационные меры защиты, предотвращающие вынос подобных устройств с данными и внешних носителей информации за контролируемый периметр; такие меры рассматриваются в пунктах 9.6 — 9.9 стандарта PCI DSS.
1.4.b Проверить, что настройки персонального межсетевого экрана выполнены в соответствии со стандартами организации и не могут быть изменены пользователем
Применение правил фильтрации трафика не должно вызвать трудностей. Настройки же привилегий пользователей, напротив, требуют более тщательного подхода и будут рассмотрены далее в главе 7.
Для выполнения последних двух требований (1.4.а и 1.4.b) также целесообразно будет специальным образом настроить граничные межсетевые экраны, чтобы вне зависимости от изобретательности пользователей (имеющих привычку искать способы избавиться от навязанных свыше ограничений) трафик до подобных узлов был жестко ограничен.
Краткое содержание
Требования этой главы имеют намного больше общего с CIS, нежели требования предыдущей. Соответствующие пункты CIS RHEL – главы 3,4, п. 2.3, 8.2, 9.4, 11.2, SN.8. Однако в дополнение к настройкам самой ОС здесь придется воспользоваться и внешними средствами – сканерами портов и средствами подбора паролей.
2.1 Всегда следует менять установленные производителем настройки по умолчанию перед установкой системы в сетевую инфраструктуру
Речь идет о паролях для сетевых устройств и точек Wi-Fi доступа, строках доступа SNMP и т.п. Требование подразумевает ручную проверку (без которой в большинстве случаев не обойтись), однако есть шанс избежать заметной части трудоемких работ, использую специализированный сетевой или оффлайн-инструмент подбора паролей.
В качестве сетевого инструмента подбора паролей могут быть использованы такие продукты как, например, XSpider, MaxPatrol или THC Hydra, словари перебора которых можно дополнить по своему усмотрению. Недостаток Hydra состоит в необходимости вручную указывать адреса и порты; при желании этот инструмент можно посредством сценариев связать с Nmap, распознающим запущенные сервисы на сканируемых узлах.
Кроме того, существуют и оффлайн-инструменты подбора паролей, имеющие более высокое быстродействие, чем сетевые. В случае Linux такой инструмент должен будет скачать локальную базу хэшей (/etc/shadow), определить используемый алгоритм (authconfig --list, обычно md5 или sha512) и провести атаку на хэши уже на локальном узле, с которого запущено сканирование. Например, подобный функционал реализован в сканере MaxPatrol (от компании Positive Technologies). Самый известный открытый оффлайн-взломщик паролей –John the Ripper, в последнее время популярность набрал также RainbowCrack, способный вести перебор еще и на GPU.Разумеется, требуется исключить использование пустых паролей, для чего нужно проверить отсутствие таковых в /etc/shadow, после чего запретить авторизацию по пустым паролям в ssh, добавив в /etc/ssh/sshd_config следующую строку:
PermitEmptyPasswords no
Значение «no» установлено для этого параметра по умолчанию, поэтому следует лишь убедиться, что в файле настроек не указано значение «yes».
Запрет на использование пустых паролей есть в CIS, п. 9.2. Кроме того, п. 11.4 предусматривает включение pam_cracklib для анализа паролей при их создании или смене.
ВАЖНО. Стоит отметить, что процедуры сканирования PCI ASV запрещают интенсивный перебор паролей (чтобы не создавать чрезмерный трафик и не подвергать пользователей угрозе блокировки), речь идет только о проверке настроек по умолчанию. В RHEL-системах отсутствуют учетные записи с заранее определенными именами пользователей и паролями (исключение составляет анонимный FTP в тех случаях, когда такой доступ должен быть запрещен), поэтому формально нет необходимости применять инструменты подбора паролей. Тем не менее, если есть возможность безопасно применить взлом паролей путем перебора для исследования стойкости паролей – его стоит применить.
2.2.а Изучить стандарты конфигурации всех системных компонентов. Проверить, что стандарты конфигурации учитывают положения общепринятых отраслевых стандартов (SANS, NIST, CIS)
Потребуется настроить целевые узлы в соответствии с требованиями общепринятых (например, CIS) либо корпоративных стандартов (которые зачастую составляются на основе общепринятых). Для оценки соответствия настроек целевого узла заданным требованиям существует множество коммерческих сканеров (MaxPatrol, Symantec SCCS, Nessus, Acunetix и т.п.), которые могут заметно упростить трудоемкую процедуру проверки.
Однако не стоит слепо полагаться на стандарты и автоматизированные средства; ошибки возможны везде, потому не следует пренебрегать ручным анализом.
Рис. 1 – Блокирование пользователей в FC12 (MaxPatrol)
Например, CIS RHEL v.1.1.2 в пункте SN.8 предписывает блокировать пользователей после определенного числа неудачных попыток входа в систему. Рекомендуемые настройки подходят только для RHEL4 с модулем pam_tally, для 5й версии они теряют смысл, т.к. при неизменном имени модуля он имеет уже другие параметры; кроме того, вместе со старой доступна и новая версия модуля — pam_tally2. При этом стандарт официально поддерживает 5ю версию. В новых системах, в частности Fedora 12, настройки отличаются даже от RHEL 5 (настройка pam_tally2 одинаковая, но FC12 не может использовать pam_tally).
В сканере MaxPatrol корректно реализована поддержка всех современных RHEL-систем.
2.2.1 Для нескольких системных компонентов проверить, что выполняется правило "один сервер - одна основная функция". Например, веб-сервер, сервер СУБД и DNS-сервер следует размещать на разных компьютерах
Для выполнения этого требования можно воспользоваться любой из существующих технологий виртуализации. Для RHEL 5 официально поддерживается Xen, однако в RHEL 6 от него отказались в пользу KVM. Оба решения предлагают похожий функционал и отличаются лишь реализацией; так, в качестве основной причины отказа от Xen в новых версиях дистрибутива была названа сложность его реализации на уровне ядра ОС и неясные перспективы включения исходного кода Xen в официальную версию ядра Linux.
Также можно добавить, что Xen не поддерживает режим «перегрузки», при котором виртуальным машинам предоставляется больше процессорных ядер, чем их физическое количество на сервере виртуализации. Такой режим часто применяется для тестирования, разработки и хостинга, когда на виртуальные серверы приходится небольшая нагрузка. В таком случае стоит использовать KVM, а не Xen.
Кроме Xen и KVM, упоминания заслуживает также проект OpenVZ, не включенный в дистрибутивы Linux, однако широко применяющийся для VPS-хостинга и являющийся основой для коммерческого продукта Virtuozzo. OpenVZ позволяет более гибко настраивать выделение ресурсов для виртуальных машин. Из недостатков стоит отметить спектр гостевых ОС: в настоящий момент поддерживается только Linux.
Существует множество коммерческих (или закрытых) средств виртуализации, среди которых можно упомянуть VMWare ESX, Virtuozzo и Microsoft Hyper-V.
2.2.2 Для выборки из нескольких системных компонентов проверить включенные сервисы и протоколы. Проверить, что ненужные или небезопасные сервисы и протоколы выключены или их использование обосновано и документировано
Формулировка, приведенная в тексте требования, вполне ясна; более того, пункты требования выполняются при соблюдении требований CIS к запуску демонов на целевых узлах (главы 3, 4 CIS). Суть большинства этих требований заключается в использовании команды
chkconfig daemon_name on|off,
которая для каждого выбранного сервиса включает или отключает его загрузку при старте ОС на предопределенных уровнях запуска (для самостоятельных сервисов и компонентов xinetd синтаксис одинаков).
По пп. 2.2.2 и 2.2.4, в дополнение к выполнению требований CIS, можно отключить ненужные модули ядра, например, поддержку пока что экзотических сетевых протоколов, таких как SCTP, аналогично примеру из пункта 1.2.1.a, а также модули отсутствующего на данном сервере/рабочей станции/ноутбуке оборудования.
2.2.3. Следует настроить параметры безопасности системы таким образом, чтобы исключить возможность некорректного использования системы
Формулировка требования недостаточно конкретна, однако можно сделать предположение, что в него входит настройка защитных механизмов уровня ядра. Кроме того, настройка безопасных параметров ядра важна для защиты всей системы, однако это единственный пункт требований, где данный механизм может быть применим.
Первым механизмом защиты ядра является защита от переполнения буфера, реализуемая в основном за счет случайных адресов стека приложения, а также случайных адресов загрузки библиотек и приложений (общепринятый термин – Address Space Layout Randomization, ASLR [5]). В официальной версии ядра Linux подобные механизмы начали внедряться, начиная с версии 2.6.12, полностью функционал был реализован в версии 2.6.25 [6].
Однако еще до выхода указанных версий ядра дистрибутивы RHEL и Fedora Core имели встроенный механизм ExecShield ([7], [8]), реализующий подобные функции. Убедиться в его наличии можно при помощи команды:
[root@support ~]# sysctl -a | grep -E 'randomize|shield'
kernel.randomize_va_space = 1
kernel.exec-shield = 1
Указанные переменные ядра должны иметь ненулевые значения. Отключать эту возможность следует только в особых случаях, например, при тестировании ПО или разработке средств безопасности. Для этого в файл /etc/sysctl.conf необходимо добавить строки:
kernel.randomize_va_space = 0
kernel.exec-shield = 0
После этого либо перезагрузите ОС, либо примените эти параметры без перезагрузки:
sysctl -p
Дополнительным элементом защиты от атак переполнения буфера является запрет на выполнение кода в стеке, накладываемый на уровне тела приложения или библиотеки. В Linux за эти действия отвечает утилита execstack, способная разрешать или запрещать выполнение кода в стеке для конкретных программ и библиотек, а также запрашивать у приложений и библиотек необходимость выполнения кода в стеке [9].
Приложения и библиотеки с потенциально исполняемым стеком могут быть найдены следующим способом:
[root@support ~]# echo BINARIES:; for dir in /usr/libexec `echo $PATH | sed -e 's/:/ /g'`; do execstack -q ${dir}/* 2>/dev/null; done | grep -Ev ^\\-; echo LIBS:; find /lib /usr/lib -type f -name '*.so' -exec execstack -q {} \; 2>/dev/null | grep -v ^\\-
BINARIES:
? /sbin/mount.vmhgfs
? /usr/sbin/vmware-checkvm
? /usr/sbin/vmware-guestd
? /usr/sbin/vmware-tools-upgrader
? /usr/sbin/vmware-vmdesched
? /usr/bin/vmware-hgfsclient
? /usr/bin/vmware-xferlogs
LIBS:
X /usr/lib/vmware-tools/lib32/libvmGuestLibJava.so
X /usr/lib/vmware-tools/lib32/libvmGuestLib.so
Также следует настроить сетевые параметры ядра, описанные в CIS (пп. 5.1, 5.2, SN.3 версии 1.1.2) и отвечающие за маршрутизацию, ICMP-протокол и защиту от DoS-атак. В указанном стандарте приведены детальные настройки ядра, нет необходимости переносить их в данную статью.
Возможно, к этому пункту требований также относится использование SELinux, детальное рассмотрение настроек которого выходит за рамки данной работы. Особенности его настройки приведены в [10] и [11].
2.2.4 Для нескольких системных компонентов проверить, что ненужная функциональность выключена. Проверить, что включенные функции документированы и безопасно настроены
Настройка системы согласно этому требованию во многом аналогична п. 2.2.2, однако ее можно дополнить отключением поддержки пользовательских внешних носителей (usb-дисков и fireware-устройств). Для этого требуется создать и заполнить следующие файлы:
/etc/modprobe.d/disable-usb:
install usb-storage /bin/true
/etc/modprobe.d/disable-fireware:
install fireware_ohci /bin/true
Если впоследствии внешнее USB- или Fireware-устройство потребуется для резервного копирования, то администратор сможет загрузить соответствующий модуль ядра с помощью команды insmod, недоступной для непривилегированных пользователей.
Кроме того, если защищаемый узел поддерживает WiFi и/или WiMAX, которые в условиях данной компании не нужны для выполнения рабочих задач, их можно отключить в BIOS, а также удалить модули ядра:
rm -f /lib/modules/`uname -r`/kernel/drivers/net/wi{max,reless}/*
Примечание. Удаление модулей ядра требуется производить после каждого обновления ядра [12].
2.3 Для нескольких системных компонентов проверить, что для защиты удаленного административного доступа применяются криптографические механизмы
Для выполнения требования нужно:
Краткое содержание
В главе 3 множество требований к хранению данных платежных карт, заметная часть которых относится к базам данных и серверам приложений, а не к ОС. Интерес представляют требования к шифрованию данных, многие из которых можно реализовать стандартными средствами из поставки RHEL.
Стандарт CIS не регламентирует вопросы шифрования данных.
3.4.1.а Если применяется шифрование на уровне диска, проверить, что логический доступ к файловой системе реализован при помощи механизма, независимого от механизмов разграничения доступа операционной системы
Суть требования состоит в том, что обращение к расшифрованным данным должно было возможно только при знании ключа; отсюда следует, что любые процессы и пользователи (даже администраторы системы) не смогут прочесть и корректно изменить такие данные без знания ключей расшифрования.
У всех распространенных механизмов шифрования файловых систем Linux (cryptsetup, cryptsetup + LUKS, EncFS, eCryptFS) расшифрованная файловая система (ФС) логически ничем не отличается от обычной ФС и имеет те же атрибуты доступа, ACL и т.п. С помощью этого реализуется свойство прозрачности файловых операций. Однако, даже с корректно настроенными правами доступа к данным, суперпользователь root или процессы с UID=0 смогут получить доступ к любым данным после их расшифрования владельцем ключа, а значит, данное требование PCI DSS не выполняется для всех механизмов шифрования файловых систем Linux.
Настройки SELinux, разрешающие доступ к расшифрованным данным только заранее указанным пользователям, не помогут в выполнении данного требования, так как
С другой стороны, если истолковать это требование как «механизмы разграничения доступа к данным и механизмы шифрования данных должны производиться различными компонентами ОС», то стандартная для Linux подсистема шифрования данных удовлетворяет этим требованиям.
Однако количество гипотез относительно истинного смысла на этом не ограничивается. Возможно, требование предъявляется только к аппаратным устройствам дискового шифрования. В этом случае требование 3.4.1.a не будет предъявляться, и организация сможет использовать без ограничений любую подходящую технологию программного шифрования (в т.ч. стандартную LUKS).
Рассматривая это требование, следует принять решение, нужно ли использовать дисковое шифрование вообще (это касается жестких дисков серверов/рабочих станций или внешних массивов). На практике шифрование этих носителей необходимо в следующих случаях:
3.4.1.c Проверить, что данные о держателях карт на съемных носителях хранятся только в зашифрованном виде. Примечание: Часто шифрование на уровне всего диска не зашифровывает информацию на съемных носителях, поэтому может потребоваться шифровать данные на съемных носителях отдельно.
Для шифрования данных на съемных носителях можно применить как шифрование отдельных файлов (eCryptFS, OpenSSL), так и всего диска (LUKS). eCryptFS по умолчанию не входит в состав рассматриваемых дистрибутивов, поэтому более детально остановимся на OpenSSL и LUKS.Шифрование отдельных файлов можно выполнить с помощью openssl, например
openssl enc -aes-256-cbc -in input.file -out output.file
При расшифровании дополнительно указывается ключ «-d»:
openssl enc -aes-256-cbc -d -in output.file -out input.file.decrypted
Однако такой способ подходит в основном для хранения резервных копий данных («зашифровал и забыл») ввиду трудоемкости и непрозрачности доступа к зашифрованным данным.
Более универсальный сценарий — шифрование на уровне диска в режиме ядра, которое можно настроить следующим образом:
3.5.2 Изучить системные конфигурационные файлы, убедиться, что ключи хранятся в зашифрованном виде и ключи шифрования ключей хранятся отдельно от ключей шифрования данных
При использовании LUKS это требование соблюдается, т.к. ключи шифрования данных хранятся в зашифрованном виде (они шифруются на основании вводимого пользователем пароля) на соответствующем шифрованном разделе ФС — то есть отдельно от ключей шифрования ключей.
Проверить использование LUKS-шифрования для дискового раздела можно, например, так:
cryptsetup isLuks /dev/sdb1 && echo OK || echo fail
Здесь /dev/sdb1 — шифрованный раздел (а НЕ имя расшифрованного устройства в /dev/mapper), который может быть дисковым разделом или логическим томом.
О компании
«Позитив Текнолоджиз» (Positive Technologies) - лидирующая компания на рынке информационной безопасности.
Основные направления деятельности компании:
Компания «Позитив Текнолоджиз» (Positive Technologies) – это команда квалифицированных разработчиков и консультантов. Эксперты компании имеют большой практический опыт, являются членами международных организаций, активно участвуют в развитии отрасли.
Список источников
И мы тоже не спим, чтобы держать вас в курсе всех угроз