生产环境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
 

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

 
 
 
 

而后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还是用刚才导入的那个私钥文件即可。

 

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

生产环境ssh登陆策略的更多相关文章

  1. centos7生产环境下openssh升级

    由于生产环境ssh版本太低,导致使用安全软件扫描时提示系统处于异常不安全的状态,主要原因是ssh漏洞.推荐通过升级ssh版本修复漏洞 因为是生产环境,所以有很多问题需要注意.为了保险起见,在生产环境下 ...

  2. asp.net生产环境和开发环境的错误日志包装策略

    对于错误日志的输出,我们借助web.config的两个标志位: <!--全局包装异常处理页面,只有在PageError和Application_Error做清除错误操作才可不跳转--> & ...

  3. SUSE12Sp3安装配置.net core 生产环境(1)-IP,DNS,网关,SSH,GIT

    1.新增用户 sudo useradd 用户名 sudo passwd 用户名 这个时候会提示你输入密码,输入两次密码即可 2.静态 IP 设置 1.设置 IP 地址 sudo vi /etc/sys ...

  4. .NET持续集成与自动化部署之路第三篇——测试环境到生产环境的一键部署策略(Windows)

    Jenkins测试环境到生产环境的一键部署策略(Windows) 一.前言     前面我们已经初步实现了开发集成环境.测试环境的持续集成(自动化构建.自动化测试.自动化部署).但生产环境自动化部署迟 ...

  5. WebSocket :Nginx+WebSocket内部路由策略推送服务器的实现(附可生产环境应用代码)

    1.项目背景 前几天写了一篇WebSocket推送的博客:WebSocket :用WebSocket实现推送你必须考虑的几个问题 支持的连接数大概几千个,具体数量依赖于tomcat能并发的线程数,但很 ...

  6. linux iptables常用命令之配置生产环境iptables及优化

    在了解iptables的详细原理之前,我们先来看下如何使用iptables,以终为始,有可能会让你对iptables了解更深 所以接下来我们以配置一个生产环境下的iptables为例来讲讲它的常用命令 ...

  7. Greenplum 数据库安装部署(生产环境)

    Greenplum 数据库安装部署(生产环境) 硬件配置: 16 台 IBM X3650, 节点配置:CPU 2 * 8core,内存 128GB,硬盘 16 * 900GB,万兆网卡. 万兆交换机. ...

  8. 【Odoo 8开发教程】第二章:Odoo生产环境部署设置

    转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/10792977.html 一:dbfilter 数据库访问规则设置 一个odoo实例可以连接到不同的数据库实例中 ...

  9. [转]跳板机Jumpserve的生产环境配置

    6.跳板机Jumpserver]   Jumpserver是国内一款开源的轻便的跳板机系统,他们的官网:http://www.jumpserver.org/ 使用这款软件意在提高公司内部登录生产环境服 ...

随机推荐

  1. java窗体

    听完老师所讲的窗体,然后自己就去尝试写代码,结果是窗体出现了,但是就是不能关闭,求解!! package Swing.src.swring; import java.awt.Color;import ...

  2. How to Make a Computer Operating System

    How to Make a Computer Operating System 如何制作一个操作系统(翻译版) 原文地址:Github:How to Make a Computer Operating ...

  3. mongodb副本集基于centos7部署

    安装mongodb,基于端口的安装三个节点 下载安装MongoDB安装包 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel ...

  4. kali网络配置

    touch 1.txt#创建一个文件 配置网卡 auto eth0iface eth0 inet staticaddress 172.16.30.102#要设置的主机IP地址netmask 255.2 ...

  5. Bigger-Mai 养成计划,Python基础巩固四

    一.装饰器:定义:本质是函数,(装饰其他函数)就是为其他函数添加附加功能.原则:1.不能修改被装饰的函数的源代码 2.不能修改被装饰函数的调用方式实现装饰器的知识储备:1.函数即‘变量’2.高阶函数 ...

  6. webdriver之select、alert、prompt、confirm

    select_by_index()  :通过索引定位select_by_value()  :通过value值定位select_by_visible_text() :通过文本值定位deselect_al ...

  7. 阿里云ECS相关

    RAM授权: https://help.aliyun.com/document_detail/28639.html 安全组: https://jingyan.baidu.com/article/afd ...

  8. 解决 Cannot uninstall 'pyparsing' 问题

    参考 pyparsing 无法卸载导致安装 matplotlib 出错 解决 Cannot uninstall 'pyparsing' 问题 在安装 pydot 时遇到依赖 pyparsing 无法更 ...

  9. Zynq PS和PL间的连接

    跨越PS和PL的信号 AXI总线.EMIO.其他(看门狗.重启信号.中断信号.DMA接口信号) AXI标准 AXI(高级可扩展接口)是ARM AMBA的一部分.AMBA总线主要用于片上系统.AXI总线 ...

  10. selenium python 中浏览器操作

    1.启用浏览器 browser = webdriver.Chrome()               谷歌浏览器 browser = webdriver.Firefox()              ...