防火墙

本文详细介绍iptables防火墙的工作原理、基本概念与命令语法。涵盖了iptables的三表五链、规则写法及其管理命令等内容,并提供了实用的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介

1、这里使用的工具是iptables

iptables与ipvsadm一样,是一个配置工具,本身不是一项服务,工作在用户层,iptables编辑的规则可以被netfilter(网络过滤器)读取使用


2、防火墙的策略分为:通、堵

通:默认全部关闭,再为需要的服务开通允许(先关后开)

堵:默认全部开启,再根据需求关闭(先开后关)


3、iptables基础概念:三表五链

表:filter,nat,mangle,(raw)

链:prerouting,input,forward,output,postrouting

参考此图:



二、语法简介

1、iptables(选项)(参数)


2、选项内容

1、表操作

-t<表>:指定要操纵的表;


2、链操作

-L:显示规则链中已有的条目;
-F:清楚规则链中已有的条目;
-Z:清空规则链中的数据包计算器和字节计数器;


3、链中规则操作

-A:向规则链中添加条目;
-D:从规则链中删除条目;
-i:向规则链中插入条目;
-R:替换规则链中的条目;


-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;
-h:显示帮助信息;


4、匹配操作

-p:指定要匹配的数据包协议类型;
-s:指定要匹配的数据包源ip地址;

-j<目标>:指定要跳转的目标;
-i<网络接口>:指定数据包进入本机的网络接口;
-o<网络接口>:指定数据包要离开本机所使用的网络接口。

语法如下

iptables   -t 表名     <-A/I/D/R>     规则链名    [规则号]      <-i/o 网卡名>     -p 协议名    <-s 源IP/源子网>     --sport 源端口      <-d 目标IP/目标子网>     --dport 目标端口     -j 动作

表名包括:

raw:高级功能,如:网址过滤。
mangle:数据包修改(QOS),用于实现服务质量。
net:地址转换,用于网关路由器。
filter:包过滤,用于防火墙规则。


规则链名包括:

INPUT链:处理输入数据包。
OUTPUT链:处理输出数据包。
PORWARD链:处理转发数据包。
PREROUTING链:用于目标地址转换(DNAT)。
POSTOUTING链:用于源地址转换(SNAT)。
任何一个数据包,只要经过本机,必将经过这五个链中的其中一个链。



动作包括:

accept:接收数据包。
DROP:丢弃数据包。
REDIRECT:重定向、映射、透明代理。
SNAT:源地址转换。
DNAT:目标地址转换。
MASQUERADE:IP伪装(NAT),用于ADSL。
LOG:日志记录。


三、规则写法详解:

1、大纲

iptables定义规则的方式比较复杂:
格式:iptables  [-t table] COMMAND chain CRETIRIA -j ACTION
-t table:3个filter nat mangle
COMMAND:定义如何对规则进行管理
chain:指定你接下来的规则到底是在哪个链上操作的,当定义策略的时候,是可以省略的
CRETIRIA:指定匹配标准
-j ACTION:指定如何进行处理
比如:不允许172.16.0.0/24的进行访问。
iptables      -t filter       -A                   INPUT      -s 172.16.0.0/16   -p udp --dport 53        -j DROP
                  表(table)       操作(command)    链(chain)      数据源                                协议匹配          端口匹配                        动作
当然你如果想拒绝的更彻底:
iptables -t filter -R INPUT 1 -s 172.16.0.0/16 -p udp --dport 53 -j REJECT
iptables -L -n -v#查看定义规则的详细信息


详解COMMAND:(注意全都是大写)

1.链管理命令(这都是立即生效的)(链的整体管理)

         -P(pretermission) :设置默认策略的(设定默认门是关着的还是开着的)
             默认策略一般只有两种
             iptables -P INPUT (DROP|ACCEPT)  默认是关的/默认是开的
             比如:
             iptables -P INPUT DROP 这就把默认规则给拒绝了。并且没有定义哪个动作,所以关于外界连接的所有规则包  括Xshell连接之类的,远程连接都被拒绝了。

        -F: FLASH,清空规则链的(注意每个链的管理权限)
             iptables -t nat -F PREROUTING
             iptables -t nat -F 清空nat表的所有链
        -N:NEW 支持用户新建一个链
            iptables -N inbound_tcp_web 表示附在tcp表上用于检查web的。
        -X: 用于删除用户自定义的空链
            使用方法跟-N相同,但是在删除之前必须要将里面的链给清空昂了
        -E:用来Rename chain主要是用来给用户自定义的链重命名
            -E oldname newname
         -Z:清空链,及链中默认规则的计数器的(有两个计数器,被匹配到多少个数据包,多少个字节)
             iptables -Z :清空

2.规则管理命令(链内规则管理)

         -A:追加,在当前链的最后新增一个规则
         -I num : 插入,把当前规则插入为第几条。
            -I 3 :插入为第三条
         -R num:Replays替换/修改第几条规则
            格式:iptables -R 3 …………
         -D num:删除,明确指定删除第几条规则

3.查看管理命令 “-L”

附加子命令
-n:以数字的方式显示ip,它会将ip直接显示出来,如果不加-n,则会将ip反向解析成主机名。
-v:显示详细信息
-vv
-vvv :越多越详细
-x:在计数器上显示精确值,不做单位换算
--line-numbers : 显示规则的行号
-t nat:显示所有的关卡的信息


详解匹配标准(参数越多,越精细,但是要对服务的情况有详细的了解,出入端口,ip,协议)

1.通用匹配:源地址目标地址的匹配

iptables -t filter -A INPUT -s 172.16.0.0/16 -p udp --dport 53 -j DROP
-s:(source)指定作为源地址匹配,这里不能指定主机名称,必须是IP
      IP | IP/MASK | 0.0.0.0/0.0.0.0
      而且地址可以取反,加一个“!”表示除了哪个IP之外
-d:(destination)表示匹配目标地址
-p:用于匹配协议的(这里的协议通常有3种,TCP/UDP/ICMP)
-i eth0:从这块网卡流入的数据
              流入一般用在INPUT和PREROUTING上
-o eth0:从这块网卡流出的数据
               流出一般在OUTPUT和POSTROUTING上

2.扩展匹配

2.1隐含扩展:对协议的扩展
-p tcp :TCP协议的扩展。一般有三种扩展
--dport XX-XX:指定目标端口,不能指定多个非连续端口,只能指定单个端口或者连续的端口,比如:--dport 21 或者 --dport 21-23 (此时表示21,22,23)
--sport:指定源端口
--tcp-fiags:TCP的标志位(SYN,ACK,FIN,PSH,RST,URG)
对于它,一般要跟两个参数:
1.检查的标志位
2.必须为1的标志位
--tcpflags syn,ack,fin,rst syn = --syn
表示检查这4个位,这4个位中syn必须为1,其他的必须为0。所以这个意思就是用于检测三次握手的第一次包的。对于这种专门匹配第一包的SYN为1的包,还有一种简写方式,叫做--syn
-p udp:UDP协议的扩展
--dport
--sport
-p icmp:icmp数据报文的扩展
--icmp-type:
echo-request(请求回显),一般用8 来表示
所以 --icmp-type 8 匹配请求回显数据包
echo-reply (响应的数据包)一般用0来表示
2.2显式扩展(-m)
扩展各种模块
-m multiport:表示启用多端口扩展
之后我们就可以启用比如 --dports 21,23,80



详解-j ACTION

常用的ACTION:
DROP:悄悄丢弃,一般我们多用DROP来隐藏我们的身份,以及隐藏我们的链表
REJECT:明示拒绝
ACCEPT:接受
custom_chain:转向一个自定义的链
DNAT
SNAT
MASQUERADE:源地址伪装
REDIRECT:重定向:主要用于实现端口重定向
MARK:打防火墙标记的
RETURN:返回
在自定义链执行完毕后使用返回,来返回原规则链。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值