• 生产环境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文件里直接写入连接方式,用户,密码也能下发指令。但是生产环境不建议这么做。因为这样明文密码容易泄露,另外如果被控制主机修改了密码,这里也需要一起更改,不便于管理。

  • 相关阅读:
    Path Sum II
    Convert Sorted Array to Binary Search Tree
    Construct Binary Tree from Inorder and Postorder Traversal
    Construct Binary Tree from Preorder and Inorder Traversal
    Maximum Depth of Binary Tree
    Binary Tree Zigzag Level Order Traversal
    Binary Tree Level Order Traversal
    Same Tree
    Validate Binary Search Tree
    Binary Tree Inorder Traversal
  • 原文地址:https://www.cnblogs.com/A6666/p/9995271.html
Copyright © 2020-2023  润新知