SSH服务与sudo授权
ssh服务,即安全的远程系统登录服务,使用22端口
windows也支持ssh服务
过程:
客户端发起链接请求
服务端返回自己的公钥,以及一个会话ID
客户端生成密钥对
客户端用自己的公钥异或会话ID,计算出一个值,并用服务端的公钥加密
客户端发送加密后的值到服务端,服务端用私钥解密,得到Res
服务端用解密后的值异或会话ID,计算出客户端的公钥
最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密
openssh 通用
openssh-clients 客户端
openssh-server 服务器端
客户端:
当用户首次连接会将服务器公钥复制在~/.ssh/know_hosts中,下次连接,会自动匹配私钥,如果不匹配,将拒绝连接
ssh客户端配置文件 /etc/ssh/ssh_config
设置ssh首次连接不再提示yes/no
echo “StrictHostKeyChecking no” >> /etc/ssh/ssh_config
ssh相关命令
lastb 查看失败登录的远程主机
ssh命令 安全连接远程主机
登录对方主机执行完命令后退出
ssh root@10.0.0.8 cat /etc/redhat-reless
-p 连接指定端口号
ssh -p 22 root@10.0.0.1
-t 强制伪终端分配
ssh -t 10.0.0.8 ssh -t 10.0.0.7 ssh -t 10.0.0.6
ssh登录验证方式
ssh登录验证包括: 密码 密钥
密钥:
主机密钥 /etc/ssh/*.key
用户密钥 ~/.ssh/
ssh实现基于密钥登录
1,生成客户端密钥对
ssh-keygen
-p 私钥加密
2,复制公钥到远程服务器
ssh-copy-id root@10.0.0.8
3,发起连接执行命令
ssh root@10.0.0.8 useradd yun
注:复制公钥到服务器后,具有对应私钥的客户端即可实现密钥**登录
expect实现批量基于ssh的key部署
#!/bin/bash
PASS=magedu
rpm -q expect &> /dev/null || yum -y install expect &> /dev/null
ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa &> /dev/null && echo "ssh key is
created"
while read IP ;do
expect &> /dev/null <<EOF #或者expect <<EOF &> /dev/null
set timeout 20
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@$IP
expect {
"yes/no" { send "yes\n";exp_continue }
"password" { send "$PASS\n" }
}
expect eof
EOF
echo $IP is ready
done < hosts.txt
批量修改多台主机的root密码为随机密码
#!/bin/bash
yum -y install sshpass &>/dev/null
NET=10.0.0
mima=123456
for i in {1..254};do
PASS=`cat /dev/urandom | tr -dc [:alnum:] |head -c6 `
sshpass -p $mima ssh $NET.$i "echo $PASS|passwd --stdin root &> /dev/null"
echo $NET.$i:$PASS >> host.txt
done
ssh服务相关工具
rsync 实现远程主机之间复制文件
-a 保留属性 -v 显示过程
注: 双方主机都需安装rsync
rsync -av /data/ root@10.0.0.8:/data/
rsync -av root@10.0.0.8:/data/ /data/
sshfs 实现远程挂载目录
sshfs 10.0.0.8:/data/ /data/
sshpass远程自动登录
注: 基于密码登录,且非首次登录
sshpass -p ssy192011 ssh 10.0.0.8 useradd yunge
ssh服务器配置优化
ssh 服务器配置
cat /etc/ssh/sshd_config
Port 22 端口号
LoginGraceTime 2m 连接超时时间,默认:分钟,不输入则退出
StrictModes yes 检查.ssh/文件的所有者,权限等
MaxSessions 10 同一个连接最大会话个数,10.0.0.7的最大终端数
PubkeyAuthentication yes 是否支持key验证
PermitEmptyPasswords no 是否允许空密码连接
PasswordAuthentication yes 是否允许密码验证
GatewayPorts no 是否当网关跳转
ClientAliveInterval 60 60秒监控一次。如果无操作,断开
ClientAliveCountMax 0 与上一项配合
MaxStartups 10 未认证连接最大值
Banner /path/file 用户登录提示信息
数据完整性检查aide
aide
通过样本库与文件库的对比,检查数据完整性
规则配置文件: /etc/aide.conf
定义监控项:权限+索引节点+链接数+用户+组+大小+最后一次修改时间+创建时间+md5校验值
R=p+i+n+u+g+s+m+c+md5
/data/ R
!/data/fstab 排除对这个文件的检查
过程:
1, yum install aide -y
2, vim /etc/aide.conf
3, aide -i
4, mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
5, aide -C
sudo授权
sudo:允许系统管理员让普通用户执行一些或者全部的root命令
sudo授权需要的密码为授权用户密码,且5分钟内再次授权不用密码
sudo规则文件: /etc/sudoers 支持通配符
规则:
user host=(runas) cmd
用户 主机=(代表用户) 命令
%wheel 组wheel
! 除了
任意字符
例:
yun ALL=(root) ALL,!rm
%wheel ALL=(root) mount , umount
执行sudo:
sudo -i 切换为root
sudo mount /dev/sr0 /mnt 实现sudo授权挂载
visudo -c 查看sudo规则文件是否语法错误
注意:
通配符会实现 cat /data/f1 /etc/passwd
正确方法:
yun ALL=(ALL) /bin/cat /data/f , ! /bin/cat /data/f**