个人用户如何有效防止DOS攻击?

  • 回答 (11)
  • 关注 (0)
  • 查看 (795)

个人用户如何有效防止DOS攻击呢?我的个人博客网站经常被DOS攻击,估计是得罪了什么人,经常被弄得关站,我知道想要完全杜绝掉DOS是非常难得事情,几乎不可能完全杜绝,而最有效的办法肯定是砸钱,购买高配置主机,我也知道腾讯云有大禹系统,可以几乎完全杜绝掉DOS攻击,但是太贵了,这对于企业来说不算什么,但是对于个人用户来说,简直是天文数字,消费不起,我不奢求能完全杜绝掉,哪怕是能减轻一点也好,各位大大们,有什么好办法呢?最好能提供有效的解决方案或者代码,脚本什么的,谢谢!

磁化磁化提问于
akjok54stay hungry stay foolish回答于

你说得很对,完全杜绝掉是不可能的,最好的办法是拼性能,但这个办法需要花费掉大量的金钱,你被人攻击这种事情,我也受过这种苦,所以我俩可以算同道中人。按你说的有效的话,办法还是非常多的,但每个人的办法不同,这个主要需要根据具体的攻击场景来判断,我在这里给你一些案例吧,希望对你有所帮助。

一般防御思路为:检测,分析,对症入药

第一:被DOS时,最好在/ var / log中查看日志文件,这是非常很有用的,你可以根据日志来判断DoS攻击的行为,基本被攻击时,这是必须要做的一件事。打个比方:在检测到DoS攻击后,通过检查日志,查看攻击源,然后手动操作iptables命令以禁用特定IP的访问。

但是Dos攻击都是随机的,你不知道什么时候会被攻击,所以做好“战前准备”是非常有必要的。所以对于linux来说,可以使用shell脚本,shell脚本是非常强大的,虽然shell脚本并不是防止DoS攻击的完美工具,但也是非常强大的工具,可以有效的减轻Linux服务器的DoS攻击造成性能的大量开销。主要的还是具备一键使用,或者自动运行的特点。所以多使用shell脚本对你没坏处。

第二,从/ var / log / secure文件检测DoS攻击

你可以在/ var / log / secure文件中进行检测,可以使用三剑客“grep”,“awk”和“sed”命令来查看和检测,不过最好自己写一个脚本并从文件中构建规则。方便很多。

以下是典型的使用字典的ssh攻击的示例。

Feb 18 09:14:08 neuro sshd[8978]: Did not receive identification string from 64.34.200.202
Feb 18 09:18:22 neuro sshd[9012]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=64.34.200.202  user=root
Feb 18 09:18:24 neuro sshd[9012]: Failed password for root from 64.34.200.202 port 43353 ssh2
Feb 18 00:18:24 neuro sshd[9013]: Received disconnect from 64.34.200.202: 11: Bye Bye
Feb 18 09:18:25 neuro sshd[9015]: Invalid user delta from 64.34.200.202
Feb 18 00:18:25 neuro sshd[9016]: input_userauth_request: invalid user delta
Feb 18 09:18:25 neuro sshd[9015]: pam_unix(sshd:auth): check pass; user unknown
Feb 18 09:18:25 neuro sshd[9015]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=64.34.200.202
Feb 18 09:18:27 neuro sshd[9015]: Failed password for invalid user delta from 64.34.200.202 port 43875 ssh2
Feb 18 00:18:28 neuro sshd[9016]: Received disconnect from 64.34.200.202: 11: Bye Bye
Feb 18 09:18:29 neuro sshd[9017]: Invalid user admin from 64.34.200.202
Feb 18 00:18:29 neuro sshd[9018]: input_userauth_request: invalid user admin
Feb 18 09:18:29 neuro sshd[9017]: pam_unix(sshd:auth): check pass; user unknown
Feb 18 09:18:29 neuro sshd[9017]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=64.34.200.202
Feb 18 09:18:31 neuro sshd[9017]: Failed password for invalid user admin from 64.34.200.202 port 44300 ssh2

分析完后,你可以使用以下命令将禁用的IP信息从/ etc / sysconfig / iptables发送到tmp文件。

grep DROP / etc / sysconfig / iptables | awk'{print $ 5}'> tmp    

如果系统没有收到来自特定IP的标识字符串,则应禁用计算机访问。以下命令将检测到的IP添加到临时文件。使用规则检测到的IP将被添加到该文件中。

grep Did / var / log / secure | awk'{print $ 12}'>> tmp     

可以使用这个命令将新规则添加到tmp文件。字典攻击可以通过/ var / log / secure中的“Invalid user”检测到。

grep“Invalid user”/ var / log / secure | awk'{print $ 10}'>> tmp  

然后通过以下命令可以检测到最大登录的DoS攻击。

grep“Maximum login”/ var / log / secure | awk'{print $ 7}'| sed's /.* \ [\(。* \)\])/ \ 1 / g'>> tmp   

然后你就可以对症入药了

size=`wc tmp|awk '{print $1}'`
i=0
while test $i -lt $size
do
      us=`sed -n 1p tmp`
      sed /$us/d tmp >tmps
      echo $us >>ttt
      cp -f tmps tmp
      size=`wc tmp|awk '{print $1}'`
done     

这是将检测到的唯一IP存储在文件ttt中。变量“size”表示tmp文件中的行数。

然后好戏来了,因为DoS攻击的IP存储在文件ttt中,然后激活/ sbin / iptables,简单循环,就是这么暴力。。。

size =`wc ttt | awk'{print $ 1}'` 
size =`expr $ size + 1` 
/ sbin / iptables -F 
i = 1 
while test $ i -lt $ size 
do 
        ip =`sed -n“$ i “p ttt` 
        i =`expr $ i + 1` 
/ sbin / iptables -A INPUT -s $ ip -j DROP 
done

然后完事。当然了,我为这个思路也了一个shell脚本,可以使用cron持续防御,先留个坑,等点赞到30在回来补坑,发脚本。(,,´•ω•)ノ

回答过的其他问题

推送地址增加了&txAddTimestamp=2小程序的onPlayEvent 发现并没有每秒通知?

akjok54stay hungry stay foolish
你的问题在这里:&txAddTimestamp=2这个不是数字2,而是数字1,你填错误了,应该增加这个&txAddTimestamp=1,后面是1. 加注ntp时间戳在推流 url 之后添加参数 &txaddtimestamp=1 参数,服务器会每隔1s向你的直播流中打入一个带有...... 展开详请

前端请求报错?

akjok54stay hungry stay foolish

使用万象优图过程中如何生成正确的鉴权签名?

akjok54stay hungry stay foolish
先使用对应参数进行拼接 拼接格式如下: 拼接多次有效签名串: a=[appid]&b=[bucket]&k=[SecretID]&e=[expiredTime]&t=[currentTime]&r=[rand]&u=[userid]&f=[fileid] 拼接单次有效签名串: a...... 展开详请

大叔变软萌女声,实时语音趣味变声是如何实现与应用的?

akjok54stay hungry stay foolish
在音频后处理领域,语音消息的变声不难,但是在QQ电话、“吃鸡”中实时变声,是个大挑战。要保证在用户无感的超低延时下对人声进行特殊处理,怎么办呢? 为了降低时延,技术团队想了不少办法:数据采集阶段,用自研前处理替换系统的前处理,把时延降低了30ms;处理过程中,支持更少长度的处理(...... 展开详请

哪里可以设置home/uftp访问权限为a-w?

akjok54stay hungry stay foolish
需要登录你的服务器,所以是在你的服务器里面进行设置,设置访问权限的命令为如下: chmod a-w textfile textfile为你要设置的ftp目录 ... 展开详请

启动不了vnftpd?

akjok54stay hungry stay foolish

尝试一下将listen_ipv6  = YES更改为:listen_ipv6 = NO,或将这一行注释掉

按上面的方法注释掉  listen_ipv6 = YES后,重新启动VSFTP

所属标签

扫码关注云+社区

领取腾讯云代金券