zoukankan      html  css  js  c++  java
  • OpenSSH远程控制

    一、SSH 简介
       SSH(Secure Shell)是一种安全通道协议,只要用来实现字符界面的远程登陆、远程复制等功能。
       SSH协议默认监听端口:TCP协议  22
       SSH协议版本:V1、V2

    服务名称:sshd
    服务端主程序:/usr/sbin/sshd
    服务端配置文件:/etc/ssh/sshd_config
    客户端配置文件:/etc/ssh/sshconfig
    1.服务监听选项
    vim   /etc/ssh/sshd_config
    17  Port 22
    #监听端口,建议修改为其他端口以提高在网络中的隐蔽性,一般不超过65535。
    19  ListenAddress 192.168.200.111#监听IP地址,默认监听到0.0.0.0任意地址
    20  protocol 2
    #ssh协议的版本选用V2比V1的安全
    性更好
    116  UseDNS no
    #禁用DNS反向解可以提高服务的响应速

    93 GSSAPIAuthentication   no
    #为了加快连接
    systemctl    restart    sshd #重启ssh服务
    2.用户登录控制
    sshd服务默认允许root用户登录,但在Internet中使用时是非常不安全的。普遍的做法如下:先以普通用户远程登入,进入安全shell环境后,根据实际需要使用su命令切换为root用户。
    vim    /etc/ssh/sshd_config
    38 LoginGraceTime 10s #登录验证时间为10秒
    39 PermitRootLogin no #禁止root用户登录
    41 MaxAuthTries 3  #最大重试次数为3
    65 PermitEmptyPasswords no #禁止空密码用户登录
    OpenSSH服务访问控制
    AllowUsers  仅允许用户登录
    DenyUsers  仅禁止用户登录
    注意:
    1)Allow  Users不要与Deny  Users同时使用
    2)当服务器在Internet时,控制包含的IP地址时应是公司公网地址
    #一般来说拒绝用户是多于允许用户的,所以一般设置仅拒绝某些用户。
    vim     /etc/ssh/sshd_config
    AllowUsers user1  user2   user3@IP地址
    #被允许的IP一般为公司的公网IP,这行内容在文件内添加即可。

    3.登陆验证方式
    密码验证
    密码验证:对服务器中本地系统用户的登录名称、密码进行验证。这种方式使用最为简便,但从客户端角度来看,正在连接的服务器有可能被假冒:从服务器角度来看,当遭遇穷举(暴力破解)攻击时防御能力比较弱。
    密钥对验证
    密钥对验证:要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥私钥进行加密/解密关联验证,大大增强了远程管理的安全性。该方式不易被假冒,且可以免交互登录,在Shell中被广泛使用。
    vim   /etc/ssh/sshd_config
    66  PasswordAuthentication yes
    #启用密码验证
    44  PubkeyAuthentication yes
    #启用密钥对验证
    48  AuthorizedkeysFile ssh/authorized-keys
    #指定公钥库文件(用于保存多个客户端上传的公钥文本)

    二、使用客户端程序
    openssh客户端由openssh-clients软件包提供,默认已安装。其中包括(ssh远程登录命令、scp远程复制命令、sftp远程文件传输命令等)。
    1.命令程序
    ssh命令
    ssh  user@IP地址 #若客户机登录用户与主机用户名相同,可省去user@)
    ssh  user@IP地址  command
     -p  22 #端口选项 
    scp  命令
    scp  源文件  目标位置 #IP:文件的绝对路径
     -r #递归复制
    用户名这部分影响了文件的权限
    sftp命令
    sftp   user@IP地址
    #是个交互式的环境,使用put 、get进行操作。

    三、构建密钥对验证的SSH体系
    密钥对验证整过细节包含四步:
    a.首先要在SSH客户端以root用户身份创建密钥对
    b.客户端将创建的公钥文件上传至SSH服务端
    c.服务端将公钥信息导入用户root的公钥数据库文件
    d.客户端以root用户身份连接服务器端root用户测试
    1.在客户端创建密钥对,使用ssh-keygen命令,通过RSA、DSA、ECDSA等加密算法实现,通过-t选项指定。
    ssh-keygen  -t   rsa
    在主配置文件指定的位置会发现公钥id_rsa.pub和私钥id_rsa
    2.将公钥使用scp命令传给客户端。
    scp  /root/.ssh/id_rsa.pub   目标主机IP:/root
    3.目标主机创建和当前主机权限相同的.ssh文件夹。并且将公钥内容导入到.ssh文件夹内的authorized_keys中。
    mkdir .ssh
    chmod 700 .ssh
    cat /root/id-rsa.pub  >> /root/.ssh/authorized_keys
    4.连接测试。
    #可以用ssh-copy-id   命令直接实现公钥传输。
    ssh-cpy-id   -i   /root/.ssh/id_pub  root@目标IP
    #-i  指定公钥可以省略
     
    四、TCP Wrappers
    1,TCP Wrappers保护原理
    TCP Wrappers将TCP服务程序“包裹”起来,代为监听TCP服务程序的端口,增加了一个安全监测的过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。
    2、保护机制的实现方式
    方式1:通过tcpd主程序对其他服务程序进行包装
    方式2:由其他服务程序调用libwrap.so.*链接库
    3、TCP Wrappers保护的条件
    (1)必须是采用TCP协议的服务
    (2)函数库中必须包含libwrap.so.0(共享连接库)、大多数服务通过这种方式,可以用ldd命令查看
    #ldd  /sbin/ifconfig    查看ifconfig命令调用的库文件
    4、访问控制策略的配置文件
    /etc/hosts.allow #允许
    /etc/hosts.deny  #拒绝
    访问控制策略处理流程图

    /etc/hosts.allow文件的优先级更高,若同一IP地址即出现在hosts.allow中,也存在与hosts.deny中,则该IP地址的访问请求将被接受。

    文件格式

    配置示例
    实验要求:仅允许IP地址为192.168.200.100-192.168.200.199的主机访问sshd服务,禁止其他所有地址的访问。
    vim       /etc/hosts.allow
    sshd:192.168.200.1??
    vim   /etc/hosts.deny
    sshd:ALL
    #因为/etc/hosts.allow的文件优先级较高所以在其中写上允许的IP并拒绝掉其他所有IP
     
     
    #小知识
    对访问的IP进行过滤
    awk  '/Failed/{print  $(NF-3)}'   /var/log/secure  |sort  -nr  | uniq  -c  |   head
     
  • 相关阅读:
    Ubuntu8.04代码已冻结发布在即
    Ruby on rails开发从头来(五十) ActiveRecord基础(更新记录)
    Ruby on rails开发从头来(四十四) ActiveRecord基础(创建记录)
    Ruby on rails开发从头来(四十五) ActiveRecord基础(读取记录)
    网络恶搞“白送家产”:美国男子回家发现财产被搬空
    Ruby on rails开发从头来(四十三) ActiveRecord基础(连接数据库)
    Ruby on rails开发从头来(四十九) ActiveRecord基础(行数和再加载数据)
    Ruby on rails开发从头来(四十七) ActiveRecord基础(强大的find方法)
    Ruby on rails开发从头来(四十六) ActiveRecord基础(SQL和Active Record)
    简单三步堵死SQL Server注入漏洞
  • 原文地址:https://www.cnblogs.com/flff/p/12507602.html
Copyright © 2011-2022 走看看