iptables防火墙

Linux防火墙基础

防火墙主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙或称为网络层防火墙。.liunx系统的防火墙体系基于内核编码实现,具有非常稳定的性能和极高效率。

netfilter
1.位于Linux内核中的包过滤能体系
2.称为Linux防火墙的 “内核态”
iptables
1.位于/sbin/iptables,用于管理防火墙规则的工具
2.称为Linux防火墙的 “用户态”

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

iptables的表,链结构

规则表
表的作用:容纳各种规则链。
表的划分依据:防火墙规则的作用相似。
默认包括4个规则表
raw表:确定是否对该数据包进行状态跟踪。
mangle表:为数据包设置标记。
nat表:修改数据包中的源、目标lP地址或端口。
filter:表确定是否放行该数据包(过滤)。

默认的表,链结构示意图
在这里插入图片描述

数据包过滤的匹配流程

规则表之间的顺序: raw→mangle→nat→filter
规则链之间的顺序:
人站:PREROUTING→INPUT
出战:OUTPUT→POSTROUTING
转发:PREROUTING→FORWARD→POSTROUTING
规则链内的匹配顺序:
按顺序依次检查,匹配即停止(LOG策略例外)。
若找不到相匹配的规则,则按该链的默认策略处理。

规则表之间的顺序

当数据包抵达防火墙时,将依次应用raw表,mangle表,nat表,filter表中对应链内的规则(如果存在),应用顺序为raw-mangle-nat-filter。

在这里插入图片描述
入站数据流向:
来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理(是否修改数据包地址等),之后会进行路由选择(判断该数据包应该发往何处),如果数据包的目标地址是防火墙本机(如Internet用户访问防火墙主机中Web服务的数据包),那么内核将其传递给INPUT链进行处理(决定是否允许通过等),通过以后再交给系统上层的应用程序(如httpd服务器)进行响应。

转发数据流向:
来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理,之后会进行路由选择,如果数据包的目标地址是其他外部地址(如局域网用户通过网关访问QQ站点的数据包),则内核将其传递给FORWARD链进行处理(是否转发或拦截),然后再交给POSTROUTING规则链(是否修改数据包的地址等)进行处理。

出站数据流向:
防火墙本机向外部地址发送的数据包,首先被OUTPUT规则链处理,之后进行路由选择,然后传递给POSTTOUTING规则链(是否修改数据包的地址等)进行处理。

编写防火墙规则

基本语法格式,数据包控制类型,以及如何管理,编写防火墙规则等。

iptables安装

注:iptables安装火墙,若想使用iptables防火墙,必须先关闭firewalld防火墙。
关闭firewalld防火墙

[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service 

安装iptables防火墙

[root@localhost ~]# yum -y install iptables iptables-services

设置iptables开机启动

[root@localhost ~]# systemctl start iptables.service
[root@localhost ~]# systemctl enable iptables.service

基本语法,数据包控制类型

使用iptables命令管理,编写防火墙规则时,基本命令格式:

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

在iptables防火墙体系中,最常见的几种控制类型:

// An highlighted block
ACCEPT:允许数据包通过
DROP:直接丢弃数据包,不给出如何回应信息。
REJECT:拒绝数据包通过,必要时会给数据发送一个响应信息。
LOG:/var/log/messages文件中纪录日志信息,然后将数据包传递给下一条规则。”

添加,查看,删除规则等基本操作

添加新规则

[root@localhost ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT
 //-A -I前者用来追加规则,后者用来插入规则。使用I时,允许同时指定添加规则的序号,未指定序号默认作为第一条。
[root@localhost ~]# iptables -I INPUT -p udp -j ACCEPT
 [root@localhost ~]# iptables -I INPUT 2 -p icmp -j ACCEPT

查看规则列表

//查看已有防火墙规则时
iptables -L INPUT --line-numbers //--line-numbers选项还可显示各条规则在链内的顺序号。
iptables -n -L INPUT //-n-L可合写为“-nL”

删除,清空

iptables -D INPUT  2 //删除filter表INPUT链中第2条规则
iptables -n -L INPUT //确认删除效果
iptables -F //-F清空指定链或表中的所有防火墙规则,使用管理选项-F。
如:
iptables -t nat -F
iptables -t mangle -F

设置默认策略

'当匹配最后一个环节-找不到如何一条能够匹配数据包的规则时,则执行默认策略。'
iptables -t filter -P FORWARD DROP
iptables -P OUTPUT ACCEPT //默认策略的控制类类型ACCEPT允许,DROP丢弃两种。

规则匹配条件

通用匹配
1.协议匹配

iptables -I INPUT -p icmp -j DORP //-p 协议名 来指定
iptables -A FORWARD ! -P icmp -j ACCEPT	 //感叹号“!”表示取反。

2.地址匹配

iptables -A FORWARD -s 192.168.1.10 -j REJECT
iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT   //-s 源地址 -d 目标地址
iptables -I INPUT -s 192.168.30.10/24 -j DROP 

3.网络接口匹配

iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP //-i接口名 -o接口名

隐含匹配

1.端口匹配

'--sport源端口 --dport目标端口 53端口号'
iptables -A INPUT FORWARD -s 192.168.1.0/24 -p udp --dport 53 -j ACCEPT	
iptables -A INPUT FORWARD -s 192.168.1.0/24 -p udp --sport 53 -j ACCEPT 
'构建vsftpd 若要开放20,21端口 以及被动模式端口范围24500-24600'
iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
iptables -A INPUT -p tcp --dport 2450024600 -j ACCEPT

2.ICMP类型匹配

'编写--icmp-type类型 针对协议为ICMP ICMP类型使用字符串或数字表示 如 Echo-Request代码为8'

iptables -A INPUT -p icmp --icmp-type 8 -j DROP
iptables -A INPUT -p icmp -j DROP
'帮助信息的最后部分列出所有支持类型'
iptables -p icmp -h

显式匹配

1.多端口匹配

'-m 模块名称 ' '-m multiport --dports 端口列表'
iptables -A INPUT -p tcp -m multiport --dport 25,80,110 -j ACCEPT	

2.ip范围匹配

'-m iprange --src-range IP范围'
iptables -A FORWARD -p tcp -m iprange --src-range 192.168.4.10-192.168.4.30
-j ACCEPT

3.MAC地址匹配

'-m mac --mac--source MAC地址'
iptables -A INPUT -m mac --mac--source 00:0c:29:c0: 55:3f -j  DROP

4.状态匹配
连接状态:
NEW(与如何连接无关的)
ESTABLISHED (响应请求或者已连接的)
RELATED(与已有连接的相关性的 如FTP数据连接)

'-m state --state 连接状态 基于跟踪器制用来检查数据包的连接状态(state)'

iptables -A FORWARD -m state --state NEW -p tcp !--syn -j DROP
'开放本机web服务80端口,对发给本机的TCP应答数据包给予放行,其他入站数据包丢弃。'
iptables -I INPUT -p tcp -m multiport --dport 80 -j ACCEPT
iptables -I INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值