首页 > 代码库 > day2-ssh+tcp warappers+pam

day2-ssh+tcp warappers+pam

LINUX安全应用

ssh访问控制

TCP Wrappers防护

PAM可插拔认证

PAM认证案例实践

?

SSH登录 有哪些隐患

不安全的网络环境

密码嗅探

键盘记录

恶意猜 解及攻击

账号枚举

暴力破解密码

?

提高 SHH的安全性

启用SSH黑名单、白名单

仅允许、仅拒绝

验证客户端密钥

客户端存私钥、服务器存公钥

其他控制手段

防火墙、TCP防护、PAM认证

?

yum install expect

#!/bin/bash

pass=root

newpass=root1

?

for IP in $(cat /root/bin/ip.list)

do

????expect <<EOF

????spawn ssh root@${IP} "echo $newpass" | passwd –stdin root"

????expect "(yes/no)?" {

????send "yes\r"

????expect "password:"

????send "${pass}\r"

} "password:" { send "${pass}\r" }

expect eof

EOF

done

?

sshd基本安全配置

配置文件/etc/ssh/sshd_config

Port 22????????修改端口号默认为22

Protocol 2

ListenAddress 192.168.100.100

PermitRootLogin no????????是否允许root用户登录

PermitEmptyPasswords no

StrictModes yes????????检查用户相关环境信息,若不匹配拒绝登录

MaxAuthTries 6????最大的尝试次数

MaxSessions 10????最大的会话连接数

UseDNS no???? 取消DNS反记录

LoginGraceTime 2m 在输入密码的时间默认2分钟

?

sshd黑/白名单配置

配置文件/etc/ssh/sshd_config

DenyUsers????USER1 USER2 ..

AllowUsers????USER1HOST USER2 ..

DenyGroups????GROUP1 GROUP2 ..

AllowGroups????GROUP1 GROUP2 ..

?

#for I in {1..254}

do

echo –e "192.168.100.$i\ser$i.test.com" >>/etc/hosts

done

?

sshd的登录验证方式

口令验证

检查登录用户的口令是否一致

密钥验证

检查客户端私钥与服务器上的公钥是否匹配

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_Keys????公钥库:存放授权客户机的公钥文本

?

SSH无密码登录

使用工具ssh-keygen生成SSH密钥对

可以手动指定加密算法-t rsa 或 –t dsa

若不指定,默认采用RSA加密

#ssh-keygen

id_rsa????id_rsa.pub

#ssh-copy-id –i root@192.168.100.100

?

vim authorized_keys????删除你定义的一行

cat .ssh/known_hosts

提高OpenSSH服务安全

基本安全策略——禁止root、禁止空口令

为SSH访问配置"仅允许"策略

分别实现密钥验证倒入、免密码登入、禁用密码验证

?

为私密加密码用

先生成 密钥ssh-keygen

ssh-copy-id –i IP地址

ssh-agent

将出的ssh-agent输出的信息执行一次

ssh-add

ssh IP地址

?

TCP Wrappers防护

通用的保护机制

统一的保护策略

多种TCP服务共用,提高效率

?

作用

方式一:由tcpd或xinetd提供统一保护

超级服务器xinetd

方式二:各服务独自调用libwrap.so模块

典型服务:vsftpd、sshd、xinetd

ldd `which sshd vsftpd `|grep wrap

?

防护规则存放在

/etc/hosts.allow

/etc/hosts.deny

策略应用规律

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

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

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

?

规则格式

服务列表:客户机列表

ALL为所有

?

DenyHosts阻止SSH攻击

安装及使用请参照README.txt

dneyhosts.cfg配置要点

SECURE_LOG=/var/log/secure

HOSTS_DENY=/etc/hosts.deny

PURGE_DENY=2h????????2小时

BLOCK_SERVICE=sshd????服务名

DENY_THRESHOLD_INVALID=3????????无效账户尝试登陆次数

DENY_THRESHOLD_VALID=5????????有效账户尝试登陆次数

DENY_THRESHOLD_ROOT=2????????ROOT用户尝试登陆次数

?

PAM可插拔认证

关于用户认证

如何识别真正的用户

如何控制合法用户对资源的访问

应用如何降低认证开发成本

Pluggable Authentication Modules

1995年,由sun公司最好初提出

应用》》接口》》模块

?

三A认证

Authentication:身份认证????你是认证

Authorization:授权????????你能干什么

Audit:审计????????你干了什么

配置文件/etc/pam.d/

查看/etc/pam.d/su

account????????required????pam_nologin.so

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

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

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

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

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

?

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

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

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

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

optional:可选

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

?

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

?

vim /etc/pam.d/su

auth sufficient pam_rootok.so

# Uncomment the following line to implicitly trust users in the "wheel" group.

#auth sufficient pam_wheel.so trust use_uid

# Uncomment the following line to require a user to be in the "wheel" group.

#auth required pam_wheel.so use_uid

?

限制用户登录终端

/etc/security/access.conf

  • : ????jack????:????tty2

/etc/pam.d/login

account required pam_access.so????????????注意顺序

限制对系统资源的访问

配置login,启用pam_limits.so模块

配置limits.conf访问策略

day2-ssh+tcp warappers+pam