TCP WRAPPERS、denyhosts软件的安装和配置、PAM身份认证模块应用
2015-10-07 10:37
801 查看
一。TCP WRAPPERS
1.TCP WRAPPERS的作用是什么?
保护服务器的一些服务,可以限制客户端访问这些服务。
TCP WRAPPERS支持那些服务?判断一个服务是否支持TCP WRAPPERS的保护有那些方法?
查看该服务是否加载libwrap,查看该服务是不是基于xinetd服务。
ssh ,vsftpd,telnet,http(不支持wrap模块)ipop3
![](http://s3.51cto.com/wyfs02/M00/74/0F/wKioL1YSamfC_qZJAAGArXH2kp4433.jpg)
2.检查服务是否支持被TCP WRAPPERS保护
![](http://s3.51cto.com/wyfs02/M01/74/12/wKiom1YSa7TzNMFPAAHD3fv7xQE346.jpg)
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
![](http://s3.51cto.com/wyfs02/M01/74/12/wKiom1YSbr_xH-xmAAHDiF4_wX8354.jpg)
客户端进行测试,客户端的IP是192.168.1.0网段的,查看是否可以访问vsftpd服务。
![](http://s3.51cto.com/wyfs02/M02/74/0F/wKioL1YScuqjxtDgAAEx3IQjam8026.jpg)
二。denyhosts
denyhosts是python语言程序,借用tcp_wrapper程序来进行主机防护。作用:防止暴力破解服务器用户密码。
1.解压软件包,安装denyhosts软件,默认是安装到/usr/share/denyhosts目录
![](http://s3.51cto.com/wyfs02/M01/74/0F/wKioL1YSe_6QEQAGAAE0RJTsOl0876.jpg)
![](http://s3.51cto.com/wyfs02/M00/74/12/wKiom1YSfDDwCueeAADs81_D0Kc511.jpg)
2.配置
![](http://s3.51cto.com/wyfs02/M01/74/0F/wKioL1YSfp7zWSNRAADoSrffHSU916.jpg)
相关参数解释:
############ 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
设置启动脚本
![](http://s3.51cto.com/wyfs02/M02/74/10/wKioL1YSf03xX-xTAAGpIUZFRJI808.jpg)
![](http://s3.51cto.com/wyfs02/M02/74/10/wKioL1YSf6ixa4FFAAFwEwPt6co728.jpg)
设置开机启动
![](http://s3.51cto.com/wyfs02/M00/74/10/wKioL1YSgCWxz2oDAADaWM8APjw473.jpg)
3.启动服务,出现一下错误,解决的方案。
![](http://s3.51cto.com/wyfs02/M02/74/12/wKiom1YSgsWy3K6MAAF3ygFyQCM573.jpg)
![](http://s3.51cto.com/wyfs02/M02/74/12/wKiom1YSgyOS2N2QAAE8oIvZ4wQ565.jpg)
![](http://s3.51cto.com/wyfs02/M02/74/13/wKiom1YShcXDPzaGAAD2NOx443A110.jpg)
4. denyhos使用
如果不想让主机拒绝某一个ip,做法如下sshd: 192.168.1.40 #允许192.168.1.40访问该主机的ssh服务
![](http://s3.51cto.com/wyfs02/M00/74/10/wKioL1YShouQrtn-AAIs60AWSOQ297.jpg)
客户端进行测试
![](http://s3.51cto.com/wyfs02/M00/74/13/wKiom1YSiHXDeqBsAACKxUK_J0Y372.jpg)
如果想拒绝某一个ip同样使用vi /etc/hosts.deny添加就Ok
![](http://s3.51cto.com/wyfs02/M01/74/13/wKiom1YSiP_CwSRJAALna3BtTw0669.jpg)
客户端进行测试
![](http://s3.51cto.com/wyfs02/M02/74/13/wKiom1YSiSLCp5qWAACrUIqQ3FE712.jpg)
三。PAM可插拔身份认证模块
1.PAM配置文件存放目录位置。
![](http://s3.51cto.com/wyfs02/M00/74/1B/wKiom1YTlnqAHW45AAPxqGM64j0119.jpg)
2.PAM模块存放的目录位置
![](http://s3.51cto.com/wyfs02/M00/74/1B/wKiom1YTlruhAE-KAAU1ChR-k44732.jpg)
3.配置文件的内容如下
第一列是认证类型,可用的选项有:
account: 执行基于用户管理的非认证行为操作。典型的,它可以限制用户的登陆时间、可用的系统资源。
auth: 这个模块提供了验证用户的两个方面。首先,它认证用户是他声称的那个人(比如用密码验证);其次,它赋予用户组成员身份或其他权限。
password: 当用户修改密码时,需要这个模块。
session: 当赋予用户某些服务之前或之后,要执行哪些操作。例如用户在访问数据时执行写日志操作。
第二列是控制方式,可用的选项有:
required: 检查结果失败,最终一定会失败,但是仍然检查后续项
requisite: 与required类似。只不过该项检查失败,立即停止后续检查项。
sufficient: 该项检查成功,立即通过,不再检查后续项。如果该项检查失败,也不意味着最终会失败。
optional: 可选
include: 包含另一个文件的内容
第三列是调用的模块,这些模块位于/lib64/security/目录下
4.模块对应查找的文档。
![](http://s3.51cto.com/wyfs02/M00/74/1B/wKiom1YTo2vCPHd_AAD0F-oJo2k975.jpg)
5.以su为例子,对pam模块进行分析
![](http://s3.51cto.com/wyfs02/M02/74/18/wKioL1YTl66gpR8GAAIA2V00y2M599.jpg)
(1)root用户可以不输入密码就切换成其他用户,原因是pam_rootok.so模块是判断当前用户UID是否是0(也就是root用户),那么就直接返回成功(sufficient是充分条件),给pam_rootok.so模块行添加注释后,进行测试。
![](http://s3.51cto.com/wyfs02/M00/74/18/wKioL1YTmF_xcyeAAAH9s_oDgwc621.jpg)
pam_rootok.so模块行添加注释后,测试发现root用户切换到其他用户的时候也需要输入密码,正确输入密码后可以登录。
![](http://s3.51cto.com/wyfs02/M00/74/1B/wKiom1YTmX7x3wGGAAC0xkQZ7kM426.jpg)
(2)如果一个用户是wheel组的成员,那么,该用户可以直接执行su,而不用输入密码:pam_whell.so模块是只要用户输入whell组,那么就满足条件,可以执行该操作。
![](http://s3.51cto.com/wyfs02/M00/74/1B/wKiom1YTndKjt5erAAEftsHc0LQ571.jpg)
pam_whell.so模块行去掉注释行
![](http://s3.51cto.com/wyfs02/M02/74/1B/wKiom1YTmeHBUw8TAAEBObWHMD4071.jpg)
测试
![](http://s3.51cto.com/wyfs02/M01/74/1B/wKiom1YTn2nzg05YAAHXqcMheLE798.jpg)
(3)只有wheel组的成员才可以切换成root用户
![](http://s3.51cto.com/wyfs02/M02/74/18/wKioL1YToVWA5JS4AAEgD3OVTbM997.jpg)
required是一个必要条件,不是充分条件,lj是wheel组的,但是切换到root用户还是要输入密码。
![](http://s3.51cto.com/wyfs02/M02/74/1B/wKiom1YTofGjABJdAABvMKwwDlE375.jpg)
tom不是 wheel组的,而且required是一个必要条件,所以tom用户切换到root用户即使输入正确的密码提示也是错误。
![](http://s3.51cto.com/wyfs02/M00/74/18/wKioL1YTop6CsJARAACB4WZ1pqA098.jpg)
6.例二:禁止tom从tty2登陆
![](http://s3.51cto.com/wyfs02/M01/74/19/wKioL1YTqWiwVSZ3AABH1l2NQUE418.jpg)
![](http://s3.51cto.com/wyfs02/M02/74/1A/wKioL1YUdBCAyh74AAEIeLpaqPY819.jpg)
![](http://s3.51cto.com/wyfs02/M00/74/1D/wKiom1YUdFOR2xR2AABwqoCBs6I572.jpg)
不管是切换成为tom,还是以tom身份登陆,都被禁止。
7.例三:只允许tom用户打开两个文件
查看/etc/pam.d/system-auth中包含
session required pam_limits.so
![](http://s3.51cto.com/wyfs02/M02/74/1D/wKiom1YUczbSOyhnAABxda1OYb0060.jpg)
# vim /etc/security/limits.conf ,尾部增加
tom hard nofile 2
![](http://s3.51cto.com/wyfs02/M02/74/1A/wKioL1YUc7WiC9BLAAByuqI5pWw410.jpg)
测试
![](http://s3.51cto.com/wyfs02/M02/74/1D/wKiom1YUeNfhzurFAABiONK2-nM994.jpg)
8.例四:创建文件/etc/vsftpd/ftpgrps,该文件中的组不能访问ftp
![](http://s3.51cto.com/wyfs02/M00/74/1A/wKioL1YUhFmhlYwJAAD5BpPPOtQ682.jpg)
![](http://s3.51cto.com/wyfs02/M00/74/1D/wKiom1YUhDTT9r4YAAH4drdvJqE300.jpg)
验证,tom登陆ftp,登陆不成功,检查/var/log/secure日志
![](http://s3.51cto.com/wyfs02/M01/74/1A/wKioL1YUhQrTW-ayAAEvvKZfaKo512.jpg)
查看日志
![](http://s3.51cto.com/wyfs02/M02/74/1D/wKiom1YUhTXgiBFMAARe0z1UQmc481.jpg)
1.TCP WRAPPERS的作用是什么?
保护服务器的一些服务,可以限制客户端访问这些服务。
TCP WRAPPERS支持那些服务?判断一个服务是否支持TCP WRAPPERS的保护有那些方法?
查看该服务是否加载libwrap,查看该服务是不是基于xinetd服务。
ssh ,vsftpd,telnet,http(不支持wrap模块)ipop3
![](http://s3.51cto.com/wyfs02/M00/74/0F/wKioL1YSamfC_qZJAAGArXH2kp4433.jpg)
2.检查服务是否支持被TCP WRAPPERS保护
![](http://s3.51cto.com/wyfs02/M01/74/12/wKiom1YSa7TzNMFPAAHD3fv7xQE346.jpg)
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
![](http://s3.51cto.com/wyfs02/M01/74/12/wKiom1YSbr_xH-xmAAHDiF4_wX8354.jpg)
客户端进行测试,客户端的IP是192.168.1.0网段的,查看是否可以访问vsftpd服务。
![](http://s3.51cto.com/wyfs02/M02/74/0F/wKioL1YScuqjxtDgAAEx3IQjam8026.jpg)
二。denyhosts
denyhosts是python语言程序,借用tcp_wrapper程序来进行主机防护。作用:防止暴力破解服务器用户密码。
1.解压软件包,安装denyhosts软件,默认是安装到/usr/share/denyhosts目录
![](http://s3.51cto.com/wyfs02/M01/74/0F/wKioL1YSe_6QEQAGAAE0RJTsOl0876.jpg)
![](http://s3.51cto.com/wyfs02/M00/74/12/wKiom1YSfDDwCueeAADs81_D0Kc511.jpg)
2.配置
![](http://s3.51cto.com/wyfs02/M01/74/0F/wKioL1YSfp7zWSNRAADoSrffHSU916.jpg)
相关参数解释:
############ 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
设置启动脚本
![](http://s3.51cto.com/wyfs02/M02/74/10/wKioL1YSf03xX-xTAAGpIUZFRJI808.jpg)
![](http://s3.51cto.com/wyfs02/M02/74/10/wKioL1YSf6ixa4FFAAFwEwPt6co728.jpg)
设置开机启动
![](http://s3.51cto.com/wyfs02/M00/74/10/wKioL1YSgCWxz2oDAADaWM8APjw473.jpg)
3.启动服务,出现一下错误,解决的方案。
![](http://s3.51cto.com/wyfs02/M02/74/12/wKiom1YSgsWy3K6MAAF3ygFyQCM573.jpg)
![](http://s3.51cto.com/wyfs02/M02/74/12/wKiom1YSgyOS2N2QAAE8oIvZ4wQ565.jpg)
![](http://s3.51cto.com/wyfs02/M02/74/13/wKiom1YShcXDPzaGAAD2NOx443A110.jpg)
4. denyhos使用
如果不想让主机拒绝某一个ip,做法如下sshd: 192.168.1.40 #允许192.168.1.40访问该主机的ssh服务
![](http://s3.51cto.com/wyfs02/M00/74/10/wKioL1YShouQrtn-AAIs60AWSOQ297.jpg)
客户端进行测试
![](http://s3.51cto.com/wyfs02/M00/74/13/wKiom1YSiHXDeqBsAACKxUK_J0Y372.jpg)
如果想拒绝某一个ip同样使用vi /etc/hosts.deny添加就Ok
![](http://s3.51cto.com/wyfs02/M01/74/13/wKiom1YSiP_CwSRJAALna3BtTw0669.jpg)
客户端进行测试
![](http://s3.51cto.com/wyfs02/M02/74/13/wKiom1YSiSLCp5qWAACrUIqQ3FE712.jpg)
三。PAM可插拔身份认证模块
1.PAM配置文件存放目录位置。
![](http://s3.51cto.com/wyfs02/M00/74/1B/wKiom1YTlnqAHW45AAPxqGM64j0119.jpg)
2.PAM模块存放的目录位置
![](http://s3.51cto.com/wyfs02/M00/74/1B/wKiom1YTlruhAE-KAAU1ChR-k44732.jpg)
3.配置文件的内容如下
第一列是认证类型,可用的选项有:
account: 执行基于用户管理的非认证行为操作。典型的,它可以限制用户的登陆时间、可用的系统资源。
auth: 这个模块提供了验证用户的两个方面。首先,它认证用户是他声称的那个人(比如用密码验证);其次,它赋予用户组成员身份或其他权限。
password: 当用户修改密码时,需要这个模块。
session: 当赋予用户某些服务之前或之后,要执行哪些操作。例如用户在访问数据时执行写日志操作。
第二列是控制方式,可用的选项有:
required: 检查结果失败,最终一定会失败,但是仍然检查后续项
requisite: 与required类似。只不过该项检查失败,立即停止后续检查项。
sufficient: 该项检查成功,立即通过,不再检查后续项。如果该项检查失败,也不意味着最终会失败。
optional: 可选
include: 包含另一个文件的内容
第三列是调用的模块,这些模块位于/lib64/security/目录下
4.模块对应查找的文档。
![](http://s3.51cto.com/wyfs02/M00/74/1B/wKiom1YTo2vCPHd_AAD0F-oJo2k975.jpg)
5.以su为例子,对pam模块进行分析
![](http://s3.51cto.com/wyfs02/M02/74/18/wKioL1YTl66gpR8GAAIA2V00y2M599.jpg)
(1)root用户可以不输入密码就切换成其他用户,原因是pam_rootok.so模块是判断当前用户UID是否是0(也就是root用户),那么就直接返回成功(sufficient是充分条件),给pam_rootok.so模块行添加注释后,进行测试。
![](http://s3.51cto.com/wyfs02/M00/74/18/wKioL1YTmF_xcyeAAAH9s_oDgwc621.jpg)
pam_rootok.so模块行添加注释后,测试发现root用户切换到其他用户的时候也需要输入密码,正确输入密码后可以登录。
![](http://s3.51cto.com/wyfs02/M00/74/1B/wKiom1YTmX7x3wGGAAC0xkQZ7kM426.jpg)
(2)如果一个用户是wheel组的成员,那么,该用户可以直接执行su,而不用输入密码:pam_whell.so模块是只要用户输入whell组,那么就满足条件,可以执行该操作。
![](http://s3.51cto.com/wyfs02/M00/74/1B/wKiom1YTndKjt5erAAEftsHc0LQ571.jpg)
pam_whell.so模块行去掉注释行
![](http://s3.51cto.com/wyfs02/M02/74/1B/wKiom1YTmeHBUw8TAAEBObWHMD4071.jpg)
测试
![](http://s3.51cto.com/wyfs02/M01/74/1B/wKiom1YTn2nzg05YAAHXqcMheLE798.jpg)
(3)只有wheel组的成员才可以切换成root用户
![](http://s3.51cto.com/wyfs02/M02/74/18/wKioL1YToVWA5JS4AAEgD3OVTbM997.jpg)
required是一个必要条件,不是充分条件,lj是wheel组的,但是切换到root用户还是要输入密码。
![](http://s3.51cto.com/wyfs02/M02/74/1B/wKiom1YTofGjABJdAABvMKwwDlE375.jpg)
tom不是 wheel组的,而且required是一个必要条件,所以tom用户切换到root用户即使输入正确的密码提示也是错误。
![](http://s3.51cto.com/wyfs02/M00/74/18/wKioL1YTop6CsJARAACB4WZ1pqA098.jpg)
6.例二:禁止tom从tty2登陆
![](http://s3.51cto.com/wyfs02/M01/74/19/wKioL1YTqWiwVSZ3AABH1l2NQUE418.jpg)
![](http://s3.51cto.com/wyfs02/M02/74/1A/wKioL1YUdBCAyh74AAEIeLpaqPY819.jpg)
![](http://s3.51cto.com/wyfs02/M00/74/1D/wKiom1YUdFOR2xR2AABwqoCBs6I572.jpg)
不管是切换成为tom,还是以tom身份登陆,都被禁止。
7.例三:只允许tom用户打开两个文件
查看/etc/pam.d/system-auth中包含
session required pam_limits.so
![](http://s3.51cto.com/wyfs02/M02/74/1D/wKiom1YUczbSOyhnAABxda1OYb0060.jpg)
# vim /etc/security/limits.conf ,尾部增加
tom hard nofile 2
![](http://s3.51cto.com/wyfs02/M02/74/1A/wKioL1YUc7WiC9BLAAByuqI5pWw410.jpg)
测试
![](http://s3.51cto.com/wyfs02/M02/74/1D/wKiom1YUeNfhzurFAABiONK2-nM994.jpg)
8.例四:创建文件/etc/vsftpd/ftpgrps,该文件中的组不能访问ftp
![](http://s3.51cto.com/wyfs02/M00/74/1A/wKioL1YUhFmhlYwJAAD5BpPPOtQ682.jpg)
![](http://s3.51cto.com/wyfs02/M00/74/1D/wKiom1YUhDTT9r4YAAH4drdvJqE300.jpg)
验证,tom登陆ftp,登陆不成功,检查/var/log/secure日志
![](http://s3.51cto.com/wyfs02/M01/74/1A/wKioL1YUhQrTW-ayAAEvvKZfaKo512.jpg)
查看日志
![](http://s3.51cto.com/wyfs02/M02/74/1D/wKiom1YUhTXgiBFMAARe0z1UQmc481.jpg)
相关文章推荐
- TCP wrappers用法以及高级特性
- linux tcp wrappers(对inted端口监视程序生成的服务提供增强的安全性)
- SDN,网络
- Android加载网络图片学习过程
- UI高级第五课 网络通信——iOS学习连载33
- android开发--获取网络图片,读取进度条
- Java笔记---网络编程
- windows下 Sparse Bundle Adjustment 编译问题--FUIMCAT的文章--CFANZ社区--IT技术分享网站 http://www.cfanz.cn/?c=article
- 浅谈HTTP中Get与Post的区别
- RTP、RTCP及媒体流同步
- tcp协议中的三次握手和四次挥手
- TCP/IP协议三次握手与四次握手流程解析
- PHP http_build_query()方法
- http://blog.sina.com.cn/s/blog_7caae74b0100zl17.html
- android监听网络状态,实时更新网络状态
- [HTTP那些事]网络请求API
- [HTTP那些事]网络请求API
- 002C语言 验证无标度网络的幂律定律
- JAVA基础学习之TCP网络编程
- ns-2与TCP拥塞模拟 之七 ns-2中自带的应用Ping解读