Я использую 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_access
ограничений, что значительно снижает вероятность найти универсальный инструмент, который будет делать это, не выполняя фактического обращения к pam_acct_mgmt
)Я бы оценил сложность этого задания как «длительный и требующий много времени» без утилиты, которая тестирует стеки PAM. pamtester
похоже, он сделает свою работу. Вам нужно будет перебрать каждого пользователя в getent passwd
и выполните учетную проверку после аутентификации:
pamtester sshd $user acct_mgmt
Это предполагает, что вам нужно только проверить доступ через ssh
. Если вам нужно протестировать больше, сделайте это. Обзор /etc/pam.d
для служб, которые вы настроили, и проведите аудит всего необходимого.
(Прошу прощения за первоначальный ответ, мои последние усилия были больше сосредоточены на аудитах sudo, чем на аудитах PAM, и я был слишком настроен на то, чтобы «делать все вручную».)