أنا أستخدم pam_access و /etc/security/access.conf لتقييد من يمكنه تسجيل الدخول إلى مضيفي Rhel 6.5.

لدي خادم LDAP بقاعدة مستخدمين متنوعة ، ويود الأشخاص الأمنيون الحصول على قائمة بمن يمكنه تسجيل الدخول إلى ماذا.

أحتاج إلى طريقة قابلة للتسجيل للتحقق مما إذا كان الحساب قادرًا على تسجيل الدخول إلى المضيف. getent passwd و id و finger والمجموعات وكل أداة أخرى حاولت إرجاع نفس الإخراج إذا تم تقييد الحساب من تسجيل الدخول أم لا. لا يبدو أن passwd -S يعمل مع حسابات LDAP على الإطلاق.

هل هناك طريقة للتحقق مما إذا كان لدى حساب معين أذونات تسجيل الدخول؟ في Solaris ، إذا لم يكن المستخدم أو netgroup موجودًا في / 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

يقوم تكوين الدمى الخاص بي بما يلي فقط والذي يمكن أن يغير إعداد بام. /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 بلدي netgroup getent netgroup ngunix_admins ngunix_admins ( ,danw,domainname.corp) أنا في ngunix_admins netgroup لذلك هذا الأمر يبدو معقولا تماما % id danw uid=355400001(danw) gid=355400001(danw) groups=355400001(danw) % getent passwd danw danw:*:355400001:355400001:unixadmin:/home/danw:/bin/bash ولكن هذا العضو الآخر ليس في ngunix_admins netgroup لذلك أنا بحاجة إلى طريقة لتحديد أنه لا يمكن تسجيل الدخول id testuser uid=355400003(testuser) gid=355400003(testuser) groups=355400003(testuser) getent passwd testuser testuser:*:355400003:355400003:first last:/home/testuser:/bin/bash تحرير 2ND: توضيح أنني لا أقوم بضبط أذونات تسجيل الدخول ، لكنني أحاول الإبلاغ عن الوصول للتدقيق.

answer

اضطررت مؤخرًا إلى إجراء تدقيق 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 وكنت في عقلية "افعل كل شيء يدويًا").