如何在Linux上使用netstat命令查证DDOS攻击
服务器出现缓慢的状况可能由很多事情导致,比如错误的配置,脚本和差的硬件。但是有时候它可能因为有人对你的服务器用DoS或者DDoS进行洪水攻击。
如何在Linux上使用netstat命令查证DDOS攻击
DoS攻击或者DDoS攻击是试图让机器或者 *** 资源不可用的攻击。这种攻击的攻击目标网站或者服务通常是托管在高防服务器比如银行,信用卡支付网管,甚至根域名服务器,DOS攻击的实施通常迫使目标重启计算机或者消耗资源,使他们不再提供服务或者妨碍用户,访客访问。
在这篇小文章中,你可以知道在受到攻击之后如何在终端中使用netstat命令检查你的服务器。
一些例子和解释
netstat -na显示所有连接到服务器的活跃的 *** 连接netstat -an | grep :80 | sort只显示连接到80段口的活跃的 *** 连接,80是http端口,这对于web服务器非常有用,并且对结果排序.对于你从许多的连接中找出单个发动洪水攻击IP非常有用netstat -n -p|grep SYN_REC | wc -l这个命令对于在服务器上找出活跃的SYNC_REC非常有用,数量应该很低,更好少于5.在dos攻击和邮件炸弹,这个数字可能非常高.然而值通常依赖于系统,所以高的值可能平分给另外的服务器.netstat -n -p | grep SYN_REC | sort -u列出所有包含的IP地址而不仅仅是计数.netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'列出所有不同的IP地址节点发送SYN_REC的连接状态netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n使用netstat命令来计算每个IP地址对服务器的连接数量netstat -anp |grep 'tcp|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n列出使用tcp和udp连接到服务器的数目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: -f 1|sort|uniq -c|sort -nk 1显示并且列出连接到80端口IP地址和连接数.80被用来作为HTTP
如何缓解DDoS攻击
当你发现攻击你服务器的IP你可以使用下面的命令来关闭他们的连接:
iptables -A INPUT 1 -s $IPADRESS -j DROP/REJECT
请注意你必须用你使用netstat命令找到的IP数替换$IPADRESS
在完成以上的命令,使用下面的命令杀掉所有httpd连接,清除你的系统,然后重启httpd服务。
killall -KILL httpd service httpd start #For Red Hat systems /etc/init/d/apache2 restar
Linux系统用netstat命令查看DDOS攻击具体命令用法如下:
代码如下:netstat -na
显示所有连接到服务器的活跃的 *** 连接
代码如下:netstat -an | grep :80 | sort
只显示连接到80段口的活跃的 *** 连接,80是http端口,这对于web服务器非常有用,并且对结果排序.对于你从许多的连接中找出单个发动洪水攻击IP非常有用
代码如下:netstat -n -p|grep SYN_REC | wc -l
这个命令对于在服务器上找出活跃的SYNC_REC非常有用,数量应该很低,更好少于5.
在dos攻击和邮件炸弹,这个数字可能非常高.然而值通常依赖于系统,所以高的值可能平分给另外的服务器.
代码如下:netstat -n -p | grep SYN_REC | sort -u
列出所有包含的IP地址而不仅仅是计数.
代码如下:netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'
列出所有不同的IP地址节点发送SYN_REC的连接状态
代码如下:netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
使用netstat命令来计算每个IP地址对服务器的连接数量
代码如下:netstat -anp |grep 'tcp|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
列出使用tcp和udp连接到服务器的数目
代码如下: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: -f 1|sort|uniq -c|sort -nk 1
显示并且列出连接到80端口IP地址和连接数.80被用来作为HTTP
如何缓解ddos攻击
当你发现攻击你服务器的IP你可以使用下面的命令来关闭他们的连接:
代码如下:iptables -A INPUT 1 -s $IPADRESS -j DROP/REJECT
请注意你必须用你使用netstat命令找到的IP数替换$IPADRESS
如何防范Linux操作系统下缓冲区溢出攻击 黑客武林
虽然Linux病毒屈指可数,但是基于缓冲区溢出(BufferOverflow)漏洞的攻击还是让众多Linux用户大吃一惊。所谓“世界上之一个Linux病毒”??reman,严格地说并不是真正的病毒,它实质上是一个古老的、在Linux/Unix(也包括Windows等系统)世界中早已存在的“缓冲区溢出”攻击程序。reman只是一个非常普通的、自动化了的缓冲区溢出程序,但即便如此,也已经在Linux界引起很大的恐慌。
缓冲区溢出漏洞是一个困扰了安全专家30多年的难题。简单来说,它是由于编程机制而导致的、在软件中出现的内存错误。这样的内存错误使得黑客可以运行一段恶意代码来破坏系统正常地运行,甚至获得整个系统的控制权。
Linux系统特性
利用缓冲区溢出改写相关内存的内容及函数的返回地址,从而改变代码的执行流程,仅能在一定权限范围内有效。因为进程的运行与当前用户的登录权限和身份有关,仅仅能够制造缓冲区溢出是无法突破系统对当前用户的权限设置的。因此尽管可以利用缓冲区溢出使某一程序去执行其它被指定的代码,但被执行的代码只具有特定的权限,还是无法完成超越权限的任务。
但是,Linux(包括Unix)系统本身的一些特性却可以被利用来冲破这种权限的局限性,使得能够利用缓冲区溢出获得更高的、甚至是完全的权限。主要体现在如下两方面:
1.Linux(包括Unix)系统通过设置某可执行文件的属性为SUID或SGID,允许其它用户以该可执行文件拥有者的用户ID或用户组ID来执行它。如果该可执行文件的属性是root,同时文件属性被设置为SUID,则该可执行文件就存在可利用的缓冲区溢出漏洞,可以利用它以root的身份执行特定的、被另外安排的代码。既然能够使得一个具有root权限的代码得以执行,就能够产生一个具有超级用户root权限的Shell,那么掌握整个系统的控制权的危险就产生了。
2.Linux(包括Unix)中的许多守护进程都是以root权限运行。如果这些程序存在可利用的缓冲区溢出,即可直接使它以root身份去执行另外安排的代码,而无须修改该程序的SUID或SGID属性。这样获得系统的控制权将更加容易。
随着现代 *** 技术的发展和 *** 应用的深入,计算机 *** 所提供的远程登录机制、远程调用及执行机制是必须的。这使得一个匿名的Internet用户有机会利用缓冲区溢出漏洞来获得某个系统的部分或全部控制权。实际上,以缓冲区溢出漏洞为攻击手段的攻击占了远程 *** 攻击中的绝大多数,这给Linux系统带来了极其严重的安全威胁。
途径分析
通常情况下攻击者会先攻击root程序,然后利用缓冲区溢出时发生的内存错误来执行类似“exec(sh)”的代码,从而获得root的一个Shell。为了获得root权限的Shell,攻击者需要完成如下的工作:
1.在程序的地址空间内安排适当的特定代码。一般使用如下两种 *** 在被攻击的程序地址空间内安排攻击代码。
2.通过适当地初始化寄存器和存储器,使程序在发生缓冲区溢出时不能回到原来的执行处,而是跳转到被安排的地址空间执行。
当攻击者找到一种途径可以变原程序的执行代码和流程时,攻击的危险就产生了。
共2页: 1 [2]
内容导航
第 1 页:Linux系统特性
防范措施
Linux下的缓冲区溢出攻击威胁既来自于软件的编写机制,也来自于Linux(和Unix)系统本身的特性。实际上,缓冲区溢出攻击及各种计算机病毒猖獗的根本原因在于现代计算机系统都是采用冯?诺依曼“存储程序”的工作原理。这一基本原理使得程序和数据都可以在内存中被繁殖、拷贝和执行。因此,要想有效地防范缓冲区溢出攻击就应该从这两个方面双管其下。
确保代码正确安全
缓冲区溢出攻击的根源在于编写程序的机制。因此,防范缓冲区溢出漏洞首先应该确保在Linux系统上运行的程序(包括系统软件和应用软件)代码的正确性,避免程序中有不检查变量、缓冲区大小及边界等情况存在。比如,使用grep工具搜索源代码中容易产生漏洞的库调用,检测变量的大小、数组的边界、对指针变量进行保护,以及使用具有边界、大小检测功能的C编译器等。
基于一定的安全策略设置系统
攻击者攻击某一个Linux系统,必须事先通过某些途径对要攻击的系统做必要的了解,如版本信息等,然后再利用系统的某些设置直接或间接地获取控制权。因此,防范缓冲区溢出攻击的第二个方面就是对系统设置实施有效的安全策略。这些策略种类很多,由于篇幅有限只列举几个典型措施:
(1)在装有Telnet服务的情况下,通过手工改写“/etc/inetd.conf”文件中的Telnet设置,使得远程登录的用户无法看到系统的提示信息。具体 *** 是将Telnet设置改写为:
telnet stream tcp nowait root /usr/ *** in/tcpd/in.telnetd -h
末尾加上“-h”参数可以让守护进程不显示任何系统信息,只显示登录提示。
(2)改写“rc.local”文件。默认情况下,当登录Linux系统时系统运行rc.local文件,显示该Linux发行版本的名字、版本号、内核版本和服务器名称等信息,这使得大量系统信息被泄露。将“rc.local”文件中显示这些信息的代码注释掉,可以使系统不显示这些信息。
一种 *** 是在显示这-些信息的代码行前加“#”:
……# echo “”/etc/issue# echo “$R”/etc/issue#echo”Kernel $ (uname -r)on $a $(uname -m)”/etc/issue##echo/etc/issue……
另一种 *** 是将保存有系统信息的文件/etc/issue.net和issue删除。这两个文件分别用于在远程登录和本地登录时向用户提供相关信息。删除这两个文件的同时,仍需要完成 *** 一中的注释工作,否则,系统在启动时将会自动重新生成这两个文件。
(3)禁止提供finger服务。在Linux系统中,使用finger命令可以显示本地或远程系统中目前已登录用户的详细信息。禁止提供finger服务的有效 *** 是,通过修改该文件属性、权限(改为600)使得只有root用户才可以执行该命令。
(4)处理“inetd.conf”文件。Linux系统通过inetd(超级服务器)程序根据 *** 请求装入 *** 程序。该程序通过“/etc/inetd.conf”文件获得inetd在监听哪些 *** 端口,为每个端口启动哪些特定服务等信息。因此,该文件同样会泄露大量的敏感信息。解决问题的 *** 是,通过将其权限改为600只允许root用户访问,并通过改写“/etc/inetd.conf”文件将不需要的服务程序禁止掉,最后修改该文件的属性使其不能被修改。
总结
缓冲区溢出攻击之所以能成为一种常见的攻击手段,其原因在于缓冲区溢出漏洞太普遍,且易于实现攻击,因此缓冲区溢出问题一直是个难题。
所幸的是,OpenBSD开发组为解决这一安全难题采用了三种新的有效策略。相信不久的将来,Linux用户可以不再为缓冲区溢出攻击而寝食难安了。
RAR文件在Linux下用起来
要在Linux下处理.rar文件,需要安装RARforLinux。该软件可以从网上下载,但要记住,它不是免费的。大家可从下载RARforLinux 3.2.0,然后用下面的命令安装:
# tar -xzpvf rarlinux-3.2.0.tar.gz
# cd rar
# make
安装后就有了rar和unrar这两个程序,rar是压缩程序,unrar是解压程序。它们的参数选项很多,这里只做简单介绍,依旧举例说明一下其用法:
# rar a all *.mp3
这条命令是将所有.mp3的文件压缩成一个rar包,名为all.rar,该程序会将.rar 扩展名将自动附加到包名后。
# unrar e all.rar
这条命令是将all.rar中的所有文件解压出来。
Windows/Linux服务器,可以如何开展针对服务器的攻击,对应的防御策略是什么?
系统版本漏洞修复,系统防火墙,权限设置最小,外部 *** 安全设备一起配合。
关注Linux前沿技术《Linux就该这么学》《Linux命令》
如何确保Linux系统安全性?
但由于该操作系统是一个多用户操作系统,黑客们为了在攻击中隐藏自己,往往会选择 Linux作为首先攻击的对象。那么,作为一名Linux用户,我们该如何通过合理的 *** 来防范Linux的安全呢?下面笔者搜集和整理了一些防范 Linux安全的几则措施,现在把它们贡献出来,恳请各位网友能不断补充和完善。 1、禁止使用Ping命令Ping命令是计算机之间进行相互检测线路完好的一个应用程序,计算机间交流数据的传输没有 经过任何的加密处理,因此我们在用ping命令来检测某一个服务器时,可能在因特网上存在某个非法分子,通过专门的黑客程序把在 *** 线路上传输的信息中途 窃取,并利用偷盗过来的信息对指定的服务器或者系统进行攻击,为此我们有必要在Linux系统中禁止使用Linux命令。在Linux里,如果要想使 ping没反应也就是用来忽略icmp包,因此我们可以在Linux的命令行中输入如下命令: echo 1 /proc/sys/net/ipv4/icmp_echo_igore_all 如果想恢复使用ping命令,就可以输入 echo 0 /proc/sys/net/ipv4/icmp_echo_igore_all2、注意对系统及时备份为了防止系统在使用的过程中发生以外情况而难以正常运行,我们应该对Linux完好的系统进 行备份,更好是在一完成Linux系统的安装任务后就对整个系统进行备份,以后可以根据这个备份来验证系统的完整性,这样就可以发现系统文件是否被非法修 改过。如果发生系统文件已经被破坏的情况,也可以使用系统备份来恢复到正常的状态。备份信息时,我们可以把完好的系统信息备份在CD-ROM光盘上,以后 可以定期将系统与光盘内容进行比较以验证系统的完整性是否遭到破坏。如果对安全级别的要求特别高,那么可以将光盘设置为可启动的并且将验证工作作为系统启 动过程的一部分。这样只要可以通过光盘启动,就说明系统尚未被破坏过。 3、改进登录服务器将系统的登录服务器移到一个单独的机器中会增加系统的安全级别,使用一个更安全的登录服务器 来取代Linux自身的登录工具也可以进一步提高安全。在大的Linux *** 中,更好使用一个单独的登录服务器用于syslog服务。它必须是一个能够满 足所有系统登录需求并且拥有足够的磁盘空间的服务器系统,在这个系统上应该没有其它的服务运行。更安全的登录服务器会大大削弱入侵者透过登录系统窜改日志 文件的能力。 4、取消Root命令历史记录在Linux下,系统会自动记录用户输入过的命令,而root用户发出的命令往往具有敏感的 信息,为了保证安全性,一般应该不记录或者少记录root的命令历史记录。为了设置系统不记录每个人执行过的命令,我们可以在Linux的命令行下,首先 用cd命令进入到/etc命令,然后用编辑命令来打开该目录下面的profile文件,并在其中输入如下内容: HISTFILESIZE=0
HISTSIZE=0当然,我们也可以直接在命令行中输入如下命令: ln -s /dev/null ~/.bash_history5、为关键分区建立只读属性Linux的文件系统可以分成几个主要的分区,每个分区分别进行不同的配置和安装,一般情况 下至少要建立/、/usr/local、/var和/home等分区。/usr可以安装成只读并且可以被认为是不可修改的。如果/usr中有任何文件发生 了改变,那么系统将立即发出安全报警。当然这不包括用户自己改变/usr中的内容。/lib、/boot和/ *** in的安装和设置也一样。在安装时应该尽 量将它们设置为只读,并且对它们的文件、目录和属性进行的任何修改都会导致系统报警。 当然将所有主要的分区都设置为只读是不可能的,有的分区如/var等,其自身的性质就决定了不能将它们设置为只读,但应该不允许它具有执行权限。 6、杀掉攻击者的所有进程假设我们从系统的日志文件中发现了一个用户从我们未知的主机登录,而且我们确定该用户在这台 主机上没有相应的帐号,这表明此时我们正在受到攻击。为了保证系统的安全被进一步破坏,我们应该马上锁住指定的帐号,如果攻击者已经登录到指定的系统,我 们应该马上断开主机与 *** 的物理连接。如有可能,我们还要进一步查看此用户的历史记录,再仔细查看一下其他用户是否也已经被假冒,攻击者是否拥有有限权 限;最后应该杀掉此用户的所有进程,并把此主机的IP地址掩码加入到文件hosts.deny中。 7、改进系统内部安全机制我们可以通过改进Linux操作系统的内部功能来防止缓冲区溢出,从而达到增强Linux系 统内部安全机制的目的,大大提高了整个系统的安全性。但缓冲区溢出实施起来是相当困难的,因为入侵者必须能够判断潜在的缓冲区溢出何时会出现以及它在内存 中的什么位置出现。缓冲区溢出预防起来也十分困难,系统管理员必须完全去掉缓冲区溢出存在的条件才能防止这种方式的攻击。正因为如此,许多人甚至包括 Linux Torvalds本人也认为这个安全Linux补丁十分重要,因为它防止了所有使用缓冲区溢出的攻击。但是需要引起注意的是,这些补丁也会导致对执行栈的 某些程序和库的依赖问题,这些问题也给系统管理员带来的新的挑战。 8、对系统进行跟踪记录为了能密切地监视黑客的攻击活动,我们应该启动日志文件,来记录系统的运行情况,当黑客在攻 击系统时,它的蛛丝马迹都会被记录在日志文件中的,因此有许多黑客在开始攻击系统时,往往首先通过修改系统的日志文件,来隐藏自己的行踪,为此我们必须限 制对/var/log文件的访问,禁止一般权限的用户去查看日志文件。当然,系统中内置的日志管理程序功能可能不是太强,我们应该采用专门的日志程序,来 观察那些可疑的多次连接尝试。另外,我们还要小心保护好具有根权限的密码和用户,因为黑客一旦知道了这些具有根权限的帐号后,他们就可以修改日志文件来隐 藏其踪迹了。 9、使用专用程序来防范安全有时,我们通过人工的 *** 来监视系统的安全比较麻烦,或者是不周密,因此我们还可以通过专业 程序来防范系统的安全,目前最典型的 *** 为设置陷井和设置蜜罐两种 *** 。所谓陷井就是激活时能够触发报警事件的软件,而蜜罐(honey pot)程序是指设计来引诱有入侵企图者触发专门的报警的陷井程序。通过设置陷井和蜜罐程序,一旦出现入侵事件系统可以很快发出报警。在许多大的 *** 中, 一般都设计有专门的陷井程序。陷井程序一般分为两种:一种是只发现入侵者而不对其采取报复行动,另一种是同时采取报复行动。 10、将入侵消灭在萌芽状态入侵者进行攻击之前最常做的一件事情就是端号扫瞄,如果能够及时发现和阻止入侵者的端号扫瞄 行为,那么可以大大减少入侵事件的发生率。反应系统可以是一个简单的状态检查包过滤器,也可以是一个复杂的入侵检测系统或可配置的防火墙。我们可以采用诸 如Abacus Port Sentry这样专业的工具,来监视 *** 接口并且与防火墙交互操作,最终达到关闭端口扫瞄攻击的目的。当发生正在进行的端口扫瞄时,Abacus Sentry可以迅速阻止它继续执行。但是如果配置不当,它也可能允许敌意的外部者在你的系统中安装拒绝服务攻击。正确地使用这个软件将能够有效地防止对 端号大量的并行扫瞄并且阻止所有这样的入侵者。 11、严格管理好口令前面我们也曾经说到过,黑客一旦获取具有根权限的帐号时,就可以对系统进行任意的破坏和攻 击,因此我们必须保护好系统的操作口令。通常用户的口令是保存在文件/etc/passwd文件中的,尽管/etc/passwd是一个经过加密的文件, 但黑客们可以通过许多专用的搜索 *** 来查找口令,如果我们的口令选择不当,就很容易被黑客搜索到。因此,我们一定要选择一个确保不容易被搜索的口令。另外,我们更好能安装一个口令过滤工具,并借用该工具来帮助自己检查设置的口令是否耐得住攻击。
如何看Linux服务器是否被攻击
以下几种 *** 检测linux服务器是否被攻击:
1、检查系统密码文件
首先从明显的入手,查看一下passwd文件,ls –l /etc/passwd查看文件修改的日期。
2、查看一下进程,看看有没有奇怪的进程
重点查看进程:ps –aef | grep inetd inetd是UNIX系统的守护进程,正常的inetd的pid都比较靠前,如果看到输出了一个类似inetd –s
/tmp/.xxx之类的进程,着重看inetd
–s后面的内容。在正常情况下,LINUX系统中的inetd服务后面是没有-s参数的,当然也没有用inetd去启动某个文件;而solaris系统中
也仅仅是inetd
–s,同样没有用inetd去启动某个特定的文件;如果使用ps命令看到inetd启动了某个文件,而自己又没有用inetd启动这个文件,那就说明已经有人入侵了系统,并且以root权限起了一个简单的后门。
linux服务器被攻击如何进行抓包来进行分析
用途
tcpdump简义:dump the traffic on a network,根据使用者的定义对 *** 上的数据包进行截获的包分析工具。
tcpdump可以将 *** 中传送的数据包的“头”完全截获下来提供分析。它支持针对 *** 层、协议、主机、 *** 或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
语法
tcpdump [-adeflnNOpqStvx][-c数据包数目][-dd][-ddd][-F表达文件][-i *** 界面]
[-r数据包文件][-s数据包大小][-tt][-T数据包类型][-vv][-w数据包文件][输出数据栏位]
参数说明:
-a 尝试将 *** 和广播地址转换成名称。
-c数据包数目 收到指定的数据包数目后,就停止进行倾倒操作。
-d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
-dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
-ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
-e 在每列倾倒资料上显示连接层级的文件头。
-f 用数字显示网际 *** 地址。
-F表达文件 指定内含表达方式的文件。
-i *** 界面 使用指定的 *** 截面送出数据包。
-l 使用标准输出列的缓冲区。
-n 不把主机的 *** 地址转换成名字。
-N 不列出域名。
-O 不将数据包编码更佳化。
-p 不让 *** 界面进入混杂模式。
-q 快速输出,仅列出少数的传输协议信息。
-r数据包文件 从指定的文件读取数据包数据。
-s数据包大小 设置每个数据包的大小。
-S 用绝对而非相对数值列出TCP关联数。
-t 在每列倾倒资料上不显示时间戳记。
-tt 在每列倾倒资料上显示未经格式化的时间戳记。
-T数据包类型 强制将表达方式所指定的数据包转译成设置的数据包类型。
-v 详细显示指令执行过程。
-vv 更详细显示指令执行过程。
-x 用十六进制字码列出数据包资料。
-w数据包文件 把数据包数据写入指定的文件。
案例
tcpdump -s 0 -i eth1 -w 94ip.cap
注:监听 ETH1网站 保存文件为94ip.cap
网云互联()是一家从事服务器安全防护、入侵检测、服务器代维等为一体的公司,免费服务器安全检测,并有24小时在线运维工程师为您服务。
0条大神的评论