Iptables防火墙原理

版权声明:本文为小胡子博主原创文章,转载请附上博文链接! https://blog.csdn.net/woshaguayi/article/details/90731145

一、Iptables概念

     iptables是隔离主机以及网络的工具,通过自己设定的规则以及处理动作对数据报文进行检测以及处理

iptables 是 Linux 中比较底层的网络服务,它控制了 Linux 系统中的网络操作,firewalld不仅仅是对 iptables 上层封装那么简单,还有 ipv6 支持等功能。同时,iptables 不仅仅是防火墙这么简单,它基本上能实现你在 linux 上对于网络的所有需求

linux的防火墙由netfilter和iptables组成。用户空间的iptables制定防火墙规则,内核空间的netfilter实现防火墙功能。

     netfilter(内核空间)位于Linux内核中的包过滤防火墙功能体系,称为Linux防火墙的“内核态”。

    iptables(用户空间)位于/sbin/iptables,是用来管理防火墙的命令的工具,为防火墙体系提供过滤规则/策略,决定如何过滤或处理到达防火墙主机的数据包,称为Linux防火墙的“用户态”。

防火墙的发展史就是从墙到链再到表的过程,也即是从简单到复杂的过程。为什么规则越来越多,因为互联网越来越不安全了,所有防火墙的的规则也越来越复杂。防火的工具变化如下:

    ipfirewall(墙)-->ipchains(链条)--iptables(表)

    2.0版内核中,包过滤机制是ipfw,管理工具是ipfwadm;

    2.2 版内核中,包过滤机制ipchain,管理工具是ipchains;

    2.4版及以后的内核中,包过滤机制是netfilter,管理工具iptables

二 、ptables原理

三、Iptables命令

定义默认策略
iptable -t filter --policy forward DROP
iptable -t filter -P forward DROP

规则管理

-A  --append  在规则最后追加
-I INPUT 2 --insert 2  在指定位置插入,不指定位置在最上面
-D   --delete  删除一个规则
-R    --replace
-F    --flush

-Z 清空计数器   匹配的最大报文个数    匹配所有报文大小之和
 -L --list

-i --in-interface
-o --out-interface
-p --protocol  udp tcp icmp
-s --source
-d --destination

链管理

-N  new自定义一条新的链规则   -X delete 删除一条自定义的链规则

-E 重命名自定义的链,引用计数不为0不能重命名,也不能删除

动作

-j  reject ---reject-with tcp-reset   return 返回调用链  redirect  重定向端口   LOG --log-prefix "IPtables"  记录日志

    drop  丢弃  accept  接受

    dnat  目的地址转换  snat 源地址转换  mark防火墙标记  masquerade 地址伪装

扩展模块,需要加载扩块,   才可以生效

   隐式扩展:不需要手动加载模块,因为他们是对协议的扩展,但凡使用-p 指明了协议,就表示已经指明了扩展的模块

   tcp    --source-port  --sport  起始端口:结束端口    --dport  起始端口:结束端口

           --tcp-flags MARK comp

           --syn    --tcp-flags SYN,RST,ACK,FIN SYN   必须为1,其余为0,用于匹配第一次握手

   udp

   icmp   icmp --icmp-type  echo-reply 8  echo-request 0

 显示扩展:必须手动加载模块,

-m multiport  离散方式多个端口  最多15个 --ports  --sports  --dports

iprange 连续ip  --src-range  --dst-range

 string  对报文中应用层数据做字符串模式匹配检测  

  --algo  字符串检测算法     bm   kmp

  --string 要检测的字符串模式   --hex-string  16进制

  time  --datestart   --datestop --timestart  --timestop

-m state  NEW ESTABLISHED RELATED INVALID

   -m connlimit --connlimit above 链接个数
-m limit --limit  /second /hours /day 
         --limit-burst  瞬间流量控制
-m mac --mac-source  不能用于output和postrouting
-m mark --mark 用来比对封包是否被标识某个号码,当封包被比对成功时,我们可以通过mark处理动作,将该标识标示一个号码,号码最大为4294967296
 

recent模块

--name 设定名称列表  默认default  --resource 源地址,默认   --rdest 目的地址    --seconds 指定时间内   --hitcount  命中次数

--set  将地址添加进列表并更新信息,含地址加入的时间戳

--recheck坚持地列表,以第一个匹配开始计算时间

 --update 以最后一个计算时间   --remove  在列表里面删除相应地址,后跟列表名称以及地址

ssh链接60秒内只允许链接两次

iptables -t filter -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 2 -j drop

iptables -t filter -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name SSHPOOL --set -j accept

防止cc以及非伪造的ip的syn flood

iptables -t filter -A INPUT -p tcp --dport 80 --syn  -m recent --name webpool --recheck --seconds 60 --hitcount 10 -j LOG --log-prefix 'dos' --log-ip-options

iptables -t filter -A INPUT -p tcp --dport 80 --syn  -m recent --name webpool --recheck --seconds 60 --hitcount 10 -j DROP

iptables -t filter -A INPUT -p tcp --dport 80 --syn  -m recent --name webpool --set -j accept

设置打开端口的钥匙

iptables -t filter -A INPUT -p icmp --icmp-type echo-request -m length --length 1078 -j LOG --log-prefix 'sss'

指定数据包1078 ip头部20 ICMP头部8字节

iptables -t filter -A INPUT -p icmp --icmp-type echo-request -m length --length 1078 -m recent --set --name sshopen --rsource -j accept

检查sshopenbiao表中60秒内记录如果有源地址则允许访问tcp22端口

iptables -t filter -A INPUT -p tcp --dport 22 -syn  -m recent --rcheck --seconds 60 --name sshopen -rsource -j accept

发送ping包指定数据1178 将客户端从sshopen中移除,客户端将不能使用tcp22的端口建立链接

iptables -t filter -A INPUT -p icmp --icmp-type echo-request -m length --length 1178 -m recent --set --name sshopen --remove -j accept

mangle  修改数据包首部

iptables -t mangle -A prerouting -i eth0 -j TTL --ttl-dec 10

iptables -t mangle -A prerouting -i eth0 -j TTL --ttl-inc 1

iptables -t mangle -A prerouting -i eth0 -j TTL --ttl-set 45

猜你喜欢

转载自blog.csdn.net/woshaguayi/article/details/90731145
今日推荐