denyhost简介:
DenyHosts是一个用Python编写的脚本程序,用来分析ssh登录日志信息,以确定哪些主机试图侵入我们的服务器。它还可以监控指定的用户帐户。DenyHost通常将用户账号分为三类:合法用户、root用户和非法用户。它会将ssh连接中使用的帐户信息与当前系统帐户进行比较,并将它们分为合法或非法用户以及根用户。如果用户名在系统中不存在,将被归类为非法用户。这样可以更细致地记录试图闯入系统的远程主机,并根据设置的密码尝试频率跟踪每个远程主机。此外,一旦发现远程主机有复制***服务器的行为,会将该主机的IP地址添加到/etc/hosts.deny文件中,以拒绝远程主机使用相应IP的登录,从而保护当前服务器不被***入侵。
拒绝主机的适用场景:
Linux *** 作系统或运行sshd服务的服务器。
SSH服务的安全配置:
启用sshd配置文件中的以下参数并调整参数值,(测试仪的IP地址为172.16.100.2)。
1.禁用root登录,PermitRootLogin选项并将其参数值更改为no。
# vim /etc/ssh/sshd_config2.禁用密码登录,并使用公钥登录到服务器。
3.更改ssh服务监听的端口,默认适用于22,调整为其他不使用的端口号。
重启ssh服务,测试登录效果;
xshell:\>;ssh172.16.100.2
不再允许默认的22端口连接主机。如果9922端口连接适用,效果如下:
选择接受&保存后,出现下图:
从截图中可以看到,我们登录方式中应用密码的方式变成了灰色,即输入密码无法登录。这时候,如果我们想用公钥登录这个服务器,当然,即使我们有公钥,也会默认禁止,因为我们是用root登录的。
使用公钥连接到该服务器有两种应用场景。一种是Linux客户端服务器使用ssh公钥连接,另一种是使用xshell生成的用户公钥登录windows系统。两种方法都生成公钥后,我们需要将公钥导入到我们要连接的服务器中,这样就不需要密码就可以连接到客户端主机上的服务器。
注意,需要生成公钥的是客户端主机,也就是我们使用的主机,然后将其导入到。服务器端对应账号的ssh目录。另外,需要生成客户端的公钥然后导入到服务器的authorized_keys文件中,再调整禁止root登录服务器等选项,否则公钥文件的导入会比较麻烦。
场景1:Linux客户端主机连接到服务器:
1.首先,在Linux客户机主机上生成它的公钥(本例中使用的客户机主机IP是172.16.100.3)
# ssh-keygen -t rsa -P ''截图中的Id_rsa.pub是生成的公钥文件。
2.将此公钥文件导入服务器(172.16.100.2)
# ssh-copy-id -i /root/.ssh/id_rsa.pub 172.16.100.2在服务器端检查导入的公钥信息(172.16.100.2):
其中authorized_keys是生成的保存公钥信息的文件,我们导入的公钥信息就保存在这个文件中。您可以使用cat命令查看其内容:
您可以看到,在这一行的末尾是相应的主机和所使用的连接帐户信息。
在客户端172.16.100.3主机上连接172.16.100.2服务器:
截图中可以看到,在172.16.100.3主机上直接连接172.16.100.2服务器成功。
场景二:在Windows系统中使用Xshell连接服务器:
1.生成公钥并按如下方式 *** 作:
您可以选择任何加密类型。截图中使用了RSA。
后面的就选下一个吧。
在单击Finish之前,选择将公钥保存为一个文件,并将其放在系统的一个目录中,以便以后导入到服务器。
2.将这个公钥文件导入到服务器中,并执行以下命令:
#catid_rsa_1024.pub>>/root/。ssh/授权密钥
现在,客户机的公钥已经导入到服务器,测试使用公钥连接服务器的方法:
注意,此时服务器端的ssh配置是修改ssh连接的端口,禁止密码登录,但是root登录还没有被禁止,所以截图中登录的用户还是root,因为之前做的公钥是注入到了中的authorized_keys文件中。root帐户的ssh目录。如果要以普通用户的身份登录,需要将生成的公钥信息注入到相应用户主目录下的authorized_keys文件中,然后回车。
现在,客户机的公钥已经导入到服务器中。这时候我们可以把ssh的配置调整到需要的状态,比如禁用root登录,不允许密码登录,修改端口等。记住将生成的公钥信息注入到我们希望使用的用户的主目录中的authorized_keys文件中。
现在用Xshell连接服务器,效果如下:
此时,直接按回车键就可以登录远程服务器,可以以普通用户的身份登录。
写了很多关于ssh安全设置以及如何使用公钥登录服务器的内容。现在,让我们回到主题,配置我们想要用来进一步增强服务器安全性的DenyHosts。(现在假设使用DenyHosts的前提是允许密码登录,并且SSH配置文件中没有禁用密码登录)。
1.下载DenyHosts,该项目的官方网站:http://denyhosts.sourceforge.net/.
2.安装数据主机
# tar xf DenyHosts-2.6.tar.gz # cd DenyHosts-2.6 # python setup.py install安装过程输出的信息显示,DenyHosts程序的安装路径位于/usr/share/denyhosts目录中。
3.配置DenyHosts,并为程序提供配置文件和服务启动脚本。
# cd /usr/share/denyhosts # cp denyhosts.cfg-dist denyhosts.cfg # cp daemon-control-dist /etc/rc.d/init.d/denyhosts # chkconfig --add denyhosts # chkconfig denyhosts on # vim denyhosts.cfg配置文件中需要注意的配置参数描述:
DenyHosts支持不同的 *** 作系统,不同的系统使用不同的登录日志文件。该指令用于指定当前系统要使用的登录日志文件。
HOSTS_DENY = /etc/hosts.deny用于指定当远程主机试图暴力破解当前服务器密码时,将其IP地址写入/etc/hosts.deny文件,禁止对方主机登录,保证服务器的安全。
PURGE_DENY =此选项用于删除/etc/hosts.deny文件中记录的条目。但是,它的有效时间取决于配置文件中的DAEMON_PURGE选项,因为PURGE_DENY选项清除被DenyHosts标记为过期的条目。如果条目未过期,即使PURGE_DENY设置的时间已到,它们也不会被清除。并且DAEMON_PURGE用于设置条目的到期时间,因此PURGE_DENY是在DAEMON_PURGE设置的到期时间之后定义的时间点。如果条目到达应该清除的时间,条目将被清除。如果DAEMON_PURGE设置为长时间,则意味着该条目将长时间过期。当过期时间加上PURGE_DENY的时间后,对应的建议将该选项设置为短时间,这样可以快速看到清除过期数据的效果,比如设置为PURGE_DENY=1m。
BLOCK_SERVICE = sshdDenyHosts阻止的服务默认为sshd,可以添加其他服务。
DENY_THRESHOLD_INVALID = 5 DENY_THRESHOLD_VALID = 10 DENY_THRESHOLD_ROOT = 1 DENY_THRESHOLD_RESTRICTED = 1可以根据需要调整默认的帐户连接尝试次数。第4条设置了相应文件WORK_DIR/restricted-username中定义的用户允许的尝试次数。这些条目很容易理解。
HOSTNAME_LOOKUP=YES当用于报告信息时,与反登录尝试的IP地址相对应的主机名将由相应的主机名而不是IP地址显示。建议设置为否。
ADMIN_EMAIL =设置管理员电子邮件地址。
AGE_RESET_VALID=5d AGE_RESET_ROOT=25d AGE_RESET_RESTRICTED=25d AGE_RESET_INVALID=10d这些条目用于设置登录失败计数器的归零时间。如果主机多次尝试登录,计数器将记录登录失败的次数。这些条目设置的时间用于将这些技术归零。但是这些条目的设置时间是否比用户短时间内能否再次登录并不重要,不需要更改。允许被阻止的IP再次登录的条目取决于PURGE_DENY和DAEMON_PURGE的设置。
该参数选项的设置用于设置DenyHosts读取/var/log/secure文件的频率,以获取用户登录次数的信息。该参数非常重要,可以根据需要进行修改。默认值为30s,即主机连续多次登录失败,超过设定的尝试次数,30s后将无法再次连接。
DAEMON_PURGE = 1h此选项用于配置DENY_PURGE的使用,其目的是标记hosts.deny文件中条目的过期时间。过期后,将根据PURGE_DENY选项设置的时间清除过期的条目。该条目可以根据需要进行修改,默认值为1小时,即hosts.deny文件中被阻止IP的条目将在1小时后被标记为过期。
其他选项可以根据需要调整,但是如果调整的话,上面的项目设置已经可以满足我们的应用需求了。
启动拒绝主机服务:
# service denyhosts start使用模拟账户密码的方法登录。即使对方使用了正确的端口和系统中已有的账号,如果输入错误达到设定值,也会默认禁止登录1小时,1小时后可以重新尝试登录。DenyHosts使用ssh安全策略可以更好地保护服务器系统的安全。
注意:DenyHost是轻量级的,对系统的资源利用率较低。它支持作为守护进程或任务计划运行,这消耗较少的系统资源。此外,Denyhost将在启动时检查sshd日志文件大小的变化,以确定该身份有新的登录数据。如果文件大小一直不变,会自动退出,不做任何处理,检查文件变化时只处理变化的数据。您可以通过以下方式设置周期性任务计划,例如:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)