day2-ssh+tcp warappers+pam

LINUX安全应用

ssh访问控制

TCP Wrappers防护

PAM可插拔认证

PAM认证案例实践

   

SSH登录 有哪些隐患

不安全的网络环境

密码嗅探

键盘记录

恶意猜 解及攻击

账号枚举

暴力破解密码

   

提高 SHH的安全性

启用SSH黑名单、白名单

仅允许、仅拒绝

验证客户端密钥

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

其他控制手段

防火墙、TCP防护、PAM认证

   

yum install -y 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 "

    expect "password:"

    send "${pass} "

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

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.$iser$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为所有

vim /etc/hosts.deny

vsftpd: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用户尝试登陆次数

 

tar xf DenyHosts-2.6.tar.gz

cd DenyHosts-2.6

python setup.py install

cd /usr/share/denyhosts/

cp denyhosts.cfg-dist denyhosts.cfg    //建立配置文件

cp daemon-control-dist daemon-control    //建立控制脚本

chmod 700 daemon-control

ln -sf /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts

chkconfig --add denyhosts

 

[root@localhost init.d]# grep -Ev "^#|^$" /usr/share/denyhosts/denyhosts.cfg

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

SECURE_LOG = /var/log/secure

HOSTS_DENY = /etc/hosts.deny

PURGE_DENY = 4h            //清除超过4小时的封锁条目

BLOCK_SERVICE = sshd        //保护sshd服务

DENY_THRESHOLD_INVALID = 5        //无效用户登录失败5次后封客户机IP

DENY_THRESHOLD_VALID = 10        //有效用户失败10次后封客户机IP

DENY_THRESHOLD_ROOT = 1

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 = root@admin.com        //邮件告警设置(可远)

SMTP_HOST = localhost

SMTP_PORT = 25

SMTP_FROM = DenyHosts <nobody@localhost>

SMTP_SUBJECT = DenyHosts Report

AGE_RESET_VALID=5d

AGE_RESET_ROOT=25d

AGE_RESET_RESTRICTED=25d

AGE_RESET_INVALID=10d

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

DAEMON_LOG = /var/log/denyhosts

 

DAEMON_SLEEP = 30s

DAEMON_PURGE = 1h

######### THESE SETTINGS ARE SPECIFIC TO ##########

######### DAEMON SYNCHRONIZATION ##########

 

启动服务

/etc/init.d/denyhosts start

 

查看日志

tailf /var/log/secure

 

查看hosts.deny文件

tailf /etc/hosts.deny

[root@localhost init.d]# tail -1 /etc/hosts.deny

sshd: 192.168.100.1

   

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         将该行注释,su到普通用户需要密码

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

#auth sufficient pam_wheel.so trust use_uid         去除该行注释,若是wheel组里的用户,直接su可切换到ROOT,且无需密码

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

#auth required pam_wheel.so use_uid         去除该行注释,只有wheel组里的用户可以su到ROOT

   

限制用户登录终端

/etc/security/access.conf

:     jack    :    tty2

/etc/pam.d/login

account required pam_access.so            注意顺序

限制对系统资源的访问

配置login,启用pam_limits.so模块

配置limits.conf访问策略

原文地址:https://www.cnblogs.com/fina/p/5906364.html