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 [email protected]${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 [email protected]
?
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访问策略