Centos7SSH安全保护-系统安全管理器
在日常办公中,我们会在手机或电脑上安装一些管理软件。我个人在手机上安装了QQ安全中心、淘宝安全中心等软件管家。归根结底,这些功能的目的是为了检测和保护我们相应的应用服务,所以在安全性和功能上我们是相对认可的。同样,今天我们介绍Centos7的系统安全管家,需要保护我们的系统登录。是什么样的保护法?我们都知道linux的登录方式是通过ssh协议、crt和xshell工具来管理的。另外,现在的网络安全意识不好,很容易被别人***了。因此,我们通过shell脚本来保护centos。无论我们是本地登录还是通过ssh登录,只要通过无效密码尝试登录达到指定次数,远程登录的电脑的IP就会被添加到centos系统下的黑名单中。即使密码正确,也无法正常登录。这大大降低了centos服务的安全性。同样,为了更好地提高安全性,我们还可以修改默认登录端口,将其他端口从默认的22改为指定端口222,等等。废话不多说,先说 *** 作原理。
其实原理就是脚本程序读取/var/log/secure下的日志文件,然后查找关键字:Failed和ip地址,然后从这些日志中提取信息。如果提取的IP地址和标记的信息五次失败,IP地址将被写入/etc/hosts.deny文件,从而拒绝访问。格式是:
sshd:x.x.x:deny(所谓的黑名单);所以我们需要在配置之前做好规划,需要将允许的IP地址写入/etc/hosts.allow:格式为:sshd:x.x.x:allow;当hosts.allow文件和hosts.deny的内容有冲突时,以hosts.allow为准,所以hosts.allow的优先级高。请参见以下内容:
环境介绍:
*** 作系统:Centos7
Ip:192.168.6.101
端口:22
用户:root、gavin
首先我们用无效密码通过ssh(192.168.6.188)登录,然后通过tail查看系统下的 *** 作日志信息。
Tail –f /var/log/secure接下来,我们将定义脚本。
vim /root/secure_ssh.sh #! /bin/bash cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /root/black.txt DEFINE="5" for i 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或:
注意:脚本编写并保存后,我们需要检查脚本文件的执行权限:
ls -l如果我们没有root的执行权限,可以CHOmodA+X。
脚本写好之后,我们可以通过调度任务来设置要执行的脚本文件。
Crontal –e 打开计划任务列表: 添加以下内容 * * * * * /root/secure_ssh.sh 每一分钟执行一次保存并退出:然后我们手动执行脚本,看是否正常运行;如果没有错误,是正常的。
./secure_ssh.sh接下来,我们将根据脚本检查名为/var/log/secure的错误消息,IP记录记录在blcak.txt文件中。
Cat /root/black.txt192.168.6.188=6
=6为错误认证次数,用错误密码验证登录6次。
然后我们检查hosts.deny文件。如果是脚本定义的,192.168.6.188会自动添加到这个文件中;我们发现192.168.6.188已经自动加入黑名单,无法登录;
我们用正确的密码登录192.168.6.188看看是否会验证成功。
我们无法正常链接到192.168.6.101的机器,连输入密码的机会都没有。
我们可以从日志中看到,服务器已经拒绝连接到192.168.6.188。
那么如果我们需要192.168.6.188来连接呢?可能有人想到把192.168.6.188从hosts.deny的黑名单里删除,其实删除也没用。脚本执行时,会通过日志信息自动将192.168.6.188添加到/etc/hosts.deny的黑名单中(日志信息中有失败的错误记录),这样是不行的。那我该怎么办?我们只需要将192.168.6.188添加到/etc/hosts.allow的白名单中,不需要删除黑名单中的记录。因为当hosts.deny和hosts.allow发生冲突时,系统会以hosts.allow为标准,这样hosts.allow的优先级高,所以会登录。接下来我们来试试。
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是可以连接的。
连接后,我们可以查看日志。
最后,再来说说。如果需要使用系统自带的PAM来限制错误密码,应该怎么做?
我们只需要修改登录验证的配置文件。
Vim /etc/pam.d/login Vim /etc/pam.d/sshdEven_deny_root也限制root用户;
Deny设置普通用户和根用户连续错误登录的最大次数。如果超过最大数量,用户将被锁定。unlock_time设置普通用户解锁的时间。单位是秒。
Root_unlock_time设置Root用户被锁定和解锁的时间。单位是秒;
这里使用的是Pam_tally2模块。如果不支持pam_tally2,可以使用PAM_tally2模块。此外,不同的pam版本可能有不同的设置。具体使用方法请参考相关模块的使用规则。
添加参数
auth required pam_tally2.so deny=3 lock_time=300 even_deny_root root_unlock_time=10当用户输入错误密码达到指定次数时,登录将被锁定,
Pam_tally2 –user 查看锁定的账户信息解锁帐户
Pam_tally2 –r –u users我们按照上面的方式完成配置后,完全可以降低暴力破解的可能性。为了更好的减少***,我们还可以修改默认的登录端口。我们都知道linux通过ssh登录的默认端口是22,我们也可以把端口22改成其他不用的端口。
Vim /etc/ssh/sshd_config 取消port 22的注释,然后将22端口修改为其他端口最后,假设Centos设置为使用SSH通过key登录。
我们一般使用xshell、crt、putty等工具。登录并管理linux今天呢?我们主要介绍xshell工具的使用,因为我个人比较喜欢用xshell,其实所有工具都是互通的。
我们使用SSL客户端工具来生成密钥对。
单击工具-新用户密钥生成向导。
密码类型:RSA密码长度:3024
生成3072位RSA公钥文件
定义密钥名和密码;密码可以忽略。
将公钥文件另存为文件
xshell工具将自动导入公钥文件,我们将右键单击生成的公钥文件-properties。
点击公钥-复制内容。
或者打开本地保存的公钥文件并复制内容。
登录Linux主机系统配置,设置登录键。
我们需要创造一个。服务器当前登录的用户目录中的ssh文件夹。
Mkdir .ssh/ 创建一个隐藏文件夹 Cd .ssh/ 进入该隐藏文件夹 Vim authorized_keys 创建authorized_keys文件,该文件名一定要写正确然后将代码复制粘贴到ID_RSA_3072.pub中。
为了安全起见,让我们更改权限!
#chmod 700 ~/.ssh #chmod 644 ~/.ssh/authorized_keys 最后建议修改ssh的配置文件:修改/etc/ssh/sshd_config文件,设置禁止密码验证登录登陆系统 vim /etc/ssh/ssh_config #PasswordAuthentication yes 修改为 PasswordAuthentication no因为它是在本地xshell中配置的,所以我们不需要导入公钥文件。我们使用xshell直接登录。
因为我们没有密码,所以可以直接登录,登录成功后查看日志文件信息。
Tail -f /var/log/secure如果需要在其他机器上登录,我们需要导出公钥文件,然后在其他工具上导入。
单击工具-用户密钥管理器。
然后根据自己的需求选择进出口。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)