Назад | Перейти на главную страницу

Проверьте, разрешена ли учетная запись при использовании pam_access

Я использую pam_access и /etc/security/access.conf, чтобы ограничить доступ пользователей к моим хостам Rhel 6.5.

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

Мне нужен способ sciptable, чтобы проверить, сможет ли учетная запись войти на хост. getent passwd, id, finger, groups и все другие инструменты, которые я пробовал, возвращают тот же результат, если для учетной записи запрещен вход в систему или нет. passwd -S, похоже, вообще не работает с учетными записями LDAP.

Есть ли способ проверить, есть ли у данной учетной записи разрешения на вход? В Solaris, если пользователь или сетевая группа не находится в / etc / passwd, ни один из инструментов не может идентифицировать ограниченную учетную запись, но, похоже, в Linux все обстоит наоборот.

Спасибо!

Изменить: это раздел учетной записи /etc/pam.d/system-auth: account required pam_access.so account required pam_unix.so broken_shadow account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 500 quiet account [default=bad success=ok user_unknown=ignore] pam_krb5.so account required pam_permit.so

Моя конфигурация марионетки выполняет только следующие действия, которые могут изменить настройку pam. /usr/sbin/authconfig --enablemkhomedir --updateall /usr/sbin/authconfig --enablekrb5 --updateall /usr/sbin/authconfig --enablepamaccess --updateall /usr/sbin/authconfig --enablesssd --updateall /usr/sbin/authconfig --nisdomain=domainname.corp --updateall мой /etc/security/access.conf + : root : ALL .... all system accounts + : @ngunix_admins : ALL - : ALL : ALL Моя сетевая группа getent netgroup ngunix_admins ngunix_admins ( ,danw,domainname.corp) Я в сетевой группе ngunix_admins, так что это имеет смысл % id danw uid=355400001(danw) gid=355400001(danw) groups=355400001(danw) % getent passwd danw danw:*:355400001:355400001:unixadmin:/home/danw:/bin/bash Но этот другой пользователь не входит в сетевую группу ngunix_admins, поэтому мне нужен способ определить, что он не может войти в систему. id testuser uid=355400003(testuser) gid=355400003(testuser) groups=355400003(testuser) getent passwd testuser testuser:*:355400003:355400003:first last:/home/testuser:/bin/bash 2-е изменение: поясните, что я не настраиваю разрешения для входа в систему, но пытаюсь сообщить о доступе для аудита.

Недавно мне пришлось провести аудит PCI очень похожего характера (кто может входить в эти системы и каковы их разрешения), так что хорошо почувствуйте, чего вы здесь пытаетесь достичь. Методология варьируется от среды к среде в зависимости от того, как настроены PAM и LDAP.

Похоже, что к вашей среде применимы следующие факторы:

  • Перечисленные passwd база данных (getent passwd) содержит пользователей, которым нельзя разрешать доступ к системе.
  • shadow необходимо учитывать ограничения. Во всяком случае, иногда. У тебя есть broken_shadow включен.
  • Необходимо учитывать ограничения PAM. (включая pam_access ограничений, что значительно снижает вероятность найти универсальный инструмент, который будет делать это, не выполняя фактического обращения к pam_acct_mgmt)
  • Необходимо учитывать ограничения KRB5 для пользователей, у которых есть учетные записи.

Я бы оценил сложность этого задания как «длительный и требующий много времени» без утилиты, которая тестирует стеки PAM. pamtester похоже, он сделает свою работу. Вам нужно будет перебрать каждого пользователя в getent passwd и выполните учетную проверку после аутентификации:

pamtester sshd $user acct_mgmt

Это предполагает, что вам нужно только проверить доступ через ssh. Если вам нужно протестировать больше, сделайте это. Обзор /etc/pam.d для служб, которые вы настроили, и проведите аудит всего необходимого.

(Прошу прощения за первоначальный ответ, мои последние усилия были больше сосредоточены на аудитах sudo, чем на аудитах PAM, и я был слишком настроен на то, чтобы «делать все вручную».)