在公网中每时每刻都有人通过密码字典暴力破解试图登陆你的服务器,不信请看该日志文件大小du -sh `ls /var/log | grep btmp,该文件存储了ssh失败登陆的记录。文件越大/增长越快,说明你的服务器处于被别人暴力破解的危险中!为了避免这种危险,必须做好两点:
成都创新互联于2013年成立,先为吉安等服务建站,吉安等地企业,进行企业商务咨询服务。为吉安企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
整个网络空间中其实存在着很多弱口令服务器,假设弱口令服务器的用户名都为root、密码都为123456、SSH登陆端口都为默认的22。我有一台服务器在不停的用密码字典登陆这些弱口令机器,成功登陆的机器作为肉鸡(傀儡)继续登陆别的机器,假设一台服务器以2台/天的速度进行登陆,那么我就有三台机器(包括自己的那台),第二天就是6+3=3^2=9台,第三天就是18+9=3^3=27台,第N天就是3^N台。
看到没有,肉鸡/傀儡服务器是以指数级别在增加的!
为什么有人不停登陆别人的机器,获得肉鸡?如果我手上有来自全世界的肉鸡,并且数量很多,那玩儿法可就多了:
一、基础知识
/var/log/wtmp用于记录登录成功的用户的信息,是一个二进制文件,只能通过 last命令来查看
- root pts/0 100.87.41.98 Sat Feb 16 01:28 still logged in
- root pts/2 100.87.41.98 Fri Feb 15 11:38 - down (01:35)
- root pts/1 100.87.41.98 Fri Feb 15 11:38 - down (01:35)
- root pts/0 100.87.41.98 Fri Feb 15 11:38 - down (01:35)
查看尝试恶意登陆的前十个IP:
- sudo lastb | awk '{ print $3}' | awk '{++S[$NF]} END {for(a in S) print a, S[a]}' | sort -rk2 |head
查看恶意IP尝试登陆次数:
- lastb | awk '{ print $3}' | sort | uniq -c | sort -n
当然,如果你要清理这个日志,删除在创建之
- rm -rf /var/log/btmp
- touch /var/log/btmp
/var/log/btmp用于记录登录失败的用户的信息,是一个二进制文件,只能通过 lastb命令来查看
- ejabberd ssh:notty 123.207.233.84 Sat Feb 16 02:08 - 02:08 (00:00)
- rsync ssh:notty 157.230.102.166 Sat Feb 16 02:08 - 02:08 (00:00)
- ejabberd ssh:notty 123.207.233.84 Sat Feb 16 02:08 - 02:08 (00:00)
- rsync ssh:notty 157.230.102.166 Sat Feb 16 02:08 - 02:08 (00:00)
/var/log/lastlog用于记录用户的历史登录情况,是一个二进制文件,只能通过 lastlog命令来查看
- Username Port From Latest
- root pts/0 100.87.41.98 Sat Feb 16 01:28:34 +0000 2019
- bin **Never logged in**
- daemon **Never logged in**
- adm **Never logged in**
/var/run/utmp用于记录当前登录的用户的信息,是一个二进制文件,只能通过 who命令来查看
- root pts/0 2019-02-16 01:28 (100.87.41.98)
二、修改SSH默认端口
环境:CentOS 7
步骤:新增SSH端口–>>重启sshd服务–>>添加防火墙规则–>>尝试新端口登陆–>>关闭原先的22端口
1. 新增SSH端口(列:1000)
- vi /etc/ssh/sshd_config
找到Port 22这行,将前面的注释去掉,再加一行Port 1000,如下,这样做的目的是防止新端口登陆不上,老端口也不能用!
- Port 22
- Port 1024
- #AddressFamily any
- #ListenAddress 0.0.0.0
- #ListenAddress ::
2. 重启sshd服务
如果是CentOS 7使用systemctl restart sshd,查看端口是否生效可以用systemctl status sshd
如果是CentOS 7以前的系统,使用/etc/init.d/sshd restart或者service sshd restart
重启以后可以本地测试一下端口通没通,telnet 127.0.0.1 1000
3. 添加防火墙规则
如果是iptables防火墙,执行下面命令添加规则
- iptables配置文件位置/etc/sysconfig/iptables
- iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 1000 -j ACCEPT
- service iptables save
- service iptables restart
如果防火墙是Firewall,参照下面步骤:
- firewall-cmd --state
- systemctl start firewalld
- systemctl enable firewalld
- firewall-cmd --get-default-zone
- firewall-cmd --get-active-zones
- firewall-cmd --permanent --zone=public --add-port=22/tcp
- firewall-cmd --permanent --zone=public --add-port=1000/tcp
- firewall-cmd --reload
- firewall-cmd --permanent --list-port
- firewall-cmd --zone=public --list-all
4. 尝试新端口登陆
尝试用1000端口进行登陆,看是否成功!
5. 关闭原先的22端口
参考上面的操作,首先在ssh的配置文件去掉22端口,重启sshd服务,然后在防火墙配置里面去除22端口,重启防火墙!这里不再赘述。
6. 修改弱口令为强口令
输入修改密码命令
- passwd
此时系统提示
- Changing password for user root.
- New password:
输入两次密码并回车,注意输入密码时不会显示的
- Retype new password:
- passwd: all authentication tokens updated successfully.
7. 推荐:
shell随机密码生成函数:
生成随机密码 ($1 位数)
- # echo $(getRandomPwd 10)
- # echo $(getRandomPwd)
- getRandomPwd(){
- num=32
- if [ $# == 1 ];then
- num=$1
- fi
- echo "$(date +%s)$(shuf -i 10000-65536 -n 1)" | sha256sum | base64 | head -c $num ; echo
- }
8. 扩展
虽然上面修改端口和口令能够大大提升安全性,但是在某些情况下不能修改端口或口令,此时可以推荐 DenyHosts或者fail2ban,它可以禁止大量尝试登陆的IP。或者可以用最简单的办法,查看尝试恶意登陆的前十个IP然后用防火墙禁止它,这里只提供思路。
网站栏目:避免服务器成为肉鸡的应对措施
URL分享:http://www.csdahua.cn/qtweb/news20/518520.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网