iptables 防火墙整理及简单应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iptables 防火墙整理及简单应用相关的知识,希望对你有一定的参考价值。

一、什么是防火墙(Firewall)?

   防火墙是一种位于内部网络(主机防火墙)与外部网络(网络防火墙)之间的网络安全防护系统,根据特定的访问规则,允许或限制数据传输通过。主要作用是为了限制企业内部的用户对外的访问,以及互联网上的用户对企业内部的访问,在最大程度上阻止了各个环节的攻击行为(可来自企业内部,也可来自互联网)。


二、防火墙一般作用

   1、数据包过滤:数据包过滤是指监控通过 的数据包的特征来决定放行或阻止该数据包。防火墙通过数据包过滤可以实现阻挡攻击,禁止外部或内部访问的某些站点,限制每个IP的流量和连接数。

   2、数据包透明转发:防火墙一般架设在提供某些服务的服务器前,用户对服务器的访问请求与服务器的响应给用户的信息,都需要经过防火墙的转发,因此防火墙具备网关的能力

   3、阻挡外部攻击:用户发送的信息是防火墙所不允许的,防火墙会立即将其阻断,避免其进入防火墙后面的服务器中。

   4、记录攻击行为:防火墙可以根据需要把攻击行为记录下来。


三、防火墙分类

   1、按网络环境分:

     硬件防火墙:软件防火墙嵌入在硬件中,一般的软件安全厂商所提供的硬件防火墙便是在硬件服务器厂商定制硬件,然后再把linux系统与自己的软件系统嵌入。价格贵,性能好,缺泛灵活性。

     软件防火墙:单独使用软件系统来完成防火墙功能,将软件部署在系统主机上,其安全性较硬件防火墙差,同时占用系统资源,在一定程度上影响系统性能,但灵活性较好。

        2、  按作用范围分:

                    主机防火墙:(内部网络)

                    网络防火墙:(外部网络)


四、包过滤防火墙(iptables是其中之一)

        包过滤防火墙是一种查看所经过的数据包的包头,由此决定DROP(丢弃)这个数据包,还是ACCEPT(接受)这个数据包并让它通过,也可能执行其他更复杂的动作。

        在Linux系统中,包过滤功能是内建于内核的,它针对每一个数据包的包头,按照包过滤规则进行判定,与规则相匹配的数据包依据路由信息继续转发,否则就丢弃。

        包过滤是在IP层实现,包过滤根据数据包的源IP地址、目的IP地址、协议类型(TCP、UDP或ICMP)、源端口、目的端口、ICMP消息类型、TCP包头中的ACK位等包头信息以及数据包传输方向等信息来判断是否允许数据包通过。

        包过滤也包括与服务相关的过滤,这是指基于特定的服务进行包过滤,由于大多服务监听都基于特定的TCP/UDP端口,因此为阻断所有进入特定服务的链接,防火墙只需将所有包含特定TCP/UDP目的端口的包丢弃即可。

      

        1、 包过滤防火墙策略:

                拒绝来自某主机或某网段的所有连接。

                允许来自某主机或某网段的所有连接。

                拒绝来自某主机或某网段的指定端口的连接。

                允许来自某主机或某网段的指定端口的连接。

                拒绝本地主机或本地网络与其他主机或其他网络的所有连接。

                允许本地主机或本地网络与其他主机或其他网络的所有连接。

                拒绝本地主机或本地网络与其他主机或其他网络的指定端口的连接。

                允许本地主机或本地网络与其他主机或其他网络的指定端口的连接。


        2、过滤数据包的基本过程

                包过滤规则必须被包过滤设备端口存储起来。

                当数据包到达端口时,对数据包包头进行语法分析。如IP、TCP、UDP包头中的字段。

                包过滤规则以特殊的方式存储。数据包规则顺序必须与规则存储顺序相同。

                如果一条规则阻止数据包传输或接收,则此数据包便不被允许。

                如果一条规则允许数据包传输或接收,则此数据包便可以被继续处理。

                如果数据包不满足任何一条规则时,则此数据包便被阻塞。


五、iptables包过滤器防火墙

        iptables是一个用户态的防火墙应用软件,集成于目前大多数Linux内核中。它实际上是由netfilter和iptables两个组件组成 ,netfilter组件了称为内核空间,是内核的一部分。iptables组件是一种工具,也称用户空间,它使用插入、修改和除去信息包过滤表中的规则变得方便快捷。


        1、netfilter:

        在整个网络流程的若干位置放置了一些检测点(HOOK),而在每个检测点上登记了一些处理函数进行处理(如包过滤,NAT等,甚至可以是 用户自定义的功能)。 

            IP层的五个HOOK点的位置如下所示

    [1]:INPUT:经路由查找后,送往本机的通过此检查点,INPUT包过滤在此点进行;

    [2]:OUTPUT:本机进程发出的包通过此检测点,OUTPUT包过滤在此点进行。

    [3]:FORWARD:要转发的包通过此检测点,FORWARD包过滤在此点进行;    

    [4]:PREROUTING:刚刚进入网络层的数据包通过此点(刚刚进行完版本号,校验和等检测), 目的地址转换在此点进行;

    [5]:POSTROUTING:所有马上便要通过网络设备出去的包通过此检测点,内置的源地址转换功能(包括地址伪装)在此点进行;


   2、iptables链:

                [1]、内置链:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING技术分享

                [2]、自定义链:用于内置链的补充(没有勾子函数)----可实现灵活的规则管理机构,不能单独生效,只有在内置链调用时,关联时才生效。

                

        3、iptables功能:

filter:过滤,防火墙;------真正的防火墙意义

nat:网络地址转换,主要用于修改源IP或目标IP,也可以改端口;-----------network address translation

mangle:拆解报文,做出修改,并重新封装起来;

raw:关闭nat表上启用的连接追踪机制;


        4、功能与链的关系:

raw:PREROUTING,OUTPUT

mangle:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

nat:PREROUTING,OUTPUT,POSTROUTING

filter:INPUT,FORWARD,OUTPUT


         5、报文的流向

流入本机:PREROUTING------>INPUT

由本机流出:OUTPUT--------->POSTROUTING

转发:PREROUTING--->FORWARD---->POSTROUTING


   6、路由功能发生的时刻:

报文进入本机后:判断目标主机是?

报文离开本机之前:判断经由哪个接口送往下一部?


  7、添加规则时的考量点:

                要实现哪种功能判断添加到那个表上

                报文流经的路径:判断添加到那个链上 

注:上的规则次序,因为检查的次序;因此,隐含一定的应用规则

1同类规则(访问同一应用),匹配范围小的放上()面;

2不同类的规则(访问不同应用),匹配报文频率较大的放在上(前)面;

3)将哪些可由一条规则描述的多个规则合并起来;(减少规则的数目,有可能提高性能)

4设置默认策略;


六、iptables的基本应用

 

    1、查看iptables规则:  L(列出)   S(显示)

===================L==================

iptables -L:列出所有链的规则(默认filter表)

iptables -nL:以数字格式列出所有的链(Ip和端口)

iptables -vL:详细列出所有链的规则

 

iptables -L INPUT:列出INPUT链的规则

iptables -L OUTPUT:列出OUTPUT链的规则

iptables -L FORWARD:列出FORWARD链的规则

iptables -L INPUT #:列出INPUT 链的#号规则

===================S==========================

iptables -S:显示所有链的规则

iptables -vS:显示所有链的详细规则

 

iptables -S INPUT:显示INPUT链的规则

iptables -S OUTPUT:显示OUTPUT链的规则

iptables -S FORWARD:显示FORWARD链的规则

iptables -S INPUT #:显示INPUT 链的#号规则

 

    2、清除iptables指定链和表中所有规则:

 

iptables -F:清除所有链的规则(默认filter表)

iptables -F INPUT:清除INPUT链的所有规则

iptables -F FORWARD:清除FORWARD链的所有规则

iptables -F OUTPUT:清除OUTPUT链的所有规则

 

iptables -D:清除所有链的规则(默认filter表)

iptables -D INPUT #:清除INPUT链的#号规则

iptables -D OUTPUT #:清OUTPUT链的#号规则

iptables -D FORWARD #:清除FORWARD链的#号规则

 

    3、计数清除

iptables -Z:清除所有链的规则计数

iptables -Z INPUT:清除INPUT链的规则计数

iptables -Z OUTPUT:清除OUTPUT链的规则计数

iptables -Z FORWARD:清除FORWARD链的规则计数

 

iptables -Z INPUT #:清除INPUT链的#号规则计数

iptables -Z OUTPUT #:清除OUTPUT链的#号规则计数

iptables -Z FORWARD #:清除FORWARD链的#号规则计数

 

    4、设置链的默认策略

 

iptables -P :设置链的默认策略

iptables -P INPUT DROP :设置INPUT链拒绝所有

iptables -P OUTPUT DROP :设置OUTPUT链拒绝所有

iptables -P FORWARD DROP :设置FORWARD链拒绝所有

 

iptables -P INPUT  ACCEPT :设置INPUT链允许所有

iptables -P OUTPUT  ACCEPT :设置OUTPUT链允许所有

iptables -P FORWARD  ACCEPT :设置FORWARD链允许所有

 

    5、插入规则

 

iptables -I INPUT 1   :在INPUT链中插入第1号规则

iptables -A INPUT    :在INPUT链后追加一条规则

 

    6、替换指定链中的指定规则

 

iptables -R INPUT 1   :替换INPUT链中的第1号规则

iptables -R OUTPUT 1   :替换OUTPUT链中的第1号规则

iptables -R FORWARD 1   :替换FORWARD链中的第1号规则

 

    7、用户自定义链

创建:

iptables -N NAME :创建用户自定义链NAME

更改:

iptables -E NAME NEW_NAME:更改NAME链名为NEW_NAME

删除:

iptables -X NAME :删除用户自定义链NAME

 

 

    8、基本规则匹配器

 

指定协议:-p

tcp 、udp、icmp、all等协议!(表示非,加在协议之前)

 

指定icmp类型:

iptables -A INPUT -picmp --icmp-type echo-request -j ACCEPT

 

指定ip地址:

iptables -A INPUT -s192.168.1.2 -j ACCEPT

iptables -A INPUT -s192.168.0.0/24 -j ACCEPT

 

指定接口:

iptables -A INPUT -ieth0 -j ACCEPT

iptables -A FORWARD -o eth0 -j ACCEPT

 

指定端口号:

iptables -A INPUT -p tcp --sport 80 -j ACCEPT

iptables -A INPUT -p tcp --sport www -j ACCEPT

 

指定IP碎片:

iptables -A FORWARD -p tcp -s 192.16.0.0/24 -d 192.168.1.200 --drop 80 -j ACCEPT    # 允许192.16.0.0/24这个网段访问192.168.1.20080端口

iptables -A FORWARD -p tcp  -f  -s 192.16.0.0/24 -d 192.168.1.200 -j ACCEPT    

 

指定TCP标记:

iptables -A FORWARD -p tcp  --tcp-flags ALL NONE -j ACCEPT 

iptables -A FORWARD -p tcp  --tcp-flags ALL SYN,ACK  -j ACCEPT 

iptables -A FORWARD -p tcp  --tcp-flags SYN,ACK,FIN,RST SYN -j ACCEPT 

关于ufwfirewalld及iptables之间的关系整理

iptables防火墙规则整理

Linux中级之netfilter/iptables应用及补充

iptables 防火墙在网络中的应用及设置ftp服务的外网访问

防火墙及iptables命令

centos6 防火墙iptables操作整理