zoukankan      html  css  js  c++  java
  • 生产环境ssh登陆策略

    生产环境ssh登陆策略

    备份:cp /etc/ssh/sshd_config{,.bak}

    vim /etc/ssh/sshd_config

     
    1. 17 #Port 22 #修改ssh连接端口
    2. 38 #PermitRootLogin yes #是否允许root账号远程登陆
    3. 43 #PubkeyAuthentication yes #是否开启公钥连接认证
    4. 47 AuthorizedKeysFile .ssh/authorized_keys #公钥文件的放置位置
    5. 65 PasswordAuthentication yes #是否开启密码验证登陆
    6. 79 GSSAPIAuthentication yes #是否关闭GSSAPI认证
    7. 115 #UseDNS yes #是否关闭DNS反向解析
    8. 修改后
    9. 17 Port 22221 #工作中需要设定到1万以上的端口,避免被扫描出来。
    10. 38 PermitRootLogin no #如果不是超大规模的服务器,为了方便我们可以暂时开启root远程登录
    11. 43 PubkeyAuthentication yes #开启公钥认证模式
    12. 47 AuthorizedKeysFile .ssh/authorized_keys #公钥放置位置
    13. 65 PasswordAuthentication no #为了安全我们关闭服务器的密码认证方式
    14. 79 GSSAPIAuthentication no #关闭GSSAPI认证,极大提高ssh连接速度
    15. 115 UseDNS no #关闭DNS反向解析,极大提高ssh连接速度
     

    设置xshell私钥登陆Linux

     
    1. #查看服务器端IP
    2. [root@ansible .ssh]# hostname -I
    3. 192.168.200.183
    4. #在Linux服务器端生成rsa密钥对
    5. [root@ansible ~]# ssh-keygen #一直回车
    6. Generating public/private rsa key pair.
    7. Enter file in which to save the key (/root/.ssh/id_rsa):
    8. Enter passphrase (empty for no passphrase):
    9. Enter same passphrase again:
    10. Your identification has been saved in /root/.ssh/id_rsa.
    11. Your public key has been saved in /root/.ssh/id_rsa.pub.
    12. The key fingerprint is:
    13. SHA256:royhAEKx9bhe4jLZ3SzfZ/yvhkzPgToDIx+1gSxoOLM root@www
    14. The keys randomart image is:
    15. +---[RSA 2048]----+
    16. | . . |
    17. | + o |
    18. | o..... . |
    19. |.+ o.. o o |
    20. |o =o .. S o . |
    21. |oE= +.o= . o . |
    22. |.+ +.ooo= = + . |
    23. | .o. +oo.+ * + |
    24. | . . o. .= ooo. |
    25. +----[SHA256]-----+
    26. #将生成的公钥导入到服务器端的~/.ssh/authorized_keys文件里
    27. [root@ansible ~]# cd .ssh/
    28. [root@ansible .ssh]# ls
    29. id_rsa id_rsa.pub
    30. [root@ansible .ssh]# cat id_rsa.pub > authorized_keys
    31. [root@ansible .ssh]# chmod 600 authorized_keys #权限必须600否则不生效
    32. [root@ansible .ssh]# cat authorized_keys
    33. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDS7U4vgjCpWrMFwnWjUlrebldvPw5NNQpnyGT/1cTsyI6ryPm19J+IQ2wNn67BpYz0NKyLjq/hYlSxlQmD7xHwNM5KQirUYPgwPhhDqGuNE+UrBZ2lUkknt358YWGpEC+TUPy/MLNbnIepPpZr0y0qyXmtp7KpeXJwLeKLzZLpHnzA8Vr3A7w/jNaDnQJmKYvDvD0Q6O54CVkkSdxaYPAT1hVfX1pKz0dSNQbJpl5ZJXigQo26M+7qYXeUBxI5Guaapl6uT5sySzTBwwd9Yt49NKE/kIivClegVfHPGF4iSqfCiCd2BTJGTuCVBS2j4lhrjTLyWRO8po7BM4yImRGf root@www
    34. #将私钥文件id_rsa复制一份改名为rd_rsa_root并导出到宿主机桌面上
    35. [root@ansible .ssh]# ls
    36. authorized_keys id_rsa id_rsa.pub
    37. [root@ansible .ssh]# cp id_rsa id_rsa_root
    38. [root@ansible .ssh]# ls
    39. authorized_keys id_rsa.pub id_rsa id_rsa_root
     

    查看导入到桌面上的私钥文件

    image_1cq02gokp1etpk4048j17ig1qoh19.png-3.1kB 
    image_1cq02h05t1hne153qnp5rpdbc31m.png-37.6kB 
    image_1cq02h5dnn0g1thm1rnl1ro1104p23.png-37.9kB 
    image_1cq02hhoa17qfhscu391j9qsjq30.png-13.7kB 
    image_1cq02hp3op6c118eohc18fg15kg3d.png-27.2kB

    而后xshell显示登陆成功!

     

    用户权限策略

    在生产环境中,如果遇到禁止root用户远程登录系统,授权仅普通用户登陆系统,那么需要管理员权限执行sudo提权即可,避免root用户之间登陆

     
    1. #创建一个普通用户yunjisuan
    2. [root@ansible ~]# useradd yunjisuan
    3. [root@ansible ~]# echo "123123" | passwd --stdin yunjisuan
    4. 更改用户 yunjisuan 的密码
    5. passwd:所有的身份验证令牌已经成功更新。
    6. #以root账号授权普通用户yunjisuan所有权限并免输入密码
    7. [root@ansible ~]# sed -n '93p' /etc/sudoers
    8. yunjisuan ALL=(ALL) ALL
    9. #切换到yunjisuan用户测试提权
    10. [root@ansible ~]# su - yunjisuan
    11. [yunjisuan@ansible ~]$ sudo -l
    12. 我们信任您已经从系统管理员那里了解了日常注意事项。
    13. 总结起来无外乎这三点:
    14. #1) 尊重别人的隐私。
    15. #2) 输入前要先考虑(后果和风险)。
    16. #3) 权力越大,责任越大。
    17. [sudo] yunjisuan 的密码:
    18. 匹配 %2$s %1$s 的默认条目:
    19. !visiblepw, always_set_home, match_group_by_gid, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
    20. env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
    21. env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    22. secure_path=/sbin:/bin:/usr/sbin:/usr/bin
    23. 用户 yunjisuan 可以在 ansible 上运行以下命令:
    24. (ALL) ALL
    25. #测试提权
    26. [yunjisuan@ansible ~]$ ls /root
    27. ls: 无法打开目录/root: 权限不够
    28. [yunjisuan@ansible ~]$ sudo ls /root
    29. anaconda-ks.cfg
     

    配置xshell远程密钥登陆服务器端普通用户

     
    1. #给yunjisuan普通用户创建公钥认证。注意权限。权限过大,公钥验证会失败
    2. [root@ansible ~]# mkdir -p /home/yunjisuan/.ssh
    3. [root@ansible ~]# chmod 700 /home/yunjisuan/.ssh
    4. [root@ansible ~]# chown yunjisuan.yunjisuan /home/yunjisuan/.ssh
    5. [root@ansible ~]# cp ~/.ssh/authorized_keys /home/yunjisuan/.ssh/
    6. [root@ansible ~]# chmod 600 /home/yunjisuan/.ssh/authorized_keys
    7. [root@ansible ~]# chown yunjisuan.yunjisuan /home/yunjisuan/.ssh/authorized_keys

    然后我们xshell远程登陆普通用户到Ansible服务器端 
    xshell还是用刚才导入的那个私钥文件即可。

    image_1cq02m8ub1a397t24fh192119ab4t.png-34.4kB 
    image_1cq02mfbb1ov7qj21g6f141m1s1u5a.png-34.1kB

    然后就登陆成功了。 
    最后我们关闭Ansible管理服务器端的root账号SSH远程登录功能即可。

     
    1. #在生产环境我们一般是要禁止服务器root账号远程登录功能的(一旦关闭,密钥和密码登陆方式都不能再登陆)
    2. #如果我们想用root账号进行操作,那么远程密钥连接普通用户在切换成root账号即可
    3. yunjisuan@ansible ~]$ sudo su -
    4. [sudo] yunjisuan 的密码:
    5. 上一次登录:日 9 9 21:01:31 CST 2018 192.168.200.1pts/1
    6. [root@ansible ~]#
    7. #关闭Ansible管理服务器的root账号SSH远程登录功能
    8. [root@ansible ~]# sed -n '38p' /etc/ssh/sshd_config
    9. PermitRootLogin no
    10. #重启动sshd服务
    11. [root@ansible ~]# systemctl restart sshd
     

    配置Ansible管理服务器sudo审计日志

    Centos6.x和Centos7.x的配置方法相同,rsyslog服务是所有日志记录的服务进程

     
    1. #开启sudo日志
    2. [root@ansible ~]# echo "local2.debug /var/log/sudo.log" >> /etc/rsyslog.conf
    3. [root@ansible ~]# echo "Defaults logfile=/var/log/sudo.log" >> /etc/sudoers
    4. [root@ansible ~]# systemctl restart rsyslog
    5. #测试sudo日志记录
    6. [root@ansible ~]# exit
    7. 登出
    8. [yunjisuan@ansible ~]$ sudo su -
    9. [sudo] yunjisuan 的密码:
    10. 上一次登录:日 9 9 21:40:11 CST 2018pts/0
    11. #查看/var/log/sudo.log日志
    12. [root@ansible ~]# cat /var/log/sudo.log
    13. Sep 9 21:49:12 : yunjisuan : TTY=pts/0 ; PWD=/home/yunjisuan ; USER=root ;
    14. COMMAND=/bin/su -
     

    设置SSH免密码登陆

    为了避免Ansible下发指令时需要输入被管理主机的密码,可以通过证书签名达到SSH无密码登陆。使用ssh-keygen产生一对密钥,并通过ssh-copy-id命令来发送生成的公钥。

     
    1. [root@ansible ~]# ls ~/.ssh/
    2. authorized_keys id_rsa id_rsa.pub
    3. [root@ansible ~]# ssh-copy-id 192.168.200.184
    4. [root@ansible ~]# ssh-copy-id 192.168.200.185

    当然,我们也可以在控制端主机的hosts文件里直接写入连接方式,用户,密码也能下发指令。但是生产环境不建议这么做。因为这样明文密码容易泄露,另外如果被控制主机修改了密码,这里也需要一起更改,不便于管理。

     
  • 相关阅读:
    nohup
    wonder vscode plugins
    myhome vscode plugins
    virtural machine eth1
    单片机电子时钟的设计(期末课程设计)
    解决Eclipse中更改HTML页面后,浏览器查看页面无变化
    ASP.NET 中的 Session对象
    windows下mysql数据库导入导出
    TP5.1分表,partition分表实例,根据自增主键水平分表
    PHP操作mysql数据库分表的方法
  • 原文地址:https://www.cnblogs.com/linyaonie/p/9863205.html
Copyright © 2011-2022 走看看