• SSH安全服务


    ssh安全服务

        client sever

        ssh: secure shell, protocol, 22 / tcp, 安全的远程登录, 基于RSA或DSA实现身份认证

        两种方式的用户登录认证:

        基于password

        基于key

        客户端组件:

        ssh, 配置文件: / etc / ssh / ssh_configu

        Host PATTERN

        StrictHostKeyChecking no 首次登录不显示检查提示

        格式:ssh[user @ ]host[COMMAND]

            ssh[-l user]host[COMMAND]

            ssh 192.168.0.1 'ipconfig'

        常见选项

            -p port:远程服务器监听的端口

            -b: 指定连接的源IP

            ssh - b 192.168.0.1 192.168.0.2

            -v: 调试模式

            -C:压缩方式

            -X: 支持x11转发

            -Y:支持信任x11转发

            ForwardX11Trusted yes

            -t: 强制伪tty分配

            ssh - t remoteserver1 ssh remoteserver2

        ssh基于key的验证

            (1)在客户端生成密钥对

    ssh - keygen - t rsa[-P ''][-f "~ / .ssh / id_rsa "]

            (2) 把公钥文件传输至远程服务器对应用户的家目录

                ssh-copy-id [-i [identity_file]] [user@]host

            (3)测试

                服务端生成一对公私钥

                A            B        C

                sever   client_A   client_B

                ssh-copy-id {B,C}

                若B有A的私钥 可直连C

            (5)重设私钥口令:

                ssh-keygen –p

            (6)口令代理管理

                ssh-agent bash

                ssh-add

        ssh实现服务批量KEY验证

            编辑脚本:批量keyv

                ssh-keygen -t rsa -P '' -f ~/.ssh.id_rsa

                生成Kety 指定 -t方式 -P '口令为空' -f 指定路径

                    ###[root@centos6 ~]#cat hostlist.txt

                    ###192.168.30.7 root centos

                    ###192.168.30.17 root magedu

                    ###[root@centos6 ~]#cat pushkey.sh

                    ####!/bin/bash

                    ###ssh-keygen -t rsa -P ''  -f ~/.ssh/id_rsa &> /dev/null && echo " Ssh key is created "

                    ###while read line;do

                            ip=`echo $line|awk '{print $1}'`

                            user=`echo $line|awk '{print $2}'`

                            password=`echo $line|awk '{print $3}'`

                            expect <<-EOF

                            set timeout 50

                            spawn ssh-copy-id  -i /root/.ssh/id_rsa.pub $user@$ip

                            expect {

                            " yes / no " { send " yes n ";exp_continue }

                            " password " { send " $password n " }

                            }

                            expect eof

                            EOF

                            echo " $ip is finished "

                    ###done < hostlist.txt

        rsync命令(同步变动数据)

            基于ssh和rsh服务实现高效率的远程系统之间复制文件

            使用安全的shell连接做为传输方式

                rsync –av /etc server1:/tmp 复制目录和目录下文件

                rsync –av /etc/ server1:/tmp 只复制目录下文件

            比scp更快,只复制不同的文件

            选项:

                -n 模拟复制过程

                -v 显示详细过程

                -r 递归复制目录树

                -p 保留权限

                -t 保留时间戳

                -g 保留组信息

                -o 保留所有者信息

                -l 将软链接文件本身进行复制(默认)

                -L 将软链接文件指向的文件复制

                -a 存档,相当于–rlptgoD,但不保留ACL(-A)和SELinux属性(-X)

        SSH端口转发

            ###本地转发:clientA-ssh severB-

                -L localport:remotehost:remotehostport sshserver

            选项:

                -f 后台启用

                -N 不打开远程shell,处于等待状态

                -g 启用网关功能

            示例

                ssh –L 9527:telnetsrv:23 -N sshsrv

                telnet 127.0.0.1 9527

            à ß sshsrv:22 à ß localhost:XXXXX à ßlocalhost:9527 ß当访问本机的9527的端口时,被加密后转发到sshsrv的ssh服务,再解密被转发到telnetsrv:23 data

                 telnetsrv:23à ßsshsrv:YYYYY

            ###远程转发:

                -R sshserverport:remotehost:remotehostport sshserver

            示例:

                ssh –R 9527:telnetsrv:23 –N sshsrv

            让sshsrv侦听9527端口的访问,如有访问,就加密后通过ssh服务转发请求到本机ssh客户端,再由本机解密后转发到telnetsrv:23

                à ß localhost:XXXXX à ß sshsrv:22 à ß sshsrv:9527 à ßData

                 telnetsrv:23à ßlocalhost:YYYYY

            动态端口转发:

                当用firefox访问internet时,本机的1080端口做为代理服务器,firefox的访问

                请求被转发到sshserver上,由sshserver替之访问internet

                    ssh -D 1080 root@192.168.244.131

                在本机firefox设置代理socket proxy:127.0.0.1:1080

        ssh服务器

            服务器端:sshd, 配置文件: /etc/ssh/sshd_config 第17行 port端口改掉

                登录信息日志在 /var/log/secure

                    awk '/failed password/{ip$[(NF-3)]++}END{for (i in ip){if(ip[i]>=3)system(" iptables - A INPUT - s " i " - j REJECT ")}}' /var/log/secure

                    常用参数:

                Port (端口)

                ListenAddress ip (监听ip)

                LoginGraceTime 2m  (登录维持两分钟)

                PermitRootLogin yes  (是否ROOT登录)

                StrictModes yes 检查.ssh/文件的所有者,权限等

                MaxAuthTries 6  (最多能尝试连接一半的次数)

                MaxSessions 10 同一个连接最大会话

                PubkeyAuthentication yes  (公钥验证)

                PermitEmptyPasswords no  (是否能空密码)

                PasswordAuthentication yes  (密码验证 )

                GatewayPorts no  (网关端口)

                ClientAliveInterval:客户端活动间隔 单位:秒

                ClientAliveCountMax:客户端活动间隔探测次数 默认3

                UseDNS yes  (dnf解析 建议no)

                GSSAPIAuthentication yes 提高速度可改为no

                MaxStartups 未认证连接最大值,默认值10

                Banner /path/file

                限制可登录用户的办法:

                    AllowUsers user1 user2 user3

                    DenyUsers

                        两个都有的时候。拒绝名单优先

                    AllowGroups

                    DenyGroups

            建议使用非默认端口

                禁止使用protocol version 1

                限制可登录用户

                设定空闲会话超时时长

                利用防火墙设置ssh访问策略

                仅监听特定的IP地址

                基于口令认证时,使用强密码策略

                    tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30| xargs

                使用基于密钥的认证

                禁止使用空密码

                禁止root用户直接登录

                限制ssh的访问频度和并发在线数

        经常分析日志 

        ssh 工具

            dropbear

            编译安装dropbear示例

            ssh协议的另一个实现:dropbear

            源码编译安装:

                1、安装开发包组:yum groupinstall "Development tools"

                2、下载dropbear-2017.75.tar.bz2

                3、tar xf dropbear-2017.75.tar.bz2

                4、less INSTALL README

                5、./configure

                6、make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"

                7、make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install

            dropbear启动ssh服务:

                8、ls /usr/local/sbin/ /usr/local/bin/

                9、/usr/local/sbin/dropbear -h

                10、mkdir /etc/dropbear

                11、dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 2048

                12、dropbearkey -t dss -f /etc/dropbear/dropbear_dsa_host_key

                13、dropbear -p :2222 -F –E #前台运行

                dropbear -p :2222 #后台运行

            客户端访问:

                14、ssh -p 2222 root@127.0.0.1

                15、dbclient -p 2222 root@127.0.0.1

    AIDE

        AIDE(Advanced Intrusion Detection Environment)

        高级入侵检测环境)是一个入侵检测工具,主要用途是检查文件的完整性,审计计算机上的那些文件被更改过了。

        AIDE能够构造一个指定文件的数据库,它使用aide.conf作为其配置文件。AIDE数据库能够保存文件的各种属性,包括:权限(permission)、索引节点序号(inode number)、所属用户(user)、所属用户组(group)、文件大小、最后修改时间(mtime)、创建时间(ctime)、最后访问时间(atime)、增加的大小以及连接数。AIDE还能够使用下列算法:sha1、md5、rmd160、tiger,以密文形式建立每个文件的校验码或散列号.

        这个数据库不应该保存那些经常变动的文件信息,例如:日志文件、邮件、/proc文件系统、用户起始目录以及临时目录.

        AIDE

            安装

                yum install aide

            修改配置文件

                vim /etc/aide.conf (指定对哪些文件进行检测)

                /test/chameleon R

                /bin/ps R+a

                /usr/bin/crontab R+a

                /etc PERMS

                !/etc/mtab #"!"表示忽略这个文件的检查

                R=p+i+n+u+g+s+m+c+md5 权限+索引节点+链接数+用户+组+大小+

                最后一次修改时间+创建时间+md5校验值

                NORMAL = R+rmd60+sha256

            AIDE

                初始化默认的AIDE的库:

                    /usr/local/bin/aide --init

                生成检查数据库(建议初始数据库存放到安全的地方)

                    cd /var/lib/aide

                    mv aide.db.new.gz aide.db.gz

                检测:

                    /usr/local/bin/aide --check

                更新数据库

                    aide --update

  • 相关阅读:
    mybatis框架demo first
    pro02总结:spring mvc + jdbc
    java开发常用jar包介绍(转载)
    proj01总结:spring jdbc操作
    mysql导入sql文件
    hibernate对象三种状态
    Hibernate 的saveOrUpdate方法(转)
    java web面试题,收集
    redis与spring整合·
    mybatis_2
  • 原文地址:https://www.cnblogs.com/OrochWang/p/9308838.html
Copyright © 2020-2023  润新知