当前位置:首页 » 编程软件 » ipset更新list脚本

ipset更新list脚本

发布时间: 2023-04-29 19:46:26

① 防御DDoS攻击的几种好用的方式

随着Internet互联网络带宽的增加和多种DDoS黑客工具的不断发布,DDoS拒绝服务攻击的实施越来越容易,DDoS攻击事件正在成上升趋势。出于商业竞争、打击报复和网络敲诈等多种因素,导致很多IDC托管机房、商业站点、游戏服务器、聊天网络等网络服务商长期以来一直被DDoS攻击所困扰,随之而来的是客户投诉、同虚拟主机用户受牵连、法律纠纷、商业损失等一系列问题,因此,解决DDoS攻击问题成为网络服务商必须考虑的头等大事。
DDoS是英文Distributed Denial of Service的缩写,意即分布式拒绝服务,那么什么又是拒绝服务(Denial of Service)呢?可以这么理解,凡是能导致合法用户不能够访问正常网络服务的行为都算是拒绝服务攻击。也就是说拒绝服务攻击的目的非常明确,就是要阻止合法用户对正常网络资源的访问,从而达成攻击者不可告人的目的。
虽然同样是拒绝服务攻击,但是DDoS和DOS还是有所不同,DDoS的攻击策略侧重于通过很多僵尸主机(被攻击者入侵过或可间接利用的主机) 向受害主机发送大量看似合法的网络包,从而造成网络阻塞或服务器资源耗尽而导致拒绝服务,分布式拒绝服务攻击一旦被实施,攻击网络包就会犹如洪水般涌向受害主机,从而把合法用户的网络包淹没,导致合法用户无法正常访问服务器的网络资源,因此,拒绝服务攻击又被称之为洪水式攻击。
常见的DDoS攻击手段有SYN Flood、ACK Flood、UDP Flood、ICMP Flood、TCP Flood、Connections Flood、Script Flood、Proxy Flood等;而DOS则侧重于通过对主机特定漏洞的利用攻击导致网络栈失效、系统崩溃、主机死机而无法提供正常的网络服务功能,从而造成拒绝服务,常见的DOS攻击手段有TearDrop、Land、Jolt、IGMP Nuker、Boink、Smurf、Bonk、OOB等。就这两种拒绝服务攻击而言,危害较大的主要是DDoS攻击,原因是很难防范,至于DOS攻击,通过给主机服务器打补丁或安装防火墙软件就可以很好地防范,后文会详细介绍怎么对付DDoS攻击。三、被DDoS了吗?
DDoS的表现形式主要有两种,一种为流量攻击,主要是针对网络带宽的攻击,即大量攻击包导致网络带宽被阻塞,合法网络包被虚假的攻击包淹没而无法到达主机;另一种为资源耗尽攻击,主要是针对服务器主机的攻击,即通过大量攻击包导致主机的内存被耗尽或CPU被内核及应用程序占完而造成无法提供网络服务。
当然,这样测试的前提是你到服务器主机之间的ICMP协议没有被路由器和防火墙等设备屏蔽,否则可采取Telnet主机服务器的网络服务端口来测试,效果是一样的。不过有一点可以肯定,假如平时Ping你的主机服务器和接在同一交换机上的主机服务器都是正常的,突然都Ping不通了或者是严重丢包,那么假如可以排除网络故障因素的话则肯定是遭受了流量攻击,再一个流量攻击的典型现象是,一旦遭受流量攻击,会发现用远程终端连接网站服务器会失败。
相对于流量攻击而言,资源耗尽攻击要容易判断一些,假如平时Ping网站主机和访问网站都是正常的,发现突然网站访问非常缓慢或无法访问了,而 Ping还可以Ping通,则很可能遭受了资源耗尽攻击,此时若在服务器上用Netstat -na命令观察到有大量的SYN_RECEIVED、TIME_WAIT、FIN_WAIT_1等状态存在,而ESTABLISHED很少,则可判定肯定是遭受了资源耗尽攻击。
还有一种属于资源耗尽攻击的现象是,Ping自己的网站主机Ping不通或者是丢包严重,而Ping与自己的主机在同一交换机上的服务器则正常,造成这种原因是网站主机遭受攻击后导致系统内核或某些应用程序CPU利用率达到100%无法回应Ping命令,其实带宽还是有的,否则就Ping不通接在同一交换机上的主机了。
当前主要有三种流行的DDoS攻击:
1、SYN/ACK Flood攻击:这种攻击方法是经典最有效的DDoS方法,可通杀各种系统的网络服务,主要是通过向受害主机发送大量伪造源IP和源端口的SYN或ACK 包,导致主机的缓存资源被耗尽或忙于发送回应包而造成拒绝服务,由于源都是伪造的故追踪起来比较困难,缺点是实施起来有一定难度,需要高带宽的僵尸主机支持。
少量的这种攻击会导致主机服务器无法访问,但却可以Ping的通,在服务器上用Netstat -na命令会观察到存在大量的SYN_RECEIVED状态,大量的这种攻击会导致Ping失败、TCP/IP栈失效,并会出现系统凝固现象,即不响应键盘和鼠标。普通防火墙大多无法抵御此种攻击。
2、TCP全连接攻击:这种攻击是为了绕过常规防火墙的检查而设计的,一般情况下,常规防火墙大多具备过滤TearDrop、Land等DOS攻击的能力,但对于正常的TCP连接是放过的,殊不知很多网络服务程序(如:IIS、Apache等Web服务器)能接受的TCP连接数是有限的。
一旦有大量的TCP连接,即便是正常的,也会导致网站访问非常缓慢甚至无法访问,TCP全连接攻击就是通过许多僵尸主机不断地与受害服务器建立大量的TCP连接,直到服务器的内存等资源被耗尽而被拖跨,从而造成拒绝服务,这种攻击的特点是可绕过一般防火墙的防护而达到攻击目的,缺点是需要找很多僵尸主机,并且由于僵尸主机的IP是暴露的,因此容易被追踪。
3、刷Script脚本攻击:这种攻击主要是针对存在ASP、JSP、PHP、CGI等脚本程序,并调用MSSQLServer、 MySQLServer、Oracle等数据库的网站系统而设计的,特征是和服务器建立正常的TCP连接,并不断的向脚本程序提交查询、列表等大量耗费数据库资源的调用,典型的以小博大的攻击方法。
一般来说,提交一个GET或POST指令对客户端的耗费和带宽的占用是几乎可以忽略的,而服务器为处理此请求却可能要从上万条记录中去查出某个记录,这种处理过程对资源的耗费是很大的,常见的数据库服务器很少能支持数百个查询指令同时执行,而这对于客户端来说却是轻而易举的,因此攻击者只需通过 Proxy代理向主机服务器大量递交查询指令,只需数分钟就会把服务器资源消耗掉而导致拒绝服务。
常见的现象就是网站慢如蜗牛、ASP程序失效、PHP连接数据库失败、数据库主程序占用CPU偏高。这种攻击的特点是可以完全绕过普通的防火墙防护,轻松找一些Proxy代理就可实施攻击,缺点是对付只有静态页面的网站效果会大打折扣,并且有些Proxy会暴露攻击者的IP地址。

② 老毛子Padavan固件 自定义脚本怎么用

ADBYBY默认关闭的,需要进入脚本修改启动。(自定义设置 - 脚本 - 运行路由器启动后:)

(自定义设置 - 脚本 - 运行路由器启动后:)这个怎么用 具体是复制哪一段代码到 哪里?代码如下:
运行路由器启动后代码:
-----------------------------------------------------------------------------------------------
### Custom user script
### Called after router started and network is ready

### Example - load ipset moles
#modprobe ip_set
#modprobe ip_set_hash_ip
#modprobe ip_set_hash_net
#modprobe ip_set_bitmap_ip
#modprobe ip_set_list_set
#modprobe xt_set

### 创建子程序脚本
/etc/storage/script2_script.sh
/etc/storage/script3_script.sh
### SD卡挂载
/sbin/automount.sh mmcblk0p1 AiDisk_01
### 运行脚本1
sleep 10
/etc/storage/script1_script.sh

logger -t "运行路由器启动后" "脚本完成"

③ 想写个shell脚本来自动配置ip,子网掩码和网关

测试了下还可以,没有写条件判断,根据情况自己再修改下

#!/bin/bash

hwaddr=`ifconfig|grepHWaddr|awk'{print$5}'`

echo"DEVICE=$1
HWADDR=$hwaddr
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=$2
NETMASK=$3
GATEWAY=$4">/etc/sysconfig/network-scripts/ifcfg-$1

/etc/init.d/networkrestart

④ 如何在linux上高效阻止恶意IP地址

在Linux中,只要借助netfilter/iptables框架,就很容易实现阻止IP地址这一目的:
$ sudo iptables -A INPUT -s 1.1.1.1 -p TCP -j DROP

如果你想要禁止某一整个IP地址区段,也能同样做到这一点:
$ sudo iptables -A INPUT -s 1.1.2.0/24 -p TCP -j DROP

不过,要是你有1000个没有共同CIDR(无类别域间路由)前缀的独立IP地址想要禁止访问,该如何是好?那你就要设定1000个iptables规则!很显然这种方法不具有良好的扩展性。
$ sudo iptables -A INPUT -s 1.1.1.1 -p TCP -j DROP
$ sudo iptables -A INPUT -s 2.2.2.2 -p TCP -j DROP
$ sudo iptables -A INPUT -s 3.3.3.3 -p TCP -j DROP
. . . .

何谓IP集?
这时候,IP集(IP set)就能派得上大用场。IP集是一种内核功能,允许多个(独立)IP地址、MAC地址或者甚至多个端口号高效地编码并存储在比特图/散列内核数据结构里面。一旦创建了IP集,就能创建与该集匹配的iptables规则。
你应该会立马看到使用IP集带来的好处,那就是你只要使用一个iptables规则,就能够与IP集中的多个IP地址进行匹配!你可以结合使用多个IP地址和端口号来构建IP集,还可以用IP集动态更新iptables规则,对性能根本没有任何影响。
将IPset工具安装到Linux上
想创建并管理IP集,你就需要使用一种名为ipset的用户空间工具。
想将ipset安装到Debian、Ubuntu或Linux Mint上:
$ sudo apt-get install ipset

想将ipset安装到Fedora或CentOS/RHEL 7上:
$ sudo yum install ipset

使用IPset命令禁止IP地址
不妨让我通过几个简单的例子,具体介绍如何使用ipset命令。
首先,不妨创建一个新的IP集,名为banthis(名称随意):
$ sudo ipset create banthis hash:net

上述命令中的第二个变量(hash:net)必不可少,它代表了所创建的集的类型。IP集有多种类型。hash:net类型的IP集使用散列来存储多个CIDR区段。如果你想在该集中存储单个的IP地址,可以改而使用hash:ip类型。
一旦你创建了一个IP集,就可以使用该命令来检查该集:
$ sudo ipset list

这显示了可用IP 集的列表,另外还显示了每个集的详细信息,其中包括集成员。默认情况下,每个IP集可以最多含有65536个元素(这里是CIDR区段)。你只要在后面添加“maxelem N”选项,就可以调大这个极限值。
$ sudo ipset create banthis hash:net maxelem 1000000

现在不妨将IP地址区段添加到该集:
$ sudo ipset add banthis 1.1.1.1/32
$ sudo ipset add banthis 1.1.2.0/24
$ sudo ipset add banthis 1.1.3.0/24
$ sudo ipset add banthis 1.1.4.10/24

你会发现,集成员已发生了变化。
$ sudo ipset list

现在可以使用该IP集来创建一个iptables规则了。这里的关键在于,使用“-m set --match-set ”这个选项。
不妨创建一个iptables规则,阻止该集中的所有那些IP地址区段通过端口80访问网站服务器。这可以通过这个命令来实现:
$ sudo iptables -I INPUT -m set --match-set banthis src -p tcp --destination-port 80 -j DROP

如果你想,还可以将特定的IP集保存到一个文件中,然后以后可以从该文件来恢复:
$ sudo ipset save banthis -f banthis.txt
$ sudo ipset destroy banthis
$ sudo ipset restore -f banthis.txt

在上述命令中,我试着使用destroy选项来删除现有的IP集,看看我能不能恢复该IP集。
自动禁止IP地址
至此,你应该会看到IP集这个概念有多强大。仍然维持一份最新的IP黑名单可能是件麻烦又费时的活儿。实际上,现在外头有一些免费服务或收费服务可以为你维护这些IP黑名单。另外,不妨看一下我们如何可以将可用IP黑名单自动转换成IP集。
我暂且从免费或收费发布各种IP阻止列表的iblocklist.com获取免费的IP列表。提供了P2P格式的免费版本。
我要使用一款名为iblocklist2ipset的开源python工具,这个工具可以将P2P版本的iblocklist转换成IP sets。
首先,你需要安装好pip(想安装pip,请参阅这篇指导文章:http://ask.xmolo.com/install-pip-linux.html)。
然后安装iblocklist2ipset,具体如下所示。
$ sudo pip install iblocklist2ipset

在Fedora之类的一些发行版上,你可能需要运行这个命令:
$ sudo python-pip install iblocklist2ipset

现在进入到iblocklist.com,获取任何P2P列表URL(比如“level1”列表)。
然后将该URL粘贴到下面这个命令中:
$ iblocklist2ipset generate \
--ipset banthis "http://list.iblocklist.com/?list=ydxerpxkpcfqjaybcssw&fileformat=p2p&archiveformat=gz" \
> banthis.txt

在你运行上述命令后,你就创建了一个名为bandthis.txt的文件。如果你检查其内容,就会看到类似以下的内容:
create banthis hash:net family inet hashsize 131072 maxelem 237302
add banthis 1.2.4.0/24
add banthis 1.2.8.0/24
add banthis 1.9.75.8/32
add banthis 1.9.96.105/32
add banthis 1.9.102.251/32
add banthis 1.9.189.65/32
add banthis 1.16.0.0/14

你可以使用ipset命令,就能轻松装入该文件:
$ sudo ipset restore -f banthis.txt

现在,用下面这个命令检查自动创建的IP集:
$ sudo ipset list banthis

截至本文截稿时,“level1”阻止列表含有237000多个IP地址区段。你会发现,许多IP地址区段已经被添加到了IP集中。
最后,只需创建一个iptables规则,就能阻止所有这些地址!

⑤ ipset 使用

原文地址 : http://ipset.netfilter.org/

ipset 资料: https://www.linuxjournal.com/content/advanced-firewall-configurations-ipset

ip set 是linux内核的一个内部框架, 可由ipset工具管理,ip set 可以分为以下几种类型:ip地址, 网路地址(网段),tcp/udp 端口号, mac地址, 网卡名称。或者是上述类型的组合,并保证快速的匹配。

ipset 适用于以下几种场景:

(1)一次性存储大量的ip或者端口,用以iptables匹配

(2)在不影响性能的前提下,动态更新iptables规则(针对ip或者端口)

(3)期望使用ipset的告诉匹配,或者在一条iptables规则中表达复杂的 ip/端口规则

(1)bitmap : ip

存储在内存中,利用bitmap数据结构存储, 可以存储 65535个ip地址(B类网络)

(2)bitmap: ip,mac

存储在内存中, 8 bytes 表示一个ip,mac

(3) bitmap: port

同(1), 只是存储的是端口号

(4)hash:ip

使用hash存储ip地址。元素冲突的话,将以数组的形式放在最后

(5)hash:net

使用hash存储网络,与 hash:ip 使用同样的技术避免元素冲突

(6)hash:ip,port

与hash:ip 类似,但是可以存储IP与 协议-端口的组合,支持 tcp sctp udp udplite 加上端口号, 以及icmp icmpv6及其它无端口号的协议。

(7)hash:ip,port,ip

用hash存放 ip,port,ip的组合

(8)汪斗hash:ip,port,net

用hash 存放 ip,port, net 的组合

(9)hash:net,port

(10)hash:net,iface

用hash存放 网络 网卡

(11)list:set

用数组存放其它set, 即不同set的有序组合

linux 内核版本 >=3.11

source of ipset http://ipset.netfilter.org/ipset-7.6.tar.bz2

git://git.netfilter.org/ipset.git

ipset

n, create SETNAME TYPENAME [ CREATE-OPTIONS ]

新建集合

add SETNAME ADD-ENTRY [ ADD-OPTIONS ]

向指定集合中新增元素

del SETNAME DEL-ENTRY [ DEL-OPTIONS ]

删除指定集合中的元素

test SETNAME TEST-ENTRY [ TEST-OPTIONS ]

判断元素是否在指定集合,0 存在, 非0 不存在

译者注: 不同集合类型,test 参数会不一致

x, destroy [ SETNAME ]

删除一个或所有集合(参数中未制定集合), 如果集合已经被引用,则无法删除

list [ SETNAME ] [ OPTIONS ]

列出集合条目

save [ SETNAME ]

保存集合指定集合或所有(至指定参数), -file 参数可以保存到制定文件

restore

将ipset集合从 指定文明顷件中恢复存, 通过 -file 参数。需要注意到是, 现有 到集合和元素不会被覆盖, list、 help、 vertsion以及 交互模式下不支持该命令

flush [ SETNAME ]

清空指定集合到所有条目,或所有集合到条目(未指定困槐磨集合参数)

e, rename SETNAME-FROM SETNAME-TO

重命名集合, SETNAME-TO 必须不存在

w, swap SETNAME-FROM SETNAME-TO

交换集合, 两个集合必须存在, 并且类型兼容

help [ TYPENAME ]

打印帮助信息

version

打印版本号

进入交互模式, 从标准输出读入命令,quit 退出,

其它选项

-!, -exist

忽略错误输出

-o, -output { plain | save | xml }

list命令制定输出格式

-q, -quiet

不输出相关信息, 但是当ipset无法继续运行时,仍然会退出

-r, -resolve

list 命令输出集合条目时, 解析主机名, dns查询可能导致速度缓慢

-s, -sorted

对输出排序

-n, -name

list命令,只输出集合名称

-t, -terse

List 命令只输出集合名称和头部,忽略条目

-f, -file filename

list save restore 命令,用于指定文件名称

ip, net, mac, port, iface 这类参数用 “,” 逗号隔开, 但是主机名包含段短横线“-”时, 必须放在方括号“[]” 中, 并且,ipset 会去解析主机名,如果解析出多个ip, 只使用第一个.

bitmap, list类型,使用固定长度存储空间。 hash 类型是用hash存放元素, 为了避免hash冲突, 会现在链到长度,如果上到到达限制,在使用iset添加条目时,将hash大小加倍。当集合中到条目被应用到iptables时, hash大小是固定到, 集合也不能重复,新到条目也不能加载到集合中。

常见 create add 命令选项

timeout

未完待续。。。。。

热点内容
超级访问沈傲君 发布:2025-07-10 17:06:33 浏览:692
安卓的手机来电闪光灯在哪里 发布:2025-07-10 16:49:02 浏览:836
androidstudio导入as项目 发布:2025-07-10 16:43:37 浏览:538
c语言中编译和编辑的差别 发布:2025-07-10 16:43:35 浏览:486
iphone清除缓存软件 发布:2025-07-10 16:20:03 浏览:680
以下所列的c语言常量中错误的是 发布:2025-07-10 16:19:00 浏览:852
怎么给安卓应用重命名 发布:2025-07-10 16:18:01 浏览:1001
php调用栈 发布:2025-07-10 15:58:33 浏览:870
android页面返回 发布:2025-07-10 15:58:22 浏览:464
php解析多层json 发布:2025-07-10 15:51:36 浏览:874