linux服务器被ddos攻击记录日志分析日志ddos攻击
防火墙参数的介绍?
防护日志DDOS防火墙DDOS防火墙开启DDOS防火墙参数设置IP冻结时间设置单个IP单位时间相应连接请求设置扫描攻击参数设置流量攻击参数设置保存,设置成功
dns防护怎么做?
1授权DNS服务器限制名字服务器递归查询功能,递归dns服务器要限制递归访问的客户(启用白名单IP段)
2限制区传送zonetransfer,主从同步的DNS服务器范围启用白名单,不在列表内的DNS服务器不允许同步zone文件
allow-transfer{};
allow-update{};
3启用黑白名单
已知的攻击IP加入bind的黑名单,或防火墙上设置禁止访问;
通过acl设置允许访问的IP网段;
通过acl设置允许访问的IP网段;通过acl设置允许访问的IP网段;
4隐藏BIND的版本信息;
5使用非root权限运行BIND;
4隐藏BIND的版本信息;
5使用非root权限运行BIND;
6删除DNS上不必要的其他服务。创建一个DNS服务器系统就不应该安装Web、POP、gopher、NNTPNews等服务。
建议不安装以下软件包:
1)X-Windows及相关的软件包;2)多媒体应用软件包;3)任何不需要的编译程序和脚本解释语言;4)任何不用的文本编辑器;5)不需要的客户程序;6)不需要的其他网络服务。确保域名解析服务的独立性,运行域名解析服务的服务器上不能同时开启其他端口的服务。权威域名解析服务和递归域名解析服务需要在不同的服务器上独立提供;
7使用dnstop监控DNS流量
#yuminstalllibpcap-develncurses-devel
下载源代码http://dnsmeasurement-factorycom/tools/dnstop/src/dnstop-20140915targz
#;
9增强DNS服务器的防范Dos/DDoS功能
使用SYNcookie
增加backlog,可以一定程度减缓大量SYN请求导致TCP连接阻塞的状况
缩短retries次数:Linux系统默认的tcp_synack_retries是5次
限制SYN频率
防范SYNAttack攻击:#echo1>/proc/sys/net/ipv4/tcp_syncookies把这个命令加入/etc/rcd/rclocal文件中;
10:对域名服务协议是否正常进行监控,即利用对应的服务协议或采用相应的测试工具向服务端口发起模拟请求,分析服务器返回的结果,以判断当前服务是否正常以及内存数据是否变动。在条件允许的情况下,在不同网络内部部署多个探测点分布式监控;
11提供域名服务的服务器数量应不低于2台,建议独立的名字服务器数量为5台。并且建议将服务器部署在不同的物理网络环境中;使用入侵检测系统,尽可能的检测出中间人攻击行为;在域名服务系统周围部署抗攻击设备,应对这类型的攻击;利用流量分析等工具检测出DDoS攻击行为,以便及时采取应急措施;
12:限制递归服务的服务范围,仅允许特定网段的用户使用递归服务;
13:对重要域名的解析结果进行重点监测,一旦发现解析数据有变化能够及时给出告警提示;部署dnssec;
14建立完善的数据备份机制和日志管理系统。应保留最新的3个月的全部解析日志,并且建议对重要的域名信息系统采取7×24的维护机制保障,应急响应到场时间不能迟于30分钟。
为什么防火墙连接经常断掉?
怀疑是遭受DDOS攻击,
1、短暂开启访问日志,看看是哪些ip,再deny那些可疑ip
2、限掉IP地址段,或者向运营商购买流量清洗、防ddos攻击的服务
一般硬件防火墙有配置秒单位的数据流和数据连接,干掉ddos一般通过配置上限,
类似于超过多少个连接,马上断掉连接。很容易误伤bt这类软件。没有彻底的解决方案。
如果可以的话换一个
云服务器
+DDOS高防(也可也用CDN价成本相对能低不少)云服务器
Apache 服务器
预安装在Kali Linux
可以用以下命令开启:
service apache2 start
MySQL
预安装在Kali Linux
可以用以下命令开启:
service mysql start
使用PHP-MySQL创建一个有漏洞的web应用
我使用PHP开发了一个有漏洞的web应用并且把它放在上面提到的 Apache-MySQL里面。
上述设置完成后,我用了一些Kali Linux中的自动工具(ZAP、w3af)扫描这个有漏洞的应用的URL。
现在让我们来看看分析日志中的不同情况。
0x02 Apache服务中的日志记录
Debian系统上Apache服务器日志的默认位置为:/var/log/apache2/accesslog
日志记录只是在服务器上存储日志。我还需要分析日志以得出正确结果。在接下来的一节里,我们将看到我们如何分析Apache服务器的访问日志以找出web站点上是否有攻击尝试。
分析日志
手动检查
在日志量较小的情况下,或者如果我们查找一个指定关键词,可以使用像grep表达式这样的工具观察日志。
在下图中,我们在URL中试图搜寻所有关键词为“union”的请求。
从上图中,我们可以看到URL中的“union select 1,2,3,4,5”请求。很明显,ip地址为 19216856105的某人尝试了SQL注入。 类似地,当我们有自己的关键词时可以搜索特殊的关键词。
在下图中,我们正在搜索试图读取“/etc/passwd”的请求,很明显是本地文件包含尝试。
如上面的截图所示,我们有许多本地文件包含的尝试,且这些请求发送自ip地址 127001。
很多时候,能轻易通过日志看出是否是自动化扫描器产生的。
举例来说, IBM appscan在许多攻击payload中使用“appscan”这个词。所以,在日志中查看这样的请求,我们基本就可以判断有人在使用appscan扫描网站。
Microsoft Excel也是一个打开日志文件和分析日志的不错的工具。我们可以通过指定“空格”为分隔符以用excel打开日志文件。
当我们手头没有日志分析工具时,这个也挺好用的。
除了这些关键词,在分析期间要了解HTTP状态代码的基础知识。以下是关于HTTP状态代码的高级信息的表格。
0x03 Web shells
webshell是网站/服务器的另一个问题。webshell可以已web server权限控制服务器。
在一些情况下,我们可以使用webshell来访问所有放在相同服务器上的其他站点。
以下截图显示了Microsoft Excel 中开启相同的accesslog文件。
我们清楚地看到有一个叫“b374kphp”的文件被访问了。“b374k”是一个流行的webshell,因此这个文件是很可疑的。
查看相应代码“200”,本行表明有人上传了一个webshell并访问了它。
在许多情况下,攻击者重命名webshell的名字以避免怀疑。我们必须变得聪明点,看看被访问的文件是否是常规文件或者是否他们看起来不太一样。我们可以更进一步,如果任何文件看起来可疑的话,还可以查看文件类型和时间戳。
One single quote for the win
SQL注入是web应用中最常见的漏洞之一。大多数学习web应用安全的人是从学习SQL注入开始的。
识别一个传统的SQL注入很容易,给URL参数添加一个单引号看看是否报错。
任何我们传递给服务器的东西都会被记录,并且可以朔源。
以下截图显示了日志当中记录了有对参数user传入单引号测试是否有SQL注入的行为。
%27是单引号的URL编码。
出于管理目的,我们还可以运行查询监视来查看数据库中的哪个请求被执行了。
如果我们观察以上,传递一个单引号给参数“user”的SQL语句被执行了。
0x04 使用自动化工具分析
当存在大量日志时。手动检查就会变得困难。在这种情景下,除了一些手动检查之外我们可以使用自动化工具。
虽然有许多高效的商业工具,但是我要向你们介绍一款被称为“Scalp”的免费工具。
据他们的官方链接所说,Scalp是用于Apache服务器,旨在查找安全问题的日志分析器。主要理念是浏览大量日志文件并通过从HTTP/GET中提取可能的攻击。
Scalp可以从以下链接下载:
https://codegooglecom/p/apache-scalp/
Scalp是python脚本,所以要求我们的机器中安装python。
以下显示该工具的帮助。
如我们在上图所见,我们需要使用标志-l来提供要分析的日志文件。
同时,我们需要提供使用标志-f提供一个过滤文件让Scalp在accesslog文件中识别可能的攻击。
我们可以使用PHPIDS项目中的过滤器来检测任何恶意的尝试。
该文件名为“default_filterxml ”,可以从以下链接中下载:
https://githubcom/PHPIDS/PHPIDS/blob/master/lib/IDS/default_filterxml
以下代码块是取自上面链接的一部分。
1
2
3
4
5
6
7
8
9
10
11
<filter>
<id>12</id>
<rule><![CDATA[(:etc\/\Wpasswd)]]></rule>
<description>Detects etc/passwd inclusion attempts</description>
<tags>
<tag>dt</tag>
<tag>id</tag>
<tag>lfi</tag>
</tags>
<impact>5</impact>
</filter>
它是使用XML标签定义的规则集来检测不同的攻击测试。以上代码片段是检测文件包含攻击尝试的一个示例。
下载此文件之后,把它放入Scalp的同一文件夹下。
运行以下命令来使用Scalp分析日志。
1
python scalp-04py –l /var/log/apache2/accesslog –f filterxml –o output –html
“output”是报告保存的目录。如果不存在的话,由Scalp自动创建。-html是用来生成HTML格式的报告。 如我们在上图看到的那样,Scalp结果表明它分析了4001行,超过4024并发现了296个攻击模式。
运行上述命令后在输出目录内生成报告。我们可以在浏览器内打开它并查看结果。 下面截图显示的输出显示了目录遍历攻击尝试的一小部分。
MySQL中的日志记录
本节论述了数据库中的攻击分析和监视它们的方法。
第一步是查看设置了什么变量。我们可以使用“show variables;”完成,如下所示。
接下来显示了上述命令的输出。
如我们在上图中看到的,日志记录已开启。该值默认为OFF。
这里另一个重要的记录是 “log_output”,这是说我们正在把结果写入到文件中。另外,我们也可以用表。
我们可以看见“log_slow_queries”为ON。默认值为OFF。
所有这些选项都有详细解释且可以在下面提供的MySQL文档链接里直接阅读:
MySQL的查询监控
请求日志记录从客户端处收到并执行的语句。默认记录是不开启的,因为比较损耗性能。
我们可以从MySQL终端中开启它们或者可以编辑MySQL配置文件,如下图所示。
我正在使用VIM编辑器打开位于/etc/mysql目录内的“mycnf”文件。
如果我们向下滚动,可以看见日志正被写入一个称为“mysqllog”的文件内。
我们还能看到记录“log_slow_queries” ,是记录SQL语句执行花了很长时间的日志。
现在一切就绪。如果有人用恶意查询数据库,我们可以在这些日志中观察到。如下所示:
上图显示了查询命中了名为“webservice”的数据库并试图使用SQL注入绕过认证。
ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台(开源实时日志分析ELK平台部署)
日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。
通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。
集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。
开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。官方网站:
Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索)。
kibana 也是一个开源和免费的工具,他Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。 工作原理如下所示:
在需要收集日志的所有服务上部署logstash,作为logstash agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到logstash indexer,logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索通过Kibana 来结合自定义搜索进行页面展示。
四大组件:
Logstash: logstash server端用来搜集日志;
Elasticsearch: 存储各类日志;
Kibana: web化接口用作查寻和可视化日志;
Logstash Forwarder: logstash client端用来通过lumberjack 网络协议发送日志到logstash server;
你好,查看服务器日志以Linux举例的话可通过以下方式查看:
1进入日志文件所在的文件目录,比如:cd /opt/tomcat7/logs
2通过命令打开日志,分析需求场景打开需要的日志。比如:tail -f catalinaout
3常用命令一:tail比如:tail -f testlog (循环查看文件内容)
4按照行号查询:cat(过滤出关键字附近的日志)cat -n testlog |grep "订单号" 然后使用 head -n 20 查看查询结果里的向前20条记录。
5按照时间日期查询,(查询出一段时间内的记录)sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p' testlog
syslog服务器可以用作一个网络中的日志监控中心,rsyslog是一个开源工具,进一步分析数据,被广泛用于Linux系统以通过TCP/UDP协议转发或接收日志消息。本文我们来讲讲在 Linux 上配置一个 syslog 服务器,还有CentOS上配置rsyslog客户端用以远程记录日志。
rsyslog 作为标准的syslog守护进程,预装在了大多数的Linux发行版中。
在客户端/服务器架构的配置下,rsyslog同时扮演了两种角色:
1作为一个syslog服务器,rsyslog可以收集来自其他设施的日志信息;
2作为一个syslog客户端,rsyslog可以将其内部的日志信息传输到远程的syslog服务器。
在此,我们演示了在linux上如何通过rsyslog来配置一个中心化syslog服务器。 在进入详解之前,先温习一下syslog标准。
rsyslog是一个开源工具,被广泛用于Linux系统以通过TCP/UDP协议转发或接收日志消息。rsyslog守护进程可以被配置成两种环境,一种是配置成日志收集服务器,rsyslog进程可以从网络中收集其它主机上的日志数据,这些主机会将日志配置为发送到另外的远程服务器。
rsyslog的另外一个用法,就是可以配置为客户端,用来过滤和发送内部日志消息到本地文件夹(如/var/log)或一台可以路由到的远程rsyslog服务器上,进一步分析数据。
假定你的网络中已经有一台已经配置好并启动的rsyslog服务器,本指南将为你展示如何来设置CentOS系统将其内部日志消息路由到一台远程rsyslog服务器上进一步分析数据。这将大大改善你的系统磁盘空间的使用,尤其是当你还没有一个用于/var目录的独立的大分区。
0条评论