我们在日常的办公中,会在自己的手机或者电脑上安装一些管理软件,依我个人来说吧~我手机上安装了QQ安全中心、淘宝安全中心及其他软件的管家等,说到底这些功能的目的就是为了检测及保护我们对应的应用服务,所以在安全及功能上大家相对比较认可的 ,同样,我们今天介绍Centos7的系统安全管家一样,需要对我们的系统登录进行保驾护航,到底是怎么个保护法呢?我们都知道linux的登陆方式通过ssh协议及crt、xshell工具进行登陆管理的,加上现在的网络安全意识又不好,很容易受到别人的攻击,所以我们就通过shell脚本对centos进行登陆的保护,不管是在本地或者通过ssh的方式进行登,只要通过无效的密码尝试登陆指定次数会将远程登陆的计算机的IP加入到centos系统下的黑名单下,即使密码正确也会无法正常登陆。这样就大大降低了centos服务的安全性,同样,我们为了更好的提高安全性,我们也可以修改默认的登陆端口,从默认的22更改其他端口指定端口2222等,废话不多说了,接下来我们就说说操作原理。

其实原理就是脚本程序读取/var/log/secure下的日志文件,然后查找关键字:Failed及IP地址,然后从这些日志中提取信息,如果提取的ip地址及标注的信息Failed达到5次的话,就会将该IP地址写入到/etc/hosts.deny 文件中,达到拒绝访问的效果。格式为:

Sshd:x.x.x.x:deny(所谓的黑名单);所以我们在配置前需要计划好,需要将允许的IP地址写入/etc/hosts.allow中:格式为:Sshd:x.x.x.x:allow;当hosts.allow文件内容和hosts.deny有冲突的时候以hosts.allow为准,所以hosts.allow的优先级高,具体操作见下:

环境介绍:

Os: Centos 7

Ip:192.168.6.101

Port:22

User: root 、gavin

我们首先通过ssh(192.168.6.188)使用无效的密码登陆,然后通过tail查看系统下的操作log信息

1
Tail –f  /var/log/secure

接下来我们就是定义脚本了

1
vim  /root/secure_ssh .sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#! /bin/bash
cat  /var/log/secure | awk  '/Failed/{print $(NF-3)}' | sort | uniq  -c| awk  '{print $2"="$1;}'  /root/black .txt
DEFINE= "5"
for  in  ` cat   /root/black .txt`
do
IP=` echo  $i | awk  -F=  '{print $1}' `
NUM=` echo  $i| awk  -F=  '{print $2}' `
if  [ $NUM -gt $DEFINE ]; then
grep  $IP  /etc/hosts .deny >  /dev/null
       if  [ $? -gt 0 ]; then
           echo  "sshd:$IP:deny"  >>  /etc/hosts .deny
       fi
     fi
done

也可以:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#! /bin/bash
cat  /var/log/secure | awk  '/Failed/{print $(NF-3)}' | sort | uniq  -c| awk  '{print $2"="$1;}'  /root/black .txt
DEFINE= "5"
for  in  ` cat  /root/black .txt`
do
IP=` echo  $i | awk  -F=  '{print $1}' `
NUM=` echo  $i| awk  -F=  '{print $2}' `
if  "$IP"  !=  "192.168.2.38"  ];  then
if  [ $NUM -gt $DEFINE ]; then
grep  $IP  /etc/hosts .deny >  /dev/null
if  [ $? -gt 0 ]; then
echo  "sshd:$IP:deny"  >>  /etc/hosts .deny
fi
fi
fi
done

注:编写脚本保存后,我们需要查看该脚本文件的执行权限:

1
ls  -l

如果没有root的执行权限我们chomod a+x即可

编写脚本好后,我们就可以设置通过计划任务来执行该脚本文件了。

1
2
3
Crontal –e 打开计划任务列表:
添加以下内容
* * * * *   /root/secure_ssh .sh 每一分钟执行一次

保存后退出:然后我们手动执行脚本看脚本是否运行正常;如果没有报错就是正常

1
. /secure_ssh .sh

接下来我们查看按照脚本的规定叫/var/log/secure下的错误信息及IP记录到了blcak.txt文件下了

1
Cat  /root/black .txt

192.168.6.188=6

=6为错误的验证次数,用错误的密码验证登陆了6次

然后我们再查看hosts.deny文件,通过脚本定义的,会将192.168.6.188自动添加到该文件下;我们发现192.168.6.188已经自动添加到了黑名单中,这样就无法登陆了;

我们使用正确的密码在192.168.6.188上登陆看看是否会验证成功呢

我们都是无法正常链接到192.168.6.101这个机器,连输入密码的机会都没有了。

我们通过log查看到服务器已拒绝192.168.6.188进行连接了。

那如果我们需要192.168.6.188进行连接怎么做呢?也许有人想到将192.168.6.188从hosts.deny的黑名单删除即可,其实呢,删除没用,当脚本执行后,又会通过log的信息(log信息中有失败的错误记录)将192.168.6.188自动添加到/etc/hosts.deny的黑名单中,所以这样是不行的。那怎么办呢?我们只需要将192.168.6.188添加到/etc/hosts.allow的白名单中即可,都无需删除黑名单中的记录。因为当hosts.deny和hosts.allow有冲突的时候系统会以hosts.allow为准,这样hosts.allow的优先级高,所以就会登陆了。接下来我们试试

1
Vim  /etc/hosts .allow 打开hosts.allow文件添加允许连接的ip

注:如果允许某个ip进行连接格式为:

Sshd:X.X.X.X:allow

如果允许ip个子网连接的格式为:

Sshd:x.x.x.*:allow

保存后,我们确认hosts.deny和hosts.allow的文件中都有192.168.6.188的格式信息

我们上面说过,当两个文件的内容是有冲突的时候,是以hosts.allow为准,所以192.168.6.188这个主机是可以连接的

连接后,我们可以查看log

最后我们再说一下,如果需要使用系统自带的PAM进行错误密码的限制怎么做呢?

我们只需要修改登陆验证的配置文件即可

1
2
Vim  /etc/pam .d /login
Vim  /etc/pam .d /sshd

even_deny_root    也限制root用户;

deny           设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户  unlock_time        设定普通用户锁定后,多少时间后解锁,单位是秒;

root_unlock_time      设定root用户锁定后,多少时间后解锁,单位是秒;

此处使用的是 pam_tally2 模块,如果不支持 pam_tally2 可以使用 pam_tally 模块。另外,不同的pam版本,设置可能有所不同,具体使用方法,可以参照相关模块的使用规则。

添加参数

1
auth      required  pam_tally2.so   deny=3 lock_time=300 even_deny_root root_unlock_time=10

当用户输入指定次数错误的密码登陆会被锁定,

1
Pam_tally2 –user 查看锁定的账户信息

解锁账户

1
Pam_tally2 –r –u  users

我们通过以上方式做完配置后,完全可以减少暴力破解的可能性,那为了更好的降低攻击性,我们也可以修改默认的登陆端口,我们都知道linux通过ssh登陆的默认端口是22,我们也可以22端口更改为其他未使用的端口

1
Vim  /etc/ssh/sshd_config  取消port 22的注释,然后将22端口修改为其他端口

最后呢,我们再说说,Centos下设置使用SSH通过密钥登陆。

我们一般使用的工具比如xshell,crt,putty等来进行linux的登陆及管理;今天呢?我们主要介绍使用xshell工具进行介绍,因为我个人比较喜欢用xshell,其实所有工具都互通的

我们使用SSL客户端工具来生成密钥对

单击工具---新建用户密钥生成向导

密码类型:RSA 密码长度:3024

生成3072位RSA公钥文件

定义密钥名称及密码;密码可以忽略

保存公钥文件为文件

xshell工具会自动导入公钥文件,我们右击生成的公钥文件----属性

单击公钥---复制内容

或者打开本地保存的公钥文件,复制内容

登陆Linux主机系统配置,设置使用密钥来登陆

我们需要在服务器当前登录的用户目录下创建.ssh文件夹

1
2
3
Mkdir . ssh / 创建一个隐藏文件夹
Cd . ssh / 进入该隐藏文件夹
Vim authorized_keys 创建authorized_keys文件,该文件名一定要写正确

然后将id_rsa_3072.pub里面的代码复制粘贴即可

为了安全起见我们更改下权限!

1
2
#chmod 700 ~/.ssh
#chmod 644 ~/.ssh/authorized_keys

1
最后建议修改 ssh 的配置文件:修改 /etc/ssh/sshd_config 文件,设置禁止密码验证登录登陆系统 vim  /etc/ssh/ssh_config
1
#PasswordAuthentication yes 修改为 PasswordAuthentication no

因为是在本地的xshell进行配置的,所以我们无需要导入公钥文件,我们直接使用xshell进行登陆

因为我们没有密码,所以直接登陆即可,成功登陆后查看log文件信息

1
Tail -f  /var/log/secure

如果需要在其他机器上登陆的话,我们需要导出该公钥文件,然后再其他工具上导入即可

单击工具---用户密钥管理者

然后根据需求选择导入和导出即可

本文转自 高文龙 51CTO博客,原文链接:http://blog.51cto.com/gaowenlong/1683645,如需转载请自行联系原作者

Centos7 SSH安全防护---系统安全管家相关推荐

  1. 在CentOS7上使用Fail2ban+Firewalld对SSH进行防护

    Install Fail2ban On Centos 7 To Protect SSH Via Firewalld 在CentOS7上使用Fail2ban+Firewalld对SSH进行防护 Tabl ...

  2. 将centos7打造成桌面系统centos

    2019独角兽企业重金招聘Python工程师标准>>> 前言 以下所有操作默认在root权限下执行,桌面环境是kde,使用gnome的也可以参考一下. 我收集的以下要用到的一些安装包 ...

  3. 将centos7打造成桌面系统

    感谢四海清一博主的整理,原文链接:https://www.cnblogs.com/fang8206/p/4939781.html 将centos7打造成桌面系统 前言 以下所有操作默认在root权限下 ...

  4. 【总结】教你怎么将centos7打造成桌面系统

    前言 以下所有操作默认在root权限下执行,桌面环境是kde,使用gnome的也可以参考一下. 我收集的以下要用到的一些安装包,这是百度网盘的地址 http://pan.baidu.com/s/1sj ...

  5. IPS(入侵防护系统)与WAF(Web应用防护系统)的区别

    IPS(入侵防护系统)和WAF(Web应用防护系统)两款产品有不同的使用场景,随着Web应用发展带来的复杂度,对安全性要求也日趋增高,Waf的出现是顺应了市场和技术的需要. Web应用防护无疑是一个热 ...

  6. 亚信安全服务器深度安全防护系统中标“世界最长”的城轨网络

    近日,上海申通地铁集团有限公司(以下简称"申通集团")宣布,亚信安全服务器深度安全防护系统(Deep Security)成功中标防病毒和威胁检测项目.亚信安全服务器深度安全防护系统 ...

  7. Linux无法联网怎么办?解析VMware上的CentOS7(Linux)系统无法联网的解决办法

    Linux无法联网怎么办?解析VMware上的CentOS7(Linux)系统无法联网的解决办法! 许多人在VMware上安装了Linux系统之后,都会遇到无法联网的问题,作者也是遇到了这个问题,在进 ...

  8. 计算机机房综合防护,计算机机房综合防护系统技术方案

    [技术实现步骤摘要] 本技术方案涉及计算机机房防护系统 ,特别涉及一种计算机机房综合防护系统. 技术介绍 随着社会数字信息化进程的加快,计算机中心机房的设备和规模也日趋扩大.机房环境和设备出现故障会危 ...

  9. 虚拟化安全防护系统部署在安全服务器上,虚拟化安全防护-安天 智者安天下

    获取安天智甲虚拟化安全防护系统 产品销售咨询:400-840-9234 邮箱:support@antiy.cn 安装安天智甲虚拟化安全防护系统管理中心 方法一:在VMware vSphere Web ...

最新文章

  1. LeetCode实战:最长有效括号
  2. wxWidgets随笔(10)-fedora环境配置
  3. PHP面向对象2之变量、方法
  4. 聊聊我是如何在面试别人Spring事务时“套路”对方的
  5. Java 中 == 和equals()方法的不同点
  6. crontab实现每秒执行
  7. php 会员到期提醒_会员管理系统花了50万都没做成,用这五个功能轻松实现
  8. 在Vue.js中使用Mixin
  9. 超强功能file_put_contents()函数(集成了fopen、fwrite、fclose)
  10. python组态软件开源_freescada开源wpf组态软件
  11. 阿里云服务器申请免费ssl证书
  12. docker build报错解决:error creating overlay mount to .../overlay
  13. web前端二维码打印模板编辑
  14. 微信公众号最佳实践 ( 10.3)获取微信版本及手机系统
  15. 第一个人10岁,第二个比第一个大2岁,以此类推,递归求第8个人的年龄
  16. 软件项目规模度量与实际应用
  17. 【68期分享】7款红色大气PPT模板免费下载
  18. JavaScrip笔记心得(持续更新)
  19. Setup time和Holdon time
  20. 1年时间强势进阶,百度财报公布好看视频成长秘密

热门文章

  1. 走进Github,从IDEA使用Git开始(篇末附带Eclipse使用Git教程)
  2. 作为一名专科Java程序员进入阿里巴巴,很惭愧
  3. CSS ===> 背景图片自适应宽高
  4. Xray的安装与使用
  5. 体验1Gbps的上下行对等网络
  6. 做程序员已经有白头发的进来聊聊
  7. 停车还能360全方位影像_以爱之名为你护航,20款奔驰GLE350 GLS450改装原厂360全景倒车影像...
  8. DDR3 AXI4接口读写回环测试
  9. 光盘里的html播放不了,笔记本电脑放光盘的地方打不开怎么办?
  10. 计算机组装与维修技术课本,计算机组装与维修技术教程——21世纪高等学校培养应用型人才教材·计算机系列...