Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

Концепции дизайна [ править ]

Разрешения [ править ]

Основной функцией безопасности в этих системах являются разрешения файловой системы . Все файлы в типичной файловой системе Unix имеют набор разрешений, обеспечивающих различный доступ к файлу.

Разрешения для файла обычно устанавливаются с помощью команды chmod и просматриваются с помощью команды ls . Например:

-r-xr-xr-x 1 корневое колесо 745720 8 сен 2002 / bin / sh

Разрешения Unix позволяют разным пользователям получать доступ к файлу. Разные группы пользователей имеют разные права доступа к файлу.

Более продвинутые файловые системы Unix включают концепцию списка контроля доступа, который позволяет предоставлять разрешения нескольким пользователям или группам. Список контроля доступа может быть использован для предоставления разрешения на дополнительных отдельных пользователей или групп. Например:

/ pvr [u :: rwx, g :: rx, o :: rx / u :: rwx, u: sue: rwx, g :: rx, m :: rwx, o :: rx]

В этом примере, что из chacl команды на Linux операционной системы, пользователь Sue предоставляется запись разрешения на / PVR каталога.

Группы пользователей [ править ]

Пользователи операционных систем в стиле Unix часто принадлежат к управляемым группам с определенными правами доступа. Это позволяет группировать пользователей по уровню доступа к этой системе. Многие реализации Unix добавляют дополнительный уровень безопасности, требуя, чтобы пользователь был членом группы привилегий пользователя wheel для доступа к команде. [1]su

Доступ с правами root [ править ]

Большинство Unix и Unix-подобных систем имеют учетную запись или группу, которая позволяет пользователю получить полный контроль над системой, часто известную как учетная запись root . Если доступ к этой учетной записи получает нежелательный пользователь, это приводит к полному нарушению работы системы. Однако учетная запись root необходима для административных целей, и по вышеуказанным причинам безопасности учетная запись root редко используется для повседневных целей ( чаще используется программа sudo ), поэтому использование учетной записи root можно более тщательно контролировать.

Те, кто знаком с историями Супермена, могут представить себе «такой, каким он должен быть» root-доступ, используя следующую аналогию :

Использование учетной записи root похоже на Супермен; обычный пользователь администратора больше похож на Кларка Кента. Кларк Кент становится Суперменом ровно столько, сколько необходимо, чтобы спасти людей. Затем он возвращается к своей «маскировке». Таким же образом следует использовать root-доступ. Маскировка Кларка Кента на самом деле не ограничивает его, так как он все еще может использовать свои суперсилы. Это аналогично использованию программы sudo.

Пользовательские и административные методы [ править ]

В Unix есть множество инструментов, которые могут улучшить безопасность при правильном использовании пользователями и администраторами.

Пароли [ править ]

Выбор надежного пароля и его правильная защита, вероятно, самые важные вещи, которые пользователь может сделать для повышения безопасности Unix. В системах Unix основная информация о пользователях хранится в файле. /etc/passwdЭтот файл отслеживает пользователей, зарегистрированных в системе, и их основные определения. Пароли, а точнее хеш пароля, тоже могут храниться там же. Записи в /etc/passwdзанимают ровно по одной строке каждая и имеют следующий вид:

псевдоним: password_hash: UserID: GroupID: Complete_Name: домашний_каталог: shell_bin

Примером может быть:

xfze: $$ 1zuW2nX3sslp3qJm9MYDdglEApAc36r /: 1000: 100: Даниэль Эрнесто Ортис Коста: / home / xfze: / bin / bash

Поскольку все пользователи должны иметь доступ для чтения к /etc/passwdфайлу для выполнения многих общих задач (например ls -l /home, /etc/passwdдля сопоставления UID с именами входа), любой может также читать хэши паролей других пользователей. Чтобы решить эту проблему, /etc/shadowбыл создан файл для хранения хэшей паролей, с доступом на чтение только root . При дублировании пароля второе поле ( хэш пароля ) заменяется знаком «x», который сообщает системе, что необходимо получить соответствующий пароль пользователя через /etc/shadowфайл.

/etc/shadowФайл часто содержит только значения первых двух полей:

xfze: $$ 1zuW2nX3sslp3qJm9MYDdglEApAc36r / :::::

Остальные поля в /etc/shadowфайле включают:

  1. Минимальное количество дней между сменой пароля
  2. Максимальное количество дней до смены пароля
  3. Количество дней предупреждения до смены пароля.
  4. Количество дней после смены пароля, когда учетная запись становится непригодной для использования.
  5. Дата (выраженная как количество дней с 1 января 1970 г. ), когда истекает срок действия учетной записи.

Эти поля могут использоваться для повышения безопасности Unix путем применения политики безопасности паролей.

Пользователи и аккаунты [ править ]

Администраторы должны незамедлительно удалить старые учетные записи.

  • su , sudo , только ssh , без удаленного входа в систему с root-доступом

Обслуживание программного обеспечения [ править ]

Исправление [ править ]

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

С точки зрения безопасности, конкретный метод упаковки, такой как формат диспетчера пакетов RPM , изначально созданный в Red Hat Linux , не так важен, как использование функций, обеспечивающих целостность самого исправления.

Исходные дистрибутивы [ править ]

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

Пакеты RPM [ править ]

Дистрибутивы Linux, которые используют формат диспетчера пакетов RPM для обеспечения базовой функциональности и обновлений программного обеспечения, используют MD5 и GPG для обеспечения целостности содержимого. Хеш-значения упакованы в файл RPM и проверяются при установке пакета.

Пакеты Debian [ править ]

Дистрибутивы Linux, которые используют формат пакета Debian .deb для обеспечения базовой функциональности и обновлений программного обеспечения, используют подписи GPG для обеспечения целостности содержимого. Подпись вычисляется при создании пакета и проверяется позже при установке пакета.

Другие поставщики и дистрибутивы [ править ]

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

Услуги [ править ]

Ненужное системное программное обеспечение не следует устанавливать или настраивать в системе. Программное обеспечение, которое больше не требуется, по возможности следует удалить полностью.

  • Определите, какие службы работают
    • netstat -na
    • lsof
    • nmap
    • sockstat -4 ( FreeBSD )

Команды inetd и xinetd действуют как суперсерверы для различных сетевых протоколов, таких как rlogin , telnet и ftp .

Отключение ненужных сервисов

  • используя update-rc.d в Debian
  • использование chkconfig в Red Hat Linux
  • используя /etc/rc.conf и /usr/local/etc/rc.d во FreeBSD (упомяните /etc/rc.local)
  • с помощью rc-update в Gentoo Linux

Такой подход обычно называют проактивной безопасностью . Некоторые операционные системы по умолчанию защищены . Среди прочего, бесплатные разновидности BSD ( FreeBSD , NetBSD и OpenBSD ) являются проактивно безопасными. Например, вывод netstat на рабочей станции NetBSD 3.0 четко описывает эту технику:

$ netstat -a Активные подключения к Интернету (включая серверы) Proto Recv-Q Send-Q Локальный адрес Состояние внешнего адреса tcp 0 0 localhost.smtp *. * LISTEN tcp 0 0 * .ssh *. * LISTEN Active Internet6 connections (включая серверы) Proto Recv-Q Send-Q Локальный адрес Внешний адрес (состояние) tcp6 0 0 localhost.smtp *. * LISTEN tcp6 0 0 * .ssh *. * LISTEN Активные сокеты домена UNIX Тип адреса Recv-Q Send-Q Inode Conn Refs Nextref Адресc0d10d80 dgram 0 0 0 c0cd8680 0 c0cb7000 -> / var / run / log c0cb7000 dgram 0 0 0 c0cd8680 0 0 -> / var / run / log c0cd8680 dgram 0 0 cb9639e8 0 c0d10d80 0 / var / run / log

Следующий пример из системы BSD

$ sockstat -4 КОМАНДА ПОЛЬЗОВАТЕЛЯ PID FD ПРОТО ЛОКАЛЬНЫЙ АДРЕС ИНОСТРАННЫЙ АДРЕС root sendmail 569 4 tcp localhost.smtp *. * root sshd 593 4 tcp * .ssh *. *

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

Файловые системы [ править ]

Безопасность файловой системы [ править ]

Безопасность файловой системы в UNIX и Unix-подобных системах основывается на 9 битах прав доступа, установочных битах идентификатора пользователя и группы и липком бите , всего 12 бит. Эти разрешения применяются почти одинаково ко всем объектам файловой системы, таким как файлы, каталоги и устройства.

9 битов разрешения разделены на три группы по три бита в каждой. Первая группа описывает разрешения владельца файла, вторая группа описывает разрешения группы, связанной с владельцем файла или каталогом, содержащим файл, а третья группа описывает разрешения, связанные с любым процессом, у которого нет того же пользователя. ID как файла. Каждая группа из трех битов содержит бит, указывающий, что предоставлен доступ для чтения, записи или выполнения. В случае каталогов доступ на выполнение интерпретируется как разрешение на поиск имени файла в каталоге.

Установленные биты идентификатора пользователя и набора идентификаторов группы, обычно сокращенно обозначаемые как set-UID и set-GID соответственно, используются для изменения идентификатора процесса, который выполняет файл, имеющий один или оба этих установленных бита. Файл с установленным битом разрешения set-UID заставит процесс, выполняющий этот файл, временно переключить эффективный идентификатор пользователя на идентификатор владельца файла. Файл с установленным GIDУстановленный бит разрешения заставит процесс, выполняющий этот файл, временно переключить эффективный идентификатор группы на идентификатор группы файлов. Затем процесс может чередоваться между эффективным идентификатором пользователя или группы, который он унаследовал из файла, и реальным идентификатором пользователя или группы, который он унаследовал, когда пользователь вошел в систему. Это обеспечивает механизм, с помощью которого процесс может ограничивать права доступа, которыми он обладает, теми областями кода, для которых требуются эти права доступа. Это форма техники безопасности, известная как разделение привилегий, которая улучшает безопасность программы, ограничивая непреднамеренные или нежелательные действия процессов.

Каталог, имеющий установленный бит разрешения set-GID, приведет к тому, что вновь созданный файл будет иметь начальное значение группы файлов, равное группе файлов каталога. Это обеспечивает механизм, с помощью которого подсистема, такая как почтовая подсистема системы, может создавать файлы, которые имеют общее значение группы файлов, так что процессы set-GID в этой подсистеме затем могут читать или записывать файл.

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

Корневой сквош [ править ]

Root squash [2] [3] - это специальное отображение удаленного суперпользователя (root) при использовании аутентификации личности (локальный пользователь совпадает с удаленным пользователем). В корневом сквоше клиентский uid 0 (root) отображается на 65534 (никто). Это в первую очередь функция NFS, но может быть доступна и в других системах.

Root squash - это метод, позволяющий избежать повышения привилегий на клиентской машине с помощью исполняемых файлов suid Setuid . Без корневого сквоша злоумышленник может сгенерировать на сервере двоичные файлы suid, которые будут выполняться от имени пользователя root на другом клиенте, даже если пользователь клиента не имеет привилегий суперпользователя. Следовательно, он защищает клиентские машины от других злонамеренных клиентов. Он не защищает клиентов от злонамеренного сервера (на котором root может генерировать двоичные файлы suid) и не защищает файлы любого пользователя, кроме root (поскольку злонамеренные клиенты могут выдавать себя за любого пользователя).

SELinux [ править ]

SELinux - это набор расширений ядра для более точного управления доступом, строго определяющий, как и как файлы, папки, сетевые порты и другие ресурсы могут быть доступны для ограниченного процесса. Эта система в основном используется для ограничения процессов (базы данных, сервера), а не пользователей. Он также может ограничивать процессы, выполняемые от имени пользователя root. В других дистрибутивах используются аналогичные альтернативы, такие как AppArmor .

Вирусы и антивирусные сканеры [ править ]

Unix-подобные операционные системы невосприимчивы к большинству вирусов Microsoft Windows, поскольку двоичные файлы, созданные для работы в Windows, обычно не работают на других платформах. Однако многие системы, подобные Unix, предоставляют клиентам Microsoft Windows услуги хранения файлов, например, с помощью программного обеспечения Samba , и могут непреднамеренно стать хранилищем вирусов, хранимых пользователями. Серверы Unix обычно действуют как агенты передачи почты, и, как следствие, часто устанавливается сканирование электронной почты на вирусы. ClamAV антивирусный сканер доступен в виде исходного кода и может быть использован для сканирования файловой системы Unix для вирусов , которые заражают другие операционные системы.

Существуют вирусы и черви, нацеленные на Unix-подобные операционные системы. Фактически, первый компьютерный червь - червь Морриса - был нацелен на системы Unix.

Брандмауэры [ править ]

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

iptables [ править ]

iptables - это текущий пользовательский интерфейс для взаимодействия с функцией netfilter ядра Linux . Он заменил ipchains . Другие Unix- подобные операционные системы могут предоставлять свои собственные собственные функции, и существуют другие брандмауэры с открытым исходным кодом . Более подробная информация об iptables содержится в другом месте. Здесь содержится краткое обсуждение, чтобы описать, как iptables можно использовать для настройки межсетевого экрана Linux.

Netfilter предоставляет государственную полный фильтр пакетов , который может быть настроен в соответствии с сетевым интерфейсом , протоколом , источника и / или адрес назначения , источника и / или порт назначения и состояния пакета. Сетевой пакет проходит несколько цепочек между моментом его получения сетевым интерфейсом и моментом его приема хостом или пересылки на другой хост. Общие цепочки - ВХОД , ВЫХОД и ВПЕРЕД . ВХОД цепьпроходит для всех пакетов по мере их получения сетевым интерфейсом, независимо от того, должны ли они быть приняты хостом или перенаправлены на другой хост. ВЫХОД цепь пересечена для всех пакетов , так как они передаются посредством сетевого интерфейса. ВПЕРЕД цепь пройденная за эти пакеты отправляются через хост от одного сетевого интерфейса к другому, например , как это имеет место для многодомной системы (системы с более чем одним физическими сетевым интерфейсом).

Каждая из встроенных цепочек имеет политику по умолчанию, которая определяет, какие действия предпринимаются для пакета, который достигает конца цепочки. Обход пакета заканчивается, когда правило соответствует пакету и имеет действие ACCEPT , DROP , REJECT или RETURN .

Простейший брандмауэр iptables состоит из правил для каждой желаемой службы, за которыми следует правило, указывающее, что любые пакеты, которые достигают этого правила, отбрасываются. Система, которая разрешала, например, только входящий почтовый трафик, имела бы правило, которое принимало соединения через порт SMTP , а затем отбрасывало другие. Требуется правило, указывающее, что все установленные соединения также разрешены, чтобы исходящие соединения получали ответы от других систем.

Цепочка INPUT [ править ]

В следующем примере показан простой фильтр пакетов для цепочки INPUT для описанного выше примера:

Цепочка INPUT (политика DROP 0 пакетов, 0 байтов) pkts bytes target prot opt ​​in source назначение 0 0 ПРИНЯТЬ все - любое, где угодно и где угодно состояние УСТАНОВЛЕНО 0 0 ПРИНЯТЬ tcp - любой, где угодно, где угодно tcp dpt: smtp 0 0 LOG all - любой, где угодно, где угодно, предупреждение об уровне журнала 0 0 БРОСИТЬ все - что угодно, где угодно и где угодно

Добавление явного действия DROP гарантирует, что пакеты будут отброшены, если политика по умолчанию цепочки INPUT случайно будет изменена на ACCEPT .

ВЫХОДНАЯ цепочка [ править ]

В цепочке OUTPUT меньше необходимости, и политику по умолчанию для цепочки OUTPUT можно безопасно установить на ACCEPT . В некоторых случаях может быть желательно, чтобы брандмауэр ограничивал определенные исходящие соединения определенным набором утвержденных систем. Это известно как исходящая фильтрация и может использоваться для предотвращения проникновения вирусов в брандмауэре в другие системы. Например, политикой сети может быть ограничение исходящих подключений электронной почты к отдельным авторизованным серверам электронной почты как способ борьбы со спамом в электронной почте . Этого можно добиться на следующем примере:

Цепочка ВЫХОДА (политика ПРИНЯТЬ) pkts bytes target prot opt ​​in source назначение 0 0 DROP tcp - любой любой! Сервер где угодно tcp dpt: smtp

Нет необходимости включать какие-либо другие правила в этот пример, поскольку политика по умолчанию для цепочки OUTPUT - ACCEPT . Это правило предполагает, что хост, который действует как брандмауэр, не будет сам отправлять электронную почту, например, на почтовый сервер. Это хорошее предположение, поскольку обычно система брандмауэра содержит минимальный объем системного кода, необходимый для работы в качестве брандмауэра.

Более ограничительная цепочка OUTPUT будет содержать разрешающие ( ACCEPT ) записи для тех служб, к которым можно получить доступ за пределами брандмауэра, а затем ограничительную политику ( DROP ) для самой цепочки.

Общие [ править ]

Безопасная сетевая связь:

  • Уровень 7: GPG / PGP
  • Уровни 4,5: SSL / TLS / Stunnel / S / MIME
  • Уровень 3: VPN , IPsec
  • Уровень 2: PPTP

Анализ пакетов:

  • tcpdump , Wireshark

Атаки:

  • Человек в средней атаке
  • ЗЕМЛЯ , пинг смерти , пакет с рождественской елкой , отказ в обслуживании и др.
  • Программные инструменты, основанные на атаках на систему, основанных на паролях / парольных фразах / кражах ключей. Такие как strace / truss / tusc / dtrace / SystemTap.

Расширенный [ править ]

  • руткиты , модули ядра, chkrootkit
  • детали эксплойта, переполнение буфера , локальный или удаленный

Детали услуги [ править ]

  • баннеры
  • SMTP - спам
  • Sendmail - версия заголовка справки по баннерам и т. Д.
  • Система доменных имен - обратное сопоставление dnssec

Ссылки [ править ]

  1. ^ Леви, Божидар (2002). Администрирование UNIX: исчерпывающий справочник по эффективным системам и управлению сетями . CRC Press. п. 207. ISBN. 0-8493-1351-1.
  2. ^ Tykhomyrov, Olexiy (1 января 2002). «Запуск общего доступа к файлам с помощью NFS» . Linux Journal . Архивировано 8 августа 2019 года . Дата обращения 9 августа 2019 .
  3. ^ "/ etc / exports documentation" . Проект CentOS. Архивировано из оригинала на 2007-05-29.

Общие [ править ]

  • Практическая UNIX и безопасность в Интернете, Симсон Гарфинкель и Джин Спаффорд, O'Reilly & Associates, 2003.

Внешние ссылки [ править ]

  • Модель безопасности Unix для администрирования веб-сервера [ мертвая ссылка ] Роберт К. Монио 2000
  • Обзор архитектуры сетевой безопасности UNIX Роберт Б. Рейнхардт 1993
  • Ценные бумаги Unix