linux防止ssh远程暴力破解的方法和fail2ban软件的配置应用
2015-11-11 18:41
1121 查看
一、修改参数来使得暴力破解变得几乎不可能
1.密码设定要足够复杂
密码的设定,尽可能要有大写字母、小写字母、特殊符号和数字,长度至少要大于8,当然越长越好,只要能记住。
2.修改默认端口号
nmap工具可以探测服务器开放的远程端口:# nmap 192.168.12.11
StartingNmap 5.51 ( http://nmap.org ) at 2015-10-27 21:32 CST
Nmapscan report for 192.168.220.22
Hostis up (0.00017s latency).
Notshown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
111/tcpopen rpcbind
MACAddress: 00:0C:29:9C:14:74 (VMware)
探测到22端口是开启的,这样就能用ssh来暴力破解root密码了。
如果我们将22改为23,这样显示的结果变成下面:
23/tcp open telnet
其实并不是telnet开启,而是我们的sshd服务。这样虽然给***设了一个类似陷阱的东西,但是因为能探测到,这样也是不***全的。那么我们就修改成一个非常不常用的端口号,如233,这样nmap甚至是探测不到的,如此就起到了防护作用。
3.禁掉默认管理员
我们知道,默认的管理员是root,uid和gid都是0。我们的操作是将root用户的uid和gid改成其他,shell改为/sbin/nologin或者/bin/false,将我们建立的一个用户(如lius)的uid和gid改成0。操作方法是编辑/etc/passwd文件:#vim /etc/passwd
root:x:22:22:root:/root:/sbin/nologin
lius:x:0:0::/home/lius/:/bin/bash## 部分配置
我们知道lius的命名千奇百怪,我们可以随意自定义,所以,这就使得暴力破解变得几乎是不可能的事情了。
二、使用fail2ban实现破解次数限制如果网站一直被别人暴力破解sshd服务密码,即使不成功,也会导致系统负载很高;原因是在暴力破解的时候,系统会不断地认证用户,增加了系统资源开销,导致访问网站速度变慢。
fail2ban可以监视系统日志,然后匹配日志的错误信息(正则匹配),执行相应的屏蔽动作(一般情况下是防火墙),而且可以发送e-mail通知系统管理员,很实用、很强大!fail2ban的官网fail2ban.org,可获取stable版本的下载链接,安装fail2ban。
习惯的安装目录为/usr/local/src, cd到这个目录,用wget获得.gz格式文件。
#tar zxvf fail2ban-0.9.3.tar.gz
#cd fail2ban-0.9.3
#python setup.py install # 源码安装的方法和以前不一样,可以通过查看README.md来获取安装的步骤,python版本要在2.4以上,python-V可以查看版本。
#cd files
#cp redhat-initd /etc/init.d/fail2ban # 复制和重命名
#chkconfig --add fail2ban # 开机启动
#/etc/init.d/fail2ban start # 启动服务
如此,fail2ban启动成功,但是我们还没配置fail2ban,下面是配置过程:
fail2ban服务相关主要文件说明:
/etc/fail2ban/action.d#动作文件夹,内含默认文件。iptables以及mail等动作配置
/etc/fail2ban/fail2ban.conf#定义了fai2ban日志级别、日志位置及sock文件位置
/etc/fail2ban/filter.d#条件文件夹,内含默认文件。过滤日志关键内容设置
/etc/fail2ban/jail.conf#主要配置文件,模块化。主要设置启用ban动作的服务及动作阀值
应用实例:设置ssh远程登录5分钟内3次密码验证失败,禁止用户IP访问主机1小时,1小时该限制自动解除,此IP可以重新登录。
#vim /etc/fail2ban/jail.conf
enabled= true
filter= sshd
action= iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH,dest=you@example.com, sender=fail2ban@example.com,sendername="Fail2Ban"]
logpath= /var/log/secure
findtime= 300
maxretry= 3
bantime= 3600
注释:
enabled= true # 是否激活此项(true/false)修改成true
logpath= /var/log/secure # 检测的系统的登陆日志文件,这里要写sshd服务日志文件的路径
findtime= 300 # 在5分钟内内出现规定次数就实施动作,默认时间单位:秒
maxretry= 3 # 密码验证失败次数最大值为3,超过实施操作
bantime= 3600 # 超过3次后,禁止此用户IP访问主机1小时
发邮件的配置可以设定管理员的邮箱。如此配置结束,打开新终端,故意输错3次,再登录时可以看到禁止访问的提示:ssh: connect to host192.168.1.63 port 22: Connection refused
1.密码设定要足够复杂
密码的设定,尽可能要有大写字母、小写字母、特殊符号和数字,长度至少要大于8,当然越长越好,只要能记住。
2.修改默认端口号
nmap工具可以探测服务器开放的远程端口:# nmap 192.168.12.11
StartingNmap 5.51 ( http://nmap.org ) at 2015-10-27 21:32 CST
Nmapscan report for 192.168.220.22
Hostis up (0.00017s latency).
Notshown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
111/tcpopen rpcbind
MACAddress: 00:0C:29:9C:14:74 (VMware)
探测到22端口是开启的,这样就能用ssh来暴力破解root密码了。
如果我们将22改为23,这样显示的结果变成下面:
23/tcp open telnet
其实并不是telnet开启,而是我们的sshd服务。这样虽然给***设了一个类似陷阱的东西,但是因为能探测到,这样也是不***全的。那么我们就修改成一个非常不常用的端口号,如233,这样nmap甚至是探测不到的,如此就起到了防护作用。
3.禁掉默认管理员
我们知道,默认的管理员是root,uid和gid都是0。我们的操作是将root用户的uid和gid改成其他,shell改为/sbin/nologin或者/bin/false,将我们建立的一个用户(如lius)的uid和gid改成0。操作方法是编辑/etc/passwd文件:#vim /etc/passwd
root:x:22:22:root:/root:/sbin/nologin
lius:x:0:0::/home/lius/:/bin/bash## 部分配置
我们知道lius的命名千奇百怪,我们可以随意自定义,所以,这就使得暴力破解变得几乎是不可能的事情了。
二、使用fail2ban实现破解次数限制如果网站一直被别人暴力破解sshd服务密码,即使不成功,也会导致系统负载很高;原因是在暴力破解的时候,系统会不断地认证用户,增加了系统资源开销,导致访问网站速度变慢。
fail2ban可以监视系统日志,然后匹配日志的错误信息(正则匹配),执行相应的屏蔽动作(一般情况下是防火墙),而且可以发送e-mail通知系统管理员,很实用、很强大!fail2ban的官网fail2ban.org,可获取stable版本的下载链接,安装fail2ban。
习惯的安装目录为/usr/local/src, cd到这个目录,用wget获得.gz格式文件。
#tar zxvf fail2ban-0.9.3.tar.gz
#cd fail2ban-0.9.3
#python setup.py install # 源码安装的方法和以前不一样,可以通过查看README.md来获取安装的步骤,python版本要在2.4以上,python-V可以查看版本。
#cd files
#cp redhat-initd /etc/init.d/fail2ban # 复制和重命名
#chkconfig --add fail2ban # 开机启动
#/etc/init.d/fail2ban start # 启动服务
如此,fail2ban启动成功,但是我们还没配置fail2ban,下面是配置过程:
fail2ban服务相关主要文件说明:
/etc/fail2ban/action.d#动作文件夹,内含默认文件。iptables以及mail等动作配置
/etc/fail2ban/fail2ban.conf#定义了fai2ban日志级别、日志位置及sock文件位置
/etc/fail2ban/filter.d#条件文件夹,内含默认文件。过滤日志关键内容设置
/etc/fail2ban/jail.conf#主要配置文件,模块化。主要设置启用ban动作的服务及动作阀值
应用实例:设置ssh远程登录5分钟内3次密码验证失败,禁止用户IP访问主机1小时,1小时该限制自动解除,此IP可以重新登录。
#vim /etc/fail2ban/jail.conf
enabled= true
filter= sshd
action= iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH,dest=you@example.com, sender=fail2ban@example.com,sendername="Fail2Ban"]
logpath= /var/log/secure
findtime= 300
maxretry= 3
bantime= 3600
注释:
enabled= true # 是否激活此项(true/false)修改成true
logpath= /var/log/secure # 检测的系统的登陆日志文件,这里要写sshd服务日志文件的路径
findtime= 300 # 在5分钟内内出现规定次数就实施动作,默认时间单位:秒
maxretry= 3 # 密码验证失败次数最大值为3,超过实施操作
bantime= 3600 # 超过3次后,禁止此用户IP访问主机1小时
发邮件的配置可以设定管理员的邮箱。如此配置结束,打开新终端,故意输错3次,再登录时可以看到禁止访问的提示:ssh: connect to host192.168.1.63 port 22: Connection refused
相关文章推荐
- Linux socket 初步
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- Linux Generating SSH Keys
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- 基于 Linux 集群环境上 GPFS 的问题诊断