Linux iptables防火墙详解 + 配置抗DDOS攻击策略实战

inux iptables防火墙详解 + 配置抗DDOS攻击策略实战

Linux 内核中很早就实现了网络防火墙功能,在不同的Linux内核版本中,使用了不同的软件实现防火墙功能。
在2.0内核中,防火墙操作工具叫:ipfwadm
在2.2内核中,防火墙操作工具叫:ipchains
在2.4以后的内核,防火墙操作工具叫:iptables

ipfwadm 和 ipchains 比较老,已成历史版本,本章主要介绍Iptables

一、iptable 操作命令参数详解

-A  
APPEND,追加一条规则(放到最后)
例如: 
iptables -A INPUT -j ACCEPT  
允许所有访问本机 IP 的数据包通过

-I 
 INSERT,插入一条规则 
例如: 
iptables -I INPUT -j DROP 
在 filter 表的 INPUT 链里插入一条规则(插入成第 1 条)

-D 
DELETE,删除一条规则 
iptables -D INPUT 3(按号码匹配) 
删除 filter 表 INPUT 链中的第三条规则(不管它的内容是什么)

-R 
REPLACE,替换一条规则
例如: 
iptables -R INPUT 9 -j ACCEPT 
将原来编号为 9 的规则内容替换为“-j ACCEPT”

-P 
POLICY,设置某个链的默认规则
例如: 
iptables -P INPUT DROP 
设置 filter 表 INPUT 链的默认规则是 DROP

-F 
FLUSH,清空规则
例如
iptables -F
清空 filter 表中的所有规则

-p
protocol  比对通讯协议
例如
iptables -A INPUT -p tcp
比对通讯协议类型是否相符

-s   
src, source
例如
iptables -I INPUT -s 172.16.0.201 -j DROP
用来比对封包的来源 IP,可以比对单机或网络,比对网络时请用数字来表示屏蔽,例屏蔽:172.16.0.201 IP访问,所有数据都将丢弃

--tcp-flags  比对 TCP
例如
iptables -p tcp --tcp-flags SYN,FIN,ACK SYN
TCP状态旗号包括:SYN(同步)、ACK(应答)、FIN(结束)、RST(重设)、URG(紧急)、PSH(强迫推送)
等均可使用于参数中,除此之外还可以使用关键词 ALL 和 NONE 进行比对

--icmp-type
例如:
iptables -A INPUT -p icmp --icmp-type 8
用来比对 ICMP 的类型编号,可以使用代码或数字编号来进行比对。 案例ICMP类型是:8

-m limit --limit
例如
iptables -A INPUT -m limit --limit 3/sec
用来比对某段时间内封包的平均流量,上面的例子是用来比对每秒平均流量是否超过一次 3 个封包。

配置文件位置:
/etc/sysconfig/iptables

iptables 管理服务命令
开启  service iptables start
关闭  service iptables stop
重起  service iptables restart

二、案例讲解

本例中的规则将会阻止来自某一特定IP范围内的数据包,因为该IP地址范围被管理员怀疑有大量恶意攻击者在活动
如何判断服务是否受攻击?
1.ping测试服务是否丢掉? 掉包几钟可能原因: 你服务受攻击、机房上层线路受攻击、互联网上某个路由不稳定、机器服务/硬件问题(较少)
2.可以搭建流量检查服务来监控服务网络流量 如:Cacti 、MRTG 2种较出名的流量监控 ,但都不是实时的!一般5分钟探测一次
3.在linux上可以用一些脚本代码来监控网卡的实时流量、

查看实时流量脚本 
用vi创建个脚本文件,将以下代码复制进去.赋予权限,运行脚本监测

#!/bin/bash
while [ "1" ]
do
eth=$1
RXpre=$(cat /proc/net/dev | grep $eth | tr : " " | awk ‘{print $2}‘)
TXpre=$(cat /proc/net/dev | grep $eth | tr : " " | awk ‘{print $10}‘)
sleep 1
RXnext=$(cat /proc/net/dev | grep $eth | tr : " " | awk ‘{print $2}‘)
TXnext=$(cat /proc/net/dev | grep $eth | tr : " " | awk ‘{print $10}‘)
clear
echo  -e  "\t RX `date +%k:%M:%S` TX"
RX=$((${RXnext}-${RXpre}))
TX=$((${TXnext}-${TXpre}))
if [[ $RX -lt 1024 ]];then
RX="${RX}B/s"
elif [[ $RX -gt 1048576 ]];then
RX=$(echo $RX | awk ‘{print $1/1048576 "MB/s"}‘)
else
RX=$(echo $RX | awk ‘{print $1/1024 "KB/s"}‘)
fi
if [[ $TX -lt 1024 ]];then
 TX="${TX}B/s"

elif [[ $TX -gt 1048576 ]];then

TX=$(echo $TX | awk ‘{print $1/1048576 "MB/s"}‘)

else

TX=$(echo $TX | awk ‘{print $1/1024 "KB/s"}‘)

fi

echo -e "$eth \t $RX   $TX "

done

 

查看网卡的流量时   rx是接收(receive)    tx是发送(transport)
目前流量正常

测试在另外台虚机上尝试用软件不停的访问本机站点,流量提升

假如你认为这流量已是不正常流量,可以用以下命令查看有哪些IP在连接本机80端口,然后进行屏蔽!

netstat -ant | grep ":80" | awk ‘{printf "%s %s\n",$5,$6}‘ | sort

假如你认为0.201IP有可疑,想进行屏蔽,用以下命令

屏蔽流进ip

iptables -I INPUT -s 172.16.0.201 -j DROP

解封屏蔽
iptables -D INPUT -s 172.16.0.201 -j DROP

只屏蔽172.16.0 IP段访问本机80端口,其他端口可以正常,命令如下:
iptables -I INPUT -p tcp --dport 80 -s 172.16.0.201/24 -j DROP

解封屏蔽
iptables -D INPUT -p tcp --dport 80 -s 172.16.0.201/24 -j DROP

测试:用172.16.0.2尝试访问服务80端口

 

在添加的规则时,REJECT(拒绝)目标和 DROP(放弃)目标这两种行动有所不同。REJECT 会拒绝目标分组的进入,并给企图连接服务的用户返回一个 connection refused 的错误消息。DROP 会放弃分组,而对 telnet 用户不发出任何警告.

命令添加的规则只是临时生效,重起iptables服务后将会恢复,永久进行保存命令service iptables save或者直接修改配置文件
修改完/etc/sysconfig/iptables 防火墙配置文件,需要重起iptables服务才会生效

三、抗DDOS攻击完整策略与讲解

默认的iptables规则是无法过滤DDOS攻击数据的,我们需要添加过滤规则实现iptables拥有抗DDOS的能力

以下防火墙规则是本人真实linux 邮局服务器上的防火墙规则,曾受过100M的SYN DDOS流量攻击,本人服务器国际带宽只有20M,
几乎使整个服务陷于瘫痪状态,后在iptables上增加了SYN过滤规则后,网络基本恢复正常,不掉包延时在100左右,正常情况延时45,但服务邮局服务收发没有任何问题!

系统:Centos 5.5

以上iptable 配置规则讲解:

屏蔽 SYN_RECV 的连接
-A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT

限制IP碎片,每秒钟只允许100个碎片,用来防止DoS攻击
-A FORWARD -f -m limit --limit 100/sec --limit-burst 100 -j ACCEPT

限制ping包每秒一个,10个后重新开始
-A FORWARD -p icmp -m limit --limit 1/sec --limit-burst 10 -j ACCEPT

限制ICMP包回应请求每秒一个
-A FORWARD -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT

此处自定义一个表
-A FORWARD -j RH-Firewall-1-INPUT

完全接受 loopback interface 的封包
-A RH-Firewall-1-INPUT -i lo -j ACCEPT

允许主机接受 ping
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT

网际网路印表机服务 (可以删除)
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT

允许连线出去后对方主机回应进来的封包
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

允许防火墙开启指定端口 (本服务器规则开了常用端口 22 21 80 25 110 3306等)
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport port -j ACCEPT

限制SSH登陆
只允许在172.16.0.2上使用ssh远程登录,从其它计算机上禁止使用ssh
iptables -A INPUT -s 172.16.0.2 -p tcp --dport 22 -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -j DROP

Iptables 防火墙是一种很强悍的防火墙,只要规则配置好,能大量提高系统安全性,要比windows下的很多防火墙都好,有兴趣可以试下!

时间: 2024-08-02 10:59:20

Linux iptables防火墙详解 + 配置抗DDOS攻击策略实战的相关文章

Linux iptables 防火墙详解

0x00 iptables介绍 linux的包过滤功能,即linux防火墙,它由netfilter 和 iptables 两个组件组成. netfilter 组件也称为内核空间,是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集. iptables 组件是一种工具,也称为用户空间,它使插入.修改和除去信息包过滤表中的规则变得容易. 0x01 iptables的结构 iptables的结构: iptables -> Tables -> Chains ->

linux下iptables防火墙详解

Linux网络防火墙基础知识 工作在主机或网络的边缘,对于进出的数据报文按照事先定义好的规则中的匹配标准进行检查,并做出对应的处理办法的机制称作防火墙. IP报文首部:主要包含源IP,目标IP TCP报文首部:主要包含源端口,目标端口,标志位SYN,ACK,RST,FIN 匹配标准解释: IP: 源IP,目标IP TCP: 源端口,目标端口 TCP三次握手三个阶段表示: 第一阶段:  SYN=1,FIN=0,RST=0,ACK=0; 第二阶段: SYN=1,ACK=1,FIN=0,RST=0;

linux安全之iptables防火墙详解2

在上篇文章中我们介绍了iptables主要的链INPUT,这次我们主要介绍PREROUTING  POSTROUTING这两个链主要用于实现nat功能 nat:相信学网络的人对这个应该很熟悉,网络地址转换,一般用于局域网共享上网或者特殊的端口转换服务 PREROUTING:在数据包到达防火墙时进行路由之前执行的规则,作用是改变数据包的目的地址,目的端口 PSOTROUTING:在数据包离开防火墙进行路由判断之后执行的规则,作用是改变数据包的原地址 源端口 1.部署企业上网网关实战,实验环境如下,

linux安全之iptables防火墙详解1

在介绍iptables防火墙之前我们先来了解下IP TCP报文的格式,因为iptables防火墙的规则基本都是根据这些报文中的字段信息来做匹配,所以报文的格式就非常重要了 ip头部信息 抓包信息如下 TCP头部信息如下 抓包信息如下 大家可以对照着图片和抓包对比每个字段的意思,这里理解起来会更方便,好了下面正式开始介绍我们的iptables,先附上图片简单说明下 Iptables/netfiter Iptables:命令行的编写规则工具 Netfiter:在内核中 链(内置): 相当于5道阀门,

iptables防火墙详解

iptables常用命令 iptables -nv -L 查看iptables列表 iptables -F 清空iptables规则 iptables-save > /etc/sysconfig/iptables 保存iptables规则到文件 以下是我服务器的iptables配置 # Generated by iptables-save v1.4.7 on Tue Jul 5 12:06:29 2016 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [

Linux iptables命令详解

iptables命令主要是设置防火墙信息的 常见命令参数 Usage: iptables -[AD] chain rule-specification [options] iptables -I chain [rulenum] rule-specification [options] iptables -R chain rulenum rule-specification [options] iptables -D chain rulenum [options] iptables -[LS] [

Linux—网络防火墙详解

https://www.cnblogs.com/lemon-flm/p/7608029.html https://www.cnblogs.com/cy-8593/p/9506758.html https://www.jb51.net/article/156954.htm 原文地址:https://www.cnblogs.com/liuhaidon/p/11558676.html

Linux iptables防火墙原理与常用配置

Linux系统中,防火墙(Firewall),网址转换(NAT),数据包(package)记录,流量统计,这些功能是由Netfilter子系统所提供的,而iptables是控制Netfilter的工具.iptables将许多复杂的规则组织成成容易控制的方式,以便管理员可以进行分组测试,或关闭.启动某组规则.iptable只读取数据包头,不会给信息流增加负担,也无需进行验证. iptables结构 iptables由4表.5链和用户在链内写入的各种规则所组成. 1.表:容纳各种规则链: 表是按照功

Linux集群详解

Linux集群详解 集群或者说是群集:其目的是为了实现将多台计算机组合以来完成特定的任务,比如天气预报,大型网络游戏,这些都需要很大的运算量,单台计算机实现成本太高,而且不显示.那么就需要通过集群的方式,将废弃的或者正在使用的计算机联合起来,结合整体的力量来解决这些问题 集群类型: 1.  负载均衡集群 load blancing ,简称LB 2.  高可用性集群 high availibility,简称 HA 3.  高性能集群 high performance,简称 HP 作用: 1.  负