码迷,mamicode.com
首页 > 移动开发 > 详细

TCP WRAPPERS、denyhosts软件的安装和配置、PAM身份认证模块应用

时间:2015-10-07 23:12:52      阅读:490      评论:0      收藏:0      [点我收藏+]

标签:tcp wrappers、denyhosts软件的安装和配置、pam身份认证模块应用

一。TCP WRAPPERS

1.TCP WRAPPERS的作用是什么?

保护服务器的一些服务,可以限制客户端访问这些服务。

TCP WRAPPERS支持那些服务?判断一个服务是否支持TCP WRAPPERS的保护有那些方法?

查看该服务是否加载libwrap,查看该服务是不是基于xinetd服务。

ssh ,vsftpd,telnet,http(不支持wrap模块)ipop3

技术分享

2.检查服务是否支持被TCP WRAPPERS保护

技术分享

3、防护规则存放在

/etc/hosts.allow

/etc/hosts.deny

策略应用规律

先检查hosts.allow,有匹配则允许

否则再检查hosts.deny,有匹配则拒绝

若两文件中均无匹配,默认为允许

4、规则的格式

服务列表:客户机列表

 关于客户机地址

可使用通配符  ?    *

网段地址,如  192.168.4. 

                    或者192.168.4.0/255.255.255.0

区域地址,如  .tarena.com

5、例:

仅允许以下客户机访问VSFTPD

网段:192.168.4.0/24

IP范围:192.168.7.1-192.168.7.20

技术分享客户端进行测试,客户端的IP是192.168.1.0网段的,查看是否可以访问vsftpd服务。

技术分享

二。denyhosts
denyhosts是python语言程序,借用tcp_wrapper程序来进行主机防护。作用:防止暴力破解服务器用户密码。

1.解压软件包,安装denyhosts软件,默认是安装到/usr/share/denyhosts目录

技术分享

技术分享

2.配置

技术分享相关参数解释:

       ############ THESE SETTINGS ARE REQUIRED ############

SECURE_LOG = /var/log/secure
HOSTS_DENY = /etc/hosts.deny
PURGE_DENY = 1w #过多久后清除已经禁止的,其中w代表周,d代表天,h代表小时,s代表秒,m代表分钟
BLOCK_SERVICE  = sshd
DENY_THRESHOLD_INVALID = 3 #允许无效用户失败的次数
DENY_THRESHOLD_VALID = 5 #允许普通用户登陆失败的次数
DENY_THRESHOLD_ROOT = 5 #允许root登陆失败的次数
DENY_THRESHOLD_RESTRICTED = 1
WORK_DIR = /usr/share/denyhosts/data
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
HOSTNAME_LOOKUP=YES
LOCK_FILE = /var/lock/subsys/denyhosts

 ############ THESE SETTINGS ARE OPTIONAL ############

ADMIN_EMAIL = denyhosts@163.com #若有ip被禁用发邮件通知
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts <192.168.0.1@localhost>
SMTP_SUBJECT = DenyHosts Report
AGE_RESET_VALID=1d #有效用户登录失败计数归零的时间
AGE_RESET_ROOT=1d #root用户登录失败计数归零的时间
AGE_RESET_RESTRICTED=1d
AGE_RESET_INVALID=10d #无效用户登录失败计数归零的时间

######### THESE SETTINGS ARE SPECIFIC TO DAEMON MODE  ##########

DAEMON_LOG = /var/log/denyhosts
DAEMON_SLEEP = 30s
DAEMON_PURGE = 1h

设置启动脚本

技术分享

技术分享

设置开机启动

技术分享

3.启动服务,出现一下错误,解决的方案。

技术分享

技术分享

技术分享

4. denyhos使用

如果不想让主机拒绝某一个ip,做法如下sshd: 192.168.1.40  #允许192.168.1.40访问该主机的ssh服务技术分享

客户端进行测试
技术分享

如果想拒绝某一个ip同样使用vi /etc/hosts.deny添加就Ok

技术分享

客户端进行测试

技术分享

三。PAM可插拔身份认证模块

1.PAM配置文件存放目录位置。

技术分享

2.PAM模块存放的目录位置

技术分享

3.配置文件的内容如下

第一列是认证类型,可用的选项有:

account: 执行基于用户管理的非认证行为操作。典型的,它可以限制用户的登陆时间、可用的系统资源。

auth: 这个模块提供了验证用户的两个方面。首先,它认证用户是他声称的那个人(比如用密码验证);其次,它赋予用户组成员身份或其他权限。

password: 当用户修改密码时,需要这个模块。

session: 当赋予用户某些服务之前或之后,要执行哪些操作。例如用户在访问数据时执行写日志操作。

第二列是控制方式,可用的选项有:

required: 检查结果失败,最终一定会失败,但是仍然检查后续项

requisite: required类似。只不过该项检查失败,立即停止后续检查项。

sufficient: 该项检查成功,立即通过,不再检查后续项。如果该项检查失败,也不意味着最终会失败。

optional: 可选

include: 包含另一个文件的内容

第三列是调用的模块,这些模块位于/lib64/security/目录下

4.模块对应查找的文档。

技术分享

5.以su为例子,对pam模块进行分析

技术分享

1root用户可以不输入密码就切换成其他用户,原因是pam_rootok.so模块是判断当前用户UID是否是0(也就是root用户),那么就直接返回成功(sufficient是充分条件),给pam_rootok.so模块行添加注释后,进行测试。

技术分享

pam_rootok.so模块行添加注释后,测试发现root用户切换到其他用户的时候也需要输入密码,正确输入密码后可以登录。

技术分享

2)如果一个用户是wheel组的成员,那么,该用户可以直接执行su,而不用输入密码:pam_whell.so模块是只要用户输入whell组,那么就满足条件,可以执行该操作。

技术分享

pam_whell.so模块行去掉注释行

技术分享

测试

技术分享

3)只有wheel组的成员才可以切换成root用户

技术分享

required是一个必要条件,不是充分条件,lj是wheel组的,但是切换到root用户还是要输入密码。

技术分享

tom不是 wheel组的,而且required是一个必要条件,所以tom用户切换到root用户即使输入正确的密码提示也是错误。

技术分享

6.例二:禁止tomtty2登陆

技术分享

技术分享

技术分享不管是切换成为tom,还是以tom身份登陆,都被禁止。

7.例三:只允许tom用户打开两个文件

查看/etc/pam.d/system-auth中包含

session    required      pam_limits.so

技术分享

 # vim /etc/security/limits.conf ,尾部增加

tom           hard          nofile                  2

技术分享

测试

技术分享

8.例四:创建文件/etc/vsftpd/ftpgrps,该文件中的组不能访问ftp

技术分享

技术分享

验证,tom登陆ftp,登陆不成功,检查/var/log/secure日志

技术分享

查看日志

技术分享

本文出自 “脚踏实地向前行” 博客,请务必保留此出处http://343614597.blog.51cto.com/7056394/1700565

TCP WRAPPERS、denyhosts软件的安装和配置、PAM身份认证模块应用

标签:tcp wrappers、denyhosts软件的安装和配置、pam身份认证模块应用

原文地址:http://343614597.blog.51cto.com/7056394/1700565

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!