Linux安全篇-PAM

绝192.168.1.9 访问 192.168.1.253 端口
--------------
1 、看是否可以通过PAM来控制,配置一下
[root@stu9 home]# ldd `which sshd` | grep pam
        libpam.so.0 => /lib/libpam.so.0 (0x00d32000)
[root@stu9 home]# rpm -qf  /etc/pam.d/sshd
openssh-server-4.3p2-29.el5
pam_listfile.so   ---- rhost -----  allow|deny 黑白名单的模快
[root@ pg3]# grep listfile /etc/pam.d/sshd
account    required     pam_listfile.so item=rhost sense=deny file=/etc/denyssh_host onerr=succeed
[root@ pg3]# touch /etc/denyssh_host
[root@ pg3]# echo "192.168.1.9" >> /etc/denyssh_host
----或者用如下方法拒绝1。0网段访问ssh---
[root@ pam-0.99.6.2]# grep access.so /etc/pam.d/sshd
account          required    pam_access.so
[root@ pam-0.99.6.2]# grep 192.168.1.0 /etc/security/access.conf
[root@ pam-0.99.6.2]# grep 192\.168\.1 /etc/security/access.conf
- : ALL : 192.168.1.
example1:
拒绝本地用户test 在tty5登录到系统
[root@ pam-0.99.6.2]# grep access.so /etc/pam.d/login
account    required     pam_access.so
[root@ pam-0.99.6.2]# vim /etc/security/access.conf
[root@ pam-0.99.6.2]# grep ^[^#] /etc/security/access.conf
- : test : tty5
example2:
只允许test用户远程登录192.168.1.253上的ssh服务
pam_listfile.so --- user
pam_access.so --- user
[root@ pam-0.99.6.2]# grep listfile /etc/pam.d/sshd
auth       required     pam_listfile.so item=user sense=allow file=/etc/sshuser onerr=succeed
[root@ pam-0.99.6.2]# cat /etc/sshuser
test
[root@ pam-0.99.6.2]# echo pg >> /etc/sshuser
--------------
[root@ pam-0.99.6.2]# grep access /etc/pam.d/sshd
auth       required     pam_access.so
[root@ pam-0.99.6.2]# vim /etc/security/access.conf
[root@ pam-0.99.6.2]# grep '^[^#]' /etc/security/access.conf
- : ALL EXCEPT test : ALL
------------
[root@ pam-0.99.6.2]# grep motd /etc/pam.d/sshd account   optional      pam_motd.so
[root@ pam-0.99.6.2]# cat /etc/motd ****************
你的操作已经被监控!!!
****************
看模块效果如下:
[root@stu9 home]# ssh test@192.168.1.253
test@192.168.1.253's password:
Last login: Mon Jul 26 15:36:12 2010 from 192.168.1.9
****************
你的操作已经被监控!!!
****************
[test@node1 ~]$

+++++++++++++++++++
[root@ pam-0.99.6.2]# grep sufficient /etc/pam.d/login
auth       sufficient   pam_permit.so


[root@ pam-0.99.6.2]# grep succeed /etc/pam.d/login
auth      sufficient    pam_succeed_if.so uid eq 890
example5:
test  16:10-18:00
[root@ pam-0.99.6.2]# grep time  /etc/pam.d/login
account    requisite    pam_time.so
[root@ pam-0.99.6.2]# vim /etc/security/time.conf
login;*;test;MoTuWeThFr1610-1800


========2010/8/25=================
拒绝 192。168。1。0/24访问192.168.1.254的ssh服务器22端口
[root@ conf.d]# ldd `which sshd` | grep pam
        libpam.so.0 => /lib/libpam.so.0 (0x00ae0000)
[root@ conf.d]# vim /etc/pam.d/sshd
[root@ conf.d]# grep pam_access.so /etc/pam.d/sshd
account    required     pam_access.so
---
[root@ Server]# grep 24 /etc/security/access.conf
- : ALL : 192.168.1.0/24
=============
[root@ conf.d]# ldd `which sshd` | grep wrap
        libwrap.so.0 => /lib/libwrap.so.0 (0x00474000)
[root@ conf.d]# vim /etc/hosts.deny
[root@ conf.d]# grep sshd !$
grep sshd /etc/hosts.deny
sshd:192.168.1.0/255.255.255.0
------------
iptables  -A INPUT -s  192.168.1.0/24  -p  tcp --dport 22 -j DROP
------------------
pam_access.so
++
pam_listfile.so
[root@ ~]# grep tty /etc/pam.d/login
account    required     pam_listfile.so  item=tty  sense=deny  file=/etc/denytty onerr=succeed
[root@ ~]# vim /etc/denytty
通过pam_listfile.so模块拒绝192.168.1.0/24访问22端口
vim /etc/pam.d/sshd
account    required     pam_listfile.so  item=rhost  sense=deny  file=/etc/denyhost  onerr=succeed
vim /etc/denyhost
[root@ txts]# for i in  {1..254};do echo 192.168.1.$i >> /etc/denyhost ;done
系统中自带一个案例:
vim /etc/pam.d/vsftpd
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
+++
配置PAM,实现pg用户只能在15:30-18:00登录系统 pam_time.so
[root@ txts]# grep time /etc/pam.d/login
account    requisite    pam_time.so
[root@ txts]# grep pg /etc/security/time.conf
login;*;pg;MoTuWeThFr1523-1800
++++
[root@ txts]# grep time /etc/pam.d/sshd
account    required     pam_time.so
[root@ txts]# grep '^sshd.*1800' /etc/security/time.conf
sshd;*;root;MoTuWeThFr1530-1800
vim /etc/security/limits.conf
seker           hard     maxlogins       2
pg              hard     nproc           3
sshd
1、不允许超级管理员身份登录SSHD
 方法1 通过配置SSHD服务器端的配置文件
Port 2200
PermitRootLogin no
ListenAddress 192.168.0.253
[root@localhost ~]# ssh root@192.168.0.253 -p 2200
  方法2 通过pam来实现
思考
 sshd是否支持受Pam控制 ldd `which sshd` | grep pam
 pam是否有模块可以基于用户名做访问控制  pam_access.so /pam_listfile.so /pam_succeed_if.so
 那该修改哪个配置文件呢 ?   /etc/pam.d/sshd
 那该选择哪种验证类型,哪种控制标识?
  auth/account/password/session  required/requisite/sufficient/optional/include
 模块的配置文件中该如何 写相应的访问控制 ?
 模块的帮助在哪呢?
]# firefox /usr/share/doc/pam-0.99.6.2/html/Linux-PAM_SAG.html
 通过pam_access.so实现:
[root@localhost ~]# vim /etc/pam.d/sshd  基于用户名,组名,IP/NET/domain_name,tty来做访问控制
 auth     required    pam_access.so1
[root@localhost ~]# vim /etc/security/access.conf
 + : ALL EXCEPT root : ALL
通过pam_succeed_if.so来实现:指定条件来控制
[root@localhost ~]# vim /etc/pam.d/sshd
 auth    required    pam_succeed_if.so uid ne 0 2
通过pam_listfile.so来实现:专门做于做黑白名单
[root@localhost ~]# vim /etc/pam.d/sshd
 auth     required    pam_listfile.so    item=user sense=deny file=/denysshd onerr=succeed 3
2、只允许192.168.0.28 192.168.0.5 主机访问sshd
 方法1 通过pam_access.so来做基于IP的控制
 vim /etc/pam.d/sshd
 account   required  pam_access.so
 vim /etc/security/access.conf
 -:ALL:ALL EXCEPT 192.168.0.28 192.168.0.5
--------------
[root@localhost ~]# grep testfile  /etc/pam.d/sshd
account    optional     
--------------
[root@localhost ~]# grep testfile  /etc/pam.d/sshd
account    optional     pam_echo.so file=/testfile 4
[root@localhost ~]# cat /testfile
欢迎访问SSHD服务器!
如果你是非法用户请自觉离开!!
-----------

[root@localhost ~]# vim /etc/pam.d/login
[root@localhost ~]# grep limits /etc/pam.d/system-auth
session     required      pam_limits.so    5
[root@localhost ~]# vim /etc/security/limits.conf
pg      hard    nproc           5  
pg      hard    maxlogins       2
  while : ; do :  ;done&  验证
2、用于定义环境变量
pam_env.so   ---- vim /etc/security/pam_env.conf环境配置文件
vim  /etc/security/pam_env.conf

3、主要模块,如果用于auth行----验证用户名和密码
            如果用于account行---验证是否过期,禁用等
pam_unix.so主要模块,专门用于验证用户名和密码
4、用于只允许操作管理员登录,不允许普通用户登录,一般在维护系统时用
pam_nologin.so  ---  /etc/nologin 如果此文件存在,则不允许普通用户登录,如果不存在,则一切正常
5、根据指定的条件来验证
pam_succeed_if.so     uid < 500
6、pam_permit.so 表示无条件允许
7、pam_time.so  --- /etc/security/time.conf基于时间
8.pam_access.so1   基于用户名,组名,IP/NET/domain_name,tty来做访问控制
9.pam_listfile.so    
auth   required    .pam_listfile.so item=user sense=deny file=/denysshd onerr=succeed 3 每个服务指定自己的配置文件,方便管理。
10.pam_echo.so file=/testfile 4
11. pam_limits.so 限制登录的次数和打开的进程
+++++++++++++++++
1、拒绝以root身份访问sshd服务,实现方法是pam的pam_listfile.so的模块
[root@localhost pg]# vim /etc/pam.d/sshd
[root@localhost pg]# grep pam_listfile /etc/pam.d/sshd
auth       required     pam_listfile.so item=user sense=deny file=/etc/sshdusers onerr=succeed
[root@localhost pg]# touch /etc/sshdusers
[root@localhost pg]# echo root > /etc/sshdusers
2、拒绝192.168.1.68访问192.168.1.254的sshd服务
方法一、iptables规则]# iptables -A INPUT -s 192.168.1.68 -p tcp --dport 22 -j DROP
ssh访问时,没有任何提示
方法二、tcpwrappers规则]# tail -n 1  /etc/hosts.deny
sshd:192.168.1.68
ssh访问时,有如下提示
[root@host68 ~]# ssh pg@192.168.1.254
ssh_exchange_identification: Connection closed by remote host
方法三、通过pam的模块pam_access.so
]# grep -n access /etc/pam.d/sshd
3:account          requisite    pam_access.so
]# grep 68 /etc/security/access.conf
-:ALL:192.168.1.68 192.168.1.67
ssh访问时,有如下提示,但是输入正确的密码,也不能登录成功!
tail -n 3 /var/log/secure
[root@host68 ~]# ssh pg@192.168.1.254
pg@192.168.1.254's password:
Connection closed by 192.168.1.254

Pam模块的介绍
6.1. pam_access - logdaemon style login access control
    6.2. pam_cracklib - checks the password against dictionary words
    6.3. pam_debug - debug the PAM stack
    6.4. pam_deny - locking-out PAM module
    6.5. pam_echo - print text messages      打印消息
    6.6. pam_env - set/unset environment variables
    6.7. pam_exec - call an external command
    6.8. pam_filter - filter module
    6.9. pam_ftp - module for anonymous access
    6.10. pam_group - module to modify group access
    6.11. pam_issue - add issue file to user prompt
    6.12. pam_keyinit - display the keyinit file
    6.13. pam_lastlog - display date of last login
    6.14. pam_limits - limit resources
    6.15. pam_listfile - deny or allow services based on an arbitrary file
    6.16. pam_localuser - require users to be listed in /etc/passwd
    6.17. pam_mail - inform about available mail
    6.18. pam_mkhomedir - create users home directory
    6.19. pam_motd - display the motd file
    6.20. pam_namespace - setup a private namespace
    6.21. pam_nologin - prevent non-root users from login
    6.22. pam_permit - the promiscuous module
    6.23. pam_rhosts - grant access using .rhosts file
    6.24. pam_rootok - gain only root access
    6.25. pam_securetty - limit root login to special devices
    6.26. pam_selinux - set the default security context
    6.27. pam_shells - check for valid login shell
    6.28. pam_succeed_if - test account characteristics
    6.29. pam_tally - login counter (tallying) module
    6.30. pam_time - time controled access
    6.31. pam_umask - set the file mode creation mask
    6.32. pam_userdb - authenticate against a db database
    6.33. pam_warn - logs all PAM items
    6.34. pam_wheel - only permit root access to members of group wheel
    6.35. pam_xauth - forward xauth keys between users
pam_access 该模块提供基于用户名、客户、IP/主机名、网络号以及登录终端号的访问控制
pam_chroot 该模块为一般用户提供一个虚根环境
pam_cracklib 该模块对用户密码提供强健性检测。换句话说,你可以定义用户密码的各种属性,比如密码长度、密码的复杂度
pam_deny 该模板仅仅返回一个错误。用来拒绝用户访问。通常该模块被用户作为默认的验证规则
pam_env 该模板可以用来设置任意的环境变量
pam_filer 该模板提供用户和应用程序交互内容的访问控制功能,目前仅仅具有大小写转换功能
pam_ftp 该模板提供匿名FTP用户认证机制
pam_group 该模板提供用户认证,而仅仅是授予该用户指定组的组权限
pam_issue 该模板在用户登录时, 将/etc/issue/文件内容将打印输出
pam_lastlog 该模板在用户登录时,打印最后登录系统的信息在./var/log/lastlog
pam_limits 该模板限制用户会话过程中系统资源的使用率
pam_listfile 该模板提供某种规则来对用户进行访问控制的功能。通常把访问控制规则放在一个文件中,可以用file参数来指定该文件
pam_mail 检查用户的邮件目录,查看该用户是否有新的文件
pam_mkhomedir 在用户登录时为用户创建新的宿主目录
pam_motd 在用户成功登录目录时显示今天的信息,默认是显示/etc/motd/的内容
pam_nologin 提供标准的UNIXnologin登录认证 如果/etc/nologin文件存在,则只有root用户可以登录,其他用户登录只会得到/etc/nologin/的内容
pam_pwdb 该模块是标准的 UNIX认证模块pam_unix的替代品
pam_rhosts_auth 该模块为标准的网络服务提供认证
pam_rootok使用该模块具有很大的安全风险,该模块唯一功能就是让UID为0 的用户不输入密码就可以直接登录
pam_securetty 该模块用来控制root用户只可以从包含在/etc/securetty文件中的终端登录
pam_shell 如果用户的shell在/etc/shell/中列出,则允许用户进行验证,如果/etc/passwd中没有指定shell,则默认使用/bin/sh
pam_time 对用户访问服务提供时间控制,也就是说,用来控制用户可以访问的时间
pam_stack 该模块可以实现PAM认证的递归调用
pam_warn 记录服务、终端名、用户名、远程主机等信息到日志文件
pam_userdb 使用该模块允许你通过一个berkeley数据库来验证用户、假如你使用这种用户数据库老保存用户信息的话
pam_wheel.so 使用该模块让你指定那些用户有权限使用su命令遍身为根用户
1、pam_securetty.so用于针对root用户设置可登录的安全的控制台 (/etc/securetty定义了所有root用户安全的登录控制台设置)

 pam_securetty.so  ------------------->  /etc/securetty 里面定义所有root用户安全的登录位置
pam_access.so   ---- /etc/security/access.conf
  功能主要是做基于IP/NET/TTY 和用户名的服务访问控制
pam_listfile.so
  功能主要是做基于用户的访问控制,黑白名单
pam_deny.so
  功能是做无条件拒绝
pam_echo.so 功能主要是用于打印指定文件中的文本消息
[root@stu28 ~]# grep echo /etc/pam.d/sshd
account    optional     pam_echo.so file=/etc/echo.txt
[root@stu28 ~]# vim /etc/echo.txt
[root@stu28 ~]# cat /etc/echo.txt
!!闲人勿入!!
pam_limits.so 对系统资源()做限制
[root@stu28 ~]# grep limits /etc/pam.d/system-auth
session     required      pam_limits.so
[root@stu28 ~]# grep system-auth /etc/passwd
[root@stu28 ~]# grep system-auth /etc/pam.d/login
auth       include      system-auth
account    include      system-auth
password   include      system-auth
session    include      system-auth
[root@stu28 ~]# vim /etc/security/limits.conf
[root@stu28 ~]# grep manager /etc/security/limits.conf
manager          hard    nproc           3
[root@stu28 ~]#
pam_securetty.so  针对于超级用户设置安全登录位置
pam_permit.so  无条件允许
pam_success_if.so  根据条件进行判断 ,一般用UID做为条件
pam_time.so 用于根据时间做服务被访问的访问控制。
比如,只允许在 9:00-20:00文本登录

[root@localhost ~]# grep time /etc/pam.d/login
account    required     pam_time.so
[root@localhost ~]# grep pg /etc/security/time.conf
login;*;pg;MoTuWeThFr/0900-1450
[root@localhost ~]#


转载于:https://www.cnblogs.com/centos-python/articles/8523623.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值