linux防御?Linux杀毒软件
如何防御针对Linux服务器的攻击
引:随着Linux企业应用的扩展,有大量的网络服务器使用Linux操作系统。Linux服务器的安全性能受到越来越多的关注,这里根据Linux服务器受到攻击的深度以级别形式列出,并提出不同的解决方案。
随着Linux企业应用的扩展,有大量的网络服务器使用Linux操作系统。Linux服务器的安全性能受到越来越多的关注,这里根据Linux服务器受到攻击的深度以级别形式列出,并提出不同的解决方案。
对Linux服务器攻击的定义是:攻击是一种旨在妨碍、损害、削弱、破坏Linux服务器安全的未授权行为。攻击的范围可以从服务拒绝直至完全危害和破坏Linux服务器。对Linux服务器攻击有许多种类,本文从攻击深度的角度说明,我们把攻击分为四级。
攻击级别一:服务拒绝攻击(DoS)
由于DoS攻击工具的泛滥,及所针对的协议层的缺陷短时无法改变的事实,DoS也就成为了流传最广、最难防范的攻击方式。
服务拒绝攻击包括分布式拒绝服务攻击、反射式分布拒绝服务攻击、DNS分布拒绝服务攻击、FTP攻击等。大多数服务拒绝攻击导致相对低级的危险,即便是那些可能导致系统重启的攻击也仅仅是暂时性的问题。这类攻击在很大程度上不同于那些想获取网络控制的攻击,一般不会对数据安全有影响,但是服务拒绝攻击会持续很长一段时间,非常难缠。
到目前为止,没有一个绝对的方法可以制止这类攻击。但这并不表明我们就应束手就擒,除了强调个人主机加强保护不被利用的重要性外,加强对服务器的管理是非常重要的一环。一定要安装验证软件和过滤功能,检验该报文的源地址的真实地址。另外对于几种服务拒绝可以采用以下措施:关闭不必要的服务、限制同时打开的Syn半连接数目、缩短Syn半连接的time out时间、及时更新系统补丁。
攻击级别二:本地用户获取了他们非授权的文件的读写权限
本地用户是指在本地网络的任一台机器上有口令、因而在某一驱动器上有一个目录的用户。本地用户获取到了他们非授权的文件的读写权限的问题是否构成危险很大程度上要看被访问文件的关键性。任何本地用户随意访问临时文件目录(/tmp)都具有危险性,它能够潜在地铺设一条通向下一级别攻击的路径。
级别二的主要攻击方法是:黑客诱骗合法用户告知其机密信息或执行任务,有时黑客会假装网络管理人员向用户发送邮件,要求用户给他系统升级的密码。
由本地用户启动的攻击几乎都是从远程登录开始。对于Linux服务器,最好的办法是将所有shell账号放置于一个单独的机器上,也就是说,只在一台或多台分配有shell访问的服务器上接受注册。这可以使日志管理、访问控制管理、释放协议和其他潜在的安全问题管理更容易些。还应该将存放用户cgI的系统区分出来。这些机器应该隔离在特定的网络区段,也就是说,根据网络的配置情况,它们应该被路由器或网络交换机包围。其拓扑结构应该确保硬件地址欺骗也不能超出这个区段。
攻击级别三:远程用户获得特权文件的读写权限
第三级别的攻击能做到的不只是核实特定文件是否存在,而且还能读写这些文件。造成这种情况的原因是:Linux服务器配置中出现这样一些弱点:即远程用户无需有效账号就可以在服务器上执行有限数量的命令。
密码攻击法是第三级别中的主要攻击法,损坏密码是最常见的攻击方法。密码破解是用以描述在使用或不使用工具的情况下渗透网络、系统或资源以解锁用密码保护的资源的一个术语。用户常常忽略他们的密码,密码政策很难得到实施。黑客有多种工具可以击败技术和社会所保护的密码。主要包括:字典攻击(Dictionary attack)、混合攻击(Hybrid attack)、蛮力攻击(Brute force attack)。一旦黑客拥有了用户的密码,他就有很多用户的特权。密码猜想是指手工进入普通密码或通过编好程序的正本取得密码。一些用户选择简单的密码—如生日、纪念日和配偶名字,却并不遵循应使用字母、数字混合使用的规则。对黑客来说要猜出一串8个字生日数据不用花多长时间。
防范第三级别的攻击的最好的防卫方法便是严格控制进入特权,即使用有效的密码。
◆主要包括密码应当遵循字母、数字、大小写(因为Linux对大小写是有区分)混合使用的规则。
◆使用象“#”或“%”或“"countbak"一词,它后面添加“##”
攻击级别四:远程用户获得根权限
第四攻击级别是指那些决不应该发生的事发生了,这是致命的攻击。表示攻击者拥有Linux服务器的根、超级用户或管理员许可权,可以读、写并执行所有文件。换句话说,攻击者具有对Linux服务器的全部控制权,可以在任何时刻都能够完全关闭甚至毁灭此网络。
攻击级别四主要攻击形式是TCP/IP连续偷窃,被动通道听取和信息包拦截。TCP/IP连续偷窃,被动通道听取和信息包拦截,是为进入网络收集重要信息的方法,不像拒绝服务攻击,这些方法有更多类似偷窃的性质,比较隐蔽不易被发现。一次成功的TCP/IP攻击能让黑客阻拦两个团体之间的交易,提供中间人袭击的良好机会,然后黑客会在不被受害者注意的情况下控制一方或双方的交易。通过被动窃听,黑客会操纵和登记信息,把文件送达,也会从目标系统上所有可通过的通道找到可通过的致命要害。黑客会寻找联机和密码的结合点,认出申请合法的通道。信息包拦截是指在目标系统约束一个活跃的听者程序以拦截和更改所有的或特别的信息的地址。信息可被改送到非法系统阅读,然后不加改变地送回给黑客。
TCP/IP连续偷窃实际就是网络嗅探,注意如果您确信有人接了嗅探器到自己的网络上,可以去找一些进行验证的工具。这种工具称为时域反射计量器(Time Domain Reflectometer,TDR)。TDR对电磁波的传播和变化进行测量。将一个TDR连接到网络上,能够检测到未授权的获取网络数据的设备。不过很多中小公司没有这种价格昂贵的工具。
对于防范嗅探器的攻击最好的方法是:
1、安全的拓扑结构。嗅探器只能在当前网络段上进行数据捕获。这就意味着,将网络分段工作进行得越细,嗅探器能够收集的信息就越少。
2、会话加密。不用特别地担心数据被嗅探,而是要想办法使得嗅探器不认识嗅探到的数据。这种方法的优点是明显的:即使攻击者嗅探到了数据,这些数据对他也是没有用的。
特别提示:应对攻击的反击措施
对于超过第二级别的攻击您就要特别注意了。因为它们可以不断的提升攻击级别,以渗透Linux服务器。此时,我们可以采取的反击措施有:
◆首先备份重要的企业关键数据。
◆改变系统中所有口令,通知用户找系统管理员得到新口令。
◆隔离该网络网段使攻击行为仅出现在一个小范围内。
◆允许行为继续进行。如有可能,不要急于把攻击者赶出系统,为下一步作准备。
◆记录所有行为,收集证据。这些证据包括:系统登录文件、应用登录文件、AAA(Authentication、Authorization、 Accounting,认证、授权、计费)登录文件,RADIUS(Remote Authentication Dial-In User Service)登录,网络单元登录(Network Element Logs)、防火墙登录、HIDS(Host-base IDS,基于主机的入侵检测系统)事件、NIDS(网络入侵检测系统)事件、磁盘驱动器、隐含文件等。收集证据时要注意:在移动或拆卸任何设备之前都要拍照;在调查中要遵循两人法则,在信息收集中要至少有两个人,以防止篡改信息;应记录所采取的所有步骤以及对配置设置的任何改变,要把这些记录保存在安全的地方。检查系统所有目录的存取许可,检测Permslist是否被修改过。
◆进行各种尝试(使用网络的不同部分)以识别出攻击源。
◆为了使用法律武器打击犯罪行为,必须保留证据,而形成证据需要时间。为了做到这一点,必须忍受攻击的冲击(虽然可以制定一些安全措施来确保攻击不损害网络)。对此情形,我们不但要采取一些法律手段,而且还要至少请一家有权威的安全公司协助阻止这种犯罪。这类操作的最重要特点就是取得犯罪的证据、并查找犯罪者的地址,提供所拥有的日志。对于所搜集到的证据,应进行有效地保存。在开始时制作两份,一个用于评估证据,另一个用于法律验证。
◆找到系统漏洞后设法堵住漏洞,并进行自我攻击测试。
网络安全已经不仅仅是技术问题,而是一个社会问题。企业应当提高对网络安全重视,如果一味地只依靠技术工具,那就会越来越被动;只有发挥社会和法律方面打击网络犯罪,才能更加有效。我国对于打击网络犯罪已经有了明确的司法解释,遗憾的是大多数企业只重视技术环节的作用而忽略法律、社会因素,这也是本文的写作目的。
linux防火墙如何防御DDOS攻击
抵御DDOS
DDOS,分布式拒绝访问攻击,是指黑客组织来自不同来源的许多主机,向常见的端口,如80,25等发送大量连接,但这些客户端只建立连接,不是正常访问。由于一般Apache配置的接受连接数有限(通常为256),这些“假”访问会把Apache占满,正常访问无法进行。
Linux提供了叫ipchains的防火墙工具,可以屏蔽来自特定IP或IP地址段的对特定端口的连接。使用ipchains抵御DDOS,就是首先通过netstat命令发现攻击来源地址,然后用ipchains命令阻断攻击。发现一个阻断一个。
***打开ipchains功能
首先查看ipchains服务是否设为自动启动:
chkconfig--list ipchains
输出一般为:
ipchains 0:off 1:off 2:on 3:on 4:on 5:on 6:off
如果345列为on,说明ipchains服务已经设为自动启动
如果没有,可以用命令:
chkconfig--add ipchains
将ipchains服务设为自动启动
其次,察看ipchains配置文件/etc/sysconfig/ipchains是否存在。如果这一文件不存在,ipchains
即使设为自动启动,也不会生效。缺省的ipchains配置文件内容如下:
# Firewall configuration written by lokkit
# Manual customization of this file is not recommended.
# Note: ifup-post will punch the current nameservers through the
# firewall; such entries will*not* be listed here.
:input ACCEPT
:forward ACCEPT
:output ACCEPT
-A input-s 0/0-d 0/0-i lo-j ACCEPT
# allow http,ftp,smtp,ssh,domain via tcp; domain via udp
-A input-p tcp-s 0/0-d 0/0 pop3-y-j ACCEPT
-A input-p tcp-s 0/0-d 0/0 http-y-j ACCEPT
-A input-p tcp-s 0/0-d 0/0 https-y-j ACCEPT
-A input-p tcp-s 0/0-d 0/0 ftp-y-j ACCEPT
-A input-p tcp-s 0/0-d 0/0 smtp-y-j ACCEPT
-A input-p tcp-s 0/0-d 0/0 ssh-y-j ACCEPT
-A input-p tcp-s 0/0-d 0/0 domain-y-j ACCEPT
-A input-p udp-s 0/0-d 0/0 domain-j ACCEPT
# deny icmp packet
#-A input-p icmp-s 0/0-d 0/0-j DENY
# default rules
-A input-p tcp-s 0/0-d 0/0 0:1023-y-j REJECT
-A input-p tcp-s 0/0-d 0/0 2049-y-j REJECT
-A input-p udp-s 0/0-d 0/0 0:1023-j REJECT
-A input-p udp-s 0/0-d 0/0 2049-j REJECT
-A input-p tcp-s 0/0-d 0/0 6000:6009-y-j REJECT
-A input-p tcp-s 0/0-d 0/0 7100-y-j REJECT
如果/etc/sysconfig/ipchains文件不存在,可以用上述内容创建之。创建之后,启动ipchains服:
/etc/init.d/ipchains start
***用netstat命令发现攻击来源
假如说黑客攻击的是Web 80端口,察看连接80端口的客户端IP和端口,命令如下:
netstat-an-t tcp| grep":80"| grep ESTABLISHED| awk'{printf"%s%s\n",$5,$6}'| sort
输出:
161.2.8.9:123 FIN_WAIT2
161.2.8.9:124 FIN_WAIT2
61.233.85.253:23656 FIN_WAIT2
...
第一栏是客户机IP和端口,第二栏是连接状态
如果来自同一IP的连接很多(超过50个),而且都是连续端口,就很可能是攻击。
如果只希望察看建立的连接,用命令:
netstat-an-t tcp| grep":80"| grep ESTABLISHED| awk'{printf"%s%s\n",$5,$6}'| sort
***用ipchains阻断攻击来源
用ipchains阻断攻击来源,有两种方法。一种是加入到/etc/sysconfig/ipchains里,然后重启动ipchains服务。另一种是直接用ipchains命令加。屏蔽之后,可能还需要重新启动被攻击的服务,是已经建立的攻击连接失效
*加入/etc/sysconfig/ipchains
假定要阻止的是218.202.8.151到80的连接,编辑/etc/sysconfig/ipchains文件,在:output ACCEPT
行下面加入:
-A input-s 218.202.8.151-d 0/0 http-y-j REJECT
保存修改,重新启动ipchains:
/etc/init.d/ipchains restart
如果要阻止的是218.202.8的整个网段,加入:
-A input-s 218.202.8.0/255.255.255.0-d 0/0 http-y-j REJECT
*直接用命令行
加入/etc/sysconfig/ipchains文件并重起ipchains的方法,比较慢,而且在ipchains重起的瞬间,可能会有部分连接钻进来。最方便的方法是直接用ipchains命令。
假定要阻止的是218.202.8.151到80的连接,命令:
ipchains-I input 1-p tcp-s 218.202.8.151-d 0/0 http-y-j REJECT
如果要阻止的是218.202.8的整个网段,命令:
ipchains-I input 1-p tcp-s 218.202.8.0/255.255.255.0-d 0/0 http-y-j REJECT
其中,-I的意思是插入,input是规则连,1是指加入到第一个。
您可以编辑一个shell脚本,更方便地做这件事,命令:
vi blockit
内容:
#!/bin/sh
if [!-z"$1" ]; then
echo"Blocking:$1"
ipchains-I input 1-p tcp-s"$1"-d 0/0 http-y-j REJECT
else
echo"which ip to block?"
fi
保存,然后:
chmod 700 blockit
使用方法:
./blockit 218.202.8.151
./blockit 218.202.8.0/255.255.255.0
上述命令行方法所建立的规则,在重起之后会失效,您可以用ipchains-save命令打印规则:
ipchains-save
输出:
:input ACCEPT
:forward ACCEPT
:output ACCEPT
Saving `input'.
-A input-s 0.0.0.0/0.0.0.0-d 0.0.0.0/0.0.0.0-i lo-j ACCEPT
-A input-s 0.0.0.0/0.0.0.0-d 0.0.0.0/0.0.0.0 110:110-p 6-j ACCEPT-y
-A input-s 0.0.0.0/0.0.0.0-d 0.0.0.0/0.0.0.0 80:80-p 6-j ACCEPT-y
-A input-s 0.0.0.0/0.0.0.0-d 0.0.0.0/0.0.0.0 22:22-p 6-j ACCEPT-y
-A input-s 0.0.0.0/0.0.0.0-d 0.0.0.0/0.0.0.0 88:88-p 6-j ACCEPT-y
-A input-s 0.0.0.0/0.0.0.0-d 0.0.0.0/0.0.0.0 89:89-p 6-j ACCEPT-y
-A input-s 0.0.0.0/0.0.0.0-d 0.0.0.0/0.0.0.0 90:90-p 6-j ACCEPT-y
-A input-s 0.0.0.0/0.0.0.0-d 0.0.0.0/0.0.0.0 91:91-p 6-j ACCEPT-y
-A input-s 0.0.0.0/0.0.0.0-d 0.0.0.0/0.0.0.0 8180:8180-p 6-j ACCEPT-y
-A input-s 0.0.0.0/0.0.0.0-d 0.0.0.0/0.0.0.0 443:443-p 6-j ACCEPT-y
-A input-s 0.0.0.0/0.0.0.0-d 0.0.0.0/0.0.0.0 21:21-p 6-j ACCEPT-y
-A input-s 0.0.0.0/0.0.0.0-d 0.0.0.0/0.0.0.0 25:25-p 6-j ACCEPT-y
-A input-s 0.0.0.0/0.0.0.0-d 0.0.0.0/0.0.0.0 22:22-p 6-j ACCEPT-y
-A input-s 0.0.0.0/0.0.0.0-d 0.0.0.0/0.0.0.0 53:53-p 6-j ACCEPT-y
-A input-s 0.0.0.0/0.0.0.0-d 0.0.0.0/0.0.0.0 9095:9095-p 6-j ACCEPT-y
-A input-s 0.0.0.0/0.0.0.0-d 0.0.0.0/0.0.0.0 8007:8007-p 6-j ACCEPT-y
-A input-s 0.0.0.0/0.0.0.0-d 0.0.0.0/0.0.0.0 53:53-p 17-j ACCEPT
-A input-s 0.0.0.0/0.0.0.0-d 0.0.0.0/0.0.0.0 0:1023-p 6-j REJECT-y
-A input-s 0.0.0.0/0.0.0.0-d 0.0.0.0/0.0.0.0 2049:2049-p 6-j REJECT-y
-A input-s 0.0.0.0/0.0.0.0-d 0.0.0.0/0.0.0.0 0:1023-p 17-j REJECT
-A input-s 0.0.0.0/0.0.0.0-d 0.0.0.0/0.0.0.0 2049:2049-p 17-j REJECT
-A input-s 0.0.0.0/0.0.0.0-d 0.0.0.0/0.0.0.0 6000:6009-p 6-j REJECT-y
-A input-s 0.0.0.0/0.0.0.0-d 0.0.0.0/0.0.0.0 7100:7100-p 6-j REJECT-y
您需要把其中的"Saving `input'."去掉,然后把其他内容保存到/etc/sysconfig/ipchains文件,这样,下次重起之后,建立的规则能够重新生效。
linux防火墙如何防御ARP攻击
windows下放arp攻击可以用金山ARP防火墙,把网关ip和MAC填上,然后选项里把安全模式的钩勾上就基本没什么问题。Linux没找到这么现成的东西,baidu google上找了一些方法,都自己试过一遍,不是非常管用。
进行arp攻击要做两件事情:
1、欺骗目标机器,攻击机器A告诉目标机器B:我是网关!
2、欺骗网关,攻击机器A告诉网关:我是B!
也就是A进行双向欺骗。
这样做以后目标机器B发给网关的数据包都让攻击机器A给没收了,没有发给网关,所以B就上不了网了。要让B能上网,A需要将从B收到的包转发给网关。(有时候开P2P终结这之类的软件的时候发现别人上不了网了,有时候是因为自己有一个NB的防火墙,有时侯是其他原因,从被控制的机器上发过来的包没有能转发给网关,所以。。。)
我在网上找了一些关于Linux怎么防arp攻击的文章,基本上有这么几种做法。
1、绑定IP-MAC。通过arp-s或者 arp-f。我就咬定哪个是网关了,你们谁说的话我都不信!
但是有个缺点,必须双向绑定IP-MAC,如果你无法控制路由器,不能在网关那里设置静态IP,这个方法就无效了。
2、既然控制不了网关,我只能告诉网关哪个才是真正的我了。向网关发送自己的IP和MAC。也就是告诉网关:我才是XXX。
(1)用arping,或者arpspoof(arpsniffer)。
命令:arping-U-I网卡接口-s源IP目标IP
由于命令里面没有指定网关的MAC,所以形同虚设,效果不好。
(2)用arpoison或者ARPSender,可以指定MAC,效果算是比较好,但有时候还是不行。
命令:arpoison-i网卡接口-d网关IP-s我的IP-t网关MAC-r我的MAC
参考了这篇文章:
我用Wireshark看了一下,发现虽然我指定了目标的MAC,但是我的机器依然会间歇性地往攻击机器发送我的IP和MAC,然后攻击机器利用我的MAC进行双向欺骗。
所以我想,有没有什么办法不让除了网关之外的其他人知道我的MAC呢?后来就找到了一下这篇文章。
文章地址:
文章内容:(因为原文地址访问非常慢所以在这里贴出来)
Linux/FreeBSD防止ARP欺骗的一种被动方法(隐藏MAC)
作者: Knight日期: 2008-11-17 14:15
文章作者:Helvin
信息来源:邪恶八进制信息安全团队(www.eviloctal.com)
首先对国内某些IDC不负责任的行为表示抗议
一般欺骗机器通过ARP Request获得网关的MAC,然后同样方法获得你服务器的MAC进行双向欺骗,然后sniffer密码,挂马之类。
国内几乎所有的IDC都是几百服务器公用一个网关的。然后上百个服务器总有几个有漏洞的,然后你就被ARP欺骗挂马或者抓密码了
下面介绍的是Linux利用arptables来防止ARP Request获得你的MAC。这样攻击者会认为你的服务器是不存在的(本来很复杂的,需要patch编译内核什么的,上周才发现还有一个 arptables,免编译内核,现在把方法写一下)
Debian/Ubuntu:(runas sudo)CentOS/RHAS叫arptables_jf
引用:
apt-get install arptables
arptables-A INPUT--src-mac!网关MAC-j DROP
arptables-A INPUT-s!网关IP-j DROP
如果你有本网的内网机器要互联,可以引用:
arptables-I INPUT--src-mac你的其他服务器MAC ACCEPT
如果你的MAC已经被欺骗机器拿到,那只能ifconfig ethx hw ether MAC来修改了
有一定的危险性,请酌情测试,你也可以疯狂刷新网关+本机ARP绑定,看具体需要
还要注意这个时候不要发出ARP Request到除网关以外的其他IP,其后果可能是被其他机器拿到MAC
补充一个FreeBSD下的隐藏MAC的方法
首先sysctl net.link.ether.ipfw=1开启IPFW ether层过滤功能(网桥模式要使用sysctl net.link.ether.bridge_ipfw=1)
然后
ipfw add 00005 allow ip from any to any MAC网关MAC any/*打开你到网关的通信*/
ipfw add 00006 allow ip from any to any MAC any网关MAC/*打开网关到你的通信*/
/*........中间你可以添加本网段内需要互联的IP地址MAC双向通信........*/
ipfw add 00010 deny ip from any to any MAC any any/*关闭所有其他MAC的任何响应*/
如果服务器作为内网网关使用,可以在内网网卡界面
ifconfig em1-arp/*关闭ARP响应(假设em0是内网网卡)*/
arp-f/etc/arp.list/*设置静态ARP表*/
以下是ARP(8)关于arp.list格式的描述,
Cause the file filename to be read and multiple entries to be set
in the ARP tables. Entries in the file should be of the form
hostname ether_addr [temp] [pub]
with argument meanings as given above. Leading whitespace and
empty lines are ignored. A `#' character will mark the rest of
the line as a comment.
我觉得可以把绑定IP-MAC+ arposion+ MAC隐藏的方法综合起来
转自