防火墙 iptables

防火墙分类

  • 包过滤防火墙(packet filter)
  • 应用层网关代理(Application level Gateway)
  • 状态防火墙(stateful firewall)

包过滤防火墙和状态防火墙区别:

  • 包过滤防火墙:静态防火墙,通过IP数据报头部的五元素(地址、协议、端口)过滤数据,因为五元素在会话中不变,故称其为静态。
    优点是规则简单,易实现,处理速度快。缺点是难以应对ip碎片攻击,不支持复杂协议,不能防止对应用层的攻击,无法应对nmap -sA扫描。
    在这里插入图片描述
  • 状态防火墙: 动态包过滤防火墙, 收到连接请求时建立一张存储连接信息的表,基于这个表对出入数据进行管理,如iptables防护墙。同一会话,虽然五元组不变,但是状态标识是变化的,所以称之为动态。可设置白名单和黑名单。缺点是消耗资源。

iptables防火墙简介

状态防火墙,linux的防火墙由netfilter和iptables组成,2.4内核以后,用户空间的iptables制定规则,内核空间的netfilter实现防火墙功能。
需要root权限

防火墙规则通常有两种基本策略。一是黑名单策略;二是白名单策略。

  • 黑名单策略指没有被拒绝的流量都可以通过,这种策略下管理员必须针对每一种新出现的攻击,制定新的规则,因此不推荐。
  • 白名单策略指没有被允许的流量都要拒绝,这种策略比较保守,根据需要,逐渐开放,目前一般都采用白名单策略,推荐。

iptables的结构

总体上是四表五链结构,每张表有几种内置链。Iptables的底层就是利用Netfilter的hook技术设置条件,而“链”则表示利用hook设置条件的位置,比如发包前,收包前,转发前等等。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

iptables命令

iptables [ -t 表名 ] 管理选项 [ 链名 ] [ 条件匹配 ] [ -j 目标动作或跳转 ]

  1. 选表,表决定数据报文处理的方式,不指定表名时,默认表示filter表
  2. 选链,链决定数据报文流经的位置,不指定链名时,默认表示该表内所有链
  3. 选条件,条件决定对数据报文做何种匹配
  4. 选择处理数据报文的动作,制定相应的防火墙规则

在这里插入图片描述

  • -A,Append one or more rules to the end of the selected chain.
  • -D,Delete one or more rules from the selected chain.
  • -l ,Insert one or more rules in the selected chain as the given rule number.
  • -R,Replace a rule in the selected chain.
  • -P 制定policy(ACCEPT, DROP)
  • -F,Flush the selected chain ,清空链
  • -L,List all rules in the selected chain.

例1 查看已设置的规则

在这里插入图片描述

例2 只能发包,不能收包

在这里插入图片描述

例3 只接收icmp echo reply的包

在这里插入图片描述

例4:根据连接状态表选择接收的包,即拒绝新的连接请求和无效链接,只接收已建立连接的相关请求

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

参考

https://www.cnblogs.com/frankb/p/7427944.html
《TCP/IP详解》
《UNIX网络编程》

原文地址:https://www.cnblogs.com/chzhyang/p/11359993.html