linux防火墙ddos,Linux iptables防火墙详解 + 配置抗DDOS***策略实战
Linux 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下的很多防火墙都好,有兴趣可以试下!
linux防火墙ddos,Linux iptables防火墙详解 + 配置抗DDOS***策略实战相关推荐
- linux防火墙端口配置策略路由,Linux iptables防火墙详解 + 配置抗DDOS攻击策略实战...
Linux 内核中很早就实现了网络防火墙功能,在不同的Linux内核版本中,使用了不同的软件实现防火墙功能. 在2.0内核中,防火墙操作工具叫:ipfwadm 在2.2内核中,防火墙操作工具叫:ipc ...
- ddos源码 ntp_详解 NTP反射型DDos攻击
简介 NTP Reply Flood Attack (NTP射型Ddos 攻击)以下简称NTP_Flood是一种利用网络 中 NTP服务器的脆弱性(无认证,不等价数据交换,UDP协议),来进行DDos ...
- linux tftp客户端安装命令,Linux系统中tftp命令使用详解
Linux系统中tftp命令主要是传输文件用的.下面由学习啦小编为大家整理了linux系统中tftp命令使用详解,希望对大家有帮助! Linux系统中tftp命令使用详解 语法 tftp [主机名称或 ...
- linux系统里route -n不起作用,Linux系统中traceroute命令使用详解
Linux系统中traceroute命令可以追踪到网络数据包的路由途径.下面由学习啦小编为大家整理了linux系统中traceroute命令使用详解,希望对大家有帮助! Linux系统中tracero ...
- linux服务器杀毒软件命令,悬镜Linux服务器卫士-木马查杀详解
原标题:悬镜Linux服务器卫士-木马查杀详解 今天悬镜小编详细给大家讲解下悬镜管家中-木马查杀功能的使用情况. 对于WebShell的理解,"Web"显然需要服务器开放Web服务 ...
- linux添加cfg,Linux安装详解-配置ks.cfg实现自动安装过程
Linux安装详解-配置ks.cfg实现自动安装过程 之前发过一篇关于通过PXE实现Linux批量无人值守自动安装的文章(可以参考),不过写的只是具体的配置和操作,对于原理部分没有说明,最近通过一段时 ...
- Linux系统中的软件管理详解(下)—搭建网络软件仓库及第三方软件仓库
Linux系统中的软件管理详解(下) 5.软件仓库管理命令 a)dnf 命令: 管理软件仓库中的安装包 dnf repolist ##列出仓库信息clean all ##清除系统中已经加载的仓库缓存信 ...
- Linux中/proc目录下文件详解
Linux中/proc目录下文件详解(一) 声明:可以自由转载本文,但请务必保留本文的完整性. 作者:张子坚 email:zhangzijian@163.com 说明:本文所涉及示例均在fedora ...
- linux tf命令,Linux系统命令介绍之vmstat命令详解
今天小编要跟大家介绍的vmstat命令详解.熟悉Linux系统和使用Linux系统工作的小伙伴都知道Linux的命令有很多,而真正在工作中用到的命令应该不超过几十个,为了让大家更好的掌握这些命令,小编 ...
最新文章
- selenium操作浏览器cookie方法
- ROS系统 C++或Python实现话题消息的定义与使用
- 数据库中DDL,DML,DCL
- oracle脂肪分析仪,CEM推出油脂快速分析新技术
- python处理netcdf_在python中高效读取netcdf变量
- snmp服务中snmpwalk命令常用方法总结
- gradle 构建测试
- android ichartjs 曲线图,C#中利用LightningChart绘制曲线图表
- MATLAB图像生成函数Plot()总结
- 2021-08-16 WPF控件专题 StackPanel 控件详解
- 学校能效管理系统解决方案-校园能源管理之智慧消防(安科瑞-须静燕)
- HDU 2037 (贪心或记忆化搜索)
- 计算机数字音乐合成技术 fm,● 计算机数字音乐合成技术主要有(13)两种方式,其中使用(14)合成的音乐,其音质更好。(13)A. FM和AM - 扁豆云问答...
- position sticky
- excel宏根据表格自动计算机,Excel使用宏录制自动将输入内容排到另一张表的操作方法...
- 一款免费的截图、滚动截屏软件
- 安装卸载Xftp时,遇到的1605和1628问题
- python自动生成采集规则_快速制作规则及获取规则提取器API
- 关于身份认证中的Authenticator及AuthenticationStrategy
- 《数据库系统概念》8-选择、投影等关系运算
热门文章
- Typecho开启全站Pjax
- react中创建一个组件_如何使用React和MomentJS创建一个Countdown组件
- CSS单位之战:EM与。 REMs ...打架! ?
- 如何使用Docker Swarm管理更多容器
- 台式蓝牙模块_华为第一台台式机来了!已上线官网 定价尚未公布
- miniuidatagrid只允许修改某一列_State Processor API:如何读取,写入和修改 Flink 应用程序的状态...
- vscode设置go-lint警告提示
- markdown入门4--矩阵空格公式方程组
- 将Freeswitch SDP 固定为 external_rtp_ip
- 一步一步教你Pycharm的配置Python环境