个人博客刚部署,隔壁开发还没开始馋,就有人来撬门(下)

简介: 本文专门用于记录服务器运行过程中遇到的 安全问题及应对之法。

③ 设置SSH秘钥登录


如果你用过 Git的SSH免密登录,那这个对你来说就很简单了,SSH的连接 原理及过程如下:


  • A → B 发送连接请求;
  • B 收到请求,将 自己的公钥 发给 → A;
  • A 收到 公钥,用 公钥加密B的登录密码,生成 加密密文 发给 → B;
  • B 收到 加密密文,用 自己的私钥解密信息,然后与B的登录密码做比较,正确 → 允许A登录;


然后此处用到的是 SSH免密登录,原理及过程如下:


  • A → B 发送连接请求,并带上 自己的公钥
  • B 收到 A的公钥,检查机器上的 授权列表是否包含A的公钥,存在,
    生成一个 随机数,用 公钥加密,生成 加密密文 发送 → A;
  • A 收到 加密密文,用 私钥解密,得到的 解密结果 发送 → B
  • B 收到 A发来的结果,与之前生成的 随机数 作比较,一致 → 允许A连接;


了解清楚原理与过程,就很easy了,云服务器先设置下 允许秘钥认证,打开 /etc/ssh/sshd_config,找到如下内容,去掉前面的 #


# 允许密钥认证
PubkeyAuthentication yes 
# 默认公钥存放位置
AuthorizedKeysFile .ssh/authorized_keys 


保存后,重启sshd服务:


# 重启ssh服务
systemctl restart sshd
# 附:其他ssh服务相关命令
rpm -qa|grep -E "openssh"   # 查看是否安装了全部的ssh服务
systemctl status sshd   # 查看ssh服务状态
systemctl start sshd    # 启动ssh服务
systemctl stop sshd     # 停止ssh服务


接着 本地PCGit Bash 命令行生成 一对密钥


# 创建.ssh目录并进入
mkdir ~/.ssh
cd ~/.ssh
# 生成密钥,回车两次分别跳过 (密钥保存位置、认证密码)
ssh-keygen -t rsa -b 2048


接着可以在 ~/.ssh 目录下看到生成的 公钥(id_rsa.pub)私钥(id_rsa) 。 再接着通过 ssh-copy-id 命令把公钥复制到远程主机 对应账户下authorized_keys 文件上.


ssh-copy-id julia@xxx.xxx.xxx.xxx -p 1024


网络异常,图片无法展示
|


配置成功后,此时使用ssh即可直接登录:


ssh julia@xxx.xxx.xxx.xxx -p 1024


来到.ssh路径下可以看到 authorized_keys 文件,内容也是本地PC的公钥。


网络异常,图片无法展示
|


如果删除信任公钥,删除文件里对应内容即可,秘钥测试登录成功后,可以禁用密码登录,提高服务器的安全性,依然是修改 /etc/ssh/sshd_config


PasswordAuthentication no


重启下sshd服务,然后就不能使用密码登录了~


附:WinSCP SSH 秘钥登录服务器配置,点 高级,然后选择SSH → 验证 → 密钥文件



网络异常,图片无法展示
|


然后选中自己的私钥,会提示转换格式,确定,保存就好


网络异常,图片无法展示
|


网络异常,图片无法展示
|


接着,直接登录,弹出下述对话框,点是,后续登录就不用输入密码了。


网络异常,图片无法展示
|


④ 安装DenyHosts


描述:(官网:denyhosts.sourceforge.net/)


基于Python编写,用于防止SSH暴力破解的开源软件,通过对SSH的日志文件

/var/log/secure 进行分析,查找所有尝试登录,过滤出成功与失败的尝试。

记录所有尝试登录失败的用户名与主机,如果超过阈值,则记录主机。


保持对每个登录失败用户的跟踪,保持对每个可疑的登录进行跟踪(虽登录成功,

但存在很多次失败记录),将可疑地址的主机加入到 etc/hosts.deny 文件中。


下载安装


# 下载
wget http://jaist.dl.sourceforge.net/project/denyhosts/denyhosts/2.6/DenyHosts-2.6.tar.gz
# 解压
tar -zxvf DenyHosts-2.6.tar.gz -C /usr/local/bin
# 进入解压文件夹
cd /usr/local/bin/DenyHosts-2.6
# 安装Python2
yum install python2 -y
# 编译安装setup.py
python2 setup.py install
cd /usr/share/denyhosts/    
# 配置文件
cp denyhosts.cfg-dist denyhosts.cfg    
# 启动文件
cp daemon-control-dist daemon-control
# 添加root权限
chown root daemon-control
# 修改为可执行文件
chmod 700 daemon-control 
# 接着就可以直接启动
./daemon-control start
# 注:如启动报错/usr/bin/env: python: No such file or directory
# 可通过下述命令设置系统默认的Python版本
alternatives --set python /usr/bin/python2
# 还可以设置为开机自启动
cd /etc/rc.d/init.d/
ln -s /usr/share/denyhosts/daemon-control denyhosts
chkconfig --add denyhosts
chkconfig denyhosts on 
chkconfig --list denyhosts


部分配置文件内容说明 (vim /usr/share/denyhosts/denyhosts.cfg):


Tips:w代表周,d代表天,h代表小时,s代表秒,m代表分钟


配置 描述
SECURE_LOG = /var/log/secure ssh日志文件
HOSTS_DENY = /etc/hosts.deny 禁止访问主机IP文件
PURGE_DENY = 4w 过多久后清除已阻止IP
BLOCK_SERVICE = sshd denyhosts要阻止的服务名
DENY_THRESHOLD_INVALID = 3 允许无效用户登录失败的次数
DENY_THRESHOLD_VALID = 10 允许普通用户登录失败的次数
DENY_THRESHOLD_ROOT = 6 允许ROOT用户登录失败的次数
PURGE_THRESHOLD = 某个IP最多被解封几次,永久封禁


以后查看host.deny文件就可以找到攻击ip的记录了:


cat /etc/hosts.deny
cat /etc/hosts.deny | wc -l


立马就有981条记录了:


网络异常,图片无法展示
|


一个建议:添加信任IP,把自己常用的IP加到 /etc/hosts.allow 文件中


sshd: xxx.xxx.*.*: allow


以防自己哪天多次输错密码,访问不了服务器~


参考文献:



相关文章
|
6月前
|
JavaScript Java 程序员
闲话目前游戏服务器的开发
闲话目前游戏服务器的开发
|
4月前
|
存储 运维 安全
年终总结:官网搭建知多少
官网搭建的核心工作可以分为以下5个部分,找到每一步的最佳解决方案,专属企业官网就近在眼前啦!
|
10月前
|
存储 分布式计算 NoSQL
【探花交友】day01—项目介绍与环境搭建(二)
【探花交友】day01—项目介绍与环境搭建(二)
92 0
|
10月前
|
Web App开发 Dubbo NoSQL
【探花交友】day01—项目介绍与环境搭建(三)
【探花交友】day01—项目介绍与环境搭建(三)
169 0
|
10月前
|
云安全 安全 Java
【探花交友】day01—项目介绍与环境搭建(五)
【探花交友】day01—项目介绍与环境搭建(五)
106 0
|
10月前
|
搜索推荐 算法 大数据
【探花交友】day01—项目介绍与环境搭建(一)
【探花交友】day01—项目介绍与环境搭建
115 0
|
12月前
利用docsify搭建个人博客并免费上线,太好用了,必须分享一下!
利用docsify搭建个人博客并免费上线,太好用了,必须分享一下!
|
前端开发 JavaScript Java
基于Javaweb 开发的个人博客系统心灵小阁
基于Javaweb 开发的个人博客系统心灵小阁
241 0
基于Javaweb 开发的个人博客系统心灵小阁
|
缓存 JavaScript 前端开发
手把手教你从0开始搭建个人博客,东半球最详细的保姆级博客搭建部署教程 | 程序员人手必备个人博客网站
手把手教你从0开始搭建个人博客,东半球最详细的保姆级博客搭建部署教程 | 程序员人手必备个人博客网站
手把手教你从0开始搭建个人博客,东半球最详细的保姆级博客搭建部署教程 | 程序员人手必备个人博客网站
|
JavaScript 算法 应用服务中间件
搭建个人博客用到了这么些技术~ | 项目复盘
观前提醒 只需几分钟,你就可以 搭建一个 超级酷炫的个人博客! 😋 只要一行命令就可以实现博客的自动部署和邮件提醒 😝 文章有点长~ 建议收藏慢慢看😄 博客简介 博客采用 Hexo 搭建,使用了 Butterfly 主题,结合 Gitee 仓库, Aliyun 服务器(运用到 Nginx , docker , node.js 等技术) HEXO 简介 HEXO是一个 静态网页 博客框架 , HEXO基于 Node.js, 采用 markdown 解析文章 具体可以通过该链接了解: HEXO官方文档 安装 需要先安装 Node.js 和 Git ,为什么要安装这两个呢,博主使用后的
514 0