linux防止攻击

1.防止SYN Flooding的DoS攻击

proc/sys/net/ipv4/tcp_syncookies 所谓的阻断式服务(DoS)攻击法中的一种方式,就是利用tcp数据包SYN的3次握手原理实现的,这种方式称为SYN Flooding,如何预防这种方式的攻击,我们可以启用内核的SYN Cookie模块。

这个SYN Cookie模块可以在系统用来启动随机联机的端口(1024:65535)即将用完时自动启动 当启动SYN Cookie时,主机在发送SYN/ACK确认数据包前,会要求Client端在短时间内回复一个序号,这个序号包含许多原SYN数据包内的信息,包括IP、port等,若Client端可以回复正确的序号。

那么主机就确定该数据包为可信的,因此会发送SYN/ACK数据包,否则就不理会此数据包 通过此机制可以大大降低无效的SYN等待端口。

避免SYN Flooding的DoS攻击:# echo "1" > /proc/sys/net/ipv4/tcp_syncookies 这个设置值由于违反了TCP的3次握手(因为主机在发送SYN/ACK之前需要先等待Client的序号响应)所以可能会造成某些服务的延迟现象,例如SMTP(mail server),不过总的来说,这个设置还是不错的,只是不适合用在负载已经很高的服务器内,因为负载太高的主机有时会让内核误判遭受SYN Flooding攻击内核取消ping响应的设置有个:/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts和/proc/sys/net/ipv4/icmp_echo_ignore_all

2.cc攻击分析

第一 先学习一下tcp ip协议

1、连接建立阶段的三次握手 一般情况下,客户端连到服务器叫做主动打开,服务器上的端口监听叫做被动打开

a、准备,服务器进程被动打开端口

b、第一次:客户发送SYN报文,主动打开连接。这个报文中的序号叫做ISN(初始序号),是随机产生的。(SYN报文不带数据,但是消耗一个序号)

c、第二次:服务器收到后,发送SYN+ACK报文。

d、第三次:客户段收到后,发送ACK报文进行确认。

2、连接正常终止的三次握手协议:(以客户主动关闭为例)

a、客户:发送FIN,主动关闭

b、服务器:发送FIN+ACK(当然可以加最后一块报文)

c、客户:发ACK确认

3、半关闭与四次握手: 半关闭:一方虽然关闭了发送数据,但还是可以接收数据

a、客户:发送FIN

b、服务器:发ACK,同时通知应用进程

c、服务器继续传数据 d、服务器发FIN e、客户发ACK

4、连接复位与RST标记:在一端的TCP可以请求拒绝一个连接,或者 异常终止一条连接 或者 终止一条空闲连接时候,这些都可以用RST标记位完成。

5、状态转移(有限状态机制)

(1)、正常流程的状态转移:(C表示客户端,S表示服务器,+表示接收,-表示发送) C: CLOSED--(-SYN)-->SYN-SEND--(+"SYN+ACK", -ACK)-->ESTABLISHED--(-FIN)--> FIN-WAIT-1--(+ACK)-->FIN-WAIT-2--(+FIN, -ACK)-->TIME_WAIT--(2MSL之后)-->CLOSED S: CLOSED--(被动打开)-->LISTEN--(+SYN, -"SYN+ACK")-->SYN-RCVD--(+ACK)-->ESTABLISHED--(+FIN, -ACK)-->CLOSE-WAIT--(-FIN)-->LAST-ACK--(+ACK)-->CLOSED 其中,CLOSE-WAIT表示收到第一个FIN,发送了ACK,等应用进程关闭

(2)、拒绝连接时的状态转移: C: CLOSED--(-SYN)-->SYN-SEND--(+"RST+ACK")-->CLOSED S: CLOSED--(被动打开)-->LISTEN--(-"ACK+RST")-->SYN-RCVD--(过段时间)-->LISTEN (3)、异常终止时候的状态转移 C: ...ESTABLISHED--(-"ACK+RST")-->CLOSED S: ...ESTABLISHED--(+"ACK+RST")-->CLOSED 第二 分析一下cc攻击 CC攻击是实现DDoS其中一种方法。CC攻击的特点:业内有人将CC攻击称之为“Web杀手”,当web服务遭受到时候,见不到虚假IP,更特别的是见不到特别大的异常流量。而且与传统的ddos的实现方法相比,cc攻击只需一个普通用户的网络流量,就足以挂掉一台高性能的Web服务器。 通过命令行查看是否被攻击 当Web遭受CC攻击时,80端口将被大量的垃圾数据堵塞了,正常的连接被中止,最终导致拒绝对外提供服务。在命令行下输入命令netstat -an可查看当前的连接情况,如果看到大量类似如下的连接记录时,可以断定服务器正在遭受cc攻击。TCP 192.8.8.8:80 8.7.1.6:2205 SYN_RECEIVED 4 解释:“8.7.1.6”就是被用来代理攻击的主机的IP,“SYN_RECEIVED”表示TCP连接状态标志,表明无法建立握手应答处于等待状态。因为来自不同的代理IP的攻击,所以这样的记录一般都会有很多条,这是受到攻击的一个重要特征。

linux下优化内核来防止SYN洪水攻击   SYN洪水攻击(SYN Flooding Attack)即是指利用了 TCP/IP 三次握手协议的不完善而恶意发送大量仅仅包含 SYN 握手序列数据包的攻击方式。

该种攻击方式可能将导致被攻击计算机为了保持潜在连接在一定时间内大量占用系统资源无法释放而拒绝服务甚至崩溃。如果在Linux服务器下遭受SYN洪水攻击,可以进行如下一些设置:

#缩短SYN- Timeout时间:

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

iptables -A INPUT -i eth0 -m limit --limit 1/sec --limit-burst 5 -j ACCEPT

#每秒最多3个syn封包进入表达为 :

iptables -N syn-flood iptables -A INPUT -p tcp --syn -j syn-flood

iptables -A syn-flood -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j RETURN

iptables -A syn-flood -j REJECT

#设置syncookies:

sysctl -w net.ipv4.tcp_syncookies=1

sysctl -w net.ipv4.tcp_max_syn_backlog=3072

sysctl -w net.ipv4.tcp_synack_retries=0

sysctl -w net.ipv4.tcp_syn_retries=0

sysctl -w net.ipv4.conf.all.send_redirects=0

sysctl -w net.ipv4.conf.all.accept_redirects=0

sysctl -w net.ipv4.conf.all.forwarding=0

sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1

#防止PING:

sysctl -w net.ipv4.icmp_echo_ignore_all=1

#拦截具体IP范围:

iptables -A INPUT -s 10.0.0.0/8 -i eth0 -j DROP

时间: 2024-11-10 11:51:22

linux防止攻击的相关文章

解决linux ARP攻击

一.知识背景1.什么是arpARP,即地址解析协议,实现通过IP地址得知其物理地址.在TCP/IP网络环境下,每个主机都分配了一个32位的IP地址,这种互联网地址是在网际范 围标识主机的一种逻辑地址.为了让报文在物理网路上传送,必须知道对方目的主机的物理地址.这样就存在把IP地址变换成物理地址的地址转换问题.以以太网 环境为例,为了正确地向目的主机传送报文,必须把目的主机的32位IP地址转换成为48位以太网的地址.这就需要在互连层有一组服务将IP地址转换为相应 物理地址,这组协议就是ARP协议.

Linux CC攻击脚本

CC(ChallengeCollapsar)主要是用来攻击页面的.大家都有这样的经历,就是在访问论坛时,如果这个论坛比较大,访问的人比较多,打开页面的速度会比较慢,访问的人越多,论坛的页面越多,数据库就越大,被访问的频率也越高,占用的系统资源也就相当可观. 最近在做一些防CC的措施,想验证效果就的有类似CC的攻击,所以写了个Python脚本来模拟CC攻击,其原理很简单,就是去网络上拉取一下渣渣代理,然后通过代理去访问服务器,成本低的吓人,但影响却不小…代码如下(该脚本只能用于交流学习,一切因该脚

linux arp攻击解决方法 测试很有效

公司有台centos服务器中了arp攻击,严重影响业务,测试了很多方法都没解决,机房技术也没法处理. 通过下面方法,可以有效抵挡arp攻击. 1.环境 centos6.4 2.执行 arping -U -I em1 -s 113.105.1.20 113.105.1.1 说明: em1网卡的IP是113.105.1.20,113.105.1.1是网关地址,把上面命令放到rc.local 完成!

Linux服务器攻击防御(转)

攻击小贴士 如果你打算做一些搓事,那么你需要采取一些措施来保护自己.这是一切的前提,不然我会追杀你,并破坏你的生活. 我总结了几大忌(fuckups): 不要在honeypots执行操作.(在一切开始前多做观察) 实现一切自动化操作前,请先想出一套方法来识别出和避免honeypots 不要在组织/公司的网站上托管恶意软件 托管恶意软件的任何地方,千万别链入你的身份信息 看在上帝的份上,请为你的服务器加锁 不要在你的恶意软件上嵌入你的 Facebook 账户 防御小贴士 前端的管理界面请上锁 如果

kali linux 局域网攻击(一)

一.攻击准备 此为局域网攻击测试 1)查看自己的IP地址,记住默认网关 2)扫描局域网中的IP fping -asg 172.17.5.0/24 nbtscan -r 网关地址/24  3)使用arpspoof进行断网攻击 攻击前,先查看目标主机是否能联通互联网. 输入以下命令进行攻击测试 arpspoof -i 本机网卡 -t 目标ip 目标网关 例:arpspoof -i eth0 -t 172.17.5 192.168.147.2 如果不想断网攻击测试,先执行下边的操作,在输入攻击命令 打

linux系统服务器可能被攻击的几种攻击方式

linux系统随着Linux企业应用的扩展,有大量的网络服务器使用Linux操作系统.Linux服务器的安全性能受到越来越多的关注,这里根据Linux服务器受到攻击的深度以级别形式列出,并提出不同的解决方案. 对Linux服务器攻击的定义是:攻击是一种旨在妨碍.损害.削弱.破坏Linux服务器安全的未授权行为.攻击的范围可以从服务拒绝直至完全危害和破坏Linux服务器.对Linux服务器攻击有许多种类,本文从攻击深度的角度说明,我们把攻击分为四级. 攻击级别一:服务拒绝攻击(DoS) 由于DoS

通过 Linux 容器进行虚拟化

简介 Linux 容器是一种轻量级"虚拟化"方法,用于在单个控制主机上同时运行多个虚拟装置(容器).另一个可用来描述 Linux 容器所执行的操作的术语是"容器化". Linux 容器提供操作系统级别的虚拟化,其中的内核控制隔离的容器.容器通过内核控制组 (cgroup) 和内核命名空间进行隔离.通过 Xen 和 KVM 等其他完整虚拟化解决方案,虚拟化子系统可模拟完整的硬件环境. Apache Web 服务器就是一个 Linux 容器使用案例.通过 Xen 或 K

Linux -- 常见故障排除

目前Linux的擅长应用领域是:单一应用的基础服务器应用,譬如DNS.Web服务器.NFS服务器.防火墙.文件服务器.代理服务器.中小型数据库.Linux网络故障大多与服务器配置有关.下面我们介绍一下故障排除步骤. 一. Linux网络故障之网卡故障 Linux的网络实现是模仿FreeBSD的,它支持FreeBSD的带有扩展的Sockets(套接字)和TCP/IP协议.它支持两个主机间的网络连接和Sockets通讯模型,实现了两种类型的Sockets:BSD Sockets和INET Socke

《metasploit渗透测试魔鬼训练营》学习笔记第五章--网络服务渗透攻击

三.网络服务渗透攻击 3.1 内存攻防技术 3.1.1 缓冲区溢出漏洞机理 缓冲区溢出是程序由于缺乏对缓冲区的边界条件检查而引起的一种异常行为. 一般根据缓冲区溢出的内存位置不同,将缓冲区溢出分为栈溢出和堆溢出. 3.1.2 栈溢出利用原理 栈溢出发生在向栈中写数据时,当数据长度超过栈分配的空间时,就会造成溢出. ①覆盖函数返回地址利用方式 程序一般在执行函数时会把该函数返回地址和函数的调用参数,局部变量一起保存在栈中,这就给了攻击者溢出栈缓冲区从而达到修改函数返回地址的机会. 由于程序每次运行