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

linux防火墙端口配置策略路由,Linux iptables防火墙详解 + 配置抗DDOS攻击策略实战...相关推荐

  1. linux防火墙ddos,Linux iptables防火墙详解 + 配置抗DDOS***策略实战

    Linux iptables防火墙详解 + 配置抗DDOS***策略实战 Linux 内核中很早就实现了网络防火墙功能,在不同的Linux内核版本中,使用了不同的软件实现防火墙功能. 在2.0内核中, ...

  2. linux添加cfg,Linux安装详解-配置ks.cfg实现自动安装过程

    Linux安装详解-配置ks.cfg实现自动安装过程 之前发过一篇关于通过PXE实现Linux批量无人值守自动安装的文章(可以参考),不过写的只是具体的配置和操作,对于原理部分没有说明,最近通过一段时 ...

  3. linux 帐号 配置sftp_Linux 下sftp配置之密钥方式登录详解

    Linux下sftp配置之密钥方式登录 由于vsftp采用明文传输,用户名密码可通过抓包得到,为了安全性,需使用sftp,锁定目录且不允许sftp用户登到服务器.由于sftp使用的是ssh协议,需保证 ...

  4. 详解FTP服务完成Linux和WIN10之间的信息传输(实验详解)

    详解FTP服务完成Linux和WIN10之间的信息传输(实验详解) 一.FTP简介 1. FTP服务--用来传输文件的协议 2.端口 3.数据连接模式 二.相关配置 1.安装FTP服务 2.设置匿名用 ...

  5. Linux系统下SVN服务器的搭建过程详解 UpJ}s7+

    Linux系统下SVN服务器的搭建过程详解 UpJ}s7+   1 环境:  服务器放在redhatAS4.0上,客户端在windows 2000. k_lb"5z   Z]jSq@%1H* ...

  6. 【转载】Linux命令-自动挂载文件/etc/fstab功能详解[转]

    博客园 首页 新随笔 联系 订阅 管理 随笔 - 322  文章 - 0  评论 - 19 Linux命令-自动挂载文件/etc/fstab功能详解[转]     一./etc/fstab文件的作用 ...

  7. linux添加nginx,linux下安装Nginx1.16.0的教程详解

    因为最近在倒腾linux,想安装新版本的nginx,找了一圈教程没有找到对应的教程,在稍微倒腾了一会之后终于成功的安装了最新版. 服务器环境为centos,接下来是详细步骤: 安装必要依赖插件 ? 创 ...

  8. Linux 挂载windows网络共享文件 /etc/fstab功能详解

    转载自: http://www.cnblogs.com/qiyebao/p/4484047.html Linux命令-自动挂载文件/etc/fstab功能详解[转] 一./etc/fstab文件的作用 ...

  9. linux nginx编译详解,Linux下nginx编译安装教程和编译参数详解

    这篇文章主要介绍了Linux下nginx编译安装教程和编译参数详解,需要的朋友可以参考下 一.必要软件准备 1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码 代码如下:# ...

最新文章

  1. python字符照片_python图片转字符图片
  2. python 常用PEP8规范
  3. jquery on()方法和bind()方法的区别
  4. 调查显示:数据中心行业女性获得报酬比男性多
  5. Bugtags 实时跟踪插件 - BugtagsInsta
  6. 卫生纸玫瑰花折法5步_手工教程:做一个漂亮的玫瑰花捧花,用折纸表达我喜欢你...
  7. java语言程序设计第三版沈泽刚课后答案_Java语言程序设计(第3版)学习指导与习题解析...
  8. E4A直播盒子APP源码搭建教程之——后台源码篇
  9. 好未来表格识别大赛 | 获奖名单新鲜出炉!
  10. 2019年MongoDB中文社区 长沙大会
  11. Docker 导出/导入镜像
  12. 个人认为安卓开发前景
  13. 小米 android微博授权管理工具下载,微博
  14. 计算机没考好的检讨书300百以上,考试反思检讨书300字(精选10篇)
  15. 利用python实现Diebold-Mariano检验
  16. 黑马程序员 面向对象总结2
  17. 残差连接residual connection
  18. [附源码]Python计算机毕业设计Django第三方游戏零售平台
  19. CSS选择器权重计算与优先级
  20. 广西信息网-www.xxpt.net

热门文章

  1. 如何改变思维导图的导图结构
  2. .Net Core 登陆验证
  3. Unity文档——AssetBundle使用模式
  4. x86服务器MCE(Machine Check Exception)问题
  5. web.xml放在哪个目录下_美术资源标准(文件夹目录篇)
  6. 一文看懂25个神经网络模型,神经网络模型结构图
  7. java获取当前日期,前一天,前N天,去年同期等日期
  8. 处理器最新排行_CPU跑分工具CINBENCH R23排行榜出炉:AMD锐龙单核、多核均屠榜
  9. Quartus TCL
  10. 怎么看外文文献的影响因子_[转载]如何查找高质量外文文献 - SCI/SSCI/AHCInbs...