Изменить политику аутентификации для службы for linux
Конфигурация политики безопасности Linux - модуль аутентификации PAM_TALLY2
Экземпляр конфигурации безопасности аутентификации PAM
- Сохранить надежный пароль (конфигурация безопасности пароля пользователя)
- Пользовательская попытка пользователя SSH SSH превышает предел после заблокированного лимита (блокировка учетной записи / разблокировка и настройка времени)
- Разрешить обычным пользователям использовать Sudo вместо SU (ограничивая обычные пользователи, чтобы войти в пользователей root)
- запрещено непосредственно с помощью пользователей root, чтобы войти через SSH
Pwgen Комплекс пароль Случайный инструмент сборки
О PAM.
Linux-PAM (подключаемые модули аутентификации для Linux) подключены к модулю аутентификации.Linux-Pam - это набор систем библиотечных библиотек аутентификации для подлинности для Linux, обеспечивая поддержку динамического модуля аутентификации для приложений или услуг в системе. В Linux Pam Pam динамически настраивается, а администратор локальной системы может свободно выбирать, как приложение аутентифицирует пользователя. Приложения PAM находятся на многих программах и службах, таких как аутентификация PAM (аутентификация пароля, логин аутентификации, ограничения), Passwd и пользовательские процессы, а также процессы пользовательских процессов выделяют системные ресурсы для пользователей.
Основной особенностью PAM является то, что природа аутентификации динамически настроена. Основной частью PAM является коллекцией модулей Libpams и PAM, которые являются файлами динамической библиотеки ссылок (.so), расположенные в папке / lib / Security /, а в каталоге /etc/pam.d/ (или модуль PAM Профиль файла конфигурации /etc/pam.conf. Файл конфигурации PAM различных программ и сервисов определяется в каталоге /etc/pam.d/, где файл system-auth - это важный профиль модуля PAM. Он в основном отвечает за аутентификацию идентификации системы входа в систему пользователя , не только другие приложения или услуги могут вызвать его через интерфейс включения (этот файл имеет мягкую ссылку System-AUTH-AC). Кроме того, файл конфигурации паролей-Auth - также важные файлы конфигурации, связанные с аутентификацией, такие как пользователь Remote Loginy Verification (вход в систему SSH), называется. В выпуске Ubuntu, SUSE Linux, основные профили PAM являются четыреми файлами Common-auth, Common - Common-Password, Common-Sessional, все приложения и обслуживание первичных конфигураций PAM PAM. Вызов. Вызов
Используйте следующую команду, чтобы определить, использует ли программа PAM:
libpam_misc.so.0 => /lib64/libpam_misc.so.0 (0x00007fb74f748000)
libpam.so.0 => /lib64/libpam.so.0 (0x00007fb74eb45000)
Если у вас есть аналогичный выход, это означает, что программа использует PAM, без вывода, без использования.
Профиль аутентификации PAM
Каталог /etc/pam.d/ содержит файл конфигурации PAM приложения. Например, программа входа в систему определяет его имя программы / обслуживания в качестве входа, а соответствующий файл конфигурации PAM - /etc/pam.d/login.
Формат синтаксиса файлов конфигурации PAM
Каждый файл конфигурации PAM содержит набор инструкций для определения модулей и контрольных флагов и параметров. Каждая инструкция имеет простой синтаксис для идентификации цели модуля (интерфейса) и настройки конфигурации модуля, формат синтаксиса выглядит следующим образом:
module_interface control_flag module_name module_arguments |
Как в файле конфигурации /etc/pam.d/password-auth-ac (centos), одна из линий определений модуля PAM следующим образом
Интерфейс модуля PAM (группа управления модулем)
PAM предоставляет четыре типа доступных интерфейсов модулей для задач аутентификации, которые предоставляют различные услуги аутентификации:
√ auth | - Интерфейс модуля аутентификации, такой как проверка идентификации пользователя, проверьте, может ли пароль проходить и установить учетные данные пользователя |
√ account | - Интерфейс модуля учетных записей, проверьте, соответствует ли указанная учетная запись текущего состояния проверки, такое как пользователь имеет право доступа к запрошенной службе, проверьте, истекает ли учетная запись |
√ password | - Интерфейс модуля паролей, используемый для изменения пользовательского пароля и принудительно настроить конфигурацию прочных паролей |
√ session | - Интерфейс модуля сеанса для управления и настройки пользовательских сеансов. Сессия запускается в силу после успешной аутентификации пользователя |
Модуль библиотеки одного PAM может быть предоставлен для любых или всех интерфейсов модулей. Например, PAM_UNIX.SO предоставляется четырем интерфейсам модуля.
Логотип управления PAM PAM
Все модули PAM вызываются, когда они вызываются, и возвращается результат успеха или провала, и каждый модуль PAM определяется несколькими соответствующими флагами управления в каждом модуле PAM, определяет, передается ли результат или не удастся. Каждый флаг управления соответствует результату обработки, а библиотека PAM интегрирует результаты этих проходов / сбой в целый результат pass / неисправности, а затем возвращает результат к приложению. Модуль может быть укладывается в определенном порядке. Флаг управления является определенной детализацией реализации, которая реализует пользователей в конкретном аутентификации приложения или услуг. Флаг управления - это второе поле в файле конфигурации PAM, а флаг управления PAM выглядит следующим образом:
> required | - Результаты модуля должны быть успешными, чтобы продолжать быть сертифицированным. Если тест не удается здесь, продолжайте тестирование следующего модуля в интерфейсе модуля, пока все тесты модуля не будут завершены, уведомление пользователю. |
> requisite | - Результат модуля должен быть успешным, чтобы продолжать быть сертифицированным. Если тест не удается здесь, результат отказа уведомлен пользователю. |
> sufficient | - Результаты модуля, если тест не удается, он будет игнорироваться. Если достаточный модуль успешен, и предыдущий необходимый модуль не имеет неисправности, PAM возвращает результат принятого результата и не вызывает других модулей в стеке. |
> optional | - Результат прохода / сбоя, возвращаемого модулем, игнорируется. Когда нет другого модуля, который не ссылается, модуль необходим для отмены дополнительного модуля, и требуется модуль. Этот модуль вызывается для выполнения некоторых операций и не влияет на результат стека модуля. |
> include | - В отличие от других флагов управления, включая метод обработки результатов модуля. Этот флаг используется для непосредственного ссылки на параметры конфигурации других модулей PAM PAM |
Метод конфигурации PAM
Экземпляр конфигурации безопасности аутентификации PAM
Один,Заставить надежный пароль (конфигурация безопасности пароля пользователя)
Файл конфигурации PAM: /etc/pam.d/system-auth-ac
Имя модуля: PAM_CRACKLIB (доступно только для интерфейса модуля пароля)
Minlen = 12 Длина символа символа пароля не менее 12 цифр (по умолчанию 9)
Lcredit = -1 содержит не менее 1 строчной буквы
Ucredit = -1 содержит как минимум 1 заглавную букву
Dcredit = -1 содержит как минимум 1 номер
Ocredit = -1 содержит как минимум 1 специальный символ
Повторите попытку = 3 При настройке пароля, подскажите 3 ввода ошибки пароля пользователя
Различные 6 символов в новом пароле, отличном от старого пароля, когда Difok = 6 Настроить пароли (по умолчанию 5)
Другие общие параметры:
Reject_username Новый пароль не может содержать одно и то же поле, что и имя пользователя
MaxRepeat = n отказался содержать пароли, которые превышают n непрерывных символов, значение по умолчанию равно 0 указывает, что эта проверка отключена.
MaxeSsexence = N отказался от пароля, содержащего монотонную последовательность символов, больше n, например, «1234» или «FEDCB», даже без этой конфигурации параметра, большинство таких паролей не пройдет, если только последовательность не будет просто паролем. Раздел
MaxCla *** Epeat = n отклоняет пароль N или более последовательных символов, которые содержат одну и ту же категорию. Значение по умолчанию равно 0 указывает, что этот чек отключен.
Use_authtok Обеспечивает предыдущий пароль, не предложит пользователю ввести новый пароль (не разрешено менять пароль)
Имя модуля: PAM_UNIX (для учетной записи, аутентики, пароля и модуля сеанса)
Помните = n Сохраняет N Пароли, используемые каждым пользователем, обязательный пароль не может быть повторен с паролем истории
Другие общие параметры:
SHA512 Когда пользователь меняет пароль в следующий раз, используйте алгоритм SHA256 для шифрования
MD5 Когда пользователь изменяет пароль, используйте алгоритм MD5 для шифрования его.
TRY_FIRST_PASS Перед тому, чтобы запросить пользователю ввести пароль, модуль сначала пытается предыдущий пароль для проверки того, будет ли удовлетворить требование модуля.
Use_first_pass Этот модуль обеспечивает предыдущий пароль (не разрешено изменять пароль), если пароль пуст или пароль не правильный, пользователь будет отклонен доступом
Пароль защиты пользователей тени
Nullok по умолчанию для пустых сервисов доступа к паролю
Use_authtok Обеспечивает предыдущий пароль, не предложит пользователю ввести новый пароль (не разрешено менять пароль)
Измените конфигурацию /etc/pam.d/system-auth-ac файл, измените или добавьте параметры конфигурации в модуле пароля, следующим образом:
password requisite pam_cracklib.so try_first_pass retry=3 type= reject_username minlen=12 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 difok=6
Модифицированный файл конфигурации /etc/pam.d/system-auth-ac показан ниже
Следует отметить, что я отображаюсь здесь, это конфигурация под RHEL / CENTOS, файл конфигурации PAM PAMWD PAMWD включает первичный профиль /etc/pam.d/passwd и /etc/pam.d/system-auth-ac (или / или / etc / pam.d / password-auth-ac), где файл конфигурации /etc/pam.d/passwd содержит только файл конфигурации /etc/pam.d/system-auth-ac, поэтому для приведенного выше пароля аутентификации PAM Конфигурация модуля, модифицировать / настроить файл. Или в Ubuntu файл конфигурации включает в себя: /etc/pam.d/common-password/count/PAM.D/Common-acccount/Common (Pammon-AUTC / PAM.D / Common-auth / etc / pam.d / общее представление.
Тестовая конфигурация PAM:
Логин (SU) Нормальные пользователи используют программу Passwd для обновления пароля, если входной пароль не соответствует требованиям, он не будет изменен.
И снова здравствуйте! Уже завтра начинаются занятия в новой группе курса «Администратор Linux», в связи с этим публикуем полезную статью по теме.
В прошлом туториале мы рассказывали, как использовать pam_cracklib , чтобы усложнить пароли в системах Red Hat 6 или CentOS. В Red Hat 7 pam_pwquality заменила cracklib в качестве pam модуля по умолчанию для проверки паролей. Модуль pam_pwquality также поддерживается в Ubuntu и CentOS, а также во многих других ОС. Этот модуль упрощает создание политик паролей, чтобы удостовериться, что пользователи принимают ваши стандарты сложности паролей.
Долгое время обычным подходом к паролям было заставить пользователя использовать в них символы верхнего и нижнего регистра, цифры или иные символы. Эти базовые правила сложности паролей активно пропагандируются в последние десять лет. Было множество дискуссий о том, является это хорошей практикой или нет. Основным аргументом против установки таких сложных условий было то, что пользователи записывают пароли на бумажках и небезопасно хранят.
Другая политика, которая недавно была поставлена под сомнение, заставляет пользователей менять свои пароли каждые x дней. Были проведены некоторые исследования, которые показали, что это также наносит ущерб безопасности.
На тему этих дискуссий было написано множество статей, которые обосновывали ту или другую точку зрения. Но это не то, что мы будем обсуждать в этой статье. Эта статья расскажет о том, как корректно задать сложность пароля, а не управлять политикой безопасности.
Параметры политики паролей
Ниже вы увидите параметры политики паролей и краткое описание каждого из них. Многие из них схожи с параметрами в модуле cracklib . Такой подход упрощает портирование ваших политик из старой системы.
- difok – Количество символов в вашем новом пароле, кототрые НЕ должны присутствовать в вашем старом пароле. (По умолчанию 5)
- minlen – Минимальная длина пароля. (По умолчанию 9)
- ucredit – Максимальное количество кредитов за использование символов верхнего регистра (если параметр > 0), или минимальное требуемое число символов верхнего регистра (если параметр < 0). По умолчанию 1.
- lcredit — Максимальное количество кредитов за использование символов нижнего регистра (если параметр > 0), или минимальное требуемое число символов нижнего регистра (если параметр < 0). По умолчанию 1.
- dcredit — Максимальное количество кредитов за использование цифр (если параметр > 0), или минимальное требуемое число цифр (если параметр < 0). По умолчанию 1.
- ocredit — Максимальное количество кредитов за использование иных символов (если параметр > 0), или минимальное требуемое количество иных символов (если параметр < 0). По умолчанию 1.
- minclass – Устанавливает количество требуемых классов. Классы включают в себя вышеперечисленные параметры (символы верхнего регистра, нижнего регистра, цифры, иные символы). По умолчанию 0.
- maxrepeat – Максимальное число повторений символа в пароле. По умолчанию 0.
- maxclassrepeat — Максимальное количество последовательных символов в одном классе. По умолчанию 0.
- gecoscheck – Проверяет, содержит ли пароле какие-либо слова из строк GECOS пользователя. ( Информация о пользователе, т.е. настоящее имя, местоположение и т.д.) По умолчанию 0 (выключено).
- dictpath – Пусть к словарям cracklib.
- badwords – Разделенные пробелом слова, которые запрещены в паролях (Название компании, слово «пароль» и т. д. ).
Конфигурация политики паролей
Перед тем, как начинать редактировать файлы конфигурации, хорошей практикой считается заранее записать базовую политику паролей. Например, мы будем использовать следующие правила сложности:
- Пароль должен иметь минимальную длину 15 символов.
- В пароле один и тот же символ не должен повторяться более двух раз.
- В пароле классы символов могут повторяться до четырех раз.
- Пароль должен содержать символы из каждого класса.
- Новый пароль должен иметь 5 новых символов по сравнению со старым.
- Включить проверку GECOS.
- Запретить слова «password, pass, word, putorius»
Как вы могли заметить, некоторые параметры в нашем файле избыточны. Например, параметр minclass избыточен, поскольку мы уже задействуем как минимум два символа из класса, используя поля [u,l,d,o]credit . Наш список слов, которые нельзя использовать также избыточен, поскольку мы запретили повторение какого-либо класса 4 раза (все слова в нашем списке написаны символами нижнего регистра). Я включил эти параметры только, чтобы продемонстрировать, как использовать их для настройки политики паролей.
Как только вы создали свою политику, вы можете принудить пользователей сменить свои пароли при следующем их входе в систему.
Еще одна странная вещь, которую вы, возможно, заметили, заключается в том, что поля [u,l,d,o]credit содержат отрицательное число. Это потому что числа больше или равные 0 дадут кредит на использование символа в вашем пароле. Если поле содержит отрицательное число, это значит, что требуется определенное количество.
Что такое кредиты (credit)?
Я называю их кредитами, поскольку это максимально точно передает их назначение. Если значение параметра больше 0, вы прибавляете количество «кредитов на символы» равное «х» к длине пароля. Например, если все параметры (u,l,d,o)credit установить в 1, а требуемая длина пароля была 6, то вам понадобится 6 символов для удовлетворения требования длины, потому что каждый символ верхнего регистра, нижнего регистра, цифра или иной символ дадут вам один кредит.
Если вы установите dcredit в 2, вы теоретически сможете использовать пароль длиной в 9 символов и получить 2 кредита на символы для цифр и тогда длина пароля уже может быть 10.
Посмотрите на этот пример. Я установил длину пароля 13, установил dcredit в 2, а все остальное в 0.
Моя первая проверка провалилась, поскольку длина пароля была меньше 13 символов. В следующий раз я изменил букву “I” на цифру “1” и получил два кредита за цифры, что приравняло пароль к 13.
Тестирование пароля
Пакет libpwquality обеспечивает функционал, описанный в статье. Также с ним поставляется программа pwscore , которая предназначена для проверки пароля на сложность. Мы использовали ее выше, для проверки кредитов.
Утилита pwscore читает из stdin. Просто запустите утилиту и напишите свой пароль, она выдаст ошибку или значение от 0 до 100.
Показатель качества пароля соотносится с параметром minlen в файле конфигурации. В целом показатель меньше 50 рассматривается как «нормальный пароль», а выше – как «сильный пароль». Любой пароль, который проходит проверки на качество (особенно принудительную проверку cracklib ) должен выдержать атаки словаря, а пароль с показателем выше 50 с настройкой minlen по умолчанию даже brute force атаки.
Настройка pwquality – это легко и просто по сравнению с неудобствами при использовании cracklib с прямым редактированием файлов pam . В этом руководстве мы рассмотрели все, что вам понадобится при настройке политик паролей в Red Hat 7, CentOS 7 и даже систем Ubuntu. Также мы поговорили о концепции кредитов, о которых редко пишут подробно, поэтому эта тема часто оставалась непонятной тем, кто с ней ранее не сталкивался.
Когда мы рассматривали настройку SSSD на Debian 8 (Jessie) , немного упоминали о возможности ограничения доступа к Linux-системе через группы безопасности в домене Active Directory. Однако рассматриваемый в том случае пример предполагает безусловное глобальное ограничение доступа на уровне всей Linux-системы. То есть, указанная в секции описания домена конфигурационного файла sssd.conf опция simple_allow_groups ограничивает доступ не только для входа в систему, но и для всех других служб внутри этой системы, которые будут использовать возможности SSSD. Таким образом, рассмотренный ранее пример настройки авторизации с помощью SSSD в Apache точно также, как и другие сервисы, использующие SSSD, будет ограничен глобальной опцией simple_allow_groups . Но как же быть, если доступ к Linux-системе и её отдельным сервисам требует гранулированной настройки? Например, требуется, чтобы право локального и/или удалённого входа в систему имели члены одной доменной группы безопасности, а право доступа к какому-то сайту веб-сервера Apache (или даже отдельному веб-каталогу) имели члены другой группы безопасности домена Active Directory. Попробуем решить эту задачу с помощью настройки механизма подключаемых модулей аутентификации - Pluggable Authentication Modules (PAM), а конкретнее с помощью использования возможностей библиотеки pam_listfile.so .
Отключаем ограничения SSSD
Для начала нам потребуется отключить ограничения по доменным группам безопасности, явно заданные в конфигурации SSSD, если такие ограничения были задействованы ранее. Например, если в конфигурационном файле /etc/sssd/sssd.conf в секции, описывающей домен Active Directory по ранее рассмотренному примеру было задано ограничение для конкретной доменной группы безопасности…
То теперь мы можем отключить такое ограничение, заменив соответствующие параметры на такой вариант:
После внесённых изменений выполним перезапуск службы sssd с очисткой кеша:
Таким образом мы отключим глобальное ограничение, нацеленное на определённую доменную группу безопасности и все службы, которые используют аутентификацию/авторизацию из SSSD, можно будет отдельно настроить на ограничение отдельных групп безопасности.
Общий принцип настройки политик PAM для разных служб
Если мы заглянем в каталог /etc/pam.d/ , то увидим множество файлов, определяющих политики PAM для той или иной службы сервера, умеющей использовать аутентификацию и авторизацию с помощью PAM. Структура файлов в этом каталоге мне больше нравится в Debian, чем в CentOS, так как более интуитивно понятна и упорядочена. Например, общие для всех параметры в Debian включены в файлы с понятными именами common- ( common-auth , common-account , common-password и т.п.). Эти файлы в свою очередь подключены в файлах, касающихся отдельных служб, например login или sshd (в них присутствуют строки типа @include common-auth ). Таким образом, воздействовать на настройки PAM для разных служб можно как на глобальном уровне, изменяя файлы /etc/pam.d/ common- , так и на уровне отдельных служб, изменяя конкретные файлы типа /etc/pam.d/ login или /etc/pam.d/ sshd .
Так как нам требуется уникальная настройка ограничения прав доступа для разных служб, то общие файлы типа common-* мы трогать не будем, а будем изменять конфигурационные файлы PAM для отдельных служб. Для ограничения доступа мы будем использовать возможности библиотеки pam_listfile.so , которую будем вызывать в файлах политик PAM интересующих нас служб в каталоге /etc/pam.d/ .
Библиотека pam_listfile.so – это удобный инструмент, который, в частности, позволяет выполнять проверку вхождения пользователя в группу, которая указана во внешнем файле. В таком внешнем файле могут быть указаны как локальные по отношению к серверу группы, так и группы безопасности из домена Active Directory, список которых, в свою очередь, нам помогает получать sssd. Файл групп может содержать как одну группу, так и несколько (по одной группе в каждой отдельной строке). При этом в одном файле можно комбинировать как локальные, так и доменные группы.
Далее мы рассмотрим пример того, как подобным образом настроить PAM-политику для локального входа на сервер ( /etc/pam.d/login ), подключения к серверу SSHD ( /etc/pam.d/sshd ) и доступа к сайту веб-сервера Apache (создадим собственный файл политик PAM).
Настраиваем PAM для ограничения доступа на локальный вход в систему
Создадим файл для хранения списка групп, которым мы хотим предоставить право локального входа в систему. Обязательно ограничим доступ к этому файлу:
Наполним файл группами, по одной в каждой строчке. Обязательно укажем системные локальные группы типа root и adm, чтобы ненароком не отобрать доступ к серверу у локальных административных учётных записей Linux, затем перечислим нужные доменные группы безопасности:
Теперь файл групп подключим к политике PAM в конфигурационном файле /etc/pam.d/login таким образом, чтобы его использование было инициировано вызовом библиотеки pam_listfile.so .
В данном примере библиотека pam_listfile.so вызывается модулем account, который используется на этапе авторизации. Набор параметров ( onerr=fail item=group sense=allow ) определяет то, что авторизация считается не успешной, если проверяемый пользователь не входит ни в одну из перечисленных в указанном файле групп ( file=/etc/access-groups-to-system ). При этом желательно учитывать порядок вызова модулей в файле политик PAM, то есть вызов нашей проверки членства в группе можно сделать до того, как идёт стандартная обработка модулей account (подключаемых в данном конкретном примере из common-account ).
Перед правкой файлов PAM важно учитывать то, что любая некорректная их правка может привести к тому, что мы заблокируем доступ к системе. Поэтому пока правим и отлаживаем эти файлы лучше не закрывать текущую сессию администратора, а проверки делать, используя отдельные дополнительные подключения, чтобы у нас была возможность исправления возможных проблем.
Итак, попробуем залогиниться на консоль сервера, используя учётную запись пользователя, входящего в разрешённую нами доменную группу. При этом наблюдаем за логом auth.log . В случае успешной аутентификации и авторизации увидим примерно следующее:
Теперь попробуем залогиниться, используя любую другую доменную учётную запись пользователя, заведомо не входящую ни в одну из разрешённых групп:
Как видим, этап аутентификации прошёл успешно, то есть учётные данные пользователя проверены, однако на этапе авторизации доступ был заблокирован.
Аналогичным образом рекомендуется проверить не только доступ доменных учётных записей, но и доступ локальных административных записей Linux, чтобы у нас всегда оставалась возможность подключения к серверу, даже если с sssd возникнут какие-то проблемы и доменная аутентификация вдруг перестанет работать.
Настраиваем PAM для ограничения доступа к серверу SSHD
Аналогичным образом можем настроить доступ к службе сервера sshd. Для этого нам потребуется внести изменения в файл политик PAM для этой службы - /etc/pam.d/sshd .
Здесь мы уже можем использовать другой файл для хранения групп доступа. Однако учитывая то, что к sshd обычно имеют доступ те же пользователи, что имеют право локального входа на сервер мы будем указывать тот же файл, что использовали для политик PAM в конфигурационном файле /etc/pam.d/login .
В конфигурационном файле настроек службы sshd ( /etc/ssh/sshd_config ) в конфигурации по умолчанию уже имеется опция разрешающая использовать аутентификацию с помощью PAM:
Поэтому никаких дополнительных настроек в системе делать не потребуется.
И также как, в случае с ранее рассмотренной настройкой локального входа, проверяем для службы sshd возможность аутентификации доменным пользователем из разрешённой группы доступа, прочим доменным пользователем, а также локальным пользователем Linux.
Настраиваем PAM для ограничения доступа к сайту веб-сервера Apache
Теперь рассмотрим более сложный пример с ограничением доступа к некому сайту веб-сервера Apache, который работает на нашем Linux-сервере. Предположим, что к сайту должны иметь доступ доменные пользователи, входящие в группу безопасности KOM-SRV-WebApp1-Operators .
Сначала создадим файл, содержащий группы доступа к нашему веб-сайту (например /etc/access-groups-to-apache2-webapp1 ) и ограничим права доступа к нему:
Затем создадим и настроим файл выделенной политики PAM для нашего веб-приложения (например /etc/pam.d/apache2-webapp1 ), сделав в нём ссылку на файл групп следующим образом:
Теперь созданную политику PAM можем подключать в конфигурации сайта веб-сервера Apache. Например, при использовании Kerberos-аутентификации вместо зачастую используемого условия Require valid-user , мы можем использовать условие типа Require pam-account <имя политики PAM из каталога /etc/pam.d> :
После изменения конфигурации сайта Apache для вступления изменений в силу можно перезагрузить службу веб-сервера:
Как сделать ваши соединения Secure Shell еще более безопасными
Secure Shell является наиболее широко используемым средством входа на удаленный сервер Linux (или компьютер). Используя этот инструмент, вы получаете доступ к командной строке на удаленном компьютере через безопасный туннель. Из коробки вам будет предложено ввести пароль удаленного пользователя. Хотя это все еще более безопасно, чем использование более старых методов (таких как telnet), его можно сделать еще более безопасным с помощью SSH Key Authentication.
Что такое аутентификация по ключу?
Это основа для аутентификации по ключу SSH. В реальной жизни это работает так, что вы создаете пару ключей (которая содержит закрытый и открытый ключи) и копируете открытый ключ на сервер, на который хотите войти. Если вы попытаетесь войти с аутентификацией по ключу, а у сервера нет открытого ключа, соответствующего вашему личному ключу, он не разрешит вам доступ.
Давайте заставим это работать.
Генерация пары ключей SSH
Первое, что нужно сделать, это создать пару ключей SSH. Для этого выполните следующие действия:
Откройте окно терминала на рабочем столе.
Присвойте ключу имя и местоположение (используйте настройки по умолчанию, используя Enter/Return на клавиатуре).
Введите и подтвердите ключевую фразу для ключа (убедитесь, что она является надежной и уникальной)
Теперь у вас есть пара ключей SSH. Эти два файла будут найдены в
/.ssh и будут называться:
Скопируйте ваш открытый ключ на удаленный компьютер
Затем вы должны скопировать файл открытого ключа на удаленный компьютер, на который хотите войти. Это можно сделать с помощью команды:
Если вы впервые зашли в безопасное место на удаленном компьютере, вам будет предложено ввести да , чтобы продолжить подключение, в противном случае вам будет предложено ввести пароль пользователя на удаленном компьютере. машина. После успешного ввода удаленного пароля ключ будет скопирован, и вы будете готовы проверить соединение.
Тестирование соединения
Проверьте соединение, введя команду:
Отключение аутентификации по паролю
Чтобы отключить аутентификацию по паролю, войдите на удаленный компьютер и введите команду:
В этом файле найдите строку:
Измените эту строку на:
Сохраните и закройте файл. Перезапустите SSH с помощью команды:
Теперь, если вы попытаетесь войти на эту удаленную машину с любого рабочего стола (или сервера), который не содержит закрытый ключ, доступ будет запрещен.
Поздравляем, вы успешно сделали вход в удаленную систему Linux более безопасным с помощью SSH.
Библиотеки PAM или Pluggable Authentication Modules - это набор компонентов, предоставляющих программный интерфейс для авторизации пользователей в Linux. Возможно вы уже сталкивались с PAM, когда хотели запустить какую либо графическую программу от имени суперпользователя без использования sudo. Но применение этих библиотек намного шире. Они используются утилитой login и менеджером входа gdm при входе в системе, утилитой ssh при удалённом подключении по SSH, а также другими службами где нужна аутентификация.
Этот механизм появился примерно в 1997 году и с тех пор дошёл до нашего времени практически неизменным. Конечно, были дописаны новые модули, но суть работы осталась такая же как изначально. В этой статье мы рассмотрим как выполняется настройка PAM в Linux.
Как работает PAM в Linux?
Основа безопасности Linux - это аутентификация пользователей и их права. Если бы не было библиотек PAM, то разработчику каждой программы пришлось бы реализовать самому проверку логина и пароля пользователя, а также его прав, может ли он получить доступ к тому или иному ресурсу или нет. Чтобы этого не делать был создан набор библиотек, который поддерживает различные способы аутентификации. Для различных служб нужны разные способы аутентификации, это может быть логин и пароль Unix, открытый ключ, Fingerprint ключа или что-то ещё, и всё это поддерживается в PAM. Давайте рассмотрим как работает PAM на примере авторизации в текстовой консоли Linux с помощью утилиты login:
Теперь рассмотрим как выполняется настройка PAM Linux.
Как настроить PAM в Linux
Все конфигурационные файлы PAM для различных приложений находятся в папке /etc/pam.d. Давайте посмотрим на конфигурационный файл для утилиты sudo:
Каждая строчка файла состоит из нескольких полей:
тип обязательность модуль параметры
- Первое поле - тип, определяет какой тип запроса к PAM надо выполнить. Существует четыре различных типа запроса auth (проверка данных входа, например, логина и пароля), account (проверка не истёк ли пароль пользователя), password (обновление пароля), и session (обслуживание сессии, например, логгирование и монтирование папок).
- Второе поле определяет как нужно интерпретировать результат, возвращённый модулем PAM. Доступно тоже несколько возможных вариантов: required (тест должен быть обязательно пройден, но следующие строки тоже будут проверяться), requisite (аналогично required, только если тест не проходит, то следующие строки уже не проверяются), sufficient (противоположно requisite, если тест проходит, то следующие строки уже не проверяются), optional (проваленные тесты игнорируются).
- Третье и четвертое поле - это название библиотеки модуля и её параметры. Всё это надо выполнить для выполнения теста авторизации или действия.
Кроме того, существуют директивы include, которые включают строки из других файлов так, как будто они были написаны в этом файле. Файл настройки sudo кажется совсем коротким, но в него включаются другие файлы. Давайте посмотрим ещё на файл /etc/pam.d/common-auth:
Здесь можно видеть более расширенный синтаксис параметра обязательности. Он позволяет лучше понять как всё это работает. Давайте его рассмотрим:
[значение1 = действие1 значение2 = действие2 …]
Модули PAM могут возвращать около 30-ти значений и они зависят от выбранного типа (account/auth/session. ), вот они все: success, open_err, symbol_err, service_err, system_err, buf_err, perm_denied, auth_err, cred_insufficient, authinfo_unavail, user_unknown, maxtries, new_authtok_reqd, acct_expired, session_err, cred_unavail, cred_expired, cred_err, no_module_data, conv_err, authtok_err, authtok_recover_err, authtok_lock_busy, authtok_disable_aging, try_again, ignore, abort, authtok_expired, module_unknown, bad_item, conv_again, incomplete и default. Последнее, default, означает все поля, которые явно не заданы.
В качестве действия могут быть указанны такие значения:
- ignore - не влияет на общий код возврата в приложение;
- bad - расценивать это значение как свидетельство сбоя модуля;
- die - аналогично bad, только сразу возвращать управление в приложение;
- ok - значение должно влиять на общий возвращаемый результат, переопределяет общий результат если он раньше был успешен, но не отменяет сбой;
- done - аналогично ok, только управление сразу возвращается приложению.
Таким образом, те четыре варианта обязательности, которые мы рассматривали выше можно описать вот так:
- required: [success=ok new_authtok_reqd=ok ignore=ignore default=bad]
- requisite: [success=ok new_authtok_reqd=ok ignore=ignore default=die]
- sufficient: [success=done new_authtok_reqd=done default=ignore]
- optional: [success=ok new_authtok_reqd=ok default=ignore]
- success - модуль вернул состояние успешно, поскольку значение ok, это состояние будет учтено если ни один предыдущий модуль не дал сбоя;
- new_authtok_reqd - модуль сообщает, что пароль пользователя желательно обновить;
- ignore - модуль просит игнорировать его результат, игнорируем;
- default - все остальные возвращаемые значение расцениваем как сбой.
Обратите внимание. что модуль возвращает только одно определенное значение и уже к нему применяется действие.
Чтобы закрепить всё это на практике давайте рассмотрим как запретить авторизацию от имени пользователя losst на компьютере с помощью PAM. Для этого можно воспользоваться модулем /lib/security/pam_listfile.so. Он позволяет ограничить доступ для пользователей на основе файла со списком. Откройте файл /etc/pam.d/sshd и добавьте туда такую строчку:
sudo vi /etc/pam.d/sshd
auth required pam_listfile.so \
onerr=succeed item=user sense=deny file=/etc/denyusers
Здесь мы используем тип запроса auth, обязательность required и указанный выше модуль. Вот его опции и их значения:
- onerr=succeed - если возникает ошибка, доступ разрешить;
- item=user - указывает, что в файле конфигурации находятся логины пользователей;
- sense=deny - действие, если логин пользователя найден в файле;
- file=/etc/denyusers - файл с логинами пользователей, для которых надо запретить доступ.
А если эту строчку закомментировать, то всё снова заработает.
Выводы
В этой статье мы рассмотрели как настроить PAM Linux, как видите, это очень гибкая система, но будьте осторожны. Любая неверная настройка может отнять у вас доступ к собственной системе!
Нет похожих записей
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.
Читайте также: