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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 本文专门用于记录服务器运行过程中遇到的 安全问题及应对之法。

③ 设置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


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


参考文献:



相关文章
|
安全 Java 关系型数据库
💖10分钟阿里云搭建个人网站(保姆级新手向)💖
我通常都会说自己搭建一个网站,利用阿里云/腾讯云/华为云/七牛云等等各种云服务器来快速搭建一个属于自己的装x小网站,虽然不是很牛x,但是对于说找实习、做毕业设计加分,这种纯粹是绰绰有余,别人会觉得你很有动手能力,话不多说,马上开始,给我十分钟,带你学会一个装x的小知识点。
1824 0
💖10分钟阿里云搭建个人网站(保姆级新手向)💖
|
6月前
|
JavaScript 前端开发 测试技术
"0元搞定!手把手教你建网站,简单得就像泡桶方便面一样,上线个人网站轻而易举!"
没有服务器和公网IP,想要其他人访问自己做好的网站,该怎么办?今天教大家使用这款简单免费的内网穿透小工具——ngrok,有了它轻松让别人访问你的项目~
|
6月前
|
存储 运维 安全
年终总结:官网搭建知多少
官网搭建的核心工作可以分为以下5个部分,找到每一步的最佳解决方案,专属企业官网就近在眼前啦!
127 1
|
前端开发 JavaScript Java
基于Javaweb 开发的个人博客系统心灵小阁
基于Javaweb 开发的个人博客系统心灵小阁
282 0
基于Javaweb 开发的个人博客系统心灵小阁
|
缓存 JavaScript 前端开发
手把手教你从0开始搭建个人博客,东半球最详细的保姆级博客搭建部署教程 | 程序员人手必备个人博客网站
手把手教你从0开始搭建个人博客,东半球最详细的保姆级博客搭建部署教程 | 程序员人手必备个人博客网站
手把手教你从0开始搭建个人博客,东半球最详细的保姆级博客搭建部署教程 | 程序员人手必备个人博客网站
|
域名解析 运维
阿粉带你从零搭建一个属于自己的个人网站(上)
很多小伙伴私信我,问我怎么弄一个个人博客系统,之前其实也聊过,不过没关系,今天我们再来详细的说一说。 对于已经上线的项目,我们知道后期的迭代主要集中在线上发布这个环节,那么对于一个从零开发完的项目,到上线要经过哪些流程呢?
阿粉带你从零搭建一个属于自己的个人网站(上)
|
安全 Linux 网络安全
个人博客刚部署,隔壁开发还没开始馋,就有人来撬门(上)
本文专门用于记录服务器运行过程中遇到的 安全问题及应对之法。
142 0
|
前端开发 开发工具 git
一看就会的保姆级教程,10分钟搭建个人博客(一)
网上教程千千万,但总归都是零零散散的,没人会给你讲解得清清楚楚,所以我这里就手把手来讲解一下如何从零搭建
223 0
一看就会的保姆级教程,10分钟搭建个人博客(一)