亲,咱聊聊iptables

咱们直入正题吧,说到iptables,这里不得不提提防火墙,因为iptables就是防火墙的一种实现方式那么防火墙有哪些呢?

防火墙分为

包过滤型防火墙

  • 根据tcp首部或者ip首部数据进行判断

  简单的包过滤

仅检查tcp或者ip的包头信息

  带状态检测的包过滤型

几种状态:

NEW

ESTABLISHEDestablished

INVALID(invalid)

RELATED(related)

应用层网关防火墙

  • 根据数据包传输的实际数据内容就行过滤判断

     

当然防火墙还有硬件防火墙,软件防火墙,主机防火墙,网络防火墙等等


 

一、   首先需要知道的是  iptables工作Tcp/Ip协议层,iptables的规则在内核中(因为tcp/Ip协议栈在内核中啊)

二、  说了这么多iptables是什么iptables 是用户空间的命令,用来配置Linux内核过滤ipv4ipv6包的规则集的一种应用程序,并且还能实现NAT的功能

iptables的主要作用:

列出包过滤集的内容

增加,移动(包含删除),修改包过滤集的规则

列出或者清楚每个包过滤规则集规则的计数器

注:包过滤集我们可以称谓它为CHAIN(过滤包的规则集合)

 IPtables的表

        mangle

       NATsnatdnat

  • 简单的来世NAT是为缓解目前Ip地址资源不足的情况下,应运而生的一种技术,将私有网站地址转换为公网地址,在互联网上就行通信的一种技术。

  •   snat:源地址转换:

  •   应用防火墙时SNAT是实施在POSTrouting
  • dnat:目标地址转换

      应用防火墙时 DNAT是实施在PRErouting

      Filter(默认)

       raw


      iptables命令详解

    命令格式

    iptables [-t  table ]  COMMAND  CHAIN parameters  -j ACTION

   说明: CHAIN需要大写

ü  tablesraw,mangle,nat,filter 四个表,-t 可以省略 默认为filter

ü  CHAININPUT,OUTPUT,PRErouting,POSTrouting,FORWARD

ü  COMMAND

-A:append 附加,在链的最后面附加一条规则

 
  1. -I n: insert 插入,在链中插入规则为第n条 

 
  1. -D n: delete 删除,在链中删除第n条规则 

 
  1. -R n:replace 替换 在链中替换第n条规则 
  2. -L:列出链中的规则  常和其子选项 -n, –v 一起使用 
  3. Iptables  -L  –n  –v 

 
  1. 也常和其子选项 --line-numbers 使规则带行号显示 

 
  1. -F:flush,清空链中的规则 
 
  1. -N:new 新建链 
  2. -X:delete 删除自定义的空链且没有被引用的链 
  3. -E:rename 给链重命名 
  4. -P:policy设置链的默认策略 
 
  1. -Z:zero 清楚链的计数器 

 关于iptables匹配条件的解释
 
  1.    Parameters: 
  2.    基本匹配 
  3.   -s: source ip|network  源IP或者网络 
  4.   -d:destination ip|network 
  5. -p:协议 tcp|ip|icmp 
  6. -i {interface}: in 数据包流入的接口 
  7. -o{interface}:out 数据包的流出接口 
  8.    扩展匹配-(调用iptables的模块,以便扩展其功能,-m选项省略) 
  9.    隐含扩展 
  10.    -p  tcp 
  11.           --sport port: 
  12.           --dport port: 
  13.    -p  udp 
  14.           --sport port: 
  15.           --dport port: 
  16.    -p  icmp 
  17.           --icmp-type :  

 
  1.    显式扩展(调用iptables的模块,以便扩展其功能,-m选项不能省略) 
  2.       包的几种常见的状态有: 
  3. NEW 
  4. ESTABLISHED(established) 
  5. INVALID(invalid) 
  6. RELATED(related) 
  7.          显示扩展使用格式 
  8.    -m state   --state 包状态 
  9.   例如1 
  10. Iptables  –A  INPUT  -d 172.16.10.1 –p tcp  –dport 80 -m state  --state NEW ESTABLISHED –j DROP  

 
  1. 例如2:在主机防火墙上做iptables仅允许172.16.10.1主机和192.168.0.205主机通信 
  2.      实施iptables之前在172.16.10.2主机上测试其和172.16.10.1的通信均正常 

 
  1. 实施iptables之后在172.16.10.2主机上测试其和172.16.10.1的通信均正常 
 
  1. 实施iptables之后在172.16.10.2主机上测试其和172.16.10.1无法通信 

 
  1. 结果绑架了172.16.10.1和192.168.0.205主机 
 
  1.    -m multiport  限制多个端口组合 
  2. 子选项 –source-ports [!]  
  3.        --destination—ports [!] 
  4.                --ports [!] 
  5.           [!]:叹号可以对端口取反 
  6.  例如: -m multiport –source-ports 21,22,80,8080 
  7.    -m iprange  限制某个ip段 
  8.                [!] --src-range ip-ip  
  9.                [!] --dst-range ip-ip 
  10. [!]:叹号可以对ip段就行取反 
  11.  
  12.    例如: 
 
  1. 对其取反 
  2. Iptables  -R  INPUT 1 –s 192.168.0.205 –p tcp  -m multiport –destination-port ! 21,80 –j DROP 

 
  1. iptables -A INPUT -d 172.16.10.1 -p tcp --dport 21 -m state --state NEW -m iprange --src-range 192.168.0.200-192.168.0.205  --j DROP 

 
  1.    -m connlimit  显示连接次数 
  2. [!]--connlimit-above  n 
  3. [!]: 对连接的次数取反 
  4. iptables -p tcp  --dport 22 –m state –state NEW -m connlimit --connlimit-above 2 -j DROP 
  5. iptables -p tcp --syn --dport 23 -m connlimit --connlimit-above 2 -j REJECT 

 
  1.    -m limit  
  2. 子选项 –limit rate   平均最大速率(单位/second,minute,hour,day等) 
  3.     -limit-burst number 平均最大数率的峰值 默认为5 
  4. 例如: 
  5.       
 
  1.    -m string :string模块可以限制使用模式匹配出来的字符串,但是要求内核在2.6.14以上 
  2.   子选项  -algo bm|kmp  (字符串编码的算法) 
  3.           --string pattern 
  4. 例如: 
  5. iptables -A OUTPUT -p tcp --dport 80 -m string --algo bm --string "Redhat" -j DROP 
  6. (无法匹配URL中的字符串,只能匹配网页内容) 
  7.     
  8.     Action常用的有: 
  9. ACCEPT 
  10. DROP 
  11. REJECT 
  12. SNAT
  13. DNAT
  14. 关于NAT的例子
  15. 例如:
  16. iptables -t NAT -A POSTROUTING -s 172.16.0.0/16 -j SNAT --to-source 192.168.0.205
 
  1. 最后说了这么多关于iptables的规则,那么怎么保存这些规则呢?
  2. iptables 的配置文件(iptales不是一项服务但是可以按照服务的启动方式启动) 
  3. /etc/rc.d/init.d/iptabls 其启动脚本 
  4. service  iptables start 的方式启动iptabls 
  5. iptables 的规则保存的文件在/etc/sysconfig/iptabls (默认)
  6. 保存规则:(覆盖方式)
  7. 1:使用service iptables save 命令将规则保存到默认的保存路径中
  8. 2:使用数据流重定向的方式 iptables-save >保存位置
  9. 读取规则
  10. iptables-restore < 规则位置
  11.  

 亲,如您发现错误,或者理解不到位的,欢迎留言,交流(别拍砖啊,呵呵)

持续更新中.............