精华内容
下载资源
问答
  • 对方开始远程登录mysql至4月10日,共登录次数7次。由于当时有远程数据库连接需求所以当时将3306端口对外开放了。由于数据库有加密,未造成损失! 上图可见4月10日前一直都登录数据库 共登录了7次 2020年4月11日 ...
  • Ubuntu 日志文件为/var/log/auth.log ...cat /var/log/auth.log | grep 'Invalid' | awk '{print $10 "\t" $8}' | ...用户名次数统计 cat /var/log/auth.log | grep 'Invalid' | awk '{print $8}' | sort | uniq -c ...

    Ubuntu

    日志文件为/var/log/auth.log

    尝试IP和尝试的用户名

    cat /var/log/auth.log | grep 'Invalid' | awk '{print $10 "\t" $8}' | sort
    

    用户名次数统计

    cat /var/log/auth.log | grep 'Invalid' | awk '{print $8}' | sort | uniq -c | sort -bn
    

    预览

        104 ftpuser
        112 oracle
        147 ubuntu
        154 postgres
        200 user
        318 test
        566 admin
    

    CentOS

    日志文件为/var/log/secure

    展开全文
  • 服务器数据库被攻击后修复经验

    千次阅读 2020-11-28 16:38:05
    大概在11月初的时候,在腾讯云上租了一台轻量级应用服务器。当时是以学生价格入手的,非常便宜,...之后却黑客攻击,删库勒索,笔者追查好久才追查出最后的漏洞,并且及时修补。本文记录了笔者的漏洞排查和修补经验。

    记服务器数据库被攻击后修复经验

    前言

    大概在11月初的时候,在腾讯云上租了一台轻量级应用服务器。当时是以学生价格入手的,非常便宜,性价比也非常高。当时还加了一点钱租了一个.design的域名,感觉非常划算。
    之后就是部署项目的过程了,整个过程还算顺利。
    如果大家想看javaweb项目上线过程请在我的个人博客中找,因为可能发布时间会在这篇文章之后。
    上线之后,运行了几天,感觉还不错。访问速度很快,一切功能都正常,直到…

    问题初现

    项目是11月13日上线的,之后几天因为上学的缘故就没有管。直到11月18日打开网站,发现有一个留言板的功能无法正常使用。Ajax向后台发送数据得不到相应,笔者当时就有一种不好的预感。虽然网站没有什么东西,而且笔者早就知道这种安全级别肯定会被黑,但是心中不免还是为之一震,只得感叹“欢迎来到互联网”

    果然,查询了后台log4j留下的日志,才发现数据库无法访问。当时觉得可能是数据库被删除了,不过数据库里面也没有什么重要的信息,而且也有快照备份,问题不大。

    随后,笔者又尝试登陆了mysql的数据,发现黑客还留下一张新建的表。并且之前的业务数据库都被删除。
    勒索数据信息
    留下的线索是一张名字为WARNING的数据表,其中还有比特币的地址,还”贴心“地附上了联系邮箱。

    那么下面就开始我们的分析过程吧!!!

    邮箱查询

    攻击者在数据库中留下了联系方式,那我们不妨就从联系方式下手。
    通过攻击者留下的邮箱,我们可以尝试访问一下protonmail.com。

    光是看这个网站就不难发现,这是一家在瑞士的安全邮件公司,也就是说邮件的信息完全是匿名的。
    而且可以通过whois查询这个域名,也得不到任何有实际作用的信息。

    数据库日志分析

    经学习得知,Mysql数据库会自动记录数据库创建的时间,我们可以从那里找到一些线索。

    查询所有表的创建时间
    SELECT table_name,create_time FROM  information_schema.TABLES;
    查询指定表的创建时间
    SELECT table_name,create_time FROM information_schema.TABLES WHERE table_name = '表名';
    

    最后返回的执行结果:
    数据库创建时间
    可以看到,WARING表是在2020年的11月17日的凌晨4时35分02秒被创建出来的,这非常像一个黑客出来整活的时间。同时,这也就印证了为什么网站在11月18日的时候无法读取数据库。

    所以,可以初步确定,攻击事件是发生在11月17日凌晨4点左右。

    Centos系统日志

    在登陆ssh的时候会发现有上一次登陆失败的记录信息,可以看到后台肯定是遭遇到了暴力破解。

    因为ssh已经存在过3万5千次的登陆失败
    3万5千次的登陆失败
    查阅过大量的资料之后,还可以发现Linux系列的系统都有两个命令。

    last 和 lastb

    这里进行分别讲解last和lastb命令。

    LAST命令

    执行last命令后,系统会从/var/log/wtmp处读取登录成功信息。如下,是执行结果:

    last执行结果
    还有更多的参数请自行查找资料,笔者这里不再过多赘述。
    PS:遮挡信息为ip地址。

    LASTB命令

    执行lastb命令之后,系统会去读取/var/log/btmp,并且显示出所有登录失败的信息。
    下图为执行结果:
    因为实在是数量庞大,故只寻找11月17日凌晨四点左右的登录信息。
    登陆失败信息
    可以看到,其实系统的root密码已经被暴力破解了上百万次,但是在11月17日并未有成功登陆的信息,所以笔者可以得出第二个结论。
    攻击者并未拿到系统管理权限,而是从前端页面下手,进行删除数据库操作的

    因为网站的3306端口是常闭的,所以攻击者无法远程连接数据库。进而可以初步猜测,攻击手法为sql注入

    安全分析

    首先,因为本来网站体量就比较小,一共涉及到数据库操作的就只有两个功能,一个是留言板,另外一个则是云盘。

    漏洞一:Fliter的错误设置

    一开始笔者把测试重点放在了对于留言板功能的测试上。因为,留言板有一个限制较少的文本域,黑客很容易就从那里下手。
    但是仔细想想,我在所有页面之上都部署了一个fliter用来过滤没有登陆的用户,并且将他们跳转到登录页面。而且登陆页面的密码也几乎不可能被暴力破解,所以黑客要进入站内一定是绕过去了。

    仔细检查源码才发现,fliter只过滤了前端页面,但是并未过滤servlet,导致黑客可以直接通过猜测就得出servlet的名字,并且访问servlet。
    但是Servlet的提交方法都是post,难不成黑客构建了post数据包去尝试sql注入?

    漏洞二:BaseServlet

    然而,因为整个网站的架构是基于Servlet反射来简化代码的,有一个BaseServlet类来拦截所有的Servlet请求,并且根据method参数来调用对应的方法,完成功能。
    具体代码如下

    public class BaseServlet extends HttpServlet {
    
    	private static final long serialVersionUID = 1L;
    
    	protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
    		doPost(req, res);
    	}
    
    	//调用对应方法
    	protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
    		//Get parameter named method
    		String md = req.getParameter("method");
    		//Get class object by binary code
    		Class clazz = this.getClass();
    		//path after method's invoking 
    		String path = null;
    		
    		try{
    			Method method = clazz.getMethod(md, HttpServletRequest.class, HttpServletResponse.class);
    			method.setAccessible(true);
    			if(method!=null){
    				method.invoke(this, req, res);
    			}
    		}catch (Exception e) {
    			// 异常处理
    		}
    	}
    }
    

    然而,漏洞就发生在doGet方法中,doGet中直接转发给doPost(),间接导致了程序可以以get方式来请求和post一样的资源。所以也就印证了为什么黑客可以通过sql注入进行攻击。

    攻击者只需要通过对前端页面的分析或者暴力破解Servlet的URL加上Get参数就可以对网站实现sql注入。并且可以轻易地绕过前端的验证。

    那么,目前的任务就变成了找到网站中暗藏的sql注入点。

    漏洞三: 拼接数据库查询语句

    对于留言板的数据库操作都是用value方式实现的,类似于这样(事先构造PrepareStatement)

    INSERT INTO XX.XX (Content,Timestamp) VALUES(?,?)
    

    然后再插入?的数据。完整代码如下。

    public static void addMessage(Message message) {
    
    		PreparedStatement ps = null;
    		try {
    			String sql = "INSERT INTO XX.XX (Content,Timestamp) VALUES(?,?)";
    			ps = JDBCUtil.getConnection().prepareStatement(sql);
    			ps.setObject(1, message.getContent());
    			ps.setObject(2, message.getTimestamp());
    
    			ps.execute();
    			ps.close();
    
    		} catch (SQLException e) {
    			//异常处理
    		}
    
    	}
    

    这是一种非常安全的写法,这种写法非常不容易被SQL注入。

    然而,我在检查云盘的数据库逻辑代码的时候,发现了当时为了偷懒而写下的数据库拼接语句。

    ResultSet rs = JDBCUtil.getConnection().createStatement()
    					.executeQuery("SELECT * FROM XX.XX WHERE code=\'" + code + "\';");
    

    当时看到这句就知道,问题一定出在这里。

    漏洞再现

    在前端找到了这个页面,并且利用第一个漏洞直接访问Servlet,果然访问成功,没有要求输入密码进行验证。
    用Get的方式提交参数,并且在code的参数里面写下万能sql注入语句:

    ’ or ‘1’ '=1

    果然,后台豪不迟疑地就反馈出了数据。
    之后,就可以很轻易地爆出表名,然后执行DROP了。
    当然,最后再新建一个表并且留下勒索信息也是再简单不过了。

    解决方案

    关于sql注入的封堵

    1.首先用当时储存的服务器快照还原服务器(包括数据库)。
    2.改写代码,去掉BaseServlet中doGet()方法中的转发。
    3.将以下代码改成prepareStatment的写法。

    ResultSet rs = JDBCUtil.getConnection().createStatement()
    					.executeQuery("SELECT * FROM XX.XX WHERE code=\'" + code + "\';");
    

    4.增加Filter过滤范围。
    5.在收到参数的时候添加正则表达式过滤,这里有一个比较好用的防止sql注入的正则表达式。

    典型的SQL 注入攻击的正则表达式:/\w*((%27)|(\’))((%6F)|o|(%4F))((%72)|r|(%52))/ix

    防止ssh被暴力破解

    1.设置较强的密码。
    2.修改22端口为其他端口。
    3.安装并且配置fail2ban。
    fail2ban是一个很好用的,限制错误登录次数的程序,能在极大程度上保护服务器的安全。
    具体安装使用方法,请戳这里

    结语

    删库,被勒索这种事情绝对不是个案。在开发过程中留下的每一句代码都有可能最终导致严重的结果。所以在开发时一定不要为了图方便,以免最后酿成不可挽回的后果的时候才追悔莫及。数据库也可以通过程序定时备份,以及时止损。
    只有防患于未然的网络安全意识提高了,才能真正地减少这类事件的发生

    展开全文
  • 查看服务器是否DDOS攻击的方法

    千次阅读 2020-06-22 15:42:27
    那么当被攻击时会出现哪些症状呢,我们是如何来判断服务器是否被攻击,属于哪种攻击类型? 第一种类型:CC类攻击 CC攻击是DDoS(分布式拒绝服务)的一种,这种一种比DDOS流氓行为更具有技术含量的一种攻击方式,CC攻击...

    常见流量攻击

    服务器的攻击分为四类,cc攻击、syn攻击、udp攻击、tcp洪水攻击。那么当被攻击时会出现哪些症状呢,我们是如何来判断服务器是否被攻击,属于哪种攻击类型?

    第一种类型:CC类攻击

    CC攻击是DDoS(分布式拒绝服务)的一种,这种一种比DDOS流氓行为更具有技术含量的一种攻击方式,CC攻击完全模拟正常访问行为,没有虚假IP,也没有大的流量异常,但一样会造成您的服务器无法正常连接,一条ADSL的普通用户发起的CC攻击就可以干掉一台高性能的服务器。
    服务器呗CC攻击时,会出现80端口关闭的现象,即出现丢包和高延迟的现象, 因为80端口被大量的垃圾数据堵塞导致正常的连接被中止。可以通过在CMD命令窗口输入命令 netstat -an 来查看,如果看到类似如下大量显示雷同的连接记录基本就可以被CC攻击了:

    ……
    TCP 192.168.1.3:80 192.168.1.6:2205 SYN_RECEIVED 4
    A.网站出现service unavailable提示

    B.CPU占用率很高

    C.网络连接状态:netstat –na,若观察到大量的ESTABLISHED的连接状态 单个IP高达几十条甚至上百条

    D.外部无法打开网站,软重启后短期内恢复正常,几分钟后又无法访问。

    CC类攻击检测

    第一条命令:

    tcpdump -s0 -A -n -i any | grep -o -E '(GET|POST|HEAD) .*' 
    

    正常的输出结果类似于这样

    POST /ajax/validator.php HTTP/1.1 
    

    第二种类型:SYN类攻击

    A.CPU占用很高

    B.网络连接状态:netstat –na,若观察到大量的SYN_RECEIVED的连接状态

    SYN类攻击检测

    netstat -na             显示所有活动的网络连接
    netstat -an | grep :80 | sort         显示所有80端口的网络连接并排序。80端口为http端口
    netstat -n -p | grep SYN_REC | wc -l          查看当前有多少活动的SYNC_REC连接,最好值小于5.
    netstat -n -p | grep SYN_REC | sort -u        列出所有连接过的IP地址
    netstat -n -p | grep SYN_REC | awk ‘{print $5}| awk -F:{print $1}’     列出所有发送SYN_REC连接节点的IP地址
    netstat -ntu | awk ‘{print $5}| cut -d: -f1 | sort | uniq -c | sort -n
    使用netstat命令计算每个主机连接到本机的连接数
    netstat -anp | grep ‘tcp|udp’ | awk ‘{print $5}| cut -d: -f1 | sort | uniq -c | sort -n      列出所有连接到本机的udp或者tcp连接的数量
    netstat -ntu | grep ESTAB | awk ‘{print $5}| cut -d: -f1 | sort | uniq -c | sort -nr        检查ESTABLISHED 连接并且列出每个IP地址的连接数量
    Netstat -plan|grep :80| awk {‘print $5} | cut -d: -f1 | sort | uniq -c | sort -nk 1          列出所有连接到本机80端口的IP地址和其他连接数
    

    在这里插入图片描述
     1、利用netstat 工具来检测查看SYN连接

    netstat -n -p -t |wc -l
    

    在这里插入图片描述

    防护SYN类攻击措施

    防范也主要从两方面入手,一是sysctl的自身的关于syn方面的配置,二是防火墙策略上。

    sysctl -w net.ipv4.tcp_syncookies=1 # tcp syncookie,默认关闭
    
    sysctl -w net.ipv4.tcp_max_syn_backlog=1280 # syn队列,默认1024,》 1280可能工作不稳定,需要修改内核源码参数
    
    sysctl -w net.ipv4.tcp_synack_retries=2 # syn-ack握手状态重试次数,默认5,遭受syn-flood攻击时改为12
    
    sysctl -w net.ipv4.tcp_syn_retries=2 # 外向syn握手重试次数,默认4
    

    通过下列命令查看。

    [root@localhost nginx]# sysctl -a|grep syn
    
    net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 60
    
    net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 120
    
    net.ipv4.tcp_max_syn_backlog = 1024
    
    net.ipv4.tcp_syncookies = 1
    
    net.ipv4.tcp_synack_retries = 5
    
    net.ipv4.tcp_syn_retries = 5
    
    fs.quota.syncs = 25
    

    在这里插入图片描述
    如未受到攻击,上面的参数不建议修改。据说有增加主机的不稳定性的风险。

    第三种类型:UDP类攻击

    A.观察网卡状况 每秒接受大量的数据包

    B.网络状态:netstat –na TCP信息正常

    UDP类攻击检测

    检测udp端口

    检测端口是否打开:nc -zuv ip 端口
    
    服务器监听端口:nc -l -u ip 端口(可以发送和接受信息)
    
    客户端检测端口:nc -u ip 端口(可以发送和接受信息)
    
    查看监听的tup端口:ss -ant
    
    查看监听的udp端口:ss -anu
    
    查看所有协议端口:ss -ano
    

    在这里插入图片描述
    在这里插入图片描述

    第四种类型:TCP洪水攻击

    A.CPU占用很高

    B.netstat –na,若观察到大量的ESTABLISHED的连接状态 单个IP高达几十条甚至上百条,属于正常。
    查看TCP端口连接数

    查看网络连接总数
    # netstat -an |wc -l
    
    查看某个特定ip的连接数
    # netstat -an |grep 8.8.8.8 |wc -l
    
    查看连接数等待time_wait状态连接数
    # netstat -an |grep TIME_WAIT|wc -l
    
    查看建立稳定连接数量
    # netstat -an |grep ESTABLISHED |wc -l
    
    查看不同状态的连接数
    # netstat -an | awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}'
    
    查看每个ip跟服务器建立的连接数
    # netstat -nat|awk '{print$5}'|awk -F : '{print$1}'|sort|uniq -c|sort -rn
    (PS:正则解析:显示第5列,-F : 以:分割,显示列,sort 排序,uniq -c统计排序过程中的重复行,sort -rn 按纯数字进行逆序排序)
    
    查看每个ip建立的ESTABLISHED/TIME_OUT状态的连接数
    # netstat -nat|grep ESTABLISHED|awk '{print$5}'|awk -F : '{print$1}'|sort|uniq -c|sort -rn
    

    以下是我自己用VPS测试的结果:

    root:~# netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
    1 114.226.9.xx
    1 174.129.237.xx
    1 58.60.118.xx
    1 Address
    1 servers)
    2 118.26.131.xx
    3 123.125.1.x
    

    在这里插入图片描述
    每个IP几个、十几个或几十个连接数都还算比较正常,如果像上面成百上千肯定就不正常了。

    上述所讲到的判断分析,让我们能准确的判断存在的问题是什么,怎么第一时间来解决问题。让我们能更好的维护我们的网站安全。

    TCP洪水攻击检测

    # tail -f /var/log/messages
    
    Apr 18 11:21:56 web5 kernel: possible SYN flooding on port 80. Sending cookies.
    

    检查连接数增多,并且SYN_RECV 连接特别多:

    检查连接数增多,并且SYN_RECV 连接特别多:
    # netstat -n awk '/^tcp/ { S[$NF]} END {for(a in S) print a, S[a]}'
    
    TIME_WAIT 16855
    
    CLOSE_WAIT 21
    
    SYN_SENT 99
    
    FIN_WAIT1 229
    

    根据经验,正常时检查连接数如下:

    # netstat -n awk '/^tcp/ { S[$NF]} END {for(a in S) print a, S[a]}'
    

    在这里插入图片描述
    根据netstat查看到的对方IP特征:

    # netstat -na grep SYN_RECV more
    

    在这里插入图片描述
    以下配置,第一段参数是最重要的,第二段参数是辅助的,其余参数是其他作用的:

    # vi /etc/sysctl.conf
    
    net.ipv4.tcp_synack_retries=0
    
    #半连接队列长度
    
    net.ipv4.tcp_max_syn_backlog=200000
    
    #系统允许的文件句柄的最大数目,因为连接需要占用文件句柄
    
    fs.file-max=819200
    
    #用来应对突发的大并发connect 请求
    
    net.core.somaxconn=65536
    
    #最大的TCP 数据接收缓冲(字节)
    
    net.core.rmem_max=1024123000
    
    #最大的TCP 数据发送缓冲(字节)
    
    net.core.wmem_max=16777216
    
    #网络设备接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
    
    net.core.netdev_max_backlog=165536
    
    #本机主动连接其他机器时的端口分配范围
    
    net.ipv4.ip_local_port_range=1000065535
    

    使配置生效:

    # sysctl -p
    
    注意,以下参数面对外网时,不要打开。因为副作用很明显,具体原因请google,如果已打开请显式改为0,然后执行sysctl -p关闭。因为经过试验,大量TIME_WAIT状态的连接对系统没太大影响:
    
    #当出现 半连接 队列溢出时向对方发送syncookies,调大 半连接 队列后没必要
    
    net.ipv4.tcp_syncookies=0
    
    #TIME_WAIT状态的连接重用功能
    
    net.ipv4.tcp_tw_reuse=0
    
    #时间戳选项,与前面net.ipv4.tcp_tw_reuse参数配合
    
    net.ipv4.tcp_timestamps=0
    
    #TIME_WAIT状态的连接回收功能
    
    net.ipv4.tcp_tw_recycle=0
    

    防御TCP洪水攻击方法

    通过调整tcp参数来防范DDOS攻击
    sysctl -a | grep syn 看到:SYN相关的配置
    net.ipv4.tcp_max_syn_backlog = 1024

    net.ipv4.tcp_syncookies = 0

    net.ipv4.tcp_synack_retries = 5

    net.ipv4.tcp_syn_retries = 5

    tcp_max_syn_backlog是SYN队列的长度,tcp_syncookies是一个开关,是否打开SYN Cookie 功能,该功能可以防止部分SYN攻击。tcp_synack_retries和tcp_syn_retries定义SYN 的重试次数。加大SYN队列长度可以容纳更多等待连接的网络连接数,打开SYN Cookie功能可以阻止部分 SYN攻击,降低重试次数也有一定效果。
    调整上述设置的方法是:

    增加SYN队列长度到2048:

    sysctl -w net.ipv4.tcp_max_syn_backlog=2048
    

    打开SYN COOKIE功能:

    sysctl -w net.ipv4.tcp_syncookies=1
    

    降低重试次数:

    sysctl -w net.ipv4.tcp_synack_retries=3
    
    sysctl -w net.ipv4.tcp_syn_retries=3
    

    为了系统重启动时保持上述配置,可将上述命令加入到/etc/rc.d/rc.local文件中。

    防止同步包洪水(Sync Flood)

    # iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
    

    也有人写作

    #iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
    
    --limit 1/s 限制syn并发数每秒1次,可以根据自己的需要修改
    

    防止各种端口扫描

    # iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
    

    Ping洪水攻击(Ping of Death)

    # iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
    

    扩展

    问题1:解决time_wait连接数大量问题

    查询到time_wait连接数过多情况下,调整内核参数:/etc/sysctl.conf

    # vim /etc/sysctl.conf
    添加以下配置文件:
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_fin_timeout = 300
    
    让配置生效
    # /sbin/sysctl -p
    
    参数详解:
    1.net.ipv4.tcp_syncookies = 1 表示开启 syn cookies 。当出现 syn 等待队列溢出时,启用 cookies 来处理,可防范少量 syn ***,默认为 0 ,表示关闭; 
    2.net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将 time-wait sockets 重新用于新的 tcp 连接,默认为 0 ,表示关闭;
    3.net.ipv4.tcp_tw_recycle = 1 表示开启 tcp 连接中 time-wait sockets 的快速回收,默认为 0 ,表示关闭。
    4.net.ipv4.tcp_fin_timeout 修改系靳默认的 timeout 时间
    

    如果以上配置调优后性能还不理想,可继续修改一下配置:

    # vim /etc/sysctl.conf
    net.ipv4.tcp_keepalive_time = 1200   #表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
    net.ipv4.ip_local_port_range = 1024 65000   #表示用于向外连接的端口范围。缺省情况下很小:3276861000,改为102465000。
    net.ipv4.tcp_max_syn_backlog = 8192   #表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
    net.ipv4.tcp_max_tw_buckets = 5000   #表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。
    默认为180000,改为5000。
    对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于 Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。
    

    问题2:ESTABLISHED连接数过大问题

    怎么解决请求结束后依然存在大量ESTABLISHED没有被释放

    初步推断是tomcat服务器回收session时出了问题,这个一般都跟服务器的Timeout设置有联系。

    查看tomcat的配置文件 server.xml

    Copy
    <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" URIEncoding="UTF-8" />
    *****
    

    检查配置得出20000毫秒的时候acceptCount=”100” ,明显不合理,最大连接数也太小了吧。

    所以进一步优化:

    Copy
    connectionTimeout="20000" 改为 connectionTimeout="100"
    acceptCount="100"改为acceptCount="5000"
    

    DDoS攻击防御方法

    **1. 过滤不必要的服务和端口:**可以使用Inexpress、Express、Forwarding等工具来过滤不必要的服务和端口,即在路由器上过滤假IP。比如Cisco公司的CEF(Cisco Express Forwarding)可以针对封包Source IP和Routing Table做比较,并加以过滤。只开放服务端口成为目前很多服务器的流行做法,例如WWW服务器那么只开放80而将其他所有端口关闭或在防火墙上做阻止策略。
    **2. 异常流量的清洗过滤:**通过DDOS硬件防火墙对异常流量的清洗过滤,通过数据包的规则过滤、数据流指纹检测过滤、及数据包内容定制过滤等顶尖技术能准确判断外来访问流量是否正常,进一步将异常流量禁止过滤。单台负载每秒可防御800-927万个syn攻击包。

    **3. 分布式集群防御:**这是目前网络安全界防御大规模DDOS攻击的最有效办法。分布式集群防御的特点是在每个节点服务器配置多个IP地址(负载均衡),并且每个节点能承受不低于10G的DDOS攻击,如一个节点受攻击无法提供服务,系统将会根据优先级设置自动切换另一个节点,并将攻击者的数据包全部返回发送点,使攻击源成为瘫痪状态,从更为深度的安全防护角度去影响企业的安全执行决策。

    **4. 高防智能DNS解析:**高智能DNS解析系统与DDOS防御系统的完美结合,为企业提供对抗新兴安全威胁的超级检测功能。它颠覆了传统一个域名对应一个镜像的做法,智能根据用户的上网路线将DNS解析请求解析到用户所属网络的服务器。同时智能DNS解析系统还有宕机检测功能,随时可将瘫痪的服务器IP智能更换成正常服务器IP,为企业的网络保持一个永不宕机的服务状态。

    参考链接 :

    https://www.cnblogs.com/mydomain/archive/2013/05/14/3079002.html

    https://www.cnblogs.com/hello-sky/p/11598954.html

    五种简单CC攻击解决方案 http://www.anxinidc.com/faq/anquan/126.html

    linux检测及防止DDOS攻击的技巧(2) http://www.xitongzhijia.net/xtjc/20150608/50328_2.html

    TCP洪水攻击(DDOS)诊断与防护http://blog.sina.com.cn/s/blog_6f82cb740101j7z0.html

    服务器被ddos攻击?分析如何防止DDOS攻击? :https://blog.csdn.net/weixin_34407348/article/details/86013716?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-10.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-10.nonecase

    DDos攻击的常见方法及防御方法 https://www.cnblogs.com/larry-luo/p/10208074.html

    展开全文
  • 上周知名博主阮一峰的博客DDOS攻击,导致网站无法访问而被迫迁移服务器的事情,引起了广大网友的关注及愤慨,包括小编的个人博客也曾接受过DDOS的“洗礼”,对此感同身受。所以,本文我们一起来了解下DDOS攻击并...

    上周知名博主阮一峰的博客被DDOS攻击,导致网站无法访问而被迫迁移服务器的事情,引起了广大网友的关注及愤慨,包括小编的个人博客也曾接受过DDOS的“洗礼”,对此感同身受。所以,本文我们一起来了解下DDOS攻击并分享一些在一定程度范围内的应对方案。

    关于DDOS攻击

    分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。

    通常,攻击者将攻击程序通过代理程序安装在网络上的各个“肉鸡”上,代理程序收到指令时就发动攻击。

    (DDOS攻击示意图)

    随着网络技术发展,DDOS攻击也在不断进化,攻击成本越来越低,而攻击力度却成倍加大,使得DDOS更加难以防范。比如反射型DDoS攻击就是相对高阶的攻击方式。攻击者并不直接攻击目标服务IP,而是通过伪造被攻击者的IP向全球特殊的服务器发请求报文,这些特殊的服务器会将数倍于请求报文的数据包发送到那个被攻击的IP(目标服务IP)。

    DDOS攻击让人望而生畏,它可以直接导致网站宕机、服务器瘫痪,对网站乃至企业造成严重损失。而且DDOS很难防范,可以说目前没有根治之法,只能尽量提升自身“抗压能力”来缓解攻击,比如购买高防服务。

    DDoS攻击简介

    分布式拒绝服务攻击(DDoS攻击)是一种针对目标系统的恶意网络攻击行为,DDoS攻击经常会导致被攻击者的业务无法正常访问,也就是所谓的拒绝服务。

    常见的DDoS攻击包括以下几类:

    • 网络层攻击:比较典型的攻击类型是UDP反射攻击,例如:NTP Flood攻击,这类攻击主要利用大流量拥塞被攻击者的网络带宽,导致被攻击者的业务无法正常响应客户访问。

    • 传输层攻击:比较典型的攻击类型包括SYN Flood攻击、连接数攻击等,这类攻击通过占用服务器的连接池资源从而达到拒绝服务的目的。

    • 会话层攻击:比较典型的攻击类型是SSL连接攻击,这类攻击占用服务器的SSL会话资源从而达到拒绝服务的目的。

    • 应用层攻击:比较典型的攻击类型包括DNS flood攻击、HTTP flood攻击、游戏假人攻击等,这类攻击占用服务器的应用处理资源极大的消耗服务器处理性能从而达到拒绝服务的目的。

    DDoS攻击缓解最佳实践

    建议阿里云用户从以下几个方面着手缓解DDoS攻击的威胁:

    1. 缩小暴露面,隔离资源和不相关的业务,降低被攻击的风险。

    2. 优化业务架构,利用公共云的特性设计弹性伸缩和灾备切换的系统。

    3. 服务器安全加固,提升服务器自身的连接数等性能。

    4. 做好业务监控和应急响应。

    DDOS攻击应对策略

    这里我们分享一些在一定程度范围内,能够应对缓解DDOS攻击的策略方法,以供大家借鉴。

    1.定期检查服务器漏洞

    定期检查服务器软件安全漏洞,是确保服务器安全的最基本措施。无论是操作系统(Windows或linux),还是网站常用应用软件(mysql、Apache、nginx、FTP等),服务器运维人员要特别关注这些软件的最新漏洞动态,出现高危漏洞要及时打补丁修补。

    2.隐藏服务器真实IP

    通过CDN节点中转加速服务,可以有效的隐藏网站服务器的真实IP地址。CDN服务根据网站具体情况进行选择,对于普通的中小企业站点或个人站点可以先使用免费的CDN服务,比如百度云加速、七牛CDN等,待网站流量提升了,需求高了之后,再考虑付费的CDN服务。

    其次,防止服务器对外传送信息泄漏IP地址,最常见的情况是,服务器不要使用发送邮件功能,因为邮件头会泄漏服务器的IP地址。如果非要发送邮件,可以通过第三方代理(例如sendcloud)发送,这样对外显示的IP是代理的IP地址。

    3.关闭不必要的服务或端口

    这也是服务器运维人员最常用的做法。在服务器防火墙中,只开启使用的端口,比如网站web服务的80端口、数据库的3306端口、SSH服务的22端口等。关闭不必要的服务或端口,在路由器上过滤假IP。

    4.购买高防提高承受能力

    该措施是通过购买高防的盾机,提高服务器的带宽等资源,来提升自身的承受攻击能力。一些知名IDC服务商都有相应的服务提供,比如阿里云、腾讯云等。但该方案成本预算较高,对于普通中小企业甚至个人站长并不合适,且不被攻击时造成服务器资源闲置,所以这里不过多阐述。

    5.限制SYN/ICMP流量

    用户应在路由器上配置SYN/ICMP的最大流量来限制SYN/ICMP封包所能占有的最高频宽,这样,当出现大量的超过所限定的SYN/ICMP流量时,说明不是正常的网络访问,而是有黑客入侵。早期通过限制SYN/ICMP流量是最好的防范DOS的方法,虽然目前该方法对于DdoS效果不太明显了,不过仍然能够起到一定的作用。

    6.网站请求IP过滤

    除了服务器之外,网站程序本身安全性能也需要提升。以小编自己的个人博客为例,使用cms做的。系统安全机制里的过滤功能,通过限制单位时间内的POST请求、404页面等访问操作,来过滤掉次数过多的异常行为。虽然这对DDOS攻击没有明显的改善效果,但也在一定程度上减轻小带宽的恶意攻击。

    2.3 部署DNS智能解析

    通过智能解析的方式优化DNS解析,可以有效避免DNS流量攻击产生的风险。同时,建议您将业务托管至多家DNS服务商。

    • 屏蔽未经请求发送的DNS响应信息
    • 丢弃快速重传数据包
    • 启用TTL
    • 丢弃未知来源的DNS查询请求和响应数据
    • 丢弃未经请求或突发的DNS请求
    • 启动DNS客户端验证
    • 对响应信息进行缓存处理
    • 使用ACL的权限
    • 利用ACL,BCP38及IP信誉功能

    2.4 提供余量带宽

    通过服务器性能测试,评估正常业务环境下所能承受的带宽和请求数。在购买带宽时确保有一定的余量带宽,可以避免遭受攻击时带宽大于正常使用量而影响正常用户的情况。

    3. 服务安全加固

    对服务器上的操作系统、软件服务进行安全加固,减少可被攻击的点,增大攻击方的攻击成本:

    • 确保服务器的系统文件是最新的版本,并及时更新系统补丁。
    • 对所有服务器主机进行检查,清楚访问者的来源。
    • 过滤不必要的服务和端口。例如,对于WWW服务器,只开放80端口,将其他所有端口关闭,或在防火墙上设置阻止策略。
    • 限制同时打开的SYN半连接数目,缩短SYN半连接的timeout时间,限制SYN/ICMP流量。
    • 仔细检查网络设备和服务器系统的日志。一旦出现漏洞或是时间变更,则说明服务器可能遭到了攻击。
    • 限制在防火墙外进行网络文件共享。降低黑客截取系统文件的机会,若黑客以特洛伊木马替换它,文件传输功能将会陷入瘫痪。
    • 充分利用网络设备保护网络资源。在配置路由器时应考虑针对流控、包过滤、半连接超时、垃圾包丢弃、来源伪造的数据包丢弃、SYN阀值、禁用ICMP和UDP广播的策略配置。
    • 通过iptable之类的软件防火墙限制疑似恶意IP的TCP新建连接,限制疑似恶意IP的连接、传输速率。

    4. 业务监控和应急响应

    4.1 关注基础DDoS防护监控

    当您的业务遭受DDoS攻击时,基础DDoS默认会通过短信和邮件方式发出告警信息,针对大流量攻击基础DDoS防护也支持电话报警,建议您在接受到告警的第一时间进行应急处理。

    5.1 Web应用防火墙(WAF)

    针对网站类应用,例如常见的http Flood(CC攻击)攻击,可以使用WAF可以提供针对连接层攻击、会话层攻击和应用层攻击进行有效防御。

    5.2 DDoS防护包

    5.3 DDoS高级防护

    针对大流量DDoS攻击,建议使用阿里云高防IP服务。

    应当避免的事项

    DDoS攻击是业内公认的行业公敌,DDoS攻击不仅影响被攻击者,同时也会对服务商网络的稳定性造成影响,从而对处于同一网络下的其他用户业务也会造成损失。

    计算机网络是一个共享环境,需要多方共同维护稳定,部分行为可能会给整体网络和其他租户的网络带来影响,需要您注意:

    • 避免使用阿里云产品机制搭建DDoS防护平台
    • 避免释放处于黑洞状态的实例
    • 避免为处于黑洞状态的服务器连续更换、解绑、增加SLB IP、弹性公网IP、NAT网关等IP类产品
    • 避免通过搭建IP池进行防御,避免通过分摊攻击流量到大量IP上进行防御
    • 避免利用阿里云非网络安全防御产品(包括但不限于CDN、OSS),前置自身有攻击的业务
    • 避免使用多个账号的方式绕过上述规则

    小结

    目前而言,DDOS攻击并没有最好的根治之法,做不到彻底防御,只能采取各种手段在一定程度上减缓攻击伤害。所以平时服务器的运维工作还是要做好基本的保障,并借鉴本文分享的方案,将DDOS攻击带来的损失尽量降低到最小。

    展开全文
  • 这几天,服务器被攻击

    千次阅读 2019-07-26 15:13:29
    多次服务器异地登录、漏洞n个、网站后门程序几十个还有这几天遭受的攻击次数。 瞬间有点心疼服务器了,好像自己的孩子在外面人揍了一样。 接着,我去查看服务器设置的安全组,惊讶的发现,这个安全组规则...
  • 服务器遭遇ssh攻击及应对过程

    千次阅读 2022-01-02 23:26:58
    前几天登录服务器一看,短短十几个小时的时间有七千多次ssh错误登录记录,毫无疑问,有人在对我进行ssh远程暴库攻击。 利用命令 grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' /var/log/...
  • 查看linux服务器是否恶意攻击

    千次阅读 2017-09-07 01:21:29
    查看了连接数和当前的连接数 复制代码代码如下: netstat -ant | grep $ip:80 | wc -l ...查看IP访问次数 复制代码代码如下: netstat -nat|grep ":80"|awk '{print $5}' |awk -F: '{print $1
  • 服务器被DDOS攻击该如何防御?

    千次阅读 2020-08-27 18:32:20
    分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。 通常,攻击者将攻击...
  • 分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。 通常,攻击...
  • 防止服务器攻击方法

    千次阅读 2018-05-16 16:10:51
    对策:1:停止运行不需要的软件2:定期实施漏洞防范措施3...关于弱口令1:密码必段要有条件限制,如数字+字母+特殊字符2:密码输入次数必须要有限制,如:输入3次不成功,禁N小时,输入5次不成功,禁一天3:登陆之前...
  • 支付平台服务器被攻击怎么应对?

    千次阅读 2020-05-25 20:41:57
    第三方和第四方支付遍地开花,造成了狼多肉少的情况,为市场占有量,不少人动起了歪脑筋,利用互联网攻击同行业务服务器(常见DDOS,CC攻击),让竞争对手业务瘫痪,从而坐收渔利,那么,ddos,cc攻击后,该怎么...
  • 文章目录Linux 服务器进行安全加固,防止黑客攻击1、账号和口令1、减少系统无用账号,降低安全...Linux 服务器进行安全加固,防止黑客攻击 1、账号和口令 1、减少系统无用账号,降低安全风险。 使用命令 userdel &l...
  • DenyHosts是Python语言写的一个程序,它可以分析sshd的登录日志文件(/var/log/secure),当发现重复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏IP阻止SSH密码暴力破解的功能。
  • 对策: 1:停止运行不需要的软件 2:定期实施漏洞防范措施 3:对不需要对外公开的端口或者服务加以访问限制, ...1:服务器被黑客攻击,导致防问网站很慢 2:注册短信黑客随机用程序模拟攻击,导致短信发送完毕,注册
  • 文章目录云服务器运维 - Linux 操作系统安全加固/防范黑客攻击1、帐号1.1 禁用或删除无用账号1.2 检查特殊账号1.3 添加口令策略1.4 限制用户su1.5 禁止root用户直接登录2、服务2.1 关闭不必要的服务2.2 SSH服务安全3...
  • fail2ban 是 Linux 上的一个著名的入侵保护的开源框架,它会监控多个系统的日志文件(例如: /var/log/secure )并根据检测到的任何可疑的行为自动...事实上,fail2ban 在防御对SSH服务器的暴力密码破解上非常有用。
  • 系统的一些欢迎信息或版本信息,虽然能给系统管理者带来一定的方便,但是这些信息有时候可能黑客利用,成为攻击服务器的帮凶,为了保证系统的安全,可以修改或删除某些系统文件,需要修改或删除的文件有4个,分别...
  • 本文对目前流行的ssh密码暴力破解工具进行实战研究、分析和总结,对渗透攻击测试和安全防御具有一定的参考价值。   一、SSH密码暴力破解应用场景和思路 1.应用场景 在前面的这些场景中,可以获取shadow文件,对其...
  • 网站接口恶意攻击怎么办

    千次阅读 2018-09-27 21:20:30
    目前攻击最常见的就是“短信轰炸机”,由于短信接口验证是App,网站检验用户手机号最真实的途径,使用短信验证码在提供便利的同时,也成了呗恶意攻击的对象,那么如何才能防止恶意调用呢? 1.图形验证码: 将图形...
  • 如何通过代理服务器发动DDoS攻击

    千次阅读 2014-02-28 15:10:26
     邻居老张自从建立了自己的网站后,大半空闲时间都耗费到上面了,来我家串门的次数也少了,就算来了话题都离不开他的“宝贝”——网站。这天老张来串门了,我琢磨着他又有什么问题要咨询我。果不其然,我们才聊了几...
  • DDOS安全防护 ...流量 攻击 每N秒最多接收ICMP包次数 每N秒最多接收UDP包次数 ARP防护 获取网关,DNS的IP/MAC 拦截外部ARP攻击 WEB防护 防止CC攻击 应用防暴力破解 N秒内允许登录N次数
  • 服务器可能遭受攻击汇总

    千次阅读 2016-03-30 16:07:12
    服务器可能遭受的攻击 1.短信消耗  平台注册在不输入验证码的时候即可点击免费获取验证码,黑客如果通过动态IP反复输入大量手机号点击获取验证码。将导致短信短时间内大量消耗。   2.用户名输入的时候查询角色...
  • 网站被攻击如何处理

    千次阅读 2021-10-22 17:09:20
    网游行业之间的恶性竞争,也加剧了针对行业的DDoS攻击。 而针对游戏行业的DDoS攻击类型也非常的复杂多样。总结下来,大致分为这几种: 首先是空连接:攻击者与服务器...再次,CC攻击攻击攻击服务器的认证页面,登
  • 整理服务器防DDOS攻击方案

    千次阅读 2017-06-02 13:11:01
    整理服务器防DDOS攻击方案 2015-12-03 10:01 809人阅读 评论(0) 收藏 举报 一、DDOS认识  分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 42,942
精华内容 17,176
关键字:

服务器被攻击次数