| |||
Реферат: Исследование уровня безопасности операционной системы LinuxСодержание Введение 8 1. Основные понятия компьютерной безопасности 10 2. Локальная и сетевая безопасность Linux 15 2.1. Пользователи и пароли 18 2.2. Особенности файловой системы Linux 24 2.2.1. Права доступа 24 2.2.2. Атрибуты файлов 29 2.2.3. Механизм квот 33 2.3. Библиотека PAM 36 2.4. Брандмауэр 48 2.5. Удаленное управление 57 3. Средства усиления безопасности в Linux 63 3.1. Linux ACLs 63 3.2. LIDS 65 3.3. AIDE 71 4. Техника безопасности 74 Заключение 80 Список литературы 82 Приложение 83 Введение Постоянно растущий интерес к безопасности различных сетевых ОС, а в особенности к UNIX-подобным системам, как раз и побудил меня выбрать именно эту тему работы. Проблема информационной безопасности, начиная с момента появления необходимости в ней, постоянно тревожит умы сотни тысяч людей, заставляя их совершенствовать средства ее обеспечения. По проблемам безопасности информационных систем написано очень много книг и статей, каждый день выходят очерки, в которых сообщается о новых продуктах, совершенствовании существующих систем безопасности, описываются по шагам методы защиты от различных вторжений, методы устранения их последствий. Эта тема постоянно развивается, и интерес к ней никогда не угаснет. Проблема информационной безопасности будет актуальной до тех пор, пока существует информация, которую необходимо оградить от постороннего глаза. Задачей данной работы является обзор средств как стандартных, так и не совсем, которые предоставляет операционная система Linux для безопасного функционирования, безопасной работы пользователей, а также сохранности конфиденциальной информации, для хранения которой эта ОС может использоваться. В работе затрагиваются не только вопросы, имеющие непосредственное отношение к безопасности ОС Linux. Поскольку Linux - сетевая ОС, и основным ее назначением является работа в сети, было бы неправильным не затронуть вопросы сетевой безопасности. Работа поделена на четыре части: первая часть является теоретическим обзором основных терминов компьютерной безопасности; во второй части рассматриваются аспекты локальной и сетевой безопасности системы; третья часть является обзором дополнительных средств, предоставляемых разработчиками мира UNIX для контроля, регистрации и предотвращения угроз безопасности ОС Linux и четвертая часть представляет собой дополнительный раздел, в котором рассматривается техника безопасной работы с персональным компьютером и монитором. 1. Основные понятия компьютерной безопасности У различных категорий людей слово «безопасность» вызывает свои ассоциации. Имеется множество разновидностей этого термина, которые связаны с различными сферами деятельности человека. Например, государственная безопасность или безопасность жизнедеятельности, политическая или строительная безопасность. Вообще таких разновидностей большое количество, в каждом случае к этому термину предъявляются специфические для конкретного рода деятельности требования, отличные от всех остальных. Обобщенное же определение термина «безопасность» можно сформулировать так: безопасность – это набор средств и требований, направленных на предотвращение запрещенных действий, выполнение которых может привести к нежелательным последствиям. Термин «информационная безопасность» появился сравнительно недавно, с развитием вычислительной техники и ЭВМ. Информационная безопасность включает в себя кроме безопасности используемого программного обеспечения, также безопасность аппаратных средств, безопасность каналов связи и многое другое. Под безопасностью же операционной системы понимается помимо безопасности самого ядра операционной системы еще и безопасность программного обеспечения, установленного на ней. Другими словами, безопасность операционной системы – это комплекс мер, направленных на предотвращение действий со стороны пользователя или других программ, которые могут привести к нарушению нормального функционирования операционной системы. Если есть запрет, появится и человек, который попытается его нарушить! Каждый производитель по-своему взглянул на безопасность своей ОС. В итоге одни системы оказались достаточно защищенными, защиту других обойти было не просто, а третьи оказались практически беззащитными перед взломщиками. Степень защищенности ОС Linux – еще одной UNIX-подобной ОС реального времени, рассматривается в этой работе. Изучая безопасность ОС, нельзя не коснуться теории компьютерной безопасности. Теория компьютерной безопасности оперирует тремя основными понятиями: угроза, уязвимость и атака. Угроза безопасности компьютерной системы – это потенциально возможное происшествие, которое может оказать нежелательное воздействие на саму систему (такое, как перезагрузка, зависание), а также на информацию, находящуюся в ней (удаление, порча файлов и так далее). Уязвимость компьютерной системы – это такая неудачная или не совсем корректная ее характеристика, которая представляет возможным возникновение угрозы. Уязвимости как раз и являются причиной возникновения неприятных ситуаций. К уязвимостям можно отнести следующие состояния информационных систем: 1. Несовершенство используемого программного обеспечения Программное обеспечение написано человеком, а человек склонен допускать ошибки. При создании программного продукта проследить все связи и возможные ошибки практически невозможно, даже когда над проектом работает большое количество людей. Создатели программных продуктов стараются как можно лучше оптимизировать код программы и избавить его от ошибок, но, тем не менее, предусмотреть все возможные ситуации не представляется возможным. Иногда такие недоработки не несут никаких критических последствий для самой программы или данных, которыми она оперирует, но бывает, что они позволяют использовать программу в целях, отличных от тех, для которых она создавалась первоначально, иногда с очень серьезными последствиями (порча данных, например). Такие недоработки в программе обычно называют «дырами». Еще существует такое понятие, как «люк». Люком называют специальные
комбинации действий над программой, которые позволяют обойти некоторые
этапы выполнения. Обычно люки используются программистами при разработке и
тестировании программ с целью обхода уже проверенных блоков и в конце
должны «закрываться», то есть программный код, отвечающий за люк, должен
быть удален из готовой программы. Но то, что должно, делается не всегда. 2. Неправильная настройка программного обеспечения Безопасность системы во многом зависит от правильной настройки программного обеспечения, установленного в ней. За правильную настройку программ, установленных на пользовательском компьютере, отвечает сам пользователь компьютера (обычно, его владелец), за правильную настройку программ и сервисов, работающих на специализированном компьютере, обслуживающем запросы пользователей (сервере), отвечает администратор. В обоих случаях эти лица несут полную ответственность за сохранность данных и нормальное функционирование программ на обслуживаемом компьютере. От того, насколько правильно настроено то или иное программное обеспечение, может зависеть, получит злоумышленник доступ к компьютеру или нет. Атака на компьютерную систему – это алгоритм действий, с помощью которых может быть осуществлен поиск уязвимостей и их использование с целью осуществления угрозы. Существуют три основных вида угроз: Угроза раскрытия заключается в том, что информация становится известной тому, кому не следовало бы ее знать. В терминах компьютерной безопасности угроза раскрытия имеет место всякий раз, когда получен доступ к некоторой конфиденциальной информации, хранящейся в вычислительной системе или передаваемой от одной системы к другой. Иногда вместо слова "раскрытие" используются термины "кража" или "утечка". Угроза целостности включает в себя любое умышленное изменение Угроза отказа в обслуживании возникает всякий раз, когда в результате некоторых действий блокируется доступ к некоторому ресурсу вычислительной системы. Реально блокирование может быть постоянным, чтобы запрашиваемый ресурс никогда не был получен, или оно может вызвать только задержку запрашиваемого ресурса, достаточно долгую для того, чтобы он стал бесполезным. В таких случаях говорят, что ресурс исчерпан. Вывод. В этой главе был осуществлен обзор основных терминов компьютерной безопасности, рассмотрены такие понятия, как угроза безопасности, уязвимость системы, атака на систему, описаны основные виды атак. 2. Локальная и сетевая безопасность Linux Linux является сетевой ОС, поэтому провести четкую границу между
локальной и сетевой безопасностью очень сложно. Но, поскольку компьютер, на
котором установлена ОС Linux, может выступать как в качестве
пользовательского компьютера, так и в качестве сервера, подключение его к
сети не гарантируется. При отсутствии сети неуместно говорить о сетевой
безопасности, потому что сетевой угрозы в принципе не существует. Учитывая все это, можно сделать вывод, что локальная безопасность является обязательной практически в любом случае, кроме тех, когда к компьютеру имеет доступ только один человек – его владелец. Сетевая же безопасность является актуальной только в том случае, когда компьютер с установленной на нем Linux имеет выход в сеть. Сетевая безопасность является дополняющим звеном локальной безопасности, которые вместе определяют общую безопасность системы в целом. В принципе, локальную безопасность можно считать последним барьером в общей безопасности системы. Локальная безопасность – это правила, меры и усилия, направленные на защиту системы изнутри, от локальных пользователей. ОС Linux является полноценной многопользовательской системой с простой
и распределенной архитектурой. Архитектура ОС Linux приведена на рисунке Рис. 2.1. Структура операционной системы Linux Linux является многопользовательской системой, и тот факт, что в систему могут иметь одновременный доступ огромное число людей, как доверенных, так и нет, представляется более чем очевидным. Зачем же необходимо обезопасить систему от локальных пользователей? Для ответа на этот вопрос сначала рассмотрим, что представляется возможным пользователю, который имеет доступ в систему. - После входа в систему пользователю выделяется определенная часть машинных ресурсов (дискового пространства, оперативной памяти, процессорного времени и так далее). Хорошо, если ОС изначально настроена на правильное разделение ресурсов. А если нет? Достаточно одному пользователю запустить пару-тройку «тяжелых» программ, как время ожидания для других программ даже на мощной машине может выйти за грань допустимого. - Существуют программы, которые должен запускать только суперпользователь (пользователь root). Обычно с помощью этих программ осуществляется настройка системных параметров операционной системы, неправильная конфигурация которых может отрицательно отразиться на ее работоспособности. Случайный запуск такой программы обычным пользователем может привести к фатальным последствиям для всей системы в целом. - «Гуляя» по дереву каталогов на жестком диске, пользователь может попасть в ту часть, в которой ему быть не положено (например, в каталог, где хранятся файлы других пользователей). Личные файлы каждого пользователя должны быть доступны ему и только ему, если, конечно, он сам не решит иначе. Перечисленные примеры – это лишь малая часть. Иногда, даже сам этого не осознавая, неопытный пользователь может представлять потенциальную угрозу, если ему предоставить неограниченные права. К тому же сама порядочность пользователя – это роскошь, которую в современном мире может себе позволить не каждый. Теперь рассмотрим, какие же средства предоставляет система Linux для обеспечения локальной безопасности. 2.1. Пользователи и пароли Пользователь – это человек, пользующийся ресурсами и возможностями, которые ему предоставляет тот или иной сервис. Пользователь не обязан знать все аспекты функционирования этих сервисов, все, что ему необходимо знать – это как пользоваться ими. В Linux каждый пользователь имеет свой уникальный числовой
идентификатор, по которому он идентифицируется в системе. Этому
идентификатору для более удобной работы соответствует имя пользователя. Все имена пользователей Linux и соответствующие им идентификаторы хранятся в специальном файле passwd. Этот файл располагается в каталоге etc, который, в свою очередь, находится в корневом каталоге системы /. Файл имеет обычную текстовую форму. Пример файла пользовательских имен passwd. root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin Каждая запись в этом файле разделена двоеточиями на 7 частей: 1. Имя пользователя. Это поле содержит имя пользователя. Для операционной системы не важно, какое имя имеет пользователь, система ориентируется на идентификатор, а имя играет, пожалуй, только информационное значение для человека, работающего в системе. 2. Поле пароля. Это поле в ранних версиях Linux содержало зашифрованный пароль, а теперь, когда была введена технология теневых паролей, в этом поле просто ставится x. Практического применения это поле не имеет. 3. Идентификатор пользователя (UID). В системе Linux каждый пользователь имеет уникальный идентификационный номер, который однозначно определяет его в системе. Этот номер используется в различных целях, например, при установке прав доступа на файлы. Права доступа будут рассмотрены в следующем разделе. 4. Идентификатор группы, к которой принадлежит этот пользователь (GID). 5. Поле комментария. В этом поле может храниться любая дополнительная информация о пользователе, например, его полное имя. 6. Полный путь к домашнему каталогу пользователя. В ОС Linux для
каждого пользователя создается его домашний каталог, в котором он может
хранить свои документы. Обычно эти каталоги располагаются в директории 7. Путь к командной оболочке. Последнее поле содержит полный путь к
рабочей оболочке пользователя (по умолчанию такой оболочкой является bash). При входе в систему программа, предоставляющая доступ, производит
чтение информации о пользователях как раз из файла passwd. Право на запись
в этот файл имеет только привилегированный пользователь root, читать же его
могут все пользователи системы (права доступа описываются в разделе Этот файл никогда не редактируется вручную, хотя, в принципе, это вполне допустимо. Обычно для редактирования файла пользователей используют специальные программы: useradd, usermod и userdel. Программа добавления useradd позволяет добавить нового пользователя в
систему. Для управления процессом создания пользователя эта программа может
принимать различные параметры в командной строке. Например, параметр –s
задает используемый пользователем shell, а параметр –g – группу, к которой
принадлежит создаваемый пользователь. Помимо добавления записи о
пользователе в файл /etc/passwd, программа useradd создает домашний каталог
пользователя, который по умолчанию должен размещаться в директории /home. Программа usermod позволяет изменять такие параметры, как рабочая оболочка пользователя, домашний каталог, группа, идентификатор пользователя и так далее. Нетрудно догадаться, что выполняет программа userdel. Она удаляет пользователя из системы. Подробная информация об этих программах содержится в соответствующих man-руководствах. Имя пользователя не является секретной информацией, и его могут без проблем узнать другие пользователи системы. Но в таком случае должна существовать опасность входа одного пользователя под именем другого. Однако этого не происходит. Используется такое понятие, как аутентификация. Аутентификация – это установление подлинности пользователя, то есть установление факта того, что пользователь с таким именем является именно тем, за кого себя выдает. Для аутентификации в ОС Linux используется уже давно проверенное и доказавшее свою надежность средство – пароль. Пароль – это набор символов (секретное слово), известный только его владельцу и используемый для удостоверения его подлинности. Каждый пользователь в системе имеет свой собственный пароль. Наличие
пароля – необходимая составляющая политики безопасности пользователей Пароли хранятся в отдельном файле /etc/shadow. В ранних версиях Linux имена и пароли пользователей хранились в одном файле /etc/passwd. Но практика показала, что для обеспечения более надежной защиты паролей необходимо создание отдельного файла для их хранения. Таким образом, технология выделения отдельного файла shadow для хранения паролей получила название технологии «теневых паролей». Пример файла и его структура приведены ниже. root:$1$pOy8fNrf$uOh/dQlI03BMIdEAhWrE.0:12369:0:99999:7::: bin:*:12245:0:99999:7::: daemon:*:12245:0:99999:7::: sync:*:12245:0:99999:7::: Файл shadow, как и файл passwd, разделен на несколько частей двоеточиями: 1. Имя пользователя. Это поле просто дублируется из файла passwd. 2. Хэш пароля. Пароль в Linux никогда не хранится в открытом виде, в
отличие от имени пользователя. При установке пароля до сохранения его в
файле он шифруется по специальному алгоритму. По умолчанию таким алгоритмом
является алгоритм одностороннего шифрования DES (Data Encryption Standard). Остальные поля содержат различную служебную информацию. Файл паролей имеет права только на чтение и только для суперпользователя (права доступа описываются в разделе «Особенности файловой системы Linux»). Его содержимое является недоступным для рядовых пользователей, таким образом, исключается возможность раскрытия зашифрованного пароля. Для изменения пароля в Linux изначально включена специальная программа passwd. В качестве параметра в командной строке она получает имя пользователя и при запуске требует ввода пароля для этого пользователя. При вводе в целях безопасности пароль не отображается на экране монитора, существует очень высокая вероятность допустить ошибку, особенно когда пароль состоит из цифр и символов различного регистра. Поэтому ввод пароля осуществляется 2 раза для проверки правильности ввода. После подтверждения пароль шифруется и сохраняется в файле /etc/shadow. При входе в систему процедурой получения имени и пароля пользователя
управляет программа mingetty. mingetty – это программа, выдающая
приглашение для ввода имени пользователя и пароля на виртуальную консоль. Для более удобного управления доступом к ресурсам в Linux все пользователи объединяются в группы. В данном случае группа – это множество пользователей, объединенных по каким-либо критериям. К какой группе принадлежит пользователь, говорит 4 поле регистрационной записи в файле passwd. Наличие групп позволяет создать гибкую политику безопасности, основанную на разделении доступа к ресурсам. Значение групп для разделения доступа более подробно описывается в разделе «Особенности файловой системы Linux». Практическое применение рассмотренной информации приводится в приложении в примере 1. 2.2. Особенности файловой системы Linux Для организации и постоянного хранения информации на различных ее носителях ОС использует так называемую файловую систему. Файловая система – это методы и структуры данных, которые используются У каждой ОС имеется своя файловая система, отличная от всех других. От надежности, эффективности и безопасности работы файловой системы во многом зависит качество функционирования ОС в целом. В настоящее время во всех дистрибутивах ОС Linux для хранения
информации активно используется файловая система ext2 (The Second Extended Основные характеристики файловой системы ext2: максимальный объем файловой системы – 4 Тбайт; максимальная длина файла – 2 Гбайт; максимальная длина имени файла – 255 символов; присутствует поддержка трех ячеек времени изменения файла; также имеется возможность расширения файловой системы; присутствуют механизмы защиты информации и возможность изменять размер блока. 2.2.1. Права доступа Рассмотрим ситуацию, когда пользователь А для хранения очень важных
документов использует свой домашний каталог. Информация, хранящаяся в
документах, является строго конфиденциальной, а по сему никто, кроме ее
владельца, не должен получить к ней доступ. Пользователь В просто из
любопытства, а может и со злобными намерениями, сделал попытку получить
содержимое этих документов. Результатом попытки явилась ошибка с описанием Концепция файловой политики безопасности Linux строится на том, что любой файл системы имеет 3 категории владельцев: собственно владельца файла или, проще говоря, его создателя, какую-либо группу пользователей, в которую чаще всего входит владелец файла, и всех остальных. Таким образом, привилегированный пользователь или владелец файла, поскольку только он имеют возможность изменять права доступа, может построить политику файловой безопасности, определяя права отдельно для владельца файла, для группы пользователей и для всех остальных пользователей системы. Права доступа к файлу или каталогу описываются тремя восьмеричными цифрами, самая левая из которых – права доступа владельца, средняя – права группы, правая – права доступа для всех остальных. Каждая из этих восьмеричных цифр представляет собой битовую маску из 3-х бит. Эти биты отвечают за право на чтение, запись и исполнение файла или каталога. Если бит установлен в 1 – операция разрешена, если в 0 – запрещена. Для различных типов файлов значения прав доступа немного отличаются. Право на чтение файла позволяет пользователю читать содержимое файла. Право на запись файла позволяет пользователю изменять его содержимое. Право на выполнение для файла позволяет запускать файл на выполнение в качестве программы. Для каталога установка этого права дает возможность пользователю входить в каталог и просматривать его содержимое. Какие права доступа определены для каждого файла, можно узнать, набрав
в терминале команду ls с ключом –l: В первой колонке представлены права доступа к файлу. Эта колонка содержит 10 символов. Первый из них слева говорит о том, к какому типу принадлежит файл, то есть является ли он файлом, каталогом, ссылкой и так далее. Далее слева направо представлены права доступа соответственно для владельца, для группы, и в конце – для всех остальных. Вторая колонка отображает количество жестких ссылок для этого файла. Третья указывает на имя владельца файла, четвертая – на имя группы-владельца, пятая колонка – размер файла, шестая – дата создания файла, седьмая - имя файла. Как видно из примера, linkfile является символической ссылкой на файл
myfile. Об этом говорит буква l в самой левой части колонки прав доступа. Изменение прав доступа к файлу осуществляется при помощи стандартной
системной команды chmod. Права доступа при вызове команды могут задаваться
как битовой маской в десятичном представлении, так и при помощи символов. Помимо прав доступа существуют так называемые модификаторы доступа. К модификаторам доступа относятся Sticky bit, SUID и SGID. Sticky bit (S). Для файлов установка этого модификатора в современных дистрибутивах потеряла свое значение. Установка Sticky bit для каталога позволяет пользователю записывать файлы в этот каталог, но удалять из этого каталога он может только те файлы, владельцем которых он является, или в том случае, если ему явно заданы права записи. SUID (s). Если файлу установлен модификатор доступа SUID и файл
исполняемый, то файл при запуске на выполнение получает не права
пользователя, запустившего его, а права владельца файла. Такие приемы
используются для того, чтобы пользователь мог работать с некоторыми
системными файлами, владельцем которых является привилегированный
пользователь. К примеру, для того, чтобы пользователь мог самостоятельно
изменить свой пароль при помощи программы passwd, у этой программы,
владельцем которой является пользователь root, должен быть установлен бит SGID (s). Если файл имеет модификатор доступа SGID, то это аналогично
установке бита SUID, только вместо владельца файла используется группа,
которой принадлежит файл. В случае установки SGID для каталога файлы,
содержащиеся в этом каталоге, будут иметь установки группы такие же, как у
каталога. В приведенном примере видно, что файл myfile1 имеет установленный бит Модификаторы доступа при правильном использовании представляют очень мощное и гибкое средство. С другой стороны, неправильная настройка системы с использованием этих модификаторов может свести все действия по обеспечению безопасности к нулю. Особенно опасной представляется ситуация, когда тот же SUID установлен на исполняемый файл, принадлежащий привилегированному пользователю. При выполнении файла запустивший его пользователь получает право выполнять операции, доступные только пользователю root. Если даже файл не выполняет никаких системных операций и не работает с системными файлами, неправильное его использование может привести к очень неприятным последствиям. Практическое применение рассмотренной информации приводится в приложении в примере 2. 2.2.2. Атрибуты файлов В файловой структуре операционной системы всегда есть файлы, которые не должны изменяться в процессе функционирования системы, например, исполняемые файлы или файлы, которые должны быть откорректированы только однажды при настройке системы и не должны изменяться впоследствии, примером могут служить конфигурационные файлы. Есть и такие, которые могут быть дополнены, но не могут быть удалены или перезаписаны. Наличие средств, гарантирующих выполнение перечисленных условий, позволяет очень сильно повысить безопасность файловой системы, сохранив первоначальную целостность данных при различных типах атак. Начиная с версии ядра 1.1, в файловой системе Linux помимо прав доступа
присутствует поддержка расширенных атрибутов файлов. В последних версиях
ядра 2.4 присутствует поддержка следующих атрибутов: Последние версии ядер, начиная с 2.4, игнорируют значения последних трех атрибутов: compress, secure deletion и undelete. Разработчики посчитали, что их дальнейшее использование не имеет смысла. Для изменения и просмотра установленных атрибутов в стандартный
системный пакет Linux входят две программы chattr и lsattr. Первая
позволяет изменять атрибуты, добавлять или снимать их, вторая позволяет
получить список установленных атрибутов. Пример работы программы lsattr
показан ниже. В примере первый файл имеет установленный атрибут immutable, второй – атрибут atime. Подробно использование программ lsattr и chattr описывается в соответствующих man-руководствах. При определенных условиях процессы, выполняемые от имени привилегированного пользователя, могут игнорировать эти атрибуты. С другой стороны, атрибуты ext2 учитываются некоторыми системными вызовами, такими как sys_open() для открытия файла или sys_truncate() для его отсечения, причем вне зависимости от идентификатора пользователя, вызываемого их процесса и прочих условий. Например, присутствие флага immutable в дескрипторе файла приводит к тому, что системные вызовы, касающиеся модификации файлов, просто перестают работать вне зависимости от других условий. Наличие данных атрибутов и специальных режимов работы ядра в Linux позволяет просто и эффективно укрощать абсолютные возможности, которыми обладает привилегированный пользователь. Цель комплексной настройки заключается в том, чтобы атрибуты накладывали ограничения для всех процессов независимо от их прав доступа и уровня привилегий. Они могут служить в качестве эффективной низкоуровневой защиты против атак на любой привилегированный процесс, в котором могут присутствовать какие-либо неизвестные уязвимости. Однако, сама политика безопасности, построенная на установке атрибутов типа immutable и append, является только одной стороной монеты. Хотя эти атрибуты и предотвратят изменение защищенных ими файлов даже со стороны процессов, которые выполняются от имени привилегированного пользователя, в обычных обстоятельствах пользователь root все равно может убрать эти флаги и продолжить работу с файлами уже без этих атрибутов. Другими словами, ничто не мешает программе, исполняемой от имени пользователя root, перед началом работы выполнить проверку файла на наличие этих атрибутов и просто их отменить. Дополняющим компонентом, или второй стороной монеты, можно считать
специальные возможности ядер 2.4, позволяющие конфигурировать систему в
режиме полной защиты файлов с атрибутами immutable и append до момента
перезагрузки в однопользовательский режим. Для установки этих и множества
других параметров ядра используется программа lcap (Linux Kernel Пример использования lcap Первый вызов lcap с параметром CAP_LINUX_IMMUTABLE отменяет возможность у привилегированных процессов снимать флаги immutable и append. Второй вызов с параметром CAP_SYS_RAWIO запрещает низкоуровневый доступ к блочным устройствам, таким как диски, для предотвращения прямого доступа к файлам. После того, как с помощью lcap был изменен какой-либо параметр ядра, его повторное изменение возможно только после перезагрузки системы. Эта особенность дает уверенность в том, что в системе не смогут незаметно производиться изменения без получения физического доступа и перезагрузки в однопользовательский режим. Подробную документацию по программе lcap можно найти в соответствующих man-руководствах. Практическое применение рассмотренной информации приводится в приложении в примере 3. 2.2.3. Механизм квот Пожалуй, каждый администратор многопользовательской системы знаком с понятием «дисковой квоты». Попробуем разобраться, что же это такое, и какое отношение это понятие имеет к безопасности системы. Дисковая квота – заранее определенное, фиксированное количество блоков дискового пространства и/или количество файловых дескрипторов, выделяемое каждому пользователю или группе пользователей для работы и хранения данных. Использование дисковых квот позволяет ограничивать два аспекта
дискового пространства: количество файловых дескрипторов, другими словами,
количество файлов, которое может быть создано пользователем или группой
пользователей, и часть от всего объема диска, которую может использовать
пользователь или группа для хранения своих файлов. Идея состоит в том,
чтобы определить для каждого пользователя или группы определенную часть от
общего объема диска, чтобы ни при каких условиях пользователь не смог
превысить тот объем используемой дисковой памяти, который ему выделен. Концепция разделения дискового пространства оперирует тремя понятиями: мягкое ограничение (soft limit), жесткое ограничение (hard limit) и период отсрочки (grace period). Мягкое ограничение определяет максимальный размер дискового пространства, который может быть занят данными определенного пользователя или группы пользователей. Жесткое ограничение работает, только если установлен период отсрочки grace period. Если период отсрочки установлен в значение, отличное от нуля, то, когда занятый объем превышает объем мягкого ограничения, пользователю выдается сообщение, что его дисковое пространство на исходе. Если пользователь игнорирует это предупреждение и его дисковая квота продолжает превышать значение мягкого ограничения, то по истечении периода отсрочки дисковая квота считается исчерпанной. При этом обязательно должно быть установлено жесткое ограничение. Жесткое ограничение является абсолютным максимумом использования пространства файловой системы пользователем. Управление механизмом квот осуществляет ядро операционной системы. В
последних версиях Linux в стандартное ядро, идущее в дистрибутиве,
поддержка квот включена по умолчанию. Если же производится сборка нового
ядра, поддержку квот необходимо включить явно. Включение поддержки
механизма квот осуществляется установкой параметра Quota Support Поддержка квот распространяется на логический раздел диска и указывается при его монтировании. Для монтирования раздела используется файл /etc/fstab, в котором и задаются параметры, указывающие на использование квот. Это параметры usrquota и grpquota. Для управления и настройки дисковых квот используется пакет quota. В современных дистрибутивах Linux этот пакет входит в стандартную поставку, но можно загрузить последнюю версию с Интернета. На момент написания работы последней стабильной версией пакета quota была версия 3.11. Далее перечислены основные программы пакета quota-3.11, необходимые для настройки механизма квот: quota – программа позволяет отображать текущее состояние механизма квот. По умолчанию отображается только квота пользователя, запустившего программу на выполнение. Эту программу может запускать любой пользователь системы. convertquota – программа производит перевод файлов quota.user и quota.group в файлы aquota.user и aquota.group. Файлы quota.user и quota.group являются файлами пользовательских квот старого формата. Начиная с версии ядра 2.4.0, в Linux используется новый формат дисковых квот, который обладает, в отличие от старой версии, следующими преимуществами: - поддержка 32-битных идентификаторов пользователей (UID); - установка квоты для привилегированного пользователя; - установка дисковой квоты в байтах (в старой версии единицей дисковой квоты служил килобайт); - поддержка дисковой квоты для журналируемой файловой системы Для настройки новой версии механизма квот используются файлы
aquota.user и aquota.group. Проще говоря, программа convertquota позволяет
перевести файлы настройки квот из старого формата в новый, тем самым
позволяя перейти к использованию новой версии с минимальной перенастройкой
системы. edquota – программа является редактором пользовательских квот. При
вызове этой программы запускается текстовый редактор, установленный по
умолчанию в системе. В этом редакторе можно сделать необходимые изменения в
файле дисковой квоты. qout – программа выводит статистику в килобайтах по пользовательским
квотам для конкретной файловой системы. На момент написания работы
программа quot, входящая в пакет версии 3.11, поддерживала только файловую
системы XFS. quotacheck – программа для проверки целостности дисковой квоты. При
интенсивной работе механизма квот в файловой системе могут возникать
различные неточности, связанные с использованием дискового пространства
пользователей. Программа quotacheck проводит проверку файловой системы,
определяя размер доступного и занятого пространства, производит построение
таблицы текущего использования дискового пространства и сравнивает
полученные данные с записями в файле дисковой квоты. Если имеются какие-то
несоответствия, эти несоответствия устраняются путем исправления неверных
значений в файлах дисковой квоты. quotaon – программа для включения пользовательских квот на указанной
файловой системе. До использования этой программы необходимо для требуемой
файловой системы установить параметр usrquota и/или grpquota в файле Более подробная информация о программах пакета quota может быть получена из соответствующих man-руководств. Практическое применение рассмотренной информации приводится в приложении в примере 4. 2.3. Библиотека PAM PAM (Pluggable Authentication Modules) – подгружаемые модули
аутентификации. PAM является набором динамически подключаемых модулей, с
помощью которых привилегированный пользователь может выбирать, как
приложение должно осуществлять процесс аутентификации. Такая технология
оказалась очень полезна, особенно при появлении различных методов
аутентификации пользователя в системе. Эта технология имеет два основных
преимущества. Первым преимуществом является модульность приложений,
поддерживающих PAM. Это означает, что для приложения, поддерживающего PAM,
появляется возможность изменить механизм аутентификации пользователей без
перекомпиляции программы, как говорят «на ходу», достаточно изменить
конфигурационный файл PAM. Второе преимущество использования PAM
заключается в том, что администратор системы получает полную свободу в
выборе схемы аутентификации для каждого отдельного приложения, причем эта
схема может быть достаточно сложной и состоящей из нескольких этапов. [pic] Рис. 2.3.1 Структурная схема взаимодействия приложения и библиотеки PAM
Все модули PAM по умолчанию располагаются в каталоге /lib/security, а
конфигурационные файлы PAM – в каталоге /etc/pam.d. Имя каждого
конфигурационного файла, расположенного в каталоге /etc/pam.d, совпадает с
именем приложения, использующего его. Например, для программы login полный
путь к конфигурационному файлу PAM будет иметь вид /etc/pam.d/login. Каждая строчка файла означает, что для удачной аутентификации пользователь должен пройти через указанный модуль. Формат строки любого конфигурационного файла PAM имеет вид: тип_модуля флаг_контроля путь_к_модулю параметры_модуля Все модули библиотеки PAM по функциональному признаку делятся на четыре типа: auth – этот тип модулей позволяет осуществлять два аспекта аутентификации. Во-первых, он выполняет саму аутентификацию, то есть устанавливает факт того, что пользователь действительно тот, за кого себя выдает. Это может быть запрос пароля или другие методы идентификации. Во- вторых, модуль может разрешить членство в группе (независимо от файла групп пользователей group) или определить другие привилегии, основываясь на информации о пользователе. account – этот тип модулей выполняет функции, не связанные с аутентификацией напрямую. Обычно он используется для разрешения или запрещения доступа в зависимости от определенных условий, таких как время дня, количество пользователей, одновременно запросивших ресурс, различные параметры системы и так далее. sessions – в основном этот тип используется для определения дополнительных действий, которые необходимо выполнить до или после предоставления сервиса пользователю. Сюда можно отнести протоколирование действий по открытию определенных файлов, монтирование каталогов, удаление временных файлов и так далее. password – этот последний тип необходим для обновления опознавательного признака (например, того же самого пароля), который идентифицирует пользователя. Наличие четырех управляющих типов говорит о том, что сама технология аутентификации с использованием библиотеки PAM способна предоставить не только «голый» способ установления подлинности пользователя, а еще и широкий спектр дополнительных возможностей по защите системы и предоставлению доступа к сервисам. Флаг контроля определяет, как система будет себя вести при удачном или неудачном прохождении соответствующего модуля. Поскольку модули запускаются один за другим, то специальной расстановкой флагов можно определить значимость каждого из них. В качестве флагов могут быть использованы четыре ключевых слова: required – этот флаг определяет, что для удачной аутентификации в целом необходимо успешное прохождение соответствующего модуля. Если при прохождении этого модуля система получила отказ, процесс аутентификации продолжается до тех пор, пока все модули не будут обработаны, и только потом выдается сообщение об ошибке. requisite – эффект действия этого флага тот же, что и флага required, с одним различием: при получении отказа управление сразу возвращается приложению, прохождение остальных модулей не производится. sufficient – весь процесс аутентификации считается успешным, если работа модуля с этим флагом была успешной и проверка на предшествующих модулях с флагом required не провалилась. Если работа модуля с этим флагом была неудачной, это не считается фатальной ошибкой. optional – успешность модуля с этим флагом является необязательной и его использование не критично для аутентификации. Путь к модулю содержит строку полного пути к модулю в файловой системе. Параметры модуля являются индивидуальным для каждого модуля и описываются в документации модуля. Помимо основных конфигурационных файлов некоторые модули используют
дополнительные файлы конфигурации, находящиеся в каталоге /etc/security. Как уже неоднократно упоминалось, все модули располагаются в каталоге |Название модуля |Тип модуля |Описание | Возможно также создание собственных PAM-модулей на основе готовых шаблонов, что позволяет быстро получить необходимый метод аутентификации без особых усилий. Более подробную информацию о модулях и библиотеке PAM можно найти в документации, поставляемой вместе с пакетом. Практическое применение рассмотренной информации приводится в приложении в примере 5. 2.4. Брандмауэр Локальная безопасность – необходимая составляющая общей безопасности системы. Она позволяет устранить угрозу локального взлома. Однако, при работе компьютера в сети возникает еще один тип угрозы – сетевой. Для устранения сетевой угрозы, как и для локальной, существуют свои средства и методы. Одним таким средством, наиболее важным и практически необходимым при построении сетевой системы безопасности является брандмауэр. Брандмауэр, он же сетевой экран, он же firewall (с англ. «огненная стена») - это система или группа систем, реализующих правила управления доступом между двумя сетями. Фактические средства, с помощью которых это достигается, весьма различны, но в принципе брандмауэр можно рассматривать как пару механизмов: один для блокирования передачи информации, а другой – для пропуска информации. Некоторые брандмауэры уделяют больше внимания блокировке передачи информации, другие – ее пропуску. Некоторые брандмауэры пропускают только сообщения электронной почты, тем самым защищая сеть от любых атак, кроме атак на почтовую службу. Другие брандмауэры обеспечивают менее строгую защиту и блокируют лишь службы, определенно угрожающие безопасности. Обычно брандмауэры конфигурируются для защиты от неавторизованной интерактивной регистрации из внешнего мира. Именно это, больше, чем все остальное, помогает предотвратить проникновение взломщиков в компьютеры внутренней сети. Более развитые брандмауэры блокируют передачу информации извне в защищаемую сеть, разрешая при этом внутренним пользователям свободно взаимодействовать с внешним миром. Схема сетевого запроса на сервер с установленным брандмауэром показана на рисунке 2.4.1. Рис. 2.4.1. Пошаговая схема выполнения сетевого запроса с установлением соединения к ОС Linux
Translation) и подмену портов NPT (Network Port Translation). Действие NAT заключается в подмене IP адреса компьютера-отправителя или компьютера- получателя на указанный. В большинстве случаев эта возможность используется для организации обмена информацией между двумя сетями, имеющими разные диапазоны IP адресов. Действие NPT аналогично NAT с тем различием, что в последнем производится подмена порта приложения вместо IP адреса. Of Service), TTL (Time To Live) и так далее, что предоставляет расширенные возможности для управления процессом маршрутизации. Вся логическая структура экрана netfilter строится на понятиях цепочек, таблиц и правил доступа. Цепочка – определенный набор правил управления доступом. Попадая в цепочку, пакет проходит все ее правила, начиная с самого первого. Каждое правило имеет критерий и действие. Если пакет попадает под критерий правила, то с пакетом производится действие, определенное для этого правила. Таблица – это набор цепочек. Таблицы делятся по функциональному назначению и определяют действия, которые разрешено выполнять в правилах цепочек этих таблиц. Netfilter содержит только три таблицы: mangle – эта таблица используется для внесения изменений в заголовки
пакетов. Примером может служить изменение поля TTL, TOS или MARK. Таблица
имеет пять цепочек: PREROUTING, POSTROUTING, INPUT, OUTPUT и FORWARD. Структурная схема брандмауэра netfilter показана на рисунке 2.4.2. Рис. 2.4.2. Структурная организация брандмауэра Для того, чтобы брандмауэр выполнял те функции, которые на него возлагаются, для комплексной сетевой защиты необходимо, чтобы все пакеты, приходящие по сети и уходящие в сеть, проходили через него. Если же это правило не соблюдается, или соблюдается частично, то все действия, направленные на создание безопасного сервера с использованием брандмауэра, будут бесполезны. Если существует хоть малейшая вероятность, что брандмауэр можно обойти, эта возможность обязательно рано или поздно будет использована взломщиками. В Linux брандмауэр является частью ядра, а поскольку все операции при работе с сетью контролирует ядро, гарантию того, что все сетевые пакеты пройдут через него, можно считать практически стопроцентной. Следуя рисунку 2.4.2, рассмотрим, какой путь совершает пакет, прежде
чем достичь места назначения. Попадая на сервер, пакет сначала проходит
цепочки PREROUTING таблиц mangle и nat. Затем, в зависимости от того, кому
адресован пакет, его направление может меняться. Если пакет адресован
локальному процессу сервера, после маршрутизации он попадает в цепочки Если же пакет адресован другому компьютеру, то есть является транзитным, то после маршрутизации он попадает в цепочку FORWARD таблиц mangle и filter, в которой осуществляются все необходимые действия по управлению доступом для всех транзитных пакетов. Далее, как и пакет локального процесса, перед отправкой в сеть транзитный пакет проходит через цепочки POSTROUTING таблиц mangle и nat. Этих трех таблиц с заранее закрепленным функциональным назначением
вполне достаточно для реализации всех перечисленных ранее возможностей. Для настройки и управления брандмауэром в составе ОС Linux поставляется программный пакет iptables. Этот пакет помимо файлов документации и модулей, подгружаемых в ядро и используемых для осуществления фильтрации по различным критериям, включает следующие исполняемые файлы: iptables – основная программа пакета, с помощью которой производится манипулирование правилами в цепочках. Эта программа позволяет совершать с правилами и пользовательскими цепочками все доступные действия. iptables-save – программа, которая позволяет сохранять все текущие правила в одном файле для последующего их восстановления. По умолчанию этим файлом является /etc/sysconfig/iptables. В файле /etc/sysconfig/iptables хранится вся конфигурация брандмауэра и из этого файла она считывается при загрузке системы. iptables-restore – эта программа позволяет считывать правила и цепочки, сохраненные ранее программой iptables-save. По умолчанию эта программа пытается загрузить файл /etc/sysconfig/iptables, если он существует. Более подробная информация о программном пакете iptables содержится в файлах документации, а также в соответствующих man-руководствах. Практическое применение рассмотренной информации приводится в приложении в примере 6. 2.5. Удаленное управление Потребность в удаленном управлении возникла с момента появления сети и систем, которые необходимо было администрировать на расстоянии. Чтобы лучше представить, в чем заключается удобство от использования
программ удаленного управления, возьмем простой пример. Организация имеет
свой собственный сервер, на котором располагается почтовая система и
почтовые ящики всех сотрудников организации. Организация арендует помещение
на двадцатом этаже высотного здания, в котором помимо нее функционирует еще
десяток-другой таких же организаций. В этом здании имеется
специализированное подвальное помещение с хорошо организованной системой
охлаждения, в котором располагаются коммуникационные средства, системы
связи и сервера. Сервер рассматриваемой организации также располагается в
этом помещении. За работоспособностью сервера следит специальное лицо,
выполняющее функции администратора сети, которое помимо этого выполняет
необходимые изменения в конфигурации предоставляемых сервисов. А теперь
представим, какие действия необходимо совершить администратору, если,
например, какому-то пользователю почтовой системы нужно поменять пароль. В таких случаях идеальным решением является организация
полнофункционального управления сервером посредством сетевого доступа. Помимо протокола Telnet в UNIX-системах существует целое семейство так называемых r-программ. К ним относятся rsh, rlogin (начальная буква r трактуется как remote) и другие, позволяющие производить различные операции, связанные с удаленным администрированием. Однако уровень безопасности при использовании r-программ, как и уровень безопасности при использовании Telnet, также оставляет желать лучшего. Существует еще один протокол для управления некоторыми параметрами
системы и получения информации о ней. Это протокол SNMP (Simple Network Эти протоколы могут служить хорошим решением для таких локальных сетей,
где требования, предъявляемые к безопасности, являются не очень высокими. На сегодняшний день одним из самых распространенных и безопасных протоколов удаленного администрирования, использующих шифрование при передаче данных, является протокол SSH (Secure SHell). Рассмотрим поподробнее, в чем же состоит преимущество протокола SSH перед другими протоколами удаленного управления. Протокол SSH появился в 1995 году и с самого начала в основу была
положена идея создания средства организации безопасного доступа к
компьютерам при работе по небезопасным каналам связи, таким как сеть Проект стандарта SSH описывает протоколы SSH и состоит из нескольких документов, которые описывают общую архитектуру протокола, а также протоколы трех уровней: протокол транспортного уровня, протокол аутентификации и протокол соединения. Их задача - обеспечивать безопасную сетевую службу наподобие Telnet поверх небезопасной сети. Протокол транспортного уровня обеспечивает аутентификацию сервера, конфиденциальность и целостность. Протокол аутентификации обеспечивает аутентификацию клиента для сервера. Наконец, протокол соединения SSH мультиплексирует безопасный шифруемый канал, представляя его в виде нескольких логических каналов, которые используются для различных целей или различных видов служб. Помимо этого протокол транспортного уровня предусматривает возможность сжатия данных, что является бесспорным преимуществом по сравнению с протоколом Telnet при передаче данных по низкоскоростному каналу. Протокол транспортного уровня работает поверх соединения TCP/IP, в свою очередь протокол аутентификации работает поверх протокола транспортного уровня, а протокол соединения – поверх протокола аутентификации. В итоге получается жесткая взаимосвязь протоколов, обеспечивая в сумме наиболее безопасную и эффективную передачу данных. С целью повышения безопасности в протоколе SSH осуществляется не только
аутентификация клиента для сервера, к которому обращается клиент, но и
аутентификация сервера клиентом - другими словами, происходит
аутентификация обеих сторон. Клиент шлет запрос на обслуживание в первый
раз, когда устанавливается безопасное соединение транспортного уровня SSH. В дистрибутивах Linux и в большинстве UNIX-подобных ОС возможность
работы по протоколу SSH предоставляет бесплатный и свободно-
распространяемый программный продукт OpenSSH, в который включены как
серверная программа, так и клиентское приложение. Настройка программ пакета При установке пакета из исходных файлов при запуске программы
конфигурирования configure можно задать целый ряд ключей. В частности,
можно указать, какие методы шифрования сеанса будут использованы при работе По умолчанию, если путь не был изменен ключом конфигурационной
программы, файлы конфигурации OpenSSH при установке помещаются в каталог и могут быть использованы для установки таких параметров работы, как, например, необходимость использования аутентификации сервера на базе имени компьютера, аутентификации пользователя с помощью пароля, протокол какой версии SSH (на сегодня существует две основные версии: SSH версии 1.0 и SSH версии 2.0) необходимо использовать при обмене информацией. Для серверной программы в конфигурационном файле sshd_config существует возможность указать, на каком порту демон sshd будет принимать соединения (по умолчанию для этой цели используется порт с номером 22), а также на какой IP адрес должны приходить запросы. Все параметры конфигурационных файлов очень подробно описаны в документации, поставляемой с пакетом OpenSSH. Практическое применение рассмотренной информации приводится в приложении в примере 7. Вывод. В этой главе работы были рассмотрены основные средства безопасности, которыми располагает ОС Linux. В первой части главы приводится описание средств обеспечения локальной безопасности, то есть без учета подключения компьютера с ОС Linux к сети. Вторая часть ориентирована на проблемы обеспечения сетевой безопасности. Первая часть освещает основные возможности файловой системы ext2, приводится описание программ изменения прав доступа и владельца файла chmod и chown, подробно рассматриваются атрибуты файлов, программы работы с атрибутами chattr и lsattr. В дополнение ко всему приводится описание пакета lcap для настройки некоторых параметров ядра ОС. Далее рассматривается концепция пользовательских дисковых квот, пакет для работы с пользовательскими квотами quota. В последнем разделе, посвященном локальной безопасности, приводится современная технология аутентификации с использованием библиотеки PAM, рассматриваются ее возможности, приводится перечень модулей, входящих в эту библиотеку, и их описание. Подробно рассматривается формат конфигурационных файлов PAM. Во второй части главы рассматривается принцип защиты системы от сетевого вмешательства посредством межсетевого экрана netfilter, описывается алгоритм функционирования межсетевого экрана, рассматривается концепция построения правил фильтрации. Далее приводится общий обзор протоколов удаленного администрирования и большое внимание уделяется протоколу ассиметричного шифрования SSH, рассматриваются принципы работы этого протокола, его назначение и основные характеристики. 3. Средства усиления безопасности в Linux Помимо стандартных средств организации безопасной работы Linux существует огромное количество дополнительного системного программного обеспечения, позволяющего расширить возможности стандартных средств и добавить новые, более гибкие и приспособленные к специфическим условиям. В большинстве случаев стандартные средства Linux позволяют добиться необходимого уровня защиты. Но бывают ситуации, когда к системе предъявляются повышенные требования, и стандартных средств обеспечения безопасности может оказаться недостаточно. В таких случаях простым решением может служить использование дополнительных программных пакетов. 3.1. Linux ACLs Иногда в процессе работы администратор сервера может столкнуться с проблемой правильной установки прав доступа. Например, возникла ситуация, когда на один файл необходимо установить право на чтение трем пользователям разных групп и право на чтение и выполнение для пользователя четвертой группы. Решение этой проблемы стандартными средствами является достаточно сложной задачей. Права доступа в Linux задаются девятью битами, что предполагает установку прав только для пользователя-владельца, группы- владельца и всех остальных. Какие-либо дополнительные возможности по установке прав доступа к файлу в стандартной конфигурации ОС Linux отсутствуют. В результате для решения задачи может потребоваться внесение пользователей в общие группы или создание дополнительных групп, что является не всегда приемлемым и помимо всего прочего создает дополнительные проблемы управления. Оптимальным решением в ситуации такого рода может послужить программная разработка Linux ACLs. Linux ACLs (Access Control Lists) – это набор заплаток для ядра операционной системы и приложений для работы с файловой системой и несколько дополнительных программ, дающих возможность устанавливать права доступа к файлам не только для пользователя-владельца и группы-владельца файла, но и для любого пользователя и группы. Linux ACLs использует расширенные атрибуты для хранения данных о правах
доступа к файлам пользователей и групп. Список расширенного контроля
доступа существует для каждого файла в системе и состоит из шести
компонентов. Первые три являются копией стандартных прав доступа к файлу. Следующие два компонента устанавливаются для каждого файла в
отдельности и могут присутствовать в ACL в нескольких экземплярах: При установке дополнительных прав доступа присваивается значение и элементу ACL_MASK. Каталоги также могут иметь список контроля доступа по умолчанию. В отличие от основного ACL, он действует на создаваемые внутри данного каталога файлы и каталоги. При создании файла внутри такого каталога файл получает ACL, равный ACL по умолчанию этого каталога. Для использования Linux ACLs необходимо получить на сайте разработчика пакет Linux ACLs и заплатки к ядру ОС Linux и некоторым программам системного окружения. Сначала необходимо наложить заплатку на исходные файлы ядра, чтобы получить поддержку листов доступа, затем собрать ядро с поддержкой расширенных атрибутов и листов контроля доступа. После сборки ядра с поддержкой листов доступа нужно наложить заплатки на некоторые системные программы и пересобрать их. Далее необходимо собрать пакет приложений ACL, который тоже находится на сайте разработчика. С помощью приложений этого пакета производится управление расширенными правами доступа. Весь процесс установки Linux ACLs, начиная наложением заплаток и заканчивая сборкой пакета ACL, подробно описан в документации программного пакета. После включения в системе поддержки Linux ACLs манипулирование расширенными атрибутами производится с помощью двух программ, входящих в пакет ACL – getfacl и setfacl. Первая программа позволяет получить информацию о расширенных правах доступа файла. Вторая производит изменение этих прав доступа. Синтаксис командных строк этих программ подробно описан в соответствующих man-руководствах пакета. 3.2. LIDS LIDS (Linux Intrusion Detection/Defence System) – система обнаружения и защиты от вторжения. Эта система представляет собой дополнение к ядру операционной системы Linux, добавляющее дополнительные возможности для увеличения безопасности операционной системы. LIDS позволяет запретить или ограничить доступ к файлам, памяти, устройствам, сетевым интерфейсам и запущенным приложениям привилегированному пользователю, что дает возможность надежно оградить даже взломанную операционную систему от дальнейшего вмешательства. В отличие от других средств защиты операционной системы Linux, эту
систему невозможно отключить, не зная пароля администратора LIDS, который в
зашифрованном виде хранится в специальном файле, видимом только программой
администрирования LIDS. Таким же образом защищены и конфигурационные файлы Для того, чтобы установить LIDS, необходимо включить поддержку этой
системы в ядре, что требует наложения заплаток на исходные файлы ядра и
включение возможностей LIDS при конфигурировании ядра до его сборки. После
включения в ядре поддержки LIDS станет доступным список параметров LIDS. После установки LIDS в каталоге /etc появится каталог lids, содержащий
следующие конфигурационные файлы: lids.cap – этот файл предназначен для хранения текущих значений
установок способностей. lids.net – файл предназначен для настройки отправки электронных
сообщений системой LIDS. lids.pw – в этом файле записан в зашифрованном виде пароль
администратора. Изменять этот файл можно только с помощью программы lidsadm
пакета LIDS. lids.conf – этот файл содержит текущие установки правил доступа. При установке различных ограничений LIDS использует так называемые способности. Способность – это возможность программ совершать какие-либо действия. Все способности устанавливаются в файле /etc/lids/lids.cap. Этот файл
имеет следующий формат: “+” включает соответствующую способность, а “–“ выключает ее. номер – порядковый номер способности. способность – наименование способности. Редактирование файла /etc/lids/lids.cap можно производить с помощью любого текстового редактора. Включение способностей влияет на все программы без исключения, а выключение влияет на все программы, кроме тех, которым напрямую указана данная способность с помощью правил доступа lidsadm. После установки файл /etc/lids/lids.cap содержит включенными следующие
способности: /dev/sd*; /dev/random, создание новых устройств, конфигурирование дисковых квот, настройка работы klogd, установка доменного имени компьютера, сброс кэша, монтирование и размонтирование дисков, включение и отключение раздела виртуальной памяти, установка параметров последовательных портов и многое другое; Для вступления в действие способностей, необходимо сразу после загрузки системы и запуска всех сервисов выполнить команду lidsadm –I Эта команда обычно записывается в один из файлов сценариев, выполняемых при загрузке системы. Помимо способностей система LIDS позволяет задавать правила доступа к
дисковым ресурсам. Все управление LIDS осуществляется с помощью программы
lidsadm. Эта программа способна работать в двух режимах: режиме настройки
правил доступа и режиме ввода команд администрирования. Все установки
правил доступа находятся в файле /etc/lids/lids.conf. Для их просмотра
необходимо запустить программу lidsadm с параметром –L. Правила доступа состоят из трех элементов: субъекта, объекта и цели. Субъектом является любая защищенная программа, которой дают доступ к защищаемому объекту. Поэтому, прежде чем использовать программу в качестве субъекта, ее саму надо защитить средствами LIDS, применив к ней правила доступа как к объекту. Если субъект не указан, субъектом является любая программа. Целью является тип доступа субъекта к объекту. Существуют следующие
типы доступа: Построение прав доступа подробно описано в соответствующих файлах документации и man-руководствах. 3.3. AIDE AIDE (Advanced Intrusion Detection Environment) – расширенное окружение обнаружения вторжений. Основное назначение программного продукта AIDE – обнаружения изменения файлов, их атрибутов, прав доступа, пользователей владельцев, размера, количества ссылок на файл и других параметров, которые присущи файлу в Linux. Программный пакет AIDE создает базу данных всех файлов, перечисленных в
основном конфигурационном файле программы aide.conf. В базу помимо
стандартных атрибутов файла записывается также криптографическая
контрольная сумма или хэш каждого файла, вычисленных с использованием
одного или комбинации следующих алгоритмов шифрования: SHA1, MD5, RMD160, Сразу после установки и настройки необходимых сервисов и программ, но
перед подключением системы к сети, администратор должен создать базу AIDE. Для создания базы данных программа aide запускается с параметром –init. После создания базы ее необходимо переместить в безопасное место, где привилегированный пользователь root имеет ограниченный доступ или не имеет доступа вообще. Наилучшим решением будет запись базы на какой-либо съемный носитель информации, который без особых проблем можно подключить к системе в любой момент. Проверка целостности файлов производится вызовом программы aide с
параметром –check. Программа выполняет чтение файлов на диске и производит сравнение с данными из базы данных. Отчет о проведенной проверке тут же выводится на экран. Программный пакет AIDE может служить хорошим дополнением к базовой защите в качестве средства профилактики, однако использование этого продукта в качестве основной системы защиты нежелательно. Помимо того, что взломщик может изменить саму базу данных AIDE, если сможет получить к ней доступ, он так же может произвести изменение файла с сохранением основных его атрибутов. Естественно, подделать контрольную сумму файла после его изменения – нелегкая задача, но все же осуществимая. Вывод. Данная глава посвящена дополнительному программному обеспечению, расширяющему стандартные возможности систем Linux в плане безопасности. В первой части главы рассматривается программный пакет Linux ACLs, листы доступа на основе расширенных атрибутов, программы getfacl и setfacl для работы с расширенными правами доступа. Вторая часть посвящена системе обнаружения и защиты от вторжения LIDS, описываются возможности ядер 2.4 и принципы работы LIDS на основе этих атрибутов. Также приводится формат конфигурационных файлов этой системы. Заключительный раздел посвящен расширенному окружению обнаружения вторжений AIDE, описывается назначение, принцип работы и основы конфигурирования. 4. Техника безопасности Этот раздел является дополнением к основной дипломной работе. В этом разделе рассматриваются некоторые аспекты безопасной работы на компьютере. Среди различных физических факторов окружающей среды, которые могут оказывать неблагоприятное воздействие на человека и биологические объекты, большую сложность представляют электромагнитные поля неионизирующей природы, особенно относящиеся к радиочастотному излучению. Здесь неприемлем замкнутый цикл производства без выброса загрязняющего фактора в окружающую среду, поскольку используется уникальная способность радиоволн распространяться на далекие расстояния. По этой же причине неприемлемо и экранирование излучения и замена токсического фактора на другой, менее токсический фактор. Неизбежность воздействия электромагнитного излучения на население и окружающую живую природу стало данью современному техническому прогрессу и все более широкому применению телевидения и радиовещания, радиосвязи и радиолокации, использования СВЧ-излучающих приборов и так далее. И хотя возможна определенная канализация излучения, уменьшающая нежелательное облучение населения, и регламентация во время работ излучающих устройств, дальнейший технический прогресс все же повышает вероятность воздействия электромагнитного излучения на человека. На возможность неблагоприятного влияния на организм человека
электромагнитных полей было обращено внимание еще в конце 40-х годов. В
результате обследования людей, работающих в условиях воздействия
электромагнитных полей значительной интенсивности, было показано, что
наиболее чувствительными к данному воздействию является нервная и сердечно-
сосудистая система. Описаны изменения кроветворения, нарушения со стороны
эндокринной системы, метаболических процессов, заболевания органов зрения. В условиях длительного профессионального облучения с периодическим повышением предельно допустимых уровней у части людей отмечали функциональные перемены в органах пищеварения, выражающиеся в изменении секреции и кислотности желудочного сока, а также в явлениях дискинезии кишечника. При длительном профессиональном облучении выявлены также функциональные сдвиги со стороны эндокринной системы: повышение функциональной активности щитовидной железы, изменение характера сахарной кривой и так далее. В последние годы появляются сообщения о возможности индукции электромагнитного излучения злокачественных заболеваний. Еще немногочисленные данные все же говорят, что наибольшее число случаев приходится на опухоли кроветворных тканей и в частности на лейкоз. Это становится общей закономерностью канцерогенного эффекта при воздействии на организм человека и животных физических факторов различной природы и в ряде других случаев. Мониторы персональных компьютеров используют в процессе повседневной деятельности миллионы служащих во всем мире. Компьютеризация в нашей стране принимает широкий размах, и многие сотни тысяч людей проводят большую часть рабочего дня перед экраном дисплея. Наряду с признанием несомненной пользы применение компьютерной техники вызывает у пользователей персональных компьютеров беспокойство за свое здоровье. Имеются статистические данные, согласно которым лица, работающие с персональным компьютером, более беспокойны, подозрительны, чаще избегают общения, а также недоверчивы, раздражительны, склонны к повышенной самооценке, высокомерны, фиксируют внимание на неудачах. Крупнейшими источниками электромагнитных излучений являются радио- и телевизионные средства связи и обработки информации, радиолокационные и навигационные средства, лазерные системы, воздушные линии электропередач. Серьезного внимания заслуживают вопросы гигиенической оценки уровней электромагнитного излучения, которым подвергаются лица, работающие в зоне действия излучений, но не связанные с обслуживанием радиотехнических устройств. По данным американского Агентства по охране окружающей среды около 1% человеческой популяции подвергаются воздействию электромагнитного излучения интенсивностью более 1мкВт/см2. При этом наибольшие значения интенсивности были зафиксированы в высотных зданиях, особенно на уровнях, соответствующих уровням размещения антенных систем. К сожалению, вредное воздействие электромагнитного излучения связано не только с источниками широкомасштабного излучения. Известно, что магнитное поле возникает вокруг любого предмета, работающего на электрическом поле. А это практически любой прибор, сопровождающий нас в быту (даже электрические часы). Дисплеи персональных компьютеров, выполненные на электронно-лучевых трубках, являются потенциальными источниками мягкого рентгеновского, ультрафиолетового, инфракрасного, видимого, радиочастотного, сверх- и низкочастотного электромагнитного излучения. Последствия регулярной работы с компьютером без применения защитных
средств: Особенно опасно электромагнитное излучение компьютера для детей и беременных женщин. Установлено, что у беременных женщин, работающих на компьютерах с дисплеями на электронно-лучевых трубках, с 90-процентной вероятностью в 1,5 раза чаще случаются выкидыши и в 2,5 раза чаще появляются на свет дети с врожденными пороками. Некоторые допустимые уровни электромагнитных полей приведены в таблице Таблица 4.1. Предельно допустимые уровни электромагнитных полей при
круглосуточном непрерывном излучении Персональные компьютеры заняли прочное место в деятельности многих
людей. Сейчас уже невозможно представить полноценную трудовую деятельность
на предприятиях, в частном бизнесе, да и в процессе обучения без
персонального компьютера. Но все это не может не вызывать обеспокоенности в
отношении их вредного влияния на состояние здоровья пользователей. Рекомендуется, например, чтобы экран дисплея находился от глаз пользователя на расстоянии не ближе, чем 50-70 см. Режимы труда и отдыха при работе с персональным компьютером зависят от категории трудовой деятельности. Все работы с персональным компьютером делятся на три категории: Продолжительность непрерывной работы с персональным компьютером не должна превышать 2 часов. Если в помещении эксплуатируется более одного компьютера, то следует учесть, что на пользователя одного компьютера могут воздействовать излучения от других персональных компьютеров, в первую очередь со стороны боковых, а также и задней стенки монитора. Учитывая, что от излучения со стороны экрана монитора можно защитить применением специальных фильтров, необходимо, чтобы пользователь размещался от боковых и задних стенок других дисплеев на расстоянии не менее одного метра. На мониторы рекомендуется устанавливать защитные фильтры класса полной защиты (Total Shield), которые обеспечивают практически полную защиту от вредных воздействий монитора в электромагнитном спектре и позволяют уменьшить блик от электронно-лучевой трубки, а также повысить читаемость символов. Вывод. В этой главе работы рассматриваются аспекты безопасной работы за компьютером, большей частью глава посвящена электромагнитному излучению электронно-лучевых трубок, используемых в мониторах. В главе приводится описание видов излучений, нормативные значения этого излучения при различных режимах работы за компьютером, а также методы и средства, позволяющие свести к минимуму риск облучения при работе за компьютером. Заключение В данной работе был выполнен обзор средств безопасности, которыми располагает операционная система Linux для безопасного функционирования как в качестве пользовательской системы, так и в качестве сервера. В работе были рассмотрены следующие темы: PAM, перечень модулей PAM и их описание, формат конфигурационных файлов PAM, пример безопасной настройки системы с использованием ограничения ресурсов; SSH, программный продукт OpenSSH, описание конфигурационного файла демона sshd, пример настройки безопасного сервера SSH; Помимо теоретической части к каждому разделу в приложении приводится пример практического применения рассмотренного материала. Все примеры, приведенные в работе, были опробованы в реальных условиях и успешно реализованы на серверах Узбекского внешнеэкономического информационно- коммерческого центра «Узинкомцентр» при Агентстве внешних экономических связей Республики Узбекистан. На момент защиты работы мной были проинсталлированы и настроены семь серверов на базе ОС Linux, четверо из них являются серверами общего назначения, остальные трое – специализированные сервера с ограниченным набором функций. Пять серверов успешно функционируют по сей день. Двое упразднены за ненадобностью. Список литературы 1. Linux. Алексей Стахнов, издательство «БХВ-Петербург», Санкт-Петербург, 2002. Приложение ПРИМЕР 1. Исходные данные: ОС Linux RedHat 7.3 без графической оболочки. Задача: удалить неиспользуемые регистрационные записи и добавить три записи. Необходимо добавить пользователей anna и pavel, а также одного пользователя с именем systemuser для системных нужд. Реализация. Изначально файл пользовательских регистрационных записей может иметь следующий вид: root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin news:x:9:13:news:/etc/news: uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin rpm:x:37:37::/var/lib/rpm:/bin/bash В зависимости от установленных программ, содержание этого файла может отличаться от приведенного. Из соображений безопасности следует удалить следующие неиспользуемые в
данной конфигурации сервера системные записи: adm, lp, shutdown, halt,
news, operator, games, gopher, ftp. Системная запись lp используется только
в том случае, если к компьютеру подключен принтер. Настраиваемый компьютер
выполняет функции маршрутизатора, следовательно эта регистрационная запись
является лишней. Записи shutdown и halt позволяют обычным программам
выключать компьютер, что для сервера является только дополнительной брешью
в безопасности. Записи news, gopher и ftp используется в том случае, если
сервер выполняет функции службы новостей, сервера GOPHER или FTP-сервера. Для удаления пользователей необходимо для каждой учетной записи выполнить команду userdel В реализации это будет выглядеть так: Первая часть поставленной задачи выполнена. Далее необходимо добавить
указанных пользователей. Приведенные команды создают в системе указанных пользователей, однако,
для входа в систему обычным пользователям дополнительно ко всему следует
задать еще и пароль. Это выполняют приведенные ниже команды. В результате произведенных действий система будет содержать все необходимые для нормального функционирования системные регистрационные записи, а также двух пользователей anna и pavel, которые смогут заходить и работать в системе. ПРИМЕР 2. Исходные данные: ОС Linux RedHat 7.3 без графической оболочки. Задача: настройка защищенной конфигурации web-портала с использованием средств разграничения прав доступа. Реализация. Допустим, что все файлы объекта защиты, то есть web-портала, находятся
в директории /www. В свою очередь, директория /www содержит каталоги ftp и
html: первый – для хранения и доступа к файлам по FTP протоколу, второй –
для доступа к файлам по протоколу HTTP. Для обеспечения эффективной защиты
файлы, находящиеся в каталоге /www, должны иметь доступ только на чтение
для пользователей nobody и ftpuser. Файлы, находящиеся в каталоге /www/ftp,
должны быть доступны на чтение и на запись как пользователю ftpuser, так и
пользователю nobody. В свою очередь, файлы каталога /www/html должны быть
доступны только пользователю nobody и с правами только на чтение. Учитывая, что оба пользователя nobody и ftpuser принадлежат одной
группе nogroup, права на каталог /www могут быть установлены следующим
образом: Первая команда устанавливает права только на чтение и вход в каталог для пользователей группы-владельца каталога. Вторая команда меняет группу- владельца каталога на группу nogroup. Третья команда позволяет просмотреть сделанные изменения. Как видно из результата выполнения третьей команды, каталог www теперь имеет права доступа для группы только на чтение и вход, для пользователя-владельца и всех остальных какие-либо права отсутствуют вообще. Теперь, когда доступ в каталог www имеют оба системных пользователя,
необходимо разграничить права на внутренние каталоги www. Первая команда меняет группу-владельца и пользователя-владельца для
каталога ftp, вторая – отменяет все права на операции с файлами для всех
остальных, третья – добавляет права на чтение и запись для пользователя-
владельца и группы-владельца. Ключ –R позволяет рекурсивно изменить
параметры у текущего каталога и всех подкаталогов и файлов, хранящихся в
нем. Следующая команда “chown –R nobody:root /www/html” позволяет изменить
пользователя-владельца для каталога html и всех его подкаталогов и файлов
на пользователя nobody. Команда “chmod –R go-rwx /www/html” отменяет все
права для группы-владельца и всех остальных. Далее команда “chmod –R u+r Следует сделать маленькое замечание: все вышеприведенное верно только в том случае, если маска создания файла по умолчанию при создании каталогов и файлов была определена как 022 (umask 022). В противном случае действия, которые необходимо предпринять для установки необходимых прав доступа, зависят от конкретных настроек системы. ПРИМЕР 3. Исходные данные: ОС Linux RedHat 7.3 без графической оболочки. Задача: произвести настройку комплексной защиты сервера с использованием расширенных атрибутов (в частности, с помощью атрибута immutable). Реализация. Для реализации поставленной задачи необходимо изначально определить, какие файлы в процессе работы могут быть изменены, а какие могут быть изменены только в специальном режиме, например, только в режиме профилактики или обновлении программного обеспечения. В данном случае специальный режим предполагает перевод системы в однопользовательский режим работы. В общем случае, в обычных условиях содержимое следующих каталогов изменяться не должно, или может изменяться, но достаточно редко: /boot /etc – в окончательно настроенной системе содержимое этих
каталогов изменяться не должно. За редким исключением содержимое каталога /bin – каталог содержит исполняемые файлы, которые могут быть изменены, удалены или добавлены только при обновлении программного обеспечения. /sbin – в каталоге хранятся исполняемые файлы системных программ, большинство из которых доступно на выполнение только привилегированному пользователю и также не должно изменяться во время работы системы. /lib – каталог системных библиотек, которые также могут быть изменены только при обновлении программных продуктов. Следующие команды позволяют установить атрибут immutable для
вышеперечисленных директорий и для всех файлов, находящихся в них. Параметр –R как и в предыдущих примерах используется для рекурсивной установки атрибута для всех файлов и каталогов, расположенных ниже в иерархии. Каталог /usr имеет свою собственную иерархию. В этой иерархии следующие каталоги должны иметь установленный флаг immutable: /usr/bin /usr/sbin /usr/lib /usr/local/bin /usr/local/sbin /usr/include /usr/local/include – оба каталога содержит заголовочные
файлы для компилируемых программ. Заголовочные файлы не должны изменяться
ни при каких условиях, ну разве только тогда, когда компьютер используется
для разработки программного обеспечения и в заголовочные файлы вносятся
изменения. В завершение всех операций можно выполнить программу lcap с параметрами Также необходимо установить запуск этой команды в стартовые сценарии, чтобы они выполнялись при каждой загрузке системы. Приведенный пример, опять же, является не всегда применимым, все зависит от конкретной конфигурации системы и конкретных условий ее эксплуатации. ПРИМЕР 4. Исходные данные: ОС Linux RedHat 7.3 без графической оболочки. Задача: организовать разделение дискового пространства между пользователями с использованием механизма квот. Каждому пользователю необходимо выделить по 10 Мбайт дискового пространства с максимальным количеством возможных файлов – 1000. Реализация. Пользовательские квоты распространяются на отдельный раздел жесткого диска и активизируются при загрузке системы. Для включения поддержки квот необходимо в файле /etc/fstab для раздела /home добавить параметр usrquota или grpquota, или оба этих параметра, если нужна поддержка квоты для пользователей и групп одновременно. В данном случае для реализации поставленной задачи необходим только параметр usrquota. Строка файла /etc/fstab, относящаяся к разделу /home, после изменения
может иметь следующий вид: Поскольку версии ядер начиная с ветки 2.4 поддерживают новый формат
пользовательских квот, который обладает некоторыми преимуществами перед
старой версией, использование новой версии будет намного целесообразнее. Для активации пользовательских квот необходимо перезагрузить систему. Параметр командной строки –a сообщает программе, что необходимо
выполнить проверку всех файловых систем, перечисленных в файле fstab, на
которых включена поддержка квот, и которые не являются файловыми системами Желательно сделать так, чтобы механизм квот активировался сразу после
монтирования файловых систем. Монтирование файловых систем при запуске Во время загрузки системы программа quotacheck выполнит проверку файловых систем с включенными квотами на наличие файлов квот и, если файлы отсутствуют, quotacheck создаст их в корневом каталоге этой файловой системы. В данном случае в каталоге /home появится файл aquota.user, в котором будет храниться информация о пользовательских квотах. Далее, используя программу setquota, необходимо выполнить настройку
квот для каждого пользователя, имеющего домашний каталог в разделе /home. Приведенная команда установит ограничение дискового пространства в 10 Если квота остальных пользователей должна быть идентична приведенной,
что как раз и требуется для реализации, квоту пользователя anna можно
использовать как шаблон. Далее при создании квоты для пользователя igor
параметры квотирования пользователя anna просто копируются: В результате выполнения команды пользователь igor получает те же
настройки квоты, что и пользователь anna, в данном случае ему выделяется 10 Просмотр сделанных настроек позволяет выполнить программа repquota. Block limits File limits Для обеспечения надежности работы механизма квот, необходимо время от
времени производить проверку целостности файла aquota.user на предмет
наличия ошибок. Для этой цели можно использовать программу-планировщик
cron, которая является стандартной практически для всех версий ОС Linux. # Turn off quotas quotaoff –aug # Check quotas quotacheck –aug # Turn on quotas quotaon –aug Тогда строка запуска проверки квот в конфигурационном файле Эта конфигурация позволяет выполнять проверку квот каждое воскресенье в
три часа ночи. Для более детального ознакомления с форматом файла ПРИМЕР 5. Исходные данные: ОС Linux RedHat 7.3 без графической оболочки. Задача: настроить ограничения ресурсов, используемых в процессе работы, для пользователей группы users. Необходимо ограничить количество одновременно запущенных процессов до 20, количество одновременно открытых файлов до 30 и запретить создание каких-либо файлов ядра. Реализация. Ограничением ресурсов занимается модуль pam_limits. Этот модуль использует файл конфигурации /etc/security/limits.conf, в котором и задаются необходимые параметры ограничения. Файл состоит из строк, каждая из которых определяет ограничение на определенный вид ресурса. Формат строки следующий: Субъектом ограничения может быть либо одиночный пользователь, либо
группа, которая определяется добавлением знака @ перед ее именем, либо
значок *, означающий, что ограничение должно распространяться на всех без
исключения. Для реализации задачи субъектом ограничения будет служить слово Тип ресурса может быть либо soft, либо hard. Значение soft задает мягкое ограничение на использование указанного ресурса, а значение hard определяет жесткое или абсолютное предельное значение использования ресурса. Для реализации задачи лучше всего будет указать жесткое ограничение на все виды ресурсов. Объект ограничения указывает, на какой вид ресурса распространяется это ограничение. Для реализации задачи в качестве ограничиваемых объектов необходимо указать следующие параметры: nproc – количество одновременно запущенных процессов. Должно иметь значение 20. nofile – количество одновременно открытых файлов. Должно быть установлено в 30. core – размер файла ядра. Для запрета на создание файлов ядра значение этого параметра должно быть установлено в 0. В результате файл /etc/security/limits.conf будет иметь вид: Для того, чтобы активизировать ограничение ресурсов для конкретного
приложения, вызов модуля pam_limits необходимо добавить в соответствующий
файл сценария библиотеки PAM. Для локального входа пользователей этим
приложением является программа login, которая имеет одноименный файл
сценария в каталоге /etc/pam.d. После модификации файл /etc/pam.d/login
может выглядеть следующим образом: Последняя строка предписывает библиотеке PAM использовать модуль pam_limits, причем успешное прохождение через этот модуля является необходимым для успешного завершения процесса аутентификации в целом. Для терминального доступа по протоколу ssh вызов модуля pam_limits
необходимо также добавить в файл /etc/pam.d/sshd. В итоге этот файл может
быть таким: При такой конфигурации как локальный, так и удаленный доступ для пользователей группы users будет иметь ограничения на указанные ресурсы. ПРИМЕР 6. Исходные данные: ОС Linux RedHat 7.3 без графической оболочки. Задача: настроить межсетевой экран с повышенными требованиями к
безопасности. Из сети Интернет необходимо открыть доступ к HTTP-серверу,
почтовой службе, функционирующей по протоколу SMTP, серверу имен DNS, а
также терминальный доступ по протоколу SSH. Компьютеры обеих локальных
сетей помимо перечисленных сервисов должны иметь возможность получать почту
с локального сервера посредством протокола POP3. Также необходимо
обеспечить обмен информацией между компьютерами двух локальных сетей,
обеспечить выход компьютеров сети 192.168.0.0 в Интернет, а из сети Реализация. Чтобы маршрутизатор функционировал в качестве шлюза, в ядре необходимо
поменять значение переменной ip_forward. Это можно сделать командой
приведенной далее, а чтобы эта переменная устанавливалась в 1 при загрузке,
необходимо в файле /etc/sysctl.conf найти и раскомментировать, если она
закомментирована, строку вида “net.ipv4.ip_forward = 0” и изменить значение Далее приводится последовательность действий, которые необходимо
выполнить, чтобы построить требуемую конфигурацию брандмауэра. Параметр командной строки –Р позволяет установить политику действия по
умолчанию для всех пакетов, которые не попали ни под один критерий в
правилах INPUT, OUTPUT и FORWARD. Действие DROP означает, что пакет должен
быть уничтожен, если ни одно правило цепочки ему не соответствует. Параметр Для распределения нагрузки и простоты в управлении можно создать в
таблице filter дополнительные цепочки с разным функциональным назначением. Цепочка bad_tcp_packets предназначена для отфильтровывания пакетов с Цепочка tcp_packets является фильтром сетевых сервисов. Именно в этой
цепочке будет осуществляться фильтрация tcp-соединений по критерию
запрашиваемого сервиса. В качестве такого критерия используется порт, на
который приходят запросы на обслуживание. Для того, чтобы только
пользователи локальной сети смогли получать почту, в последних двух
правилах в качестве дополнительного критерия фильтрации используются
символические имена сетевых интерфейсов локальных сетей. В качестве
действия пакет посылается в цепочку allowed для последующей проверки более
низкого уровня. Цепочка allowed используется для дополнительной фильтрации tcp пакетов,
прошедших цепочку tcp_packets и разрешенных в ней. Первое правило
проверяет, установлен ли в заголовке пакета бит SYN, то есть, является ли
пакет первым пакетом установления соединения. Такие пакеты считаются
разрешенными и пропускаются. Второе правило проверяет состояние пакета, и
если оно либо ESTABLISHED, либо RELATED, то пакет разрешается. Эти
состояния присваиваются пакетам, когда соединение уже установлено и ведется
обмен данными. Последнее правило просто сбрасывает все остальные пакеты, не
попавшие под первые два правила. Цепочка udp_packets имеет ту же функцию, что и цепочка tcp_packets, с
единственным отличием – в этой цепочке производится фильтрация udp-
соединений. Сервис DNS использует как раз протокол UDP для обмена
информацией, поэтому правило, которое будет разрешать пакеты DNS,
необходимо добавить именно в эту цепочку. Цепочка icmp_packets предназначена для фильтрации icmp-пакетов. Для
нормального функционирования сервера Linux в сети достаточно разрешение
только двух типов сообщений: ICMP Echo Request и Time Exceeded. Еще раз хочу заметить, что по умолчанию без использования параметра –t все действия производятся в таблице filter. Теперь перейдем к заполнению основных системных таблиц. Начнем с
входящей цепочки INPUT таблицы filter. Сначала все пакеты должны пройти через цепочку bad_tcp_packets на предмет неправильного заголовка. Далее необходимо принять все пакеты, пришедшие со всех адресов сетевых карт через локальный интерфейс. Такие пакеты могут посылать только локальные приложения, поэтому для их нормального функционирования необходимо пропускать эти пакеты беспрепятственно. Затем следует правило определяющее состояние пакета. Если пакет находится в одном из двух состояний (RELATED или ESTABLISHED), то он тоже беспрепятственно разрешается. Дело в том, что настройка брандмауэра подразумевает 99-процентную достоверность фильтрации приходящих запросов, поэтому, если соединение было разрешено на этапе установления, то при последующем обмене информацией критерии сервиса не проверяются, что позволяет немного увеличить скорость обработки и уменьшить нагрузку на сервер. Если пакет не удовлетворяет ни одному из перечисленных условий, далее
следуют правила, в которых пакет классифицируется по типу используемого
протокола. Пакеты протоколов TCP, UDP и ICMP попадают в одноименные цепочки
для их фильтрации по типу запрашиваемого сервиса. Если пакет проходит одну
из этих цепочек, и к нему не было применено действие ACCEPT, то есть пакет
не является запросом к разрешенному сервису, сначала происходит запись
параметров запроса в журнальный файл (действие LOG), а затем применяется
политика по умолчанию цепочки INPUT, то есть пакет просто уничтожается. Аналогично цепочке INPUT, пакеты, проходящие транзитом, сначала
фильтруются на предмет неправильного заголовка с помощью таблицы
bad_tcp_packets. Пакеты уже установленного соединения разрешаются без
дополнительных проверок. Далее все пакеты, пришедшие с интерфейса eth0,
через который к серверу подключена сеть 192.168.0.0, разрешаются, что
позволяет всем пользователям сети 192.168.0.0 работать в Интернет. Однако,
перед этим необходимо настроить NAT, что и будет сделано дальше. Приведенная команда добавляет в цепочку POSTROUTING таблицы nat
правило, которое меняет адрес-источник у пакета, покидающего сервер через
интерфейс eth2, то есть пакета, который должен быть отправлен в сеть Для цепочки OUTPUT необходимо указать, с каких IP адресов разрешать пакеты. Здесь должны быть перечислены все адреса, которые присвоены сетевым картам сервера. В конце созданные правила необходимо сохранить командой В дальнейшем при загрузке сервера эти правила автоматически будут загружены в ядро. На этом настройку брандмауэра можно считать оконченной. ПРИМЕР 7. Исходные данные: ОС Linux RedHat 7.3 без графической оболочки. Задача: выполнить безопасную настройку сервиса SSH с учетом уязвимостей в версии SSH 1.0. Реализация. Версия 1.0 протокола SSH имеет уязвимость, которая позволяет при
определенных условиях получить доступ с правами привилегированного
пользователя. Версия 2.0 от этой недоработки в системе безопасности
избавлена, поэтому ее использование будет самым оптимальным решением. Эта строка указывает демону sshd использовать только протокол версии OpenSSH версии 3.6 и некоторых более ранних версий имеет специальный
параметр UsePrivilegeSeparation, который позволяет запускать процесс sshd
от имени аутентифицированного пользователя. После того, как пользователь
успешно прошел аутентификацию, основной процесс sshd, запущенный от имени
привилегированного пользователя, передает управление дополнительному
процессу sshd, который выполняется уже от имени аутентифицированного
пользователя. Такая технология позволяет добиться более высокого уровня
безопасности по сравнению с предыдущими версиями пакета OpenSSH, в которых
доступ пользователей контролировался процессом, запущенным с правами
пользователя root. Конфигурация демона по умолчанию уже использует этот
параметр, однако в некоторых более ранних версиях этот параметр выключен. Если сборка пакет производилась из исходных файлов, для настройки разделения привилегий необходимо совершить несколько дополнительных операций. Эти операции хорошо документированы и последовательность их выполнения в документации по установке пакета OpenSSH расписана практически по шагам. Чтобы ограничить доступ привилегированному пользователю, можно использовать параметр PermitRootLogin. Установка этого параметра в значение PermitRootLogin no не позволит пользователю root получить доступ к удаленному терминалу. Для настройки ограничения доступа существуют также параметры Для усиления уровня безопасности можно поменять еще два параметра. Далее приводится часть конфигурационного файла, сформированная с учетом
всего вышеуказанного Сервис SSH изначально настроен с максимальными требованиями к безопасности, поэтому изменение каких-либо дополнительных настроек для стандартной конфигурации не требуется. Изменения могут потребоваться лишь в том случае, если к работе сервиса предъявляются особые требования.
|
|