Безопасность Unix - Unix security

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

Концепции дизайна

Разрешения

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

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

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

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

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

/ pvr [u :: rwx, g :: r-x, o :: r-x / u :: rwx, u: sue: rwx, g :: r-x, m :: rwx, o :: r-x]

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

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

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

Корневой доступ

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

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

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

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

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

Пароли

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

псевдоним: password_hash: UserID: GroupID: Complete_Name: home_dir: shell_bin

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

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

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

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

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

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

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

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

Пользователи и аккаунты

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

  • вс, судо, 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, телнет и 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 *. * СЛУШАТЬtcp 0 0 * .ssh *. * СЛУШАТЬАктивный Интернет6 подключений (включая серверы)Proto Recv-Q Send-Q Локальный адрес Внешний адрес (состояние)tcp6 0 0 localhost.smtp *. * СЛУШАТЬtcp6 0 0 * .ssh *. * СЛУШАТЬАктивные сокеты домена UNIXТип адреса Recv-Q Send-Q Inode Conn Refs Nextref Addrc0d10d80 dgram 0 0 0 c0cd8680 0 c0cb7000 -> / var / run / logc0cb7000 dgram 0 0 0 c0cd8680 0 0 -> / var / run / logc0cd8680 dgram 0 0 cb9639e8 0 c0d10d80 0 / var / run / log

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

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

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

Файловые системы

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

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

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

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

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

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

Корневая тыква

Корневая тыква[2][3] это специальное отображение удаленного суперпользователь (корневой) идентификатор при использовании аутентификация личности (локальный пользователь такой же, как удаленный пользователь). В корневом сквоше клиентский 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 это текущий пользовательский интерфейс для взаимодействия с Linux ядро сетевой фильтр функциональность. Он заменил ipchains. Другой Unix подобные операционные системы могут предоставлять свои собственные функции и другие Открытый исходный код брандмауэры существуют. Более подробная информация об iptables содержится в другом месте. Здесь содержится краткое обсуждение, чтобы описать, как iptables можно использовать для настройки межсетевого экрана Linux.

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

Каждая из встроенных цепочек имеет значение по умолчанию политика который определяет, какое действие выполняется для пакета, который достигает конца цепочки. Обход пакетов заканчивается, когда правило соответствует пакету и имеет действие ПРИНИМАТЬ, УРОНИТЬ, ОТКЛОНЯТЬ или же ВОЗВРАЩАТЬСЯ.

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

Цепочка INPUT

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

Цепочка INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt ​​in out source destination 0 0 ACCEPT all - любое любое в любом месте в любом месте состояние ESTABLISHED 0 0 ACCEPT tcp - любое любое место в любом месте tcp dpt: smtp 0 0 LOG all - любое в любом месте в любом месте Предупреждение об уровне журнала 0 0 УДАЛИТЬ все - в любом месте в любом месте

Добавление явного УРОНИТЬ действие гарантирует, что пакеты будут отброшены, если политика по умолчанию ВХОД цепь случайно была заменена на ПРИНИМАТЬ.

ВЫХОДНАЯ цепочка

Менее нужна ВЫХОД цепочка и по умолчанию политика из ВЫХОД цепь можно безопасно установить на ПРИНИМАТЬ. В некоторых случаях может быть желательно, чтобы межсетевой экран ограничивал определенные исходящие соединения определенным набором утвержденных систем. Это известно как исходящая фильтрация и может использоваться для предотвращения проникновения вирусов из межсетевого экрана в другие системы. Например, политика сети может заключаться в ограничении исходящих подключений электронной почты к отдельным авторизованным серверам электронной почты как способ борьбы с спам в электронной почте. Этого можно добиться на следующем примере:

Цепочка OUTPUT (policy ACCEPT) pkts bytes target prot opt ​​in out source destination 0 0 DROP tcp - любой любой! Сервер в любом месте tcp dpt: smtp

Нет необходимости включать какие-либо другие правила в этот пример в качестве политики по умолчанию для ВЫХОД цепь ПРИНИМАТЬ. Это правило предполагает, что хост, который действует как брандмауэр, не будет сам отправлять электронную почту, например, на почтовый сервер. Это хорошее предположение, поскольку обычно система межсетевого экрана содержит минимальный объем системного кода, необходимый для работы в качестве межсетевого экрана.

Более строгий ВЫХОД цепочка будет содержать разрешающий (ПРИНИМАТЬ) записи для тех служб, к которым можно получить доступ за пределами брандмауэра, а затем ограничительный (УРОНИТЬ) политика для самой сети.

Общий

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

Обнюхивание пакетов:

Атаки:

Передовой

Детали услуги

Рекомендации

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

Общий

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

внешняя ссылка