• 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访问策略

  • 相关阅读:
    linux基础学习-16.2-磁盘结构-接口-详细组成
    品优购项目--service-sellergoods模块的配置文件
    品优购项目--dao模块配置文件
    品优购项目--common模块配置文件
    品优购项目--common模块依赖的引入
    品优购项目依赖文件的引入
    添加外键设置级联更新
    使用ssm框架开发WEB-INF中的web.xml文件的配置
    使用ssm框架开发controller层所需的配置文件spring_mvc.xml
    使用ssm框架开发service层所需要的配置文件(applicationContext.xml)
  • 原文地址:https://www.cnblogs.com/fina/p/5906364.html
Copyright © 2020-2023  润新知