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