外贸电商独立网站/北京seo公司哪家好
实验目的
通过该实验了解Linux防火墙iptables实现原理,掌握iptables基本使用方法,能够利用iptables对操作系统进行加固。
预备知识
基本原理
netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,具有完成封包过滤、封包重定向和网络地址转换(NAT)等功能。netfilter是Linux 核心中一个通用架构,它提供了一系列的"表"(tables),每个表由若干"链"(chains)组成,而每条链中可以有一条或数条规则(rule)组成。可以这样来理解,netfilter是表的容器,表是链的容器,而链又是规则的容器。
规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则。
iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理。
链(chains)是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包。
iptables采用“表”和“链”的分层结构。在REHL4中是三张表五个链。现在REHL5成了四张表五个链了如下:
系统缺省的表为"filter",该表中包含了INPUT、FORWARD和OUTPUT 3个链。每一条链中可以有一条或数条规则,每一条规则都是这样定义的“如果数据包头符合这样的条件,就这样处理这个数据包”。当一个数据包到达一个链时,系统就会从第一条规则开始检查,看是否符合该规则所定义的条件: 如果满足,系统将根据该条规则所定义的方法处理该数据包;如果不满足则继续检查下一条规则。最后,如果该数据包不符合该链中任一条规则的话,系统就会根据该链预先定义的策略(policy)来处理该数据包。
数据包在filter表中的流程为:有数据包进入系统时,系统首先根据路由表决定将数据包发给哪一条链,则可能有三种情况:
1.如果数据包的目的地址是本机,则系统将数据包送往INPUT链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没通过规则检查,系统就会将这个包丢掉;
2.如果数据包的目的地址不是本机,也就是说,这个包将被转发,则系统将数据包送往FORWARD链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没通过规则检查,系统就会将这个包丢掉;
3.如果数据包是由本地系统进程产生的,则系统将其送往OUTPUT链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没通过规则检查,系统就会将这个包丢掉。
iptables执行流程图
如下图所示,iptables在处理数据包时,将按照下面流程执行:
①当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。
②如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
③如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。
iptables表、链说明
规则表
1.filter表——三个链:INPUT、FORWARD、OUTPUT。
作用:过滤数据包
内核模块:iptables_filter
2.Nat表——三个链:PREROUTING、POSTROUTING、OUTPUT
作用:用于网络地址转换(IP、端口)
内核模块:iptable_nat
3.Mangle表——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS
内核模块:iptable_mangle
4.Raw表——两个链:OUTPUT、PREROUTING
作用:决定数据包是否被状态跟踪机制处理
内核模块:iptable_raw
规则链
1.INPUT——进来的数据包应用此规则链中的策略;
2.OUTPUT——外出的数据包应用此规则链中的策略;
3.FORWARD——转发数据包时应用此规则链中的策略;
4.PREROUTING——对数据包作路由选择前应用此链中的规则;
5.POSTROUTING——对数据包作路由选择后应用此链中的规则。
规则表之间的优先顺序:
规则表之间按照Raw、mangle、nat、filter的顺序进行过滤,具体分三种情况:
第一种情况:入站数据流向
从外界到达防火墙的数据包,先被PREROUTING规则链处理(是否修改数据包地址等),之后会进行路由选择(判断该数据包应该发往何处),如果数据包的目标主机是防火墙本机(比如说Internet用户访问防火墙主机中的web服务器的数据包),内核将其传给INPUT链进行处理(决定是否允许通过等),通过以后再交给系统上层的应用程序(比如Apache服务器)进行响应。
第二种情况:转发数据流向
来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理,之后会进行路由选择,如果数据包的目标地址是其它外部地址(比如局域网用户通过网关访问QQ站点的数据包),则内核将其传递给FORWARD链进行处理(是否转发或拦截),然后再交给POSTROUTING规则链(是否修改数据包的地址等)进行处理。
第三种情况:出站数据流向
防火墙本机向外部地址发送的数据包(比如在防火墙主机中测试公网DNS服务器时),首先被OUTPUT规则链处理,之后进行路由选择,然后传递给POSTROUTING规则链(是否修改数据包的地址等)进行处理。
iptables语法
语法:iptables [-t table] command [match] [-j target/jump]
1)[-t table] 指定规则表
-t 参数用来,内建的规则表有三个,分别是:nat、mangle 和 filter,当未指定规则表时,则一律视为是 filter。个规则表的功能如下:
nat:此规则表拥有 PREROUTING 和 POSTROUTING 两个规则链,主要功能为进行一对一、一对多、多对多等网址转换工作(SNAT、DNAT),这个规则表除了作网址转换外,请不要做其它用途。
mangle:此规则表拥有 PREROUTING、FORWARD 和 POSTROUTING 三个规则链。除了进行网址转换工作会改写封包外,在某些特殊应用可能也必须去改写封包(TTL、TOS)或者是设定markMARK(将封包作记号,以进行后续的过滤),这时就必须将这些工作定义在 mangle 规则表中,由于使用率不高,这里不讨论 mangle 的用法。
filter:这个规则表是默认规则表,拥有 INPUT、FORWARD 和 OUTPUT 三个规则链,这个规则表顾名思义是用来进行封包过滤的处理动作(例如:DROP、 LOG、 ACCEPT 或 REJECT),需要将基本规则都建立在此规则表中。
2)command 常用命令列表:
命令:-A, --append;范例:iptables -A INPUT ...;说明:新增规则到某个规则链中,该规则将会成为规则链中的最后一条规则。
命令:-D, --delete;范例:iptables -D INPUT --dport 80 -j DROP,iptables -D INPUT 1;说明:从某个规则链中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除。
命令:-R, --replace;范例:iptables -R INPUT 1 -s 192.168.0.1 -j DROP;说明:取代现行规则,规则被取代后并不会改变顺序。
命令:-I, --insert;范例:iptables -I INPUT 1 --dport 80 -j ACCEPT;说明:插入一条规则,原本该位置上的规则将会往后移动一个顺位。
命令:-L, --list;范例1 :iptables -L INPUT,说明: 列出某规则链中的所有规则;范例2:iptables -t nat -L ,说明:列出nat表所有链中的所有规则。
命令:-F, --flush;范例:iptables -F INPUT;说明:删除filter表中INPUT链的所有规则。
命令:-Z, --zero;范例:iptables -Z INPUT;说明:将封包计数器归零。封包计数器是用来计算同一封包出现次数,是过滤阻断式攻击不可或缺的工具。
命令:-N, --new-chain;范例:iptables -N allowed;说明:定义新的规则链。
命令:-X, --delete-chain;范例:iptables -X allowed;说明:删除某个规则链。
命令: -P, --policy;范例:iptables -P INPUT DROP;说明:定义过滤政策。 也就是未符合过滤条件之封包, 默认的处理方式。
命令:-E, --rename-chain;范例:iptables -E allowed disallowed;说明:修改某自定义规则链的名称。
3)[match] 常用封包匹配参数
参数:-p, --protocol;范例:iptables -A INPUT -p tcp;说明:匹配通讯协议类型是否相符,可以使用 ! 运算符进行反向匹配,例如:-p !tcp,意思是指除 tcp 以外的其它类型,如udp、icmp等;如果要匹配所有类型,则可以使用 all 关键词,例如:-p all。
参数:-s, --src, --source;范例:iptables -A INPUT -s 192.168.1.1;说明:用来匹配封包的来源 IP,可以匹配单机或网络,匹配网络时请用数字来表示 子网掩码,例如:-s 192.168.0.0/24,匹配 IP 时可以使用 ! 运算符进行反向匹配,例如:-s !192.168.0.0/24。
参数:-d, --dst, --destination;范例:iptables -A INPUT -d 192.168.1.1;说明:用来匹配封包的目的地 IP,设定方式同上。
参数:-i, --in-interface;范例:iptables -A INPUT -i eth0;说明:用来匹配封包是从哪块网卡进入,可以使用通配字符 + 来做大范围匹配,例如:-i eth+ 表示所有的 ethernet 网卡,也可以使用 ! 运算符进行反向匹配,例如:-i !eth0。
参数:-o, --out-interface;范例:iptables -A FORWARD -o eth0;说明:用来匹配封包要从哪 块网卡送出,设定方式同上。
参数:--sport, --source-port;范例:iptables -A INPUT -p tcp --sport 22;说明:用来匹配封包的源端口,可以匹配单一端口,或是一个范围,例如:--sport 22:80表示从 22 到 80 端口之间都算是符合条件,如果要匹配不连续的多个端口,则必须使用 --multiport 参数,详见后文。匹配端口号时,可以使用 ! 运算符进行反向匹配。
参数:--dport, --destination-port;范例:iptables -A INPUT -p tcp --dport 22;说明:用来匹配封包的目的地端口号,设定方式同上
参数:--tcp-flags;范例:iptables -p tcp --tcp-flags SYN,FIN,ACK SYN;说明:匹配 TCP 封包的状态标志,参数分为两个部分,第一个部分列举出想 匹配的标志,第二部分则列举前述标志中哪些有被设置,未被列举的标志必须是空的。TCP 状态标志包括:SYN(同步)、ACK(应答)、FIN(结束)、RST(重设)、URG(紧急) 、PSH(强迫推送) 等均可使用于参数中,除此之外还可以使用关键词 ALL 和 NONE 进行匹配。匹配标志时,可以使用 ! 运算符行反向匹配。
参数:--syn;范例:iptables -p tcp --syn;说明:用来表示TCP通信协议中,SYN位被打开,而ACK与FIN位关闭的分组,即TCP的初始连接,与 iptables -p tcp --tcp-flags SYN,FIN,ACK SYN 的作用完全相同,如果使用 !运算符,可用来 匹配非要求连接封包。
参数:-m multiport --source-port;范例:iptables -A INPUT -p tcp -m multiport --source-port 22,53,80,110;说明:用来匹配不连续的多个源端口,一次最多可以匹配 15 个端口,可以使用 ! 运算符进行反向匹配。
参数:-m multiport --destination-port;范例:iptables -A INPUT -p tcp -m multiport --destination-port 22,53,80,110;说明:用来匹配不连续的多个目的地端口号,设定方式同上。
参数:-m multiport --port;范例:iptables -A INPUT -p tcp -m multiport --port 22,53,80,110;说明:这个参数比较特殊,用来匹配源端口和目的端口号相同的封包,设定方式同上。注意:在本范例中,如果来源端口号为 80目的地端口号为 110,这种封包并不算符合条件。
参数:--icmp-type;范例:iptables -A INPUT -p icmp --icmp-type 8;说明:用来匹配 ICMP 的类型编号,可以使用代码或数字编号来进行 匹配。请打 iptables -p icmp --help 来查看有哪些代码可用。
参数:-m limit --limit;范例:iptables -A INPUT -m limit --limit 3/hour;说明:用来匹配某段时间内封包的平均流量,上面的例子是用来 匹配:每小时平均流量是否超过一次 3 个封包。 除了每小时平均次外,也可以每秒钟、每分钟或每天平均一次,默认值为每小时平均一次,参数如后: /second、 /minute、/day。 除了进行封 包数量的匹配外,设定这个参数也会在条件达成时,暂停封包的匹配动作,以避免因骇客使用洪水攻击法,导致服务被阻断。
参数:--limit-burst;范例:iptables -A INPUT -m limit --limit-burst 5;说明:用来匹配瞬间大量封包的数量,上面的例子是用来匹配一次同时涌入的封包是否超过 5 个(这是默认值),超过此上限的封包将被直接丢弃。使用效果同上。
参数:-m mac --mac-source;范例:iptables -A INPUT -m mac --mac-source 00:00:00:00:00:01;说明:用来匹配封包来源网络接口的硬件地址,这个参数不能用在 OUTPUT 和 POSTROUTING 规则链上,这是因为封包要送到网 卡后,才能由网卡驱动程序透过 ARP 通讯协议查出目的地的 MAC 地址,所以 iptables 在进行封包匹配时,并不知道封包会送到哪个网络接口去。
参数:--mark;范例:iptables -t mangle -A INPUT -m mark --mark 1;说明:用来匹配封包是否被表示某个号码,当封包被匹配成功时,可以透过 MARK 处理动作,将该封包标示一个号码,号码最大不可以超过 4294967296。
参数:-m owner --uid-owner;范例:iptables -A OUTPUT -m owner --uid-owner 500;说明:用来匹配来自本机的封包,是否为某特定使用者所产生的,这样可以避免服务器使用 root 或其它身分将敏感数据传送出,可以降低系统被骇的损失。可惜这个功能无法 匹配出来自其它主机的封包。
参数:-m owner --gid-owner;范例:iptables -A OUTPUT -m owner --gid-owner 0;说明:用来匹配来自本机的封包,是否为某特定使用者群组所产生的,使用时机同上。
参数:-m owner --pid-owner;范例:iptables -A OUTPUT -m owner --pid-owner 78;说明:用来匹配来自本机的封包,是否为某特定进程所产生的,使用时机同上。
参数:m owner --sid-owner;范例:iptables -A OUTPUT -m owner --sid-owner 100;说明:用来匹配来自本机的封包,是否为某特定 连接(Session ID)的响应封包,使用时机同上。
参数:-m state --state;范例:iptables -A INPUT -m state --state RELATED,ESTABLISHED;说明:用来匹配连接状态, 连接状态共有四种:INVALID、ESTABLISHED、NEW 和 RELATED。
INVALID 表示该封包的连接编号(Session ID)无法辨识或编号不正确。
ESTABLISHED 表示该封包属于某个已经建立的连接。
NEW 表示该封包想要起始一个连接(重设连接或将连接重导向)。
RELATED 表示该封包是属于某个已经建立的连接,所建立的新连接。例如:FTP-DATA 连接必定是源自某个 FTP 连接。
4)[-j target/jump] 常用的处理动作:
-j 参数用来指定要进行的处理动作,常用的处理动作包括:ACCEPT、REJECT、DROP、REDIRECT、MASQUERADE、LOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、MARK,分别说明如下:
ACCEPT: 将封包放行,进行完此处理动作后,将不再匹配其它规则,直接跳往下一个规则链(natostrouting)。
REJECT: 拦阻该封包,并传送封包通知对方,可以传送的封包有几个选择:ICMP port-unreachable、ICMP echo-reply 或是tcp-reset(这个封包会要求对方关闭 连接),进行完此处理动作后,将不再匹配其它规则,直接中断过滤程序。 范例如下:iptables -A FORWARD -p TCP --dport 22 -j REJECT --reject-with tcp-reset
DROP: 丢弃封包不予处理,进行完此处理动作后,将不再匹配其它规则,直接中断过滤程序。
REDIRECT: 将封包重新导向到另一个端口(PNAT),进行完此处理动作后,将会继续匹配其它规则。 这个功能可以用来实现透明代理或用来保护 web 服务器。例如:iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
MASQUERADE: 改写封包来源 IP 为防火墙 NIC IP,可以指定 port 对应的范围,进行完此处理动作后,直接跳往下一个规则 链(manglepostrouting)。这个功能与SNAT 略有不同,当进行 IP 伪装时,不需指定要伪装成哪个 IP,IP会从网卡直接读取,当使用拨 号接连时,IP通常是由ISP公司的DHCP 服务器指派的,这个时候 MASQUERADE 特别有用。范例如下:iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 1024-31000
LOG: 将封包相关讯息纪录在 /var/log 中,详细位置请查阅 /etc/syslog.conf 配置文件,进行完此处理动作后,将会继续匹配其规则。例如:iptables -A INPUT -p tcp -j LOG --log-prefix "INPUT packets"
SNAT: 改写封包来源 IP 为某特定 IP 或 IP 范围,可以指定 port 对应的范围,进行完此处理动作后,将直接跳往下一个规则(mangleostrouting)。范例如下:iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-source 194.236.50.155-194.236.50.160:1024-32000
DNAT: 改写封包目的地 IP 为某特定 IP 或 IP 范围,可以指定 port 对应的范围,进行完此处理动作后,将会直接跳往下一个规则链(filter:input 或 filter:forward)。范例如下:iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 --dport 80 -j DNAT --to-destination 192.168.1.1-192.168.1.10:80-100
MIRROR: 镜射封包,也就是将来源 IP 与目的地 IP 对调后,将封包送回,进行完此处理动作后,将会中断过滤程序。
QUEUE: 中断过滤程序,将封包放入队列,交给其它程序处理。通过自行开发的处理程序,可以进行其它应用,例如:计算连接费用等。
RETURN: 结束在目前规则链中的过滤程序,返回主规则链继续过滤,如果把自定义规则链看成是一个子程序,这个动作则就相当于提前结束子程序并返回到主程序中。
MARK: 将封包标上某个代号,以便提供作为后续过滤的条件判断依据,进行完此处理动作后,将会继续匹配其它规则。范例如下:iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 2
netstat语法
NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-v] [interval]
Netstat命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
1)列出所有端口(包括监听和未监听的)
列出所有端口 netstat -a
列出所有 tcp 端口 netstat -at
列出所有 udp 端口 netstat -au
2)列出所有处于监听状态的 Sockets
只显示监听端口 netstat -l
只列出所有监听 tcp 端口 netstat -lt
只列出所有监听 udp 端口 netstat -lu
只列出所有监听 UNIX 端口 netstat -lx
3)显示每个协议的统计信息
显示所有端口的统计信息 netstat -s
显示TCP端口的统计信息 netstat -st
显示UDP端口的统计信息 netstat - su
4)在 netstat 输出中显示 PID 和进程名称 netstat -p
netstat -p 可以与其它开关一起使用,就可以添加 “PID/进程名称” 到 netstat 输出中,这样 debugging 的时候可以很方便的发现特定端口运行的程序。
5)在 netstat 输出中不显示主机,端口和用户名(host, port or user)
当不想让主机,端口和用户名显示,使用 netstat -n。将会使用数字代替那些名称。
同样可以加速输出,因为不用进行比对查询。
实验环境
服务器:centos6.3,IP地址:10.1.1.112
测试者:win2003,IP地址随机,可自己查看,在本例中为10.1.1.16
实验步骤一
2013年王小虎同学经过四年的学习,终于从北京某高校毕业了,历经千辛万苦,终于应聘到了北京某大型信息公司,担任网络管理员,负责管理公司的机房与网络,可是网管搞怎么搞,小虎同学有点迷茫了,下班后联系了之前的学长一块吃烧烤,请学长指点迷津……学长喝了一口牛栏山,说:沉住气,Rome was not built in a day,想当好网管,首先学会用iptables这个神器!明天你先学会这几个事情:
1、学会查看系统中iptables中已经有的规则,知道如何关闭和启用这些规则;
2、学会用iptables保护自己的主机,从最简单开始,不让别人用ping到主机或者用ssh访问到主机;
3、学会如何利用iptables防御网络DDos攻击;
4、如果服务器不能关闭ssh,但是又要防止黑客的字典攻击和暴力破解,管理员怎么样用iptables来实现?
你先学会上面四个事情,iptables就算入门了,剩下的下次喝酒告诉你如何用iptables做nat吧。
任务一:学会查看系统中iptables中已经有的规则,掌握如何关闭和启用这些规则
1. 利用本机putty程序登录到centos服务器中;
2. 利用windows操作机中桌面上的“putty.exe”程序,登录centos服务器(IP地址:10.1.1.112,用户名:root,密码:123456)
如果出现证书信任的提示,选择“是”,可以看到能够登录到centos主机,输入给定的用户名与密码,登录进,如下所示
3. 输入命令,查看iptables状态;
#service iptables status 查看iptables状态
由图中可以看到在表filter中有三个chain,分别为INPUT、FORWARD和OUTPUT。
4. 关闭10.1.1.112上centos服务器的iptables防火墙,如下:
#service iptables stop
5. 保存并查看10.1.1.112服务器上iptables规则
在iptables中添加的规则即时生效,但重启后规则将会丢失,因此需要保存规则,以便重启时重新加载。
#/etc/init.d/iptables save
实验步骤二
学会用iptables保护自己的主机,不让别人用ping
1、清空centos主机中iptables规则:
#iptables -F
2、登录到windows操作机中,利用ping命令访问10.1.1.112;
3、在主机centos中,加入对应的规则对centos服务器进行加固,使windows操作机中的无法ping通centos主机。在主机centos中,加入下列规则,并查看。
#iptables -A INPUT -p icmp -j DROP
发现规则已经生效,无法ping通centos:
命令说明如下:
-A INPUT #表示在链INPUT中增加一条规则;
-p icmp #p指protocol(协议),指对icmp协议进行操作;
-j DROP #指动作为DROP(丢弃)。
学会REJECT参数,并理解其与DROP两者的区别
在上个任务中,已经使用iptables的DROP处理使windows不能够ping通centos主机;接下来,在centos主机中增加什么样的iptables规则对centos服务器进行加固,能使windows操作机中的ping命令达到下面效果?
现在再试试用REJECT处理。首先,删除刚才所加的规则。
1. 在centos主机中,输入下列命令删除iptables中的规则
# iptables -F
2. 在centos主机中,加入下列新的iptables规则。
#iptables -A INPUT -p icmp -j REJECT
再次用Windows来ping,结果如下所示:
与之前DROP处理不一样,ping操作返回Destination port unreachable。
实验步骤三
如何利用iptables防御网络DDos攻击
1、在centos主机中,输入命令# iptables -F,删除iptables中的规则
2、在windows操作机下下载attack攻击程序
下载地址:http://tools.hetianlab.com/tools/attack/attack.zip
3、双击运行windows操作机运行攻击工具attack.exe对centos发起洪水攻击;
4、利用putty工具登录centos主机,输入命令:netstat -an,观察centos服务器资源与网络相关情况,发现大量对centos服务器10.1.1.112的111端口(rpc端口)的访问。
5、继续输入命令:netstat -st,观察centos服务器TCP统计信息,发现centos服务器短时间收到大量数据包。
6、由此判断,有攻击者进行对端口111(sunrpc)的tcp洪水攻击,并且攻击者伪装了攻击源IP地址,因此对111端口的tcp协议进行iptables规则设置:iptables -A INPUT -p tcp --dport 111 -j DROP,并查看
7、在centos服务器的iptables中输入规则之后,等待2分钟左右(centos回收资源需要一定时间),运行相关查看系统网络信息,观察洪水攻击造成的影响;
8、请一定记住完成上一步之后,关闭windows操作机中的attack命令窗口,停止洪水攻击。
实验步骤四
如何利用iptables的recent模块防御ssh字典攻击
在某服务器应用中,为了远程管理,SSH不能停掉,但是又要防止攻击者的字典攻击,试通过iptables配置,保证SSH的安全。
iptables的recent模块可以根据源地址、目的地址对最近一段时间内经过本机的数据包的情况进行统计,并根据相应的规则执行,命令如下:
--name #设定列表名称,默认DEFAULT
--rsource #源地址,此为默认
--rdest #目的地址
--seconds #指定时间内
--hitcount #命中次数
--set #将地址添加进列表,并更新信息,包含地址加入的时间戳
--rcheck #检查地址是否在列表,以第一个匹配开始计算时间
--update #和rcheck类似,以最后一个匹配计算时间
--remove #在列表里删除相应地址,后跟列表名称及地址
1. 在centos主机中,输入下列命令删除iptables中的规则:
# iptables -F
2. 依次点击“开始”>>“所有程序”>>“Metasploit”>>“Metasploit Console;打开metasploit界面,等待几分钟出现msf提示符;
3. 在msf提示符下,输入:use auxiliary/scanner/ssh/ssh_login对metasploit 进行配置
在msf auxiliary(ssh_login)提示符下:
a)输入命令:set RHOSTS 10.1.1.112,设置SSH主机地址;
b)输入命令:set PASS_FILE c:/pass.txt,设置字典文件;
c)输入命令:set USERNAME root,设置破解的帐号名;
d)设置完成后输入run命令运行字典攻击
4. 利用putty登录centos服务器,查看系统安全日志信息(/var/log/secure),输入命令:cat /var/log/secure,发现大量相同IP地址登录失败信息,分析可能有人进行ssh暴力破解。
5. 继续输入命令:cat /var/log/secure | grep 10.1.1.16 | wc -l,对该IP地址进行统计,发现来自该IP地址的登录失败次数不停增长。
6. 在centos服务器上利用iptables的recent模块进行主机加固。输入如下命令:
a)iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name SSHPOOL --update --seconds 60 --hitcount 3 -j DROP
b)iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name SSHPOOL --set -j ACCEPT
规则过程分析:模拟一下某个电脑连接本机SSH服务的数据包流程,假设以下数据包是在一小时内到达本机的:
•当这个电脑的第1个SSH包到达本机,规则a检查SSHPOOL列表中这个源IP是否有hitcount,因为是第一个包,显而易见,列表是0,规则a判定这个数据包不必执行DROP,并且也不处理这个数据包,将数据包转给下条规则;
•规则b将这个数据包计入SSHPOOL列表,就是做+1,因为规则中有-j ACCEPT,规则b放行这个包;
•当第2个SSH包到达本机,规则a检查SSHPOOL列表的hitcount,发现没有超过3,于是判定不执行DROP并转给下条规则处理;
•规则b在SSHPOOL中+1,并放行,第2个数据包进入本机;
•第3个数据包过程如上;
•第4个包到达本机,规则a检查SSHPOOL列表中的hitcount,发现是3了已经连接3次了,于是执行DROP,不必再转给下条规则了丢弃该包。
从上面的流程可以看出,--set的功能在于计录数据包,将源IP加入列表。--update的功能在于判定数据包在seconds和hitcount条件下是否要DROP。
7. 返回Windows操作机中,查看metasploit,发现SSH暴力破解由于连接错误终止。
部分实验截图:
centos服务器:
window截图:
attack.exe 泛洪攻击模块截图
msf工具截图:
相关文章:

Linux防火墙(7)
实验目的 通过该实验了解Linux防火墙iptables实现原理,掌握iptables基本使用方法,能够利用iptables对操作系统进行加固。预备知识基本原理 netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,具有完成…...

2.11整理(2)(主要关于teacher forcing)
teacher forcing 训练迭代过程早期的RNN预测能力非常弱,几乎不能给出好的生成结果。如果某一个unit产生了垃圾结果,必然会影响后面一片unit的学习。RNN存在着两种训练模式(mode): free-running mode:就是常见的那种训练网络的方式: 上一个sta…...

亿级高并发电商项目-- 实战篇 --万达商城项目 三(通用模块、商品服务模块、后台API模块、IDEA忽略文件显示等开发工作
专栏:高并发项目 👏作者简介:大家好,我是小童,Java开发工程师,CSDN博客博主,Java领域新星创作者 📕系列专栏:前端、Java、Java中间件大全、微信小程序、微信支付、若依框…...

IDEA下java程序的调试(简易实例图示版)
在线排版不太好看,介意的读者可下载word下来看:https://download.csdn.net/download/xijinno1/87441301IDEA下java程序的简单调试-System.out.println首先本次进行调试的一个程序是实现从1累加到100的功能,是在IDEA下进行编写的。如图所示&am…...

动态规划算法
1.应用场景-背包问题 背包问题:有一个背包,容量为 4 磅 , 现有如下物品 要求达到的目标为装入的背包的总价值最大,并且重量不超出要求装入的物品不能重复 2.动态规划算法介绍 动态规划(Dynamic Programming)算法的核心思想是&…...

nacos的单机模式和集群模式
文章目录 目录 文章目录 前言 一、nacos数据库配置 二、单机模式 三、集群模式 四、使用nginx集群模式的负载均衡 总结 前言 一、nacos数据库配置 在数据库中创建nacos_config 编码格式utf8-mb4的数据库 把上面的数据库文件导入数据库 在 配置文件中添加如下 spring.datasour…...

Spring Boot 整合定时任务完成 从0 到1
Java 定时任务学习 定时任务概述 > 定时任务的应用场景非常广泛, 如果说 我们想要在某时某地去尝试的做某件事 就需要用到定时任务来通知我们 ,大家可以看下面例子 如果需要明天 早起,哪我们一般会去定一个闹钟去通知我们, 而在编程中 有许许多多的…...

Dialogue Transformers
Abstract 本文介绍了一种基于 Transformer 架构的 对话策略,其中自注意力机制被应用于对话轮次(dialogue turns)的序列上。近期的一些工作使用层次化的循环神经网络(hierarchical recurrent neural networks)在对话上下文中对多个话语(utterances)进行编码,但是我们认…...

【遇见青山】项目难点:缓存击穿问题解决方案
【遇见青山】项目难点:缓存击穿问题解决方案1.缓存击穿互斥锁🔒方案逻辑过期方案2.基于互斥锁方案的具体实现3.基于逻辑过期方案的具体实现1.缓存击穿 缓存击穿问题也叫热点Key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效…...

2023Flag具体实施计划(短期)
重新看了flag ,要做的事情太多,太杂,上周一周时间都在纠结和琢磨,该怎么下手。如何达成小目标。特别是沟通,汇报,演讲能力, 以及整体体系化的思维能力的训练。如何做到多思考,而不是瞎搞。这边重…...

研一寒假C++复习笔记--左值和右值的理解和使用
目录 1--左值和右值的定义 2--简单理解左值和右值的代码 3--非const引用只能接受左值 1--左值和右值的定义 左值:L-Value,L理解为 Location,表示可寻; 右值:R-Value,R理解为 Read,表示可读&a…...

Android 11.0 动态修改SystemProperties中ro开头系统属性的值
需求: 在11.0的产品开发中,对于定制功能的需求很多,有些机型要求可以修改系统属性值,对于系统本身在10.0以后为了系统安全性,不允许修改ro开头的SystemProperties的值,所以如果要求修改ro的相关系统属性&am…...

为什么分库分表
系列文章目录 文章目录系列文章目录前言一、什么是分库分表二、分库分表的原因分库分表三、如何分库分表3.1 垂直拆分1.垂直分库2、垂直分表3.2 水平拆分水平分库水平分表水平分库分表的策略hash取模算法range范围rangehash取模混合地理位置分片预定义算法四、分库分表的问题分…...

1625_MIT 6.828 stabs文档信息整理_下
全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 继续之前的学习笔记,整理一下最近看过的一点stabs资料。 这一页中有一半的信息是Fortran专用的,直接跳过。参数的符号修饰符是p,…...

论文阅读 | Rethinking Coarse-to-Fine Approach in Single Image Deblurring
前言:ICCV2021图像单帧运动去糊论文 论文地址:【here】 代码地址:【here】 Rethinking Coarse-to-Fine Approach in Single Image Deblurring 引言 图像去糊来自与物体或相机的运动。现有的deblur领域的深度学习方法大多都是coarse-to-fin…...

Mysql 增删改查(二)—— 增(insert)、删(delete)、改(update)
目录 一、插入 1、insert 2、replace(插入否则更新) 二、更新(update) 三、删除 1、delete 2、truncate(截断表,慎用) 一、插入 1、insert (1) 单行 / 多行插入 全列插入:…...

JSD2212复习串讲
1. Java语言基础阶段 这一部分主要是练,给一些题目还有讲解一些最基础的语法,做一些额外的补充 1.1 基本概念 1.2 变量 1.2.1 数据类型 4类8种 基本类型:整形、浮点型、字符型、布尔型 整形:byte -》short-》int-》long 浮点…...

sphinx 升级到6.x后的Jquery问题
sphinx 升级到6.0 后,以前对于jquery的默认引用方式发生了改变以前在编译后的html中jquery是如下引用的:<script src"_static/jquery.js"></script>而升级到6.0后,对于jquery 是一个googleapi的远程jquery调用…...

NSSCTF Round#8 Basic
from:http://v2ish1yan.top MyDoor 使用php伪协议读取index.php的代码 php://filter/readconvert.base64-encode/resourceindex.php<?php error_reporting(0);if (isset($_GET[N_S.S])) {eval($_GET[N_S.S]); }if(!isset($_GET[file])) {header(Location:/index.php?fi…...

多传感器融合定位十二-基于图优化的建图方法其一
多传感器融合定位十二-基于图优化的建图方法其一1. 基于预积分的融合方案流程1.1 优化问题分析1.2 预积分的作用1.3 基于预积分的建图方案流程2. 预积分模型设计3. 预积分在优化中的使用3.1 使用方法3.2 残差设计3.3 残差雅可比的推导3.3.1 姿态残差的雅可比3.3.2 速度残差的雅…...

RockChip MPP编码
概述瑞芯微提供的媒体处理软件平台(Media Process Platform,简称 MPP)是适用于瑞芯微芯片系列的通用媒体处理软件平台。该平台对应用软件屏蔽了芯片相关的复杂底层处理,其目的是为了屏蔽不同芯片的差异,为使用者提供统…...

【学习笔记】NOIP暴零赛2
细思极恐,我的能力已经退步到这个地步了吗? 数据结构 这题的修改是强行加进去迷惑你的。 考虑怎么求树的带权重心。 完了我只会树形dp 完了完了 结论:设uuu的子树和为szusz_uszu,所有点权值和为sss,那么树的带…...

linux基本功系列之hostname实战
文章目录前言一. hostname命令介绍二. 语法格式及常用选项三. 参考案例3.1 显示本机的主机名3.2 临时修改主机名3.3 显示短格式的主机名3.4 显示主机的ip地址四. 永久修改主机名4.1 centos6 修改主机名的方式4.2 centos7中修改主机名永久生效总结前言 大家好,又见面…...

Easy-Es框架实践测试整理 基于ElasticSearch的ORM框架
文章目录介绍(1)Elasticsearch java 客户端种类(2)优势和特性分析(3)性能、安全、拓展、社区(2)ES版本及SpringBoot版本说明索引处理(一)索引别名策略&#x…...

【数据结构】双向链表的模拟实现(无头)
目录 前言: 1、认识双向链表中的结点 2、认识并创建无头双向链表 3、实现双向链表当中的一些方法 3.1、遍历输出方法(display) 3.2、得到链表的长度(size) 3.3、查找关键字key是否包含在双链表中(contains) 3.…...

vue自定义指令---处理加载图片失败时出现的碎图,onerror事件
目录 一、自定义指令 1、局部注册和使用 2、全局注册和使用 二、自定义指令处理图片加载失败(碎图) 一、自定义指令 vue中除v-model、v-show等内置指令之外,还允许注册自定义指令,获取DOM元素,扩展额外的功能。 1、局…...

加盟管理系统挑选法则,看完不怕被坑!
经营服装连锁店铺究竟有多难?小编已经不止一次听到身边的老板,抱怨加盟连锁店铺难以管理了,但同时呢,也听到了很多作为加盟商的老板,抱怨总部给的支持和管理不到位。服装加盟店铺管理,到底有哪些难点呢&…...

alertmanager笔记
1 prometheus的思想 所有告警都应该立刻处理掉,不应该存在长时间未解决的告警。所以具体的表现就是高频的数据采集,和告警的自动恢复(默认5分钟) 2 alertmanager API调用 使用如下命令即可手工制造告警,注意startsA…...

Android Jetpack组件之WorkManager后台任务管理的介绍与使用(二)
一、介绍 通过上一篇文,Android Jetpack组件之WorkManager后台任务管理的介绍与使用(一)_蜗牛、Z的博客-CSDN博客 我们可以弄清楚workmanager从接入到使用的基本流程。基本可以满足我们日常。那只是简单的入门。如果遇到更复杂的功能,那简单的就无法满…...

【MySQL】第十七部分 约束
【MySQL】第十七部分 约束 文章目录【MySQL】第十七部分 约束17. 约束17.1 约束的分类17.2 非空约束17.3 唯一性约束17.4 主键约束17.5 自增列约束17.6 外键约束17.7 默认约束17.8 check约束总结17. 约束 约束: 可以在创建表的时候规定约束,也可以在表创建之后添加,约束顾名思…...