iptables 防火墙

目录

一、iptables

1.1 防火墙的概述

1.2 iptables表、链的概述

1.2.1 四表

1.2.2 五链

1.3 匹配流程

二、iptabels的安装

2.1 安装的前提条件

 2.2 iptabels防火墙的配置

2.2.1 基本语法

2.3 添加规则

2.4 查看规则表

2.5 删除、清空规则

2.6 设置默认策略

2.7 通用匹配

2.7.1 通用匹配

 2.7.2 隐含匹配

2.7.3 显示匹配

总结


一、iptables

Linux系统的防火墙主要是IP信息包的过滤,由netfilter组和iptables组成。

是在网络层上工作,对于tcp/ip的数据包进行过滤和限制。

1.1 防火墙的概述

主要由netfilter和iptables组成。

①netfilter:属于内核态的防火墙功能体系

它是内核的一部分,由数据包过滤表组成。

②iptables:属于用户态的防火墙管理体系

是一种用来管理Linux防火墙的命令程序,通常位于/sbin/iptables文件下

1.2 iptables表、链的概述

iptables的作用是为包过滤机制的实现提供规则,通过制定不同的各种规则去告诉如何处理某些协议特征的数据包。

iptabels采用了表和链的分层结构,每一个表中都会有不同的链每个链中会去制定不同的规则去限制数据包。

1.2.1 四表

四表功能
raw确定是否对该数据包进行状态跟踪。其中包括两个规则链 :OUTPUT  PREROUTING
mangle修改数据包内容,对数据包进行标记。其中包括五个规则链:INPUT  OUTPUT   FORIARD   PREROUTING   POSTROUTING
nat负责网络地址的转换,用来修改数据包中的源、目的IP地址或者端口。其中包含三个规则链:OUTPUT   PREROUTING  POSTROUTING

filter 

负责过滤数据包,确定是否放行该数据包。其中包含三个数据链:

INPUT   FORWARD    OUTPUT 

在iptables的四表中,mangle和raw用的较少。每个规则表中要去按照顺序进行

raw→mangle→nat→filter

1.2.2 五链

五链功能
INPUT处理入站的数据包,匹配目标IP为本机的数据包
OUTPUT

处理出站的数据包

FORWARD处理转发数据包,匹配经过本机的数据包
PREROUTING在进行路由器选择前处理数据包,用来修改目的地址,用来做DNAT。相当于把内网服务器的IP和端口映射到路由器的外网IP和端口上
POSTROUTING在路由器选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网

规则链的匹配顺序:

入站数据(外界的数据进入本机):PREROUTING→INPUT→本机的应用程序

出站数据(从防火墙本机向外部地址发送的数据包):本机应用程序→OUTPUT→POSTROUTING

转发数据:PREROUTING→FORWARD→POSTROUTING

●规则链的匹配顺序是自上向下按顺序一次检查,找到相匹配的规则。若在链中找不到相匹配的规则则按照默认的处理

1.3 匹配流程

 入站数据流向:

来自外界的数据包到达防火墙之后,首先会被PREROUTING链处理判断是否修改数据包地址,然后路由器选择如果数据包的目的地址是防火墙本机那么就会传递给INPUT链处理决定是否通过。

转发数据流向:

来自外界的数据包进入防火墙之后首先被PREROUTING链处理,路由器进行判断如果目的地址是其它外部的地址则传递给FORWARD链进行处理,最后交给POSTROUTING链判断是否修改数据包的地址等等

出站数据流向:

防火墙本机向外地址发送数据包时首先进行路由器选择确定路径后再经过OUTPUT链处理,再经过POSTROUTING链去决定是否修改数据包的地址等

二、iptabels的安装

2.1 安装的前提条件

centos7 默认用的是firewall防火墙,需要提前关闭防火墙并且安装iptabels

①关闭防火墙

systemctl stop firewalld.service

systemctl disable firewalld.service

 ②安装iptabels设置成开机自启

yum -y install iptables iptables-services

systemctl start iptables.service

systemctl  enable  iptables.service

 2.2 iptabels防火墙的配置

2.2.1 基本语法

iptables  【-t 表名】 管理选项  【链名】 【匹配条件】  【-j控制类型】

①管理选项

 

-A

在指定链的末尾追加一条新的规则

-I在指定链的开头插入一条新的规则
-R修改指定链中的某条规则
-P设置指定链的默认策略
-D删除指定链中的某一条规则
-F清空指定链中的规则,若没指定链名则清除表中的所有链
-L列出指定链中的规则
-n以数字的形式输出结果
-v显示详细的信息
-Z清空链的计数器
-X清空自定义的链的规则

②控制类型

ACCEPT        允许数据包通过
PROP直接丢弃数据包
REJECT拒绝数据包通过
LOG在var/log/messages文件记录日志,
SNAT修改数据包的源地址
DNAT修改数据包的目的地址
MASQUERADE伪装一个非固定公网IP地址

2.3 添加规则

iptables -t  filter  -A  INPUT  -p  icmp  -j  REJECT   (不允许任何主机去ping 此主机)

 iptables -I INPUT 2 -p tcp --dport 22 -j ACCEPT  ( 指定tcp端口22,添加的位置允许主机ssh端口经过本主机)

 拒绝数据包通过tcp 22端口

 因为规则是安装顺序去执行的所以设置完拒绝端口连接会断开,要想重新连接上必须去删除相应的规则

2.4 查看规则表

①iptables 【-t 表名】  -n -L 【链名】【--line-numbers】

 ②iptables -vnL

 ③iptables -n -L --line-numbers

2.5 删除、清空规则

①删除规则

iptables -D 链名 第几条规则

 ②清空规则

iptables -F 链名

 -F仅是清空链中的规则不会影响默认的规则

2.6 设置默认策略

默认策略是每条链中规则的最后一项,如果一条链中找不到一条规则则会去执行默认策略。

默认策略的类型分为:ACCEPT和DROP

格式:iptables -t表 -P链名  控制类型

在iptables -t filter -P OUTPUT ACCEPT(设置在出站时允许通过)

 

2.7 通用匹配

也被称为常规匹配,可以独立使用。常见的通用匹配包括:协议匹配、地址匹配、网络接口匹配

①协议匹配

以“-p 协议”形式定义,如tcp、udp、icmp或者all

2.7.1 通用匹配

协议匹配:-p协议名

地址匹配:-s 源地址、-d目的地址

接口匹配:-i 入站网卡、-o 出战网卡

iptables -A FORWARD -p icmp -j ACCEPT

 iptables -A INPUT -s 192.168.58.88 -j DROP

iptables -I INPUT -i ens33 -s 192.168.58.0/24 -j DROP

 例:禁止192.168.58.88主机访问本机

 

禁止192.168.58.0/24访问本机

 

 2.7.2 隐含匹配

端口匹配:--sport源端口、--dport目的端口

--sport 1000;2000   匹配段端口是1000-2000

--sport:2000   匹配源端口2000以下的数据包

--sport2000:   匹配源端口2000以上的数据包

iptables -A INPUT -p tcp --sport 1000:2000 -j REJECT

iptables -I FORWARD -d 192.168.111.0/24 -p tcp --dport 24500:24600 -j DROP 

①TCP标记匹配: --tcp-flags   

iptables -I INPUT-i ens33 -p tcp --tcp-flags SYN,RST,ACK    SYN   -j ACCEPT

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

②ICMP类型匹配:--icmp-type

"Echo- Request" (代码为8)表示请求
"Echo- Reply"(代码为0)表示回显
"Dest ination-Unreachable”(代码为3)表示目标不可达

iptables -A INPUT -p icmp --icmp-type 8 -j DROP (禁止其他主机ping本机)

iptables -A INPUT -P icmp --icmp-type o -j ACCEPT    (允许本机ping其它主机)

2.7.3 显示匹配

“-m”的形式指出类型,包括多端口、MAC地址、IP范围、数据包状态

①多端口匹配:

-m multiport --sport  源端口列表

-m multiport --dport  目的端口列表

iptables -A INPUT -p tcp -m multiport --dport 22 -j ACCEPT

iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT

②IP范围匹配

-m iprange --src -range  IP范围

iptables -A FORWARD -p udp -m iprange --src-range 192.168.58.100-192.168.58.150 -j DROP

禁止转发源地址是192.168.58.100到192.168.58.150的udp数据包

③MAC地址匹配

-m mac --mac-source  MAC地址

iptables -A FORWARD -m mac --mac-source MAC地址 -j DROP

禁止某个MAC地址的数据进行转发

总结

1. iptables的基本理论分为:四表、五链(按照顺序自上而下的执行)

2.iptables的基本用法:iptables -t表名  管理选项  链名   匹配条件   -j  控制类型

3.iptables的规则匹配条件:通用匹配、隐含匹配、显示匹配

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值