ssh 安全防护备忘录
2014-01-23 02:14
316 查看
release 20140123 创建文档,发布51cto
release 20140409 添加对IP地址过滤,防止sshd: unknown
现在类unix系统都使用ssh协议进行服务器管理工作,因为攻击都喜欢通过暴力破解(一般利用密码字典),直接获得服务器权限。因此为了服务器安全,我们必须做好最基本的访问控制工作。一般修改ssh服务器的参数、设置复杂口令、非对称密钥登录访问、堡垒机之类的吧,都能有效阻击攻击者取得服务器权限。可是以上措施可以让攻击者做不成功某事,可是攻击者一直不停尝试,我们需要禁止他进行ssh登录连接,也就是把异常连接SSH服务器IP封掉了。
以下有两种措施:
1.fail2ban服务,调用iptables短暂性封锁IP
2.编写脚本,周期调用,通过tcp wrappers封锁IP
-----------------------------------------------------
fail2ban
-----------------------------------------------------
fail2ban作为一个守护进程存在,主要是能周期地扫描/var/log/secure,再调用iptables去进行流量过滤防御,会短暂性封锁IP。已经用了半年,感觉一般,服务经常罢工。
1.安装 由于基于开源平台处理,使用epel仓库才能自动通过YUM安装,所以需要进行安装EPEL.。根据系统平台不同, centos 5 平台使用epel-release-5-4.noarch.rpmcentos 6 平台使用 epel-release-6-8.noarch.rpm
2. 安装rpm -ivh epel-release-5-4.noarch.rpm 安装软件仓库
yum install fail2ban 顺便会安装些依赖软件
3.软件介绍
Description :Fail2ban scans log files like/var/log/pwdfail or/var/log/apache/error_logand bans IP that makes too many passwordfailures. It updates firewall rules to reject the IP address.
4. 内容介绍
drwxr-xr-x 2 root root 4096 Aug 19 19:50 action.d 根据匹配内容,进行操作调用
-rw-r--r-- 1 root root 859 Aug 19 19:50 fail2ban.conf
#fail2ban.conf 守护进程配置文件,一般只是修改下fail2ban日志位置,logtarget = /var/log/fail2ban.log
drwxr-xr-x 2 root root 4096 Aug 19 19:50 filter.d 匹配内容
-rw-r--r-- 1 root root 6517 Aug 19 19:51 jail.conf
#工作内容配置文件,里面有很多定义选项,常用iptables。还有很多访问控制里面定义
5.服务器启动
service iptables restart #习惯重启下iptables
service fail2ban restart #fail2ban依赖iptables,必须跟在其后启动,而且还是restart那种操作,否则不生效
6. 平时可以看下/var/log/fail2ban.log日志,看看最近阻挡情况。
fail2ban不单针对ssh服务器,还提供www,mail等服务器控制,用途广泛
另外提供第三方接口,可以定义filter策略,action操作,反正很灵活
缺点是经常罢工假死,这是我的使用体验
由于是短暂性封锁IP,如果某IP连接攻击,就变成封了开,开了封了。
###############################################
-----------------------------------------------------
脚本dropssh
-----------------------------------------------------
有些服务器由于各种原因,没有成功安装第三文库,我们可以通过简单的脚本,来实现防御处理的。有台服务器的YUM已经不能安装文件,不能编译,所以通过脚本来实现防护。
这是抄写余洪春大师的安全防范脚本,我自己修改点内容
第一,找到公司出口IP;
第二,去/etc/hosts.deny把这个IP相关记录清掉;
第三,使用logrotate -fv /etc/logrotate.conf,刷新轮转日志文件,让脚本读取新的日志
第四,这个脚本比较笨,它是读取/var/log/secure文件内的失败次数,并不是读取一段时间内次数的
release 20140409 添加对IP地址过滤,防止sshd: unknown
现在类unix系统都使用ssh协议进行服务器管理工作,因为攻击都喜欢通过暴力破解(一般利用密码字典),直接获得服务器权限。因此为了服务器安全,我们必须做好最基本的访问控制工作。一般修改ssh服务器的参数、设置复杂口令、非对称密钥登录访问、堡垒机之类的吧,都能有效阻击攻击者取得服务器权限。可是以上措施可以让攻击者做不成功某事,可是攻击者一直不停尝试,我们需要禁止他进行ssh登录连接,也就是把异常连接SSH服务器IP封掉了。
以下有两种措施:
1.fail2ban服务,调用iptables短暂性封锁IP
2.编写脚本,周期调用,通过tcp wrappers封锁IP
-----------------------------------------------------
fail2ban
-----------------------------------------------------
fail2ban作为一个守护进程存在,主要是能周期地扫描/var/log/secure,再调用iptables去进行流量过滤防御,会短暂性封锁IP。已经用了半年,感觉一般,服务经常罢工。
1.安装 由于基于开源平台处理,使用epel仓库才能自动通过YUM安装,所以需要进行安装EPEL.。根据系统平台不同, centos 5 平台使用epel-release-5-4.noarch.rpmcentos 6 平台使用 epel-release-6-8.noarch.rpm
2. 安装rpm -ivh epel-release-5-4.noarch.rpm 安装软件仓库
yum install fail2ban 顺便会安装些依赖软件
3.软件介绍
Description :Fail2ban scans log files like/var/log/pwdfail or/var/log/apache/error_logand bans IP that makes too many passwordfailures. It updates firewall rules to reject the IP address.
4. 内容介绍
drwxr-xr-x 2 root root 4096 Aug 19 19:50 action.d 根据匹配内容,进行操作调用
-rw-r--r-- 1 root root 859 Aug 19 19:50 fail2ban.conf
#fail2ban.conf 守护进程配置文件,一般只是修改下fail2ban日志位置,logtarget = /var/log/fail2ban.log
drwxr-xr-x 2 root root 4096 Aug 19 19:50 filter.d 匹配内容
-rw-r--r-- 1 root root 6517 Aug 19 19:51 jail.conf
#工作内容配置文件,里面有很多定义选项,常用iptables。还有很多访问控制里面定义
5.服务器启动
service iptables restart #习惯重启下iptables
service fail2ban restart #fail2ban依赖iptables,必须跟在其后启动,而且还是restart那种操作,否则不生效
6. 平时可以看下/var/log/fail2ban.log日志,看看最近阻挡情况。
fail2ban不单针对ssh服务器,还提供www,mail等服务器控制,用途广泛
另外提供第三方接口,可以定义filter策略,action操作,反正很灵活
缺点是经常罢工假死,这是我的使用体验
由于是短暂性封锁IP,如果某IP连接攻击,就变成封了开,开了封了。
###############################################
-----------------------------------------------------
脚本dropssh
-----------------------------------------------------
有些服务器由于各种原因,没有成功安装第三文库,我们可以通过简单的脚本,来实现防御处理的。有台服务器的YUM已经不能安装文件,不能编译,所以通过脚本来实现防护。
这是抄写余洪春大师的安全防范脚本,我自己修改点内容
#!/bin/bash #filename dropssh.sh #time: 2013-12-10 创建文件 #time: 2014-04-04 添加对IP地址过滤,防止sshd: unknown #Deny SHELL Script #logrotate -vf /etc/logrotate.conf #*/30 * * * * root bash /root/bin/dropssh.sh count=10 srcfile=/var/log/secure dstfile=/etc/hosts.deny awk -v ac=$count '/Failed/{a[$(NF-3)]++}END{for(i in a){if(a[i]>ac)printf "%s %s\n",a[i],i}}' $srcfile | sort -rn > /tmp/dropssh.txt iplist=$(awk -v ac=$count '/Failed/{a[$(NF-3)]++}END{for(i in a){if(a[i]>ac)printf "%s\n",i}}' $srcfile) for ip in $iplist do echo $ip | grep -q '^[^0-9]' && continue grep $ip $dstfile > /dev/null if [ $? -gt 0 ];then echo "sshd:$ip" >> $dstfile fi done这个服务器定时扫描/var/log/secure文件,找到一定次数登录失败的的IP,把它写入到/etc/hosts.deny文件,禁止这些IP进行ssh访问。另外,有次开发登录某台服务器,反正他就是当时在/var/log/secure日志失败记超过阀值,服务器禁止公司内部ssh访问。
第一,找到公司出口IP;
第二,去/etc/hosts.deny把这个IP相关记录清掉;
第三,使用logrotate -fv /etc/logrotate.conf,刷新轮转日志文件,让脚本读取新的日志
第四,这个脚本比较笨,它是读取/var/log/secure文件内的失败次数,并不是读取一段时间内次数的
相关文章推荐
- Linux主机安全防护系列(一)ssh配置
- Centos7 SSH安全防护---系统安全管家
- SSH服务端配置、优化加速、安全防护
- linux系统安全防护
- Linux密码安全防护操作详解
- 微软推出适合中小企业安全防护软件MSE
- 第一次使用阿里云的ecs遇到的问题-使用ssh建立安全的链接
- 企业邮箱提高安全防护的解决方案
- SUSE LINUX中的SSH安全加固方法
- 网络安全防护
- 正确安全防护 摆脱不请自来的黑客扫描与攻击
- Web建站安全防护建议
- 某公司的网络设备安全防护操作手册
- 使用putty(ssh)密匙安全登录服务器
- 360 网站安全通用防护脚本分享,可修复漏洞
- Linux VPS及服务器更加安全之设置Putty SSH使用密钥登录
- 钦家与哆普乐达成战略合作,共筑孩子安全防护墙
- ssh的一些安全设定
- linux安全防护中迅速排查的一些命令