配置iptables防火墙(一)

Linux防火墙基础

Linux防火墙概述

linux系统给的防火墙功能是由内核实现的

  • 2.0版内核中,包过滤机制是ipfw,管理工具是ipfwadm

  • 2.2版内核中,包过滤机制是ipchain,管理工具是ipchains

  • 2.4版及以后的内核中,包过滤机制是netfilter, 管理工具是iptables

netfilter

  • 位于Linux内核中的包过滤防火墙功能体系

  • 称为Linux防火墙的“内核态”

iptables(不能抓arp包,tcpdump可以抓)

  • 位于/sbin/iptables,是用来管理防火墙的命令工具

  • 为防火墙体系提供过滤规则/策略,决定如何过滤或处理到达防火墙主机的数据包

  • 称为Linux防火墙的“用户态”

一习 惯上,上述2种称呼都可以代表Linux防火墙

配置iptables防火墙(一)_第1张图片

iptables + netfilter 软件防火墙: 硬件防火墙:服务器+专i 定制的程序+芯片+超好的硬件配置

iptables的规则表、链结构(4表5链)

规则链

  • 规则的作用在于对数据包进行过滤或处理,根据处理时机的不同,各种规则被组织在不同的“链”中

  • 规则链是防火墙规则/策略的集合

默认的5种规则链

  • INPUT:处理入站数据包

  • OUTPUT:处理出站数据包

  • FORWARD:处理转发数据包

  • POSTROUTING链:在进行路由选择后处理数据包

  • PREROUTING链:在进行路由选择前处理数据包

[root@host ~]# cat /proc/sys/net/ipv4/ip_forward
0
[root@host ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@host ~]# cat /proc/sys/net/ipv4/ip_forward
1     #打开路由功能
[root@host ~]#iptables -A INPUT -p icmp --icmp-type 8 -j DROP    #指定链为input  协议为icmp 类型为8(request) 设置为drop丢弃

规则表

  • 具有某一类相似用途的防火墙规则,按照不同处理时机区分到不同的规则链以后,被归置到不同的“表”中

  • 规则表是规则链的集合

默认的4个规则表

  • raw表:确定是否对该数据包进行状态跟踪

  • mangle表:为数据包设置标记

  • nat表:修改数据包中的源、目标IP地址或端口

  • filter表:确定是否放行该数据包(过滤)

可以使用>>>iptables -t filter -L

数据包过滤匹配流程

配置iptables防火墙(一)_第2张图片

管理和设置iptables规则

iptables的基本语法格式

  • iptables [-t 表名]管理选项[链名] [条件匹配] [-j 目标动作或跳转]

几个注意事项

  • 不指定表名时,默认表示filter表

  • 不指定链名时,默认表示该表内所有链

  • 除非设置规则链的缺省策略,否则需要指定匹配条件

管理iptables规则

规则表间的优先顺序

  • 依次为: raw、mangle、 nat、 filter(默认查看此表)

规则链间的匹配顺序

  • 入站数据: PREROUTING、INPUT

  • 出站数据: OUTPUT、POSTROUTING

  • 转发数据: PREROUTING、FORWARD、POSTROUTING

规则链内的匹配顺序

  • 按顺序依次进行检查,找到相匹配的规则即停止(LOG策略会有例外)

  • 若在该链内找不到相匹配的规则,则按该链的默认策略处理

设置规则内容:

  • -A:在链尾追加一-条新的规则 append

  • -I: 在指定位置(或链首)插入一条新的规则 insert

  • -R:修改、替换指定位置或内容的规则 replace

  • -P: 设置指定链的默认策略 policy

列表查看规则

  • -L:列表查看各条规则信息 list

  • --line-numbers:查看规则信息时显示规则的行号

  • n:以数字形式显示IP地址、端口等信息 number

  • -V: 显示数据包个数、字节数等详细信息 verbose

配置iptables防火墙(一)_第3张图片

清除规则

  • -D:删除指定位置或内容的规则delete

  • -F :清空规则链内的所有规则 flush 刷新

自定义规则链

  • -N:创建一条新的规则链

  • -X:删除自定义的规则链

#创建lian链
#iptables -A lian -p icmp -j ACCEPT
#iptables -A INPUT -p icmp -j lian
#把关于icmp协议的就调用INPUT链的权限给lian
#删除自定义链
#iptables -X lian -tfilter
#删链之前要先把里面的规则删掉

其他

  • -h:查看iptables命令的使用帮助

条件匹配

通用条件匹配

  • 可直接使用,不依赖于其他的条件或扩展模块

  • 包括网络协议、IP地址、网络接口等匹配方式

协议匹配

  • 使用“*-p协议名”的形式

  • 协议名可使用在“/etc/protocols"文 件中定义的名称

  • 常用的协议包括tcp、udp、icmp

地址匹配

  • 使用“'-s源地址”、“d目标地址”的形式

  • 地址可以是单个IP地址、网络地址( 带掩码长度)

接口匹配

  • 使用'-i网络接口名’、“-o网络接口名”的形式,分别对应接收、发送数据包的网络接口

    配置iptables防火墙(一)_第4张图片

reject:给不能到达的回复,还是会拒绝,但是会给回复

隐含条件匹配

  • 一般需要以特定的协议匹配作为前提

  • 包括端口、TCP标记、ICMP类型等匹配方式

端口匹配

  • 使用“--sport 源端口”、“--dport目标端口”的形式

  • 采用“端口1:端口2”的形式可以指定一个范围的端口

TCP标记匹配

  • 使用“--tcp-flags检查范围被设置的标记”的形式

  • 如“--tcp-flags SYN,RST,ACK SYN"表示检查SYN、RST、ACK这3个标记,只有SYN为1时满足条件

ICMP类型匹配\

  • 使用“-icmp-type ICMP类型”的形式

  • ICMP类型可以使用类型字符串或者对应的数值,例如Echo-Request、Echo-Reply

配置iptables防火墙(一)_第5张图片

显式条件匹配

  • 需要使用“-m扩展模块”的形式明确指定匹配方式

  • 包括多端口、MAC地址、IP地址范围、数据包状态等匹配方式

MAC地址匹配

  • 使用“_-m,mac:”结合“--maac-source MAC地址”的形式

多端口匹配

  • 使用‘'-m multiport"结合“--sports源端口列表”或者“--dports目标端口列表”的形式

  • 多个端口之间使用逗号“”分隔,连续的端口也可以使用冒号“:”分隔

IP地址范围匹配

  • 使用‘-m iprange结合‘--src-range源IP范围”或者‘-dst-range目标IP范围”的形式

  • 以“-”符号连接起始IP地址、结束IP地址

配置iptables防火墙(一)_第6张图片

数据包控制

常见的数据包处理方式

  • ACCEPT:放行数据包

  • DROP:丢弃数据包

  • REJECT:拒绝数据包

  • LOG:记录日志信息,并传递给下一条规则处理

  • 用户自定义链名:传递给自定义链内的规则进行处理

  • SNAT:修改数据包的源地址信息

  • DNAT:修改数据包的目标地址信息

配置iptables防火墙(一)_第7张图片

配置iptables防火墙(一)_第8张图片

配置iptables防火墙(一)_第9张图片

使用防火墙脚本

导出、导入防火墙规则

导出规则

  • iptables-save

  • 结合重定向 输出“>”符号保存规则信息

导入规则

  • iptables-restore

  • 结合重定向输入“<"符号恢复规则信息

配置iptables防火墙(一)_第10张图片

编写防火墙脚本

使用防火墙脚本的优点

  • 预先加载拓展模块、设置环境参数

  • 引入可控变量,增强脚本的可移植性、可重用性

  • 通过shelll语句灵活控制防火墙策略

防火墙脚本的一般结构

  • 1.设置网段、网卡、IP地址等变量

  • 2.加载包过滤相关的内核模块(查看内核模块lsmod)

    • FTP相关:ip_nat_ftp、ip_conntrack_ftp

    • Mail相关:ip_nat_irc、ip_conntrack_irc

  • 3.确认开启路由转发功能

    • 方法1:/sbin/sysctl -w net.ipv4.ip_forward = 1

    • 方法2:echo 1 > /proc/sys/net/ipv4/ip_forward

    • 方法3:修改/etc/systl.conf,设置net.ipv4.ip_forward = 1

  • 4.用于添加的具体防火墙规则内容

    • 清空所有规则,建立新的规则

你可能感兴趣的:(Linux,iptables,服务器,linux)