• 欢迎访问LLYCLOUD information technical share center (ITSC),Linux 安全,Linux 系统,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入LLYCLOUD QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏LLYCLOUD ITSC吧

11.iptables(2)

Linux安全与高级应用 Akide_Liu 10个月前 (02-01) 205次浏览 0个评论

  1. Linux防火墙基础

Linux防火墙主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙。Linux的防火墙体系基于内核编码实现。

在许多安全技术资料中,netfilter和iptables都用来指Linux防火墙。

→netfilter:指的是Linux内核中包过滤防火墙的内部结构,属于内核态

→iptables:指的是用来管理Linux防火墙的命令程序,属于用户态。

两者均可以表示Linux防火墙

  1. iptables的表、链结构

iptables的作用在于为包过滤机制的实现提供规则(或策略),通过各种不同的规则,告诉netfilter对来自某些源、前往某些目的或具有某些协议特征的数据包应该如何处理。Iptables采用了表和链来进行分层

  1. 规则表

规则表相当于内核空间的一个容器,根据规则集的不同划分四个规则表

→filter表:filter表用来对数据包进行过滤,对应的内核模块为iptable_filter。表中包含三个链:INPUT、OUTPUT和FORWARD

→nat表:nat表主要用来修改数据包的IP地址(功能类似路由器地址转换nat),对应的内核模块为iptable_nat。表中包含三个链:PREROUTING、POSTROUTING和OUTPUT

→mangle表:用来修改数据包的TOS、TTL等值,即流量整形功能,对应的内核模块为iptable_mangle,表中包含五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT和FORWARD

→raw表:raw表是自1.2.9以后版本的iptables新增的表,主要用来进行数据包的状态跟踪,对应的内核模块为iptable_raw。表中包含两个链:OUTPUT和PREROUTING

  1. 规则链

规则链在规则表中创建,根据数据包的时机不同划分为五种不同的规则链

→INPUT链:当收到访问防火墙本机地址的数据包时,即入站,匹配此链中的规则

→OUTPUT链:当防火墙本机向外发送数据包时,即出站,匹配此链中的规则

→FORWARD链:当接受到需要通过防火墙中转(防火墙为网关)发送给其他地址的数据包时,即转发,匹配此链中的规则

→PREROUTING链:在对数据包作路由选择之前,匹配此链中的规则

→POSTROUTING链:在对数据包作路由选择之后,匹配此链中的规则

  1. 数据包过滤的匹配流程
  2. 规则表之间的顺序

当数据包滴抵达防火墙时,将依次应用raw、mangle、nat和filter。应用顺序为raw→mangle→nat→filter

  1. 规则链之间的顺序

→入站数据流向:来自外界的数据包到达防火墙后,首先被PREROUTING链处理,然后进行路由选择;如果数据包的目标地址是防火墙本机,那么就应用INPUT链上的规则,通过以后再交给应用程序进行响应

→转发数据流向:来自外界的数据包到达防火墙后,首先被PREROUTING链处理,然后进行路由选择;如果数据包的目标地址是其他外部地址(局域网内),则交给FORWARD链进行处理,最后交给POSTROUTING链处理

→出站数据流向:防火墙本机向外部地址发送的数据包,首先被OUTPUT链处理,然后进行路由选择,最后交给POSTROUTING链进行处理

  1. 规则链内部各条防火墙规则之间的顺序

当数据包经过每条数据链时,以此按第一条、第二条……进行匹配,”匹配即停止”,但也有例外,即LOG日志则匹配不停止

  1. 编写防火墙规则
  2. 基本语法、控制类型

语法格式:

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

其中,如果未指定表名时,将使用filter表

控制类型:

→ACCEPT:允许数据包通过

→DROP:直接丢弃数据包,不给任何回应信息

→REJECT:拒绝数据包通过,必要时会发送一个响应信息

→LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则

如:在filter表的INPUT链上创建拒绝发给本机的使用ICMP协议的数据包

11.iptables(2)

如果想验证的话,用另外一个机子ping防火墙本机,ping不同即可

11.iptables(2)

  1. 添加、查看、删除规则等基本操作

Iptables的常用管理选项

选项名

功能及特点

-A

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

-D

删除指定链中的某一条规则,可以指定序号

-I

在指定链中插入一条新的规则,未指序号时默认为第一条

-R

修改、替换指定链中的某一条规则,可指定序号

-L

列出指定链中的所有规则。未指定链名,则列出表中的所有链

-F

清空指定链中的所有规则,未指定链名,清空表中的所有链

-P

设置指定链的默认规则

-n

以数字形式显示出结果

-v

查看规则列表时显示详细信息

-h

查看命令帮助信息

–line-numbers

查看规则列表是,同时显示规则链在链中的序号

-X

删除自定义规则链

  1. 添加新的规则

建议在添加新的规则之前,删除自定义的规则,当然在实际环境中据情况而论

11.iptables(2)

如在filter表的INPUT链中的末尾行添加一条规则(标记的部分可省)

11.iptables(2)

使用-I时,未指明表号为第一条

11.iptables(2)

  1. 查看规则列表

11.iptables(2)

结合-n –line-numbers选项

11.iptables(2)

  1. 删除、清空规则

删除某一条规则

11.iptables(2)

清空规则

11.iptables(2)

  1. 设置默认策略

如设置filter表的INPUT链默认策略为拒绝,注意默认策略拒绝只能为DROP

11.iptables(2)

  1. 规则的匹配条件
  2. 通用匹配

通用匹配也称为常规匹配,不依赖其他条件或扩展模块

  1. 协议匹配

指定“-p 协议名”。如tcp、udp、icmp和all等,可用的协议类型存放于/etc/protocols文件中

例如

11.iptables(2)

  1. 地址匹配

可以使用“-s 源地址”或“-d 目的地址”形式指定,用来检测数据包的源地址或目标地址

例如:

11.iptables(2)

  1. 网络接口匹配

可以使用“-I 接口名”和“-o 接口名”的形式,分别对应入站网卡,出站网卡

例如:

11.iptables(2)

  1. 隐含匹配

这种匹配要求以指定的协议匹配作为前提条件,相当于子条件,因此无法独立使用

  1. 端口匹配

可以使用“—sport 源端口”或“—dport 目标端口”的形式,针对的协议为TCP或UDP

例如:

11.iptables(2)

再例如,如果开放vsftpd服务,则需要开放20和21端口,可以使用冒号“:”来添加一定范围的端口号

11.iptables(2)

  1. TCP标记匹配

可以使用“—tcp-flags 检查范围 被设置的标记”的形式,针对协议为TCP,主要由SYN(请求连接)、RST(重新连接)、ACK(确认)和FIN(断开连接),具体请看http://blog.sina.com.cn/u/5108050992的访问控制列表

例如

11.iptables(2)

  1. ICMP类型匹配

可以使用“—icmp-type ICMP类型”的形式,针对协议为ICMP,用来检查ICMP数据包的类型。如“Echo-Request”(代码为8)表示请求、“Echo-Reply”(代码为0)表示回显、“Destination-Unreachble”(代码为3)表示目标主机不可达

例如:禁止从其他主机ping本机,但允许本机ping其他主机

11.iptables(2)

  1. 显示匹配

这种匹配方式要求额外的内核模块提供支持,必须手动以“-m 模块名称”的形式调用相应模块

  1. 多端口匹配

可以使用“-m multiport –dport 端口列表”“-m multiport –sport 端口列表”的形式

例如:

11.iptables(2)

  1. IP范围匹配

可以使用“-m iprange –src-range ip范围”、“-m iprange –dst-range ip范围”的形式

例如:

11.iptables(2)

  1. mac地址匹配

可以使用“-m mac –mac-source mac地址”的形式

11.iptables(2)

  1. 状态匹配

可以使用“-m state –state 连接状态”的形式。常见状态包括NEW(与任何链无关的)、ESTABLISHED(响应请求或者已建立连接的)和RELATED(与已有连接有关性的)

例如

11.iptables(2)

  1. SNAT策略及应用

SNAT(源地址转换)是Linux防火墙的一种地址转换操作,其作用就是修改数据包的源IP地址。类似路由器的动态NAT或者PAT

  1. SNAT策略概述

SNAT类似于路由器中的PAT或者动态NAT,用于将公司内网中的PC机连接Internet,以便局域网的用户可以正常上外网。

  1. SNAT策略的应用

SNAT策略只能应用在nat表的POSTROUTING链,使用iptables命令编写SNAT策略时,需要结合“—to-source IP地址”(可以使用“—to IP地址”代替)选项来指定修改后的源IP地址

  1. 共享固定的IP地址上网

案例环境:

→Linux网关服务器有两块网卡,eth0和eth1,其中eth0配置的IP是ISP服务商提供的公有IP地址(申请获得)172.16.16.172,eth1配置的是内网IP地址192.168.4.254/24.

→所有局域网的PC机的网关都为192.168.4.254,指定正确的DNS(实际环境)

→我使用windows server 2003模拟外网的web服务,ip地址为172.16.16.1,(由于我是模拟环境,所以一定不要指默认网关,但是实际环境这台web服务器是外网,我们管不上)

→需求局域网192.168.4.0/24网段的PC机可以访问外网的web服务

  1. 打开Linux网关的路由转发

→永久开启

11.iptables(2)

将0改为1

11.iptables(2)

使用命令使配置文件生效(注意没有报错error)

11.iptables(2)

→临时开启

11.iptables(2)

或者

11.iptables(2)

  1. 正确设置SNAT策略

11.iptables(2)

  1. 测试

这就是2003系统搭建的web服务的首页

11.iptables(2)

  1. 共享动态的IP地址上网

在某些情况下,网关的外网IP地址可能并不是固定的,例如使用ADSL宽带上网。对于ADSL宽带上网,连接名通常为ppp0、ppp1

新建规则为

11.iptables(2)

  1. DNAT策略及应用
  2. DNAT策略概述

DNAT(目标地址转换)是Linux防火墙的另一种地址转换操作,其作用就是根据指定条件修改数据包的目标IP地址。DNAT只能用在nat表的PREROUTING链和OUTPUT链中。

实际环境主要的作用就是发布公司的服务器,以便外网可以访问。类似于路由器的静态NAT。

  1. DNAT策略的应用

案例环境:

→在上面案例的基础上增加一台web服务器(局域网),IP地址为192.168.4.1,默认网关指向192.168.4.254(我使用的是linux作为web服务器了)

  1. 打开网关的路由转发功能

11.iptables(2)

将0改为1

11.iptables(2)

使用命令使之生效(无报错)

11.iptables(2)

  1. 正确设置DNAT策略

11.iptables(2)

  1. 由于是我用linux搭建的web服务器(yum -y install httpd),所以我需要在web服务器上设置防火墙的策略

11.iptables(2)

  1. 在外网上验证

11.iptables(2)

  1. 规则的导出、导入
  2. 规则的备份及还原

Linux的防火墙,如果写好规则不进行保存的话,系统一重启或者服务重启则规则将不复存在。那么这时就需要对规则的保存。

  1. iptables-save命令

iptables-save 命令是批量导出防火墙规则,直接执行时,将显示所有的规则。可以结合重定向到/etc/sysconfig/iptables可以对规则进行保存。也可以使用service iptables save直接保存

11.iptables(2)

或者

11.iptables(2)

  1. iptables-restore命令

当需要对防火墙的一些规则进行恢复时,可以执行此命令。或者直接重启iptables服务(前提是规则已经保存在/etc/sysconfig/iptables文件中了)

11.iptables(2)

  1. 使用iptables服务

Iptables的服务名叫iptables,可以使用service进行管理

11.iptables(2)

11.iptables(2)

11.iptables(2)

11.iptables(2)

11.iptables(2)

  1. 使用防火墙脚本
  2. 防火墙脚本的构成
  3. 定义基本变量

11.iptables(2)

11.iptables(2)

  1. 加载内核模块

在RedHat系统中,iptables的大部分模块都可以根据需要动态加载内核。例如如果搭建一台vsftpd服务,如果开启iptables防火墙的话,就需要加载内核ip_nat_ftp和ip_conntrack_ftp,前者是地址转换模块(无需地址转换可不开启),后者是状态跟踪模块,必须开启

11.iptables(2)

→ip_tables:iptables的基本模块

→ip_conntrack:连接跟踪模块

→ipt_REJECT:拒绝操作模块

→ipt_LOG:日志记录模块

→ipt_iprange:支持ip范围匹配

→xt_tcpudp:支持tcp、udp协议

→xt_state:支持状态匹配

→xt_multiport:支持多端口匹配

→xt_mac:支持MAC地址匹配

→ip_nat_ftp:支持ftp地址转换

→ip_conntrack_ftp:支持ftp连接跟踪

  1. 调整/proc参数

11.iptables(2)

→net.ipv4.ip_forward=1:打开路由转发功能

→net.ipv4.ip_default_ttl=128:修改ICMP响应超时(生命周期)

→net.ipv4.icmp_echo_ignore_all=1:拒绝响应ICMP请求

→net.ipv4.icmp_echo_ignore_broadcasts=1:拒绝响应ICMP广播

→net.ipv4.tcp_syncookies=1:启用SYN Cookie机制

→net.ipv4.tcp_syn_retries=3:最大SYN请求重试次数

→net.ipv4.tcp_synack_retries=3:最大ACK确认重试次数

→net.ipv4.tcp_fin_timeout=60:TCP连接等待超时

→net.ipv4.tcp_max_syn_backlog=3200:SYN请求的队列长度

  1. 设置具体的iptables规则
  2. 清理所有的规则

11.iptables(2)

  1. 设置规则链的默认策略

11.iptables(2)

  1. 设置nat表中的各种规则

11.iptables(2)

其中具体的规则根据实际情况而定

  1. 设置filter表的各种规则

11.iptables(2)

其中具体规则依据实际情况而定

  1. 防火墙脚本配置实例
  2. 主机型防火墙

主机型防火墙即访问防火墙本机的类型,主要是在filter表中的链做规则,当然具体还得依赖实际情况而定

11.iptables(2)

  1. 网络型防火墙

网络型防火墙即防火墙的主机作为其他服务器的网关,任何访问都需要先通过防火墙才能进行下一步访问。当然具体还得依赖实际情况进行编写。我这脚本肯定不完整,具体还需要编写很多

11.iptables(2)

自此iptables防火墙结束,对于实际情况,理论学扎实,自会编写脚本以及根据实际来编写规则。

配置网络环境,设置转发。

使主机和服务器可以ping通

11.iptables(2)

11.iptables(2)

2.在服务器上配置默认网站

[[email protected] ~]# echo “<h1>hello</h1>” >> /var/www/html/index.html

[1]+ Done firefox http://127.0.0.1

[[email protected] ~]# firefox http://127.0.0.1 &

 

11.iptables(2)

3.客户端测试

11.iptables(2)

查看访问日志

11.iptables(2)

4.在网络防火墙设置SNAT策略

[[email protected] ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT –to-source 172.32.32.254

5.多次访问,查看日志

11.iptables(2)

6.在网络防火墙设置发布服务器

[[email protected] ~]# iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.254 -p tcp –dport 80 -j DNAT –to-destination 172.32.32.1

[[email protected] ~]# iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.254 -p tcp –dport 2345 -j DNAT –to-destination 172.32.32.1:22

11.iptables(2)

11.iptables(2)


Llycloud ITSC , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:11.iptables(2)
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址