IPTables防火墙基本使用和命令

IPTables防火墙介绍

iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的"安全框架"中,这个安全框架"才是真正的防火墙,这个框架的名字叫netfiter。netfilter才是防火墙真正的安全框架(framework),netfilter位于内核空间。

五张表:filter,nat,mangle,raw,security

表主要用于将不同的规则储存在不同表中

(1) filter表:默认表,负责过滤数据包,使用频率最高

(2) nat表:用于网络地址转换(IP、端口)和流量转发

(3) mangle表:主要应用在修改数据包、流量整形、给数据包打标识

(4) raw表:这个表很少被用到,主要用于配置连接跟踪相关内容

(5) security表:这个表用于安全Linux的防火墙规则,是iptables最近的新增表

五条链:

流量方向

(1) INPUT:处理入站数据包

(2) OUTPUT:处理出站数据包

(3) FORWARD:处理转发数据包

(4) PREROUTING:在进行路由选择后处理数据包,用来做DNAT

(5) POSTROUTING:在进行路由选择前处理数据包,用来做SNAT

规则:

基于防火墙策略设置的各类防护规则,防火墙规则的执行顺序认为从前到后依次执行、遇到匹配的规则就不在继续向下检查、如果遇到不匹配的规则则会继续向下进行。

包过滤原理:

主要是网络层,针对IP数据包,体现在对包内的IP地址,端口等信息的处理上

匹配流程:

1)表间的优先顺序

raw–>mangle–>nat–>filter

2)链间的优先顺序

入站数据:PREROUTING–>INPUT

出站数据:OUTPUT–>POSTROUTING

转发数据:PREROUTING–>FORWARD–>POSTROUTING

注意:

1)如果没有任何策略,则直接允许

2)不指定表时,默认filter表

3)不指定链名时,默认指表内所有链

4)除非设置链的默认策略,否则必须指定匹配条件

5)选项、链名、控制类型使用大写字母,其余均为小写字母

6)规则写在 /etc/sysconfig/iptables 文件中

安装与配置IPTables

CentOS-7默认启动的是firewalld防火墙,启动iptables时需要停止firewalld防火墙

停止firewalld防火墙

systemctl stop firewalld

安装iptables防火墙

yum install -y iptables iptables-services

启动iptables

systemctl start iptables
IPTables使用方法

格式

iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]

例:

iptables -t filter -A INPUT -p icmp -j ACCEPT

查看命令

选项

作用

-L

列出所有的规则条目

-n

以数字形式显示地址、端口等信息

-v

以更详细的方式显示规则信息

--line-numbers

查看规则时,显示规则序号

例:

常用命令

有序号的查看规则

iptables -nL --line-numbers

常见操作命令

选项

作用

-A

后面添加规则

-I num

插入,把当前规则插入为第num条(默认在最前面,也可以在某条规则的前面添加)

-D num

删除,删除链内第num条的一条规则

-F

清空iptables默认表的所有规则

-P

设置默认策略

例:

指定序号删除

iptables -D INPUT 3

常见匹配条件

类别

条件类型

用法

通用匹配

协议匹配

-p 协议名

地址匹配

-s 源地址、-d 目的地址

接口匹配

-i 入站网卡、-o 出站网卡

隐含匹配

端口匹配

-sport 源端口、-dport 目的端口

TCP标记匹配

-tcp-flags 检查范围被设置的标记

ICMP类型匹配

-icmp-type ICMP类型

显示匹配

多端口匹配

-m multiport --端口匹配(--sport/--dport)

IP范围匹配

-m iprange --src-range IP范围

MAC地址匹配

-m mac -- mac-source MAC地址

状态匹配

-m state --state连接状态(NEW 新连接、ESTABLISHED双向传输、RELATED 新连接但前提是有链接、INVAILD未知链接,—般DROP)

常见控制类型

类型

作用

ACCEPT

允许通过

DROP

直接丢弃,不给出任何回应

REJECT

拒绝通过,必要时会给出提示

LOG

记录日志信息,然后传给下一条规则继续匹配

永久性保存修改的规则

service iptables save

注意:不保存关机会清空规则

注意:源端口和目的端口的关系

例:

假设我的服务器地址为192.168.1.1,ikun的IP为12.34.56.78,端口为8088,给自己的服务器配置

出站:

iptables -I OUTPUT -o ens33 -p tcp -d 12.34.56.78 --dport 8088 -j ACCEPT

入站:

iptables -I INPUT -i ens33 -p tcp -s 12.34.56.78 --sport 8088 -j ACCEPT

同时设定多个端口入站

iptables -A INPUT -i ens33 -p tcp -s 12.34.56.78 -m multiport --sport 80,22,443,3306 -j ACCEPT

指定IP范围入站

iptables -A INPUT -i ens33 -p tcp -m iprange --src-range 12.34.56.78-12.34.56.89 -j ACCEPT 

状态连接

对进来的包的状态进行检测。已经建立tcp连接的包以及该连接相关的包允许通过

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

ICMP类型匹配

代码8表示请求,代码0表式回显

iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT

指定源MAC匹配

iptables -A INPUT -m mac-source 00-50-56-C0-00-02 -j DROP

TCP标记匹配

丢弃SYN请求包,放行其他包

iptables -I INPUT -i ens33 -p tcp --tcp-flags SYN,RST,ACK SYN -j ACCEPT
IPTables NAT策略和地址伪装

注意:地址转发和地址伪装需要开启IPv4转发,并允许转发

开启转发:

echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf

允许转发:

iptables -I FORWARD -p tcp -j ACCEPT
SNAT

源地址转换,Source Network Address Translation,典型应用环境(局域网主机共享单个公网IP地址接入Internet)

例:

将192.168.1.0/24网段转换成78.94.56.12出去

iptables -t nat -A POSTROUTING -p tcp -o ens33 -s 192.168.1.0/24 -j SNAT --to-source 78.94.56.12
MASQUERADE

地址伪装

1)适用于外网IP地址非固定的情况

3)对于ADSL拨号连接,接通常为ppp0、ppp1

2)将SNAT规则改为MASQUERADE即可

例:

将192.168.1.0/24网段进行地址伪装

iptables -t nat -A POSTROUTING -o ens33 -p tcp -s 192.168.1.0/24 -j MASQUERADE
DNAT

目标地址转换,Destination Network Address Translation,典型应用环境(在Internet中发布位于企业局域网内的服务器)

例:

访问79.94.56.12的8888端口时,转发给192.168.1.1的8088端口

iptables -t nat -A PREROUTING -p tcp -i ens33 -d 78.94.56.12 --dport 8888 -j DNAT --to-destination 192.168.1.1:8088

如有错误欢迎指出,最后感谢杨老师的教导

  • 14
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
iptables是一个Linux下的防火墙工具,它基于Netfilter内核模块,可以过滤、修改和重定向网络数据包。iptables提供了很多不同的表和链,可以通过这些表和链来实现不同的防火墙策略。 iptables的表是数据包匹配规则的集合,包括: 1. filter表:这是iptables默认的表,用于过滤数据包,可以实现基本防火墙功能。 2. nat表:该表用于网络地址转换(NAT),可以实现端口映射等功能。 3. mangle表:该表用于对数据包进行修改和处理,比如修改TTL、设置TOS等。 4. raw表:该表用于对数据包进行处理,但不会进行连接跟踪。 iptables的链是一系列规则的集合,用于对数据包进行处理,包括: 1. INPUT链:处理所有进入本机的数据包。 2. OUTPUT链:处理所有从本机发出的数据包。 3. FORWARD链:处理所有通过本机进行转发的数据包。 4. PREROUTING链:在数据包进入本机之前进行处理。 5. POSTROUTING链:在数据包离开本机之后进行处理。 对于iptables的操作,可以使用以下命令: 1. iptables -A/-I/-D/-R chain rule:添加/插入/删除/替换规则到指定链。 2. iptables -F chain:清空指定链的所有规则。 3. iptables -L/-n/-v chain:列出指定链的所有规则,可以选择是否显示IP地址和数据包数量。 4. iptables -P chain policy:设置指定链的默认策略。 5. iptables-save/-restore:保存和恢复iptables规则。 以上是iptables防火墙表和链的操作,希望能对你有所帮助。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值