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

SSH安全服务的更多相关文章

  1. Linux实战教学笔记05:远程SSH连接服务与基本排错(新手扫盲篇)

    第五节 远程SSH连接服务与基本排错 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 远程连接LInux系统管理 1.1 为什么要远程连接Linux系统 在实际的工作场景中,虚拟机界面或物理 ...

  2. systemctl status ssh.service 服务重启出现报错

    Case: ubuntu在从Ubuntu 16.04 LTS 升级到18.04 的时候,执行 do-release-upgrade -d 后,发现ssh无法登陆服务器, Solution: 1.通过s ...

  3. (转)远程SSH连接服务与基本排错

    远程SSH连接服务与基本排错 原文:https://www.cnblogs.com/chensiqiqi/p/6224474.html#top 1.1 为什么要远程连接Linux系统 在实际的工作场景 ...

  4. 3、SSH高级服务

    1.ssh服务生成新的公钥和私钥[root@rhel6_80 ~]# ssh-keygen Generating public/private rsa key pair. Enter file in ...

  5. Linux SSH,FTP服务配置

    CentOS-6.4-x86_64-minimal 0.网卡配置 参考:Linux系统\Centos没有网卡eth0配置文件怎么办? - http://jingyan.baidu.com/articl ...

  6. 远程SSH连接服务与基本排错

    为什么要远程连接Linux系统?? 在实际的工作场景中,虚拟机界面或物理服务器本地的窗口都是很少能够接触到的,因为服务器装完系统后,都要拉到IDC机房托管,如果是购买了云主机,更碰不到服务器本地显示器 ...

  7. SSH高级服务

    SSH端口转发 SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据.但是,SSH 还能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的 加密及解密服务.这 ...

  8. 安装,配置,启动FTP,SSH,NFS服务

    1.安装,配置,启动FTP服务 sudo apt-get install vsftpd 修改vsftpd的配置文件/etx/vsftpd/.config,将下面几行前面的“#”去掉 #local_en ...

  9. Ubuntu13.10:[3]如何开启SSH SERVER服务

    作为最新版本的UBUNTU系统而言,开源,升级全部都不在话下.传说XP已经停止补丁更新了,使用UBUNTU也是一个很好的选择.ubuntu默认安装完成后只有ssh-agent(客户端模式),宾哥百度经 ...

随机推荐

  1. bzoj 2508: 简单题【拉格朗日乘数法】

    大概是对于f(x,y)求min,先把x看成常数,然后得到关于y的一元二次方程,然后取一元二次极值把y用x表示,再把x作为未知数带回去化简,最后能得到一个一元二次的式子,每次修改这个式子的参数即可. 智 ...

  2. codeforces912E(折半搜索+双指针+二分答案)

    E. Prime Gift E. Prime Gift time limit per test 3.5 seconds memory limit per test 256 megabytes inpu ...

  3. 牛客网NOIP赛前集训营-提高组(第八场)

    染色 链接:https://ac.nowcoder.com/acm/contest/176/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言10 ...

  4. [USACO 2012 Feb Gold] Cow Coupons【贪心 堆】

    传送门1:http://www.usaco.org/index.php?page=viewproblem2&cpid=118 传送门2:http://www.lydsy.com/JudgeOn ...

  5. 树上最长链 Farthest Nodes in a Tree LightOJ - 1094 && [ZJOI2007]捉迷藏 && 最长链

    树上最远点对(树的直径) 做法1:树形dp 最长路一定是经过树上的某一个节点的. 因此: an1[i],an2[i]分别表示一个点向下的最长链和次长链,次长链不存在就设为0:这两者很容易求 an3[i ...

  6. 配置Oracle监听器

    Oracle的监听和网络服务都可以在Net Manager中配置,如下图.也可以在上面的那个Net Configuration Assistant中配置,只是Net Manager比较方便些. Ora ...

  7. 一个iOS开发者的修真之路

    在微信上有童鞋问我iOS开发者的入门标准是神马?这个问题难到我了,而且贸然给一个答案出来的话,必定会有万千高手来喷. 凡人修仙,仙人修道,道人修真.当我们还是一个在青石板上蹲马步汗水涔涔的废柴时,或许 ...

  8. 【原】无脑操作:Eclipse + Maven + jFinal + MariaDB 环境搭建

    一.开发环境 1.windows 7 企业版 2.Eclipse IDE for Enterprise Java Developers  Version: 2019-03 (4.11.0) 3.JDK ...

  9. 机器学习-Probabilistic interpretation

    Probabilistic interpretation,概率解释  解释为何线性回归的损失函数会选择最小二乘 表示误差,表示unmodeled因素或随机噪声,真实的y和预测出来的值之间是会有误差的, ...

  10. Prim算法以及Kruskal算法

    Prim算法主要用于计算最小生成树.算法在选取最小路径的时候需要优化,算法思路:从某个顶点开始,假设v0,此时v0属于最小生成树结点中的一个元素,该集合假设V,剩下的点待选择的点为U,然后找寻V中的点 ...