iptables防攻击

iptables防攻击,第1张

如果处于半开放状态的连接绑定服务器上的资源,则可能通过向服务器大量发送SYN消息来占用所有这些资源。Syn flood是常见的攻击,可以通过以下iptables规则进行阻挡:

所有进入的连接是允许的,直到达到极限:
-limit 1/s:以秒为单位的最大平均匹配率
-limit-burst 3:要匹配的包的最大初始数量

举例1:限制 ssh连接数

假设您需要限制到ssh服务器(端口22)的传入连接在10分钟内不超过10个连接:

举例2:防范DoS攻击

上面的iptables规则将帮助您防止拒绝服务(DoS)攻击您的web服务器。

在上面的例子中:
-m limit:它使用limit iptables扩展名
–limit 25/minute:这限制了每分钟最多25个连接。根据您的具体需求更改此值
-limit-burst 100:这个值表示只有当连接总数达到了limit-burst级别时才会执行limit/min。

举例3:限制每个IP /主机的SSH连接

每个客户端主机只允许3个ssh连接:

举例4:限制每个IP /主机的>一、怎样在Linux系统中安装Iptables防火墙
几乎所有Linux发行版都预装了Iptables。您可以使用以下命令更新或检索软件包:
sudo apt-get install iptables
二、关闭哪些防火墙端口
防火墙安装的第一步是确定哪些端口在服务器中保持打开状态。这将根据您使用的服务器类型而有所不同。例如,如果您运行的是Web服务器,则可能需要打开以下端口:
网络:80和443
SSH:通常在端口22上运行
电子邮件:110(POP3),143(IMAP),993(IMAP SSL),995(POP3 SSL)。
1、还原默认防火墙规则
为确保设置无误,我们需从一套新的规则开始,运行以下命令来清除防火墙中的规则:
iptables -F
2、屏蔽服务器攻击路由
我们可以运行下列标准命令来隔绝常见的攻击。
屏蔽syn-flood数据包:
iptables -A INPUT -p tcp ! –syn -m state –state NEW -j DROP
屏蔽XMAS数据包:
iptables -A INPUT -p tcp –tcp-flags ALL ALL -j DROP
阻止无效数据包:
iptables -A INPUT -p tcp –tcp-flags ALL NONE -j DROP
3、打开所需端口
根据以上命令可屏蔽常见的攻击方式,我们需要打开所需端口。下列例子,供您参考:
允许SSH访问:
iptables -A INPUT -p tcp -m tcp -dport 22 -j ACCEPT
打开LOCALHOST访问权限:
iptables -A INPUT -i lo -j ACCEPT
允许网络流量:
iptables -A INPUT -p tcp -m tcp -dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -dport 443 -j ACCEPT
允许SMTP流量:
iptables -A INPUT -p tcp -m tcp -dport 25 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -dport 465 -j ACCEPT
三、测试防火墙配置
运行下列命令保存配置并重新启动防火墙:
iptables -L -n
iptables-save / sudo tee / etc / sysconfig / iptables
service iptables restart
以上就是简单的iptables防火墙安装与配置过程。

保证数据的安全性是继可用性之后最为重要的一项工作,防火墙技术作为公网与内网之间的保护屏障,起着至关重要的作用。面对同学们普遍不了解在红帽RHEL7系统中新旧两款防火墙的差异,刘遄老师决定先带领读者正确的认识在红帽RHEL7系统中firewalld防火墙服务与iptables防火墙服务之间的关系,从理论和事实层面剖析真相。
本章节内将会分别使用iptables、firewall-cmd、firewall-config和Tcp_wrappers等防火墙策略配置服务来完成数十个根据真实工作需求而设计的防火墙策略配置实验,让同学们不仅能够熟练的对请求数据包流量进行过滤,还能够基于服务程序进行允许和关闭 *** 作,做到保证Linux系统安全万无一失。

保证数据的安全性是继可用性之后最为重要的一项工作,众所周知外部公网相比企业内网更加的“罪恶丛生”,因此防火墙技术作为公网与内网之间的保护屏障,虽然有软件或硬件之分,但主要功能都是依据策略对外部请求进行过滤。防火墙技术能够做到监控每一个数据包并判断是否有相应的匹配策略规则,直到匹配到其中一条策略规则或执行默认策略为止,防火墙策略可以基于来源地址、请求动作或协议等信息来定制,最终仅让合法的用户请求流入到内网中,其余的均被丢弃。

在红帽RHEL7系统中Firewalld服务取代了Iptables服务,对于接触Linux系统比较早或学习过红帽RHEL6系统的读者来讲,突然改用Firewalld服务后确实不免会有些抵触心理,或许会觉得Firewalld服务是一次不小的改变。但其实Iptables服务与Firewalld服务都不是真正的防火墙,它们都只是用来定义防火墙策略功能的“防火墙管理工具”而已,iptables服务会把配置好的防火墙策略交由内核层面的netfilter网络过滤器来处理,而firewalld服务则是把配置好的防火墙策略交由内核层面的nftables包过滤框架来处理。换句话说,当前在Linux系统中其实同时有多个防火墙管理工具共同存在,它们的作用都是为了方便运维人员管理Linux系统的防火墙策略,而咱们只要配置妥当其中一个就足够了。虽然各个工具之间各有优劣特色,但对于防火墙策略的配置思路上是保持一致的,同学们甚至可以不用完全掌握本章节内的知识,而是在这诸多个防火墙管理工具中任选一款来学透即可,完全能够满足日常的工作所需。

在较早期的Linux系统中想配置防火墙默认使用的都是iptables防火墙管理命令,而新型Firewalld防火墙管理服务已经被投入使用多年,但还记得刘遄老师在第0章06小节里谈到过企业不愿意及时升级的原因吧,于是不论出于什么样的原因,目前市场上还有大量的生产环境中在使用着iptables命令来管理着防火墙的规则策略。虽然明知iptables可能有着即将被“淘汰”的命运,但为了让同学们不必在面试时尴尬以及看完手中这本《Linux就该这么学》书籍后能“通吃”各个版本的Linux系统,刘遄老师觉得还是有必要把这一项技术好好卖力气讲一下,更何况各个工具的配置防火墙策略思路上大体一致,具有很高的相同性及借鉴意义。

防火墙会从上至下来读取规则策略,一旦匹配到了合适的就会去执行并立即结束匹配工作,但也有转了一圈之后发现没有匹配到合适规则的时候,那么就会去执行默认的策略。因此对防火墙策略的设置无非有两种,一种是“通”,一种是“堵”——当防火墙的默认策略是拒绝的,就要设置允许规则,否则谁都进不来了,而如果防火墙的默认策略是允许的,就要设置拒绝规则,否则谁都能进来了,起不到防范的作用。

iptables命令把对数据进行过滤或处理数据包的策略叫做规则,把多条规则又存放到一个规则链中,规则链是依据处理数据包位置的不同而进行的分类,包括有:在进行路由选择前处理数据包(PREROUTING)、处理流入的数据包(INPUT)、处理流出的数据包(OUTPUT)、处理转发的数据包(FORWARD)、在进行路由选择后处理数据包(POSTROUTING)。从内网向外网发送的数据一般都是可控且良性的,因此显而易见咱们使用最多的就是INPUT数据链,这个链中定义的规则起到了保证私网设施不受外网骇客侵犯的作用。

比如您所居住的社区物业保安有两条规定——“禁止小商贩进入社区,各种车辆都需要登记”,这两条安保规定很明显应该是作用到了社区的正门(流量必须经过的地方),而不是每家每户的防盗门上。根据前面提到的防火墙策略的匹配顺序规则,咱们可以猜想有多种情况——比如来访人员是小商贩,则会被物业保安直接拒绝在大门外,也无需再对车辆进行登记,而如果来访人员是一辆汽车,那么因为第一条禁止小商贩策略就没有被匹配到,因而按顺序匹配到第二条策略,需要对车辆进行登记,再有如果来访的是社区居民,则既不满足小商贩策略,也不满足车辆登记策略,因此会执行默认的放行策略。

不过只有规则策略还不能保证社区的安全,物业保安还应该知道该怎么样处理这些被匹配到的流量,比如包括有“允许”、“登记”、“拒绝”、“不理他”,这些动作对应到iptables命令术语中是ACCEPT(允许流量通过)、LOG(记录日志信息)、REJECT(拒绝流量通过)、DROP(拒绝流量通过)。允许动作和记录日志工作都比较好理解,着重需要讲解的是这两条拒绝动作的不同点,其中REJECT和DROP的动作 *** 作都是把数据包拒绝,DROP是直接把数据包抛弃不响应,而REJECT会拒绝后再回复一条“您的信息我已收到,但被扔掉了”,让对方清晰的看到数据被拒绝的响应。就好比说您有一天正在家里看电视,突然有人敲门,透过“猫眼”一看是推销商品的,咱们如果不需要的情况下就会直接拒绝他们(REJECT)。但如果透过“猫眼”看到的是债主带了几十个小弟来讨债,这种情况不光要拒绝开门,还要默不作声,伪装成自己不在家的样子(DROP),这就是两种拒绝动作的不同之处。

把Linux系统设置成REJECT拒绝动作策略后,对方会看到本机的端口不可达的响应:

把Linux系统设置成DROP拒绝动作策略后,对方会看到本机响应超时的提醒,无法判断流量是被拒绝,还是对方主机当前不在线:

iptables是一款基于命令行的防火墙策略管理工具,由于该命令是基于终端执行且存在有大量参数的,学习起来难度还是较大的,好在对于日常控制防火墙策略来讲,您无需深入的了解诸如“四表五链”的理论概念,只需要掌握常用的参数并做到灵活搭配即可,以便于能够更顺畅的胜任工作所需。iptables命令可以根据数据流量的源地址、目的地址、传输协议、服务类型等等信息项进行匹配,一旦数据包与策略匹配上后,iptables就会根据策略所预设的动作来处理这些数据包流量,另外再来提醒下同学们防火墙策略的匹配顺序规则是从上至下的,因此切记要把较为严格、优先级较高的策略放到靠前位置,否则有可能产生错误。下表中为读者们总结归纳了几乎所有常用的iptables命令参数,刘遄老师遵循《Linux就该这么学》书籍的编写初衷而设计了大量动手实验,让您无需生背硬记这些参数,可以结合下面的实例来逐个参阅即可。

使用iptables命令-L参数查看已有的防火墙策略:

使用iptables命令-F参数清空已有的防火墙策略:

把INPUT链的默认策略设置为拒绝:

如前面所提到的防火墙策略设置无非有两种方式,一种是“通”,一种是“堵”,当把INPUT链设置为默认拒绝后,就要往里面写入允许策略了,否则所有流入的数据包都会被默认拒绝掉,同学们需要留意规则链的默认策略拒绝动作只能是DROP,而不能是REJECT。

向INPUT链中添加允许icmp数据包流入的允许策略:

在日常运维工作中经常会使用到ping命令来检查对方主机是否在线,而向防火墙INPUT链中添加一条允许icmp协议数据包流入的策略就是默认允许了这种ping命令检测行为。

删除INPUT链中的那条策略,并把默认策略还原为允许:

设置INPUT链只允许指定网段访问本机的22端口,拒绝其他所有主机的数据请求流量:

防火墙策略是按照从上至下顺序匹配的,因此请一定要记得把允许动作放到拒绝动作上面,否则所有的流量就先被拒绝掉了,任何人都获取不到咱们的业务。文中提到的22端口是下面第9章节讲的ssh服务做占用的资源,刘遄老师在这里挖个小坑,读者们稍后学完再回来验证这个实验效果吧!

使用IP地址在192168100/24网段内的主机访问服务器的22端口:

使用IP地址在192168200/24网段外的主机访问服务器的22端口:

向INPUT链中添加拒绝所有人访问本机12345端口的防火墙策略:

向INPUT链中添加拒绝来自于指定192168105主机访问本机80端口(web服务)的防火墙策略:

向INPUT链中添加拒绝所有主机不能访问本机1000至1024端口的防火墙策略:

是不是还意犹未尽?但对于iptables防火墙管理命令的学习到此就可以结束了,考虑到以后防火墙的发展趋势,同学们只要能把上面的实例看懂看熟就可以完全搞定日常的iptables防火墙配置工作了。但请特别留意下,iptables命令配置的防火墙规则默认会在下一次重启时失效,所以如果您想让配置的防火墙策略永久的生效下去,还要执行一下保存命令:

RHEL7是一个集合多款防火墙管理工具并存的系统,Firewalld动态防火墙管理器服务(Dynamic Firewall Manager of Linux systems)是目前默认的防火墙管理工具,同时拥有命令行终端和图形化界面的配置工具,即使是对Linux命令并不熟悉的同学也能快速入门。相比于传统的防火墙管理工具还支持了动态更新技术并加入了“zone区域”的概念,简单来说就是为用户预先准备了几套防火墙策略集合(策略模板),然后可以根据生产场景的不同而选择合适的策略集合,实现了防火墙策略之间的快速切换。例如咱们有一台笔记本电脑每天都要在办公室、咖啡厅和家里使用,按常理推断最安全的应该是家里的内网,其次是公司办公室,最后是咖啡厅,如果需要在办公室内允许文件共享服务的请求流量、回到家中需要允许所有的服务,而在咖啡店则是除了上网外不允许任何其他请求,这样的需求应该是很常见的,在以前只能频繁的进行手动设置,而现在只需要预设好zone区域集合,然后轻轻点击一下就可以切换过去了上百条策略了,极大的提高了防火墙策略的应用效率,常见的zone区域名称及应用可见下表(默认为public):

前面第2章学习Linux命令时刘遄老师提到过的,命令行终端是一种极富效率的工作方式,firewall-cmd命令是Firewalld动态防火墙管理器服务的命令行终端。它的参数一般都是以“长格式”来执行的,但同学们也不用太过于担心,因为红帽RHEL7系统非常酷的支持了部分命令的参数补齐,也正好包括了这条命令,也就是说现在除了能够用Tab键来补齐命令或文件名等等内容,还可以用Tab键来补齐下列长格式参数啦(这点特别的棒)。

与Linux系统中其他的防火墙策略配置工具一样,使用firewalld配置的防火墙策略默认为运行时(Runtime)模式,又称为当前生效模式,而且随着系统的重启会失效。如果想让配置策略一直存在,就需要使用永久(Permanent)模式了,方法就是在用firewall-cmd命令正常设置防火墙策略时添加--permanent参数,这样配置的防火墙策略就可以永久生效了。但是,永久生效模式有一个“不近人情”的特点,就是使用它设置的策略只有在系统重启之后才能自动生效。如果想让配置的策略立即生效,需要手动执行firewall-cmd --reload命令。

接下来的实验都很简单,但是提醒大家一定要仔细查看刘遄老师使用的是Runtime模式还是Permanent模式。如果不关注这个细节,就算是正确配置了防火墙策略,也可能无法达到预期的效果。

查看firewalld服务当前所使用的区域:

查询eno16777728网卡在firewalld服务中的区域:

把firewalld服务中eno16777728网卡的默认区域修改为external,并在系统重启后生效。分别查看当前与永久模式下的区域名称:

把firewalld服务的当前默认区域设置为public:

启动/关闭firewalld防火墙服务的应急状况模式,阻断一切网络连接(当远程控制服务器时请慎用):

查询public区域是否允许请求SSH和>

首先需要将你的web服务器搭建好,然后需要做NAT,我这里有我的一个做NAT的笔记,分享给你

NAT

拓扑结构图:

要求:

1内网能够ping通外网地址,并且成功访问外网中的web服务;

2外网能够访问内网的ftp服务。

步骤:

一:内网服务器配置

1在内网中设置好ip地址,网关和DNS均为NAT服务器内网口地址,并搭建好ftp服务,此处略

二:NAT服务器配置

1在NAT只能中添加一块网卡作为 外网卡,并设置好ip地址

2开启NAT服务器的路由功能

[root@c2 ~]# vi /etc/sysctlconf

netipv4ip_forward = 1              //将0改为1

[root@c2 ~]# sysctl -p                //永久生效

3配置防火墙(必须按照以下循序配置,否则配置完成后不能拼通外网,需配置第二次)

#iptables-X

#iptables-t nat -X

#iptables --flush

#iptables -t nat --flush

//以上为重置链表的命令

#iptables-t nat -A POSTROUTING -s 19216810/24 -o eth1 -j SNAT --to 202101012

//这条命令是将内网19216810/24的源地址映射为NAT服务器的外网口地址,eth1为外网卡

# iptables -t nat -A PREROUTING -p tcp--dport 21 -j DNAT --to 192168111

# iptables -t nat -A PREROUTING -p tcp--dport 20 -j DNAT --to 192168111

//这两条命令是发布内务的ftp服务

或者:

# iptables -t nat -A PREROUTING -p tcp -d 202101012--dport 21 -j DNAT --to 192168111

# iptables -t nat -A PREROUTING -p tcp -d 202101012--dport 20 -j DNAT --to 192168111

#/etc/initd/iptablessave

#/etc/initd/iptablesrestart

验证:

内网访问外网的web服务:

[root@c1 ~]# curl 202101013

web

外网访问内网的ftp服务(外网的防火墙一定要关闭,否则ls查看目录时会出错,或者打开外网的20号端口新建链接的也可以)#

[root@c3 ~]# ftp 202101012

Connected to 202101012 (202101012)

220 (vsFTPd 222)

Name (202101012:root): ftp01

331 Please specify the password

Password:

230 Login successful

Remote system type is UNIX

Using binary mode to transfer files

ftp> ls

227 Entering Passive Mode(192,168,1,11,93,1)

ftp: connect: Network isunreachable     //列不出内容是因为进入了passive模式

ftp>passive                                                      //用passive命令切换passive模式和active模式

Passivemode off

ftp> ls

200 PORT command successful Consider usingPASV

150 Here comes the directory listing

226 Directory send OK

ftp>

补充:

删除防火墙中配置的记录

[root@c2 ~]# iptables -t nat  -L POSTROUTING -n --line-number   //列出记录和记录序号

[root@c2 ~]# iptables -t nat -D POSTROUTING1                 //根据序号删除记录

你将内网的ftp服务换成web服务就可以了,主要是弄懂NAT的原理,将内部服务通过DNAT发布到外网

iptables -t nat -A PREROUTING -d 202114xx -p tcp --destination-port 80 -j DNAT --to 19216802
iptables -t nat -A OUTPUT-s 19216802 -p tcp --source-port 80 -j SNAT --to 202114xx
iptables -t nat -A PREROUTING -d 202114xx -p tcp --destination-port 21 -j DNAT --to 19216801
iptables -t nat -A OUTPUT-s 19216801 -p tcp --source-port 21 -j SNAT --to 202114xx[/color]
19216801和19216802是内网ip


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12681432.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)