学习笔记之iptables(二)

2017-01-14 19:50:21来源:CSDN作者:Ghost_leader人点击

1.linux防火墙的隐含扩展

前面的有关防火墙的博客地址点击打开链接

   我的操作系统是centos6.用的防火墙是iptables。其实centos7的firewall也是基于iptabels再封装的。但我觉得还是iptables还是更好学一点。


首先iptables他不是服务,但有服务脚本。其实iptables就是在装载和移除相应的内核模块。

这里说下卸载内核模块的命令modprobe。


前面的学习笔记已经详细说了Iptables的概念等知识。其实iptables是特别强大的。他针对TCP/IP四层模型中的TCP层和IP层,可以针对协议报头中的内容进行拦截和放行。比如说。大家都知道。TCP协议中一个握手包的报头信息中SYN为1代表的是请求连接,FIN为1代表的是断开连接的请求。


那么在iptables中有一选项 -p  协议名  

比如说

-p tcp 

     --sport  端口

     --dport  端口

     --tcp-flags <mask> <comp> 其中mask代表要检查的标志位。comp表示这些位必须为1。

             --tcp-flags SYN,ACK,FIN,RST  SYN  

知道上面的那个例子是什么意思吗。

后面的解释已经说的很清楚了。就是检查SYN,ACK,FIN,RST 其中 SYN要为1。剩下的要为0。

这就是tcp三次握手的第一次。其实还可以简写为--syn。



2.iptables的显式扩展。

说白了就是扩展模块。当想要使用这个显式扩展式就是用-m 使用这些模块来增强匹配。

当使用-m 引入模块后就可以匹配更丰富的内容

  state:状态扩展

        结合ip_conntrack模块追踪会话的状态。

[root@suse ~]# lsmod|grep ipiptable_filter          2793  1 ip_tables              17831  1 iptable_filterip6t_REJECT             4628  2 nf_conntrack_ipv6       8748  2 nf_defrag_ipv6         11182  1 nf_conntrack_ipv6nf_conntrack           79758  2 nf_conntrack_ipv6,xt_stateip6table_filter         2889  1 ip6_tables             18732  1 ip6table_filteripv6                  317340  283 ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6

这样的状态扩展会追踪

NEW:新的连接请求

ESTABLISHED:已建立的连接

INVALID:非法状态

RELATED:相关连的


比如  -m state --state NEW,ESTABLISHED -j ACCEPT



下面的就是一个在OUTPUT 链上只放行已建立连接的请求。只是什么意思呢。




就是说,我现在本机只接受被人连接。我不能主动去连接别人(当然OUTPUT的默认策略是DROP

.不信?当然这里只是针对22端口

就是不能主动与外界联系

那么怎么针对所有协议。

那么我加一条.不指定协议就默认是所有协议。



1.还有多端口匹配。可实现离散的多端口匹配。(!可以取反)

--source-ports 22,80,21,20

--destination-ports 22,80,21,20

--ports22,80,21,20   (这个就不区分源端口还是目的端口)



2.还有多IP地址的匹配。可以实现多个IP写一块匹配。(iprange模块)方便的指定一段IP地址。



当然还有dst--range


3.还有一个模块叫做connlimit。用来限制连接数

像迅雷这样的下载工具。会开启多线程,每一个线程都会是一个连接。可以使用connlimit模块中的扩展来加以限制

也就是。

! --connlimit-above n       每台主机最多连接n个请求

这个模块引进后,一台主机低于2个请求才会被接受。也就是他不能无限制的连接我。

下面实验一下这个模块。


看看防火墙策略

访问一下试试

第一个好着。第二个就打不开


4.limit模块也可以做流量控制。

采用令牌桶控制。它不能限定整体的上限,但是它可以限定单位时间内可以放进来多少个连接。


--limit <RATE>                    速率

--limit-burst <COUNT>       一次可以放进来几个


举个例子。我只允许分钟被ping30次。每次放行一个ping请求。如下图


看看效果,看,一般的丢包率


这就是速率限定。


有了limit和connlimit就可以保护主机不受大流量的冲击。(当然某些用户会被限制连接)


 5.还有字符串匹配

请求中含有abc的字符串将不予相应。


 

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台