SSH批量分发管理


IT公司企业级批量分发\管理方案(分发,批量部署、执行命令、批量管理)
1、中小企业最基本实用的sshkey密钥管理方案
2、门户网站puppet (复杂,太重)sina
3、赶集,小米SALSTACK批量管理(轻量)


SSH server:   
1、SSH服务   2、SFTP服务(vsftp,proftp) ssh client:   特别提醒:SSH客户端(ssh)还包含一个很有用的远程安全拷贝命令scp,也是通过ssh协议工作的。 知识小结:(openssh负责连接 openssl负责加密)   1、ssh是安全加密协议,用于远程连接linux服务器   2、ssh默认端口是22,安全协议版本ssh2,ssh1 有漏洞     ssh2多加了一个确认联机正确性的Diffie-Hellman机制,避免联机中被插入恶意代码   3、ssh服务端主要包含两个服务功能ssh远程连接,sftp服务   4、linux ssh客户端包含ssh远程连接命令,以及远程拷贝scp命令

SSH安全优化
  更改端口
  禁止root直接登录  
  密码认证改为密钥认证 PasswordAuthentication no
  重要服务不使用公网地址
  使用防火墙限制来源IP
相关参数
  Port ****            更改ssh端口
  PermitRootLogin no       禁止root用户直接远程登录
  PasswordAuthentication no   禁止使用密码远程登录,只能使用密钥。
  UseDns no            禁止ssh进行dns反向解析,影响shh连接效率
  GSSAPIAuthentication no    禁止GSS认证,较少连接时产生的延时
 

SSH服务认证类型   
1、基于口令的安全认证   2、基于密钥的安全认证 锁Public Key 钥匙Private Key   建立一对密钥对,公用密钥放在需要访问的目标服务器上,另外还需要把私钥放到ssh的客户端或对应的服务器上

 

 

 

 配置


在3台服务器上建立gtms账号
192.168
.0.84 node84 分发服务器 192.168.0.85 node85 192.168.0.86 node86

1、生成密钥文件
root@node84 ~]# su - gtms
[gtms@node84 ~]$ ssh-keygen -t dsa   #一路回车
Generating public/private dsa key pair.
Enter file in which to save the key (/home/gtms/.ssh/id_dsa):
Created directory '/home/gtms/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/gtms/.ssh/id_dsa.
Your public key has been saved in /home/gtms/.ssh/id_dsa.pub.
The key fingerprint is:
31:54:57:38:fb:8f:58:de:45:ff:26:e0:33:a5:bb:a0 gtms@node84
The key's randomart image is:
+--[ DSA 1024]----+
|        ... .o.  |
|       .   .o    |
|        o    o   |
|         o  .   .|
|        S    . ..|
|            . + o|
|          .. B +o|
|         . .* + =|
|        E   o= o |
+-----------------+

[gtms@node84 ~]$ ls -al .ssh
total 16
drwx------ 2 gtms gtms 4096 Jan 30 03:56 .
drwx------ 3 gtms gtms 4096 Jan 30 03:56 ..
-rw------- 1 gtms gtms  668 Jan 30 03:56 id_dsa
-rw-r--r-- 1 gtms gtms  601 Jan 30 03:56 id_dsa.pub


2、将公钥传到其他服务器
[gtms@node84 ~]$ ssh-copy-id -i  .ssh/id_dsa.pub gtms@192.168.0.85
[gtms@node84 ~]$ ssh-copy-id -i  .ssh/id_dsa.pub gtms@192.168.0.86

[gtms@node85 ~]$ ls -l .ssh/
total 4
-rw------- 1 gtms gtms 601 Jan 30 04:01 authorized_keys        #自动变为此文件  600权限
[gtms@node85 ~]$

如下操作已经通过密钥认证方式,无需密码
[gtms@node84 ~]$ssh gtms@192.168.0.85
[gtms@node84 ~]$scp -P22 /etc/hosts gtms@192.168.0.85:~


通过脚本实现分发
[gtms@node84 ~]$ cat fenfa.sh
#!/bin/sh
. /etc/init.d/functions
if [ $# -ne 1 ]
        then "USAGE:$0 {filename|dirname}"
        exit 1
fi
for n in 85 86
do
scp $1 patrol@192.168.0.$n:~ &>/dev/null
if [ $? -eq 0 ]
        then
                action "fenhua 192.168.0.$ is ok" /bin/true
        else
                action "fenhua 192.168.0.$n is not ok" /bin/false
fi
done


SSH批量分发与管理方案小结
1、利用root做ssh做ssh key做验证(危险等级太大)
  优点:简单、易用
  缺点:安全性差,同时无法禁止root远程连接这个功能
  企业应用:80%中小企业

2、利用普通用户来做
  思路是先把文件的文件分发到用户家目录,然后sudo提权cp分发的文件的对应权限 #echo 'gtms ALL=(ALL)    NOPASSWD:/usr/bin/rsync' >>/etc/sudoers
  优点:安全,无需停止root远程连接
  缺点:配置较复杂

3、同方案2,只是不用suid,而是设置suid对固定命令授权
  优点:相对安全
  缺点:复杂,安全性较差,任何人都可以处理带suid权限的命令

  建议:追求简单,选1。追求安全建议选2.有能力puppet,saltstack





 

posted @ 2017-05-27 16:40  黑色月牙  阅读(1080)  评论(0编辑  收藏  举报