Linux系统运维之iptables防火墙篇

一、iptables介绍

Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入和流出服务器的数据包进行很精细的控制。iptables主要工作在OSI七层的二、三、四层,如果重新编译内核,iptables也可以支持7层控制。

iptables防火请的概念理解
流程:iptables—表---链—规则
iptables:相当于一个容器,里面装着防火墙的表
tables(表):一个小容器,装着防火墙的链
chain(链):一个更小容器,装着防火墙的规则
policy(规则):允许或者拒绝,防火墙一条一条安全策略

简单的说就是:

Netfilter(防火墙)(表) tables(链)chain(规则)policy
一栋楼楼里面的房子房子里面的柜子柜子里面整齐的衣服

防火墙匹配规则流程:
1. 防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
2. 如果匹配上规则,即明确表示是阻止还是通过,数据包就不再向下匹配新的规则。
3. 如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是过。
4. 防火墙的默认规则是所有规则执行完才执行的。

二、iptables的四表五连

四表
1、filter表(默认防火墙功能 准许拒绝)
2、nat表,功能:内网服务器上外网、共享上网、端口映射
3、mangle表:ALL(跟路由无关,在任何点都行,ye最高)。实现包重构(修改)。(不常用)
4、raw表:数据跟踪处理。(不常用)

五链:
1、INPUT
2、OUTPUT
3、FORWARD
4、POSTROUTING
5、PREROUTING

表对应的链

filter表:

chain(链)功能强调:主要和自身相关,真正负责主机防火墙功能的(过滤流入流出主机的数据包)filter表示iptables默认使用的表,这个表定义了三个链(chains)
INPUT过滤进入主机的数据包
FORWARD负责流经主机的数据包。起转发作用,和nat的关系很大
OUTPUT处理从主机发出去的数据包

nat表

chain(链)负责网络地址的转换,即来源于目的IP地址和port的转换应用:和主机本身无关一般用于局域网共享上网或者特殊端口转换服务相关 工作场景:1、用于企业路由(zebra)或者网关(iptables),共享上网(POSTROUTIG) ;2、做内部外部ip地址一对一映射(dmz),硬件防火墙映射到ip内部服务器,ftp服务(OREROUTIG);3、WEB,单个端口映射,直接映射80端口(PREROUTIG),这个表定义了三个链,nat功能相当于网络的acl控制
OUTPUT改变主机发出数据包的目的地址
PREROUTING在数据包到达防火墙时,进行路由判断之前执行规则,作用是改变数据包的目的地址、目的端口
POSTOUTING数据包离开防火墙之后进行路由判断之后执行的规则,作用是改变数据包的原地址和源端口

三、iptables命令及参数

iptables:防火墙规则制定命令
参数:

-F:(--flush),清除所有的规则,不会处理默认的规则
-X:删除用户自定义的链
-Z:链的计数器消息

-L:显示表中所有的规则
-n:不要把端口或ip反向解析为名字
-t:指定表
-A:将规则添加懂指定链上
-I:表示将规则插入到指定链上
-R:表示将规则信息进行修改
-D:delete删除
-l:insert拒绝的规则放在最上面

-p:(protocal)协议————tcp、udp、icmp、all
-j:指定对相应匹配规则执行什么操作(ACCEPT DROP* REJECT)
     --dport:目标端口
     --sport:源端口	
-s:指定匹配的源地址网段信息,或者匹配的主机信息
-d:指定匹配的目标地址网段信息,或者匹配的主机信息
-i:指定匹配的进入流量接口信息 只能配置在INPUT链上
-o:指定匹配的发出流量接口信息 只能配置在OUTPUT链上

nc命令:相当于telnet
参数

-g<网关> 设置路由器跃程通信网关,最多可设置8个。
-G<指向器数目> 设置来源路由指向器,其数值为4的倍数。
-h 在线帮助。
-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。
-l 使用监听模式,管控传入的资料。
-n 直接使用IP地址,而不通过域名服务器。
-o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
-p<通信端口> 设置本地主机使用的通信端口。
-r 乱数指定本地与远端主机的通信端口。
-s<来源位址> 设置本地主机送出数据包的IP地址。
-u 使用UDP传输协议。
-v 显示指令执行过程。
-w<超时秒数> 设置等待连线的时间。
-z 使用0输入/输出模式,只在扫描通信端口时使用。

四、简单的实践

清除配置规则
iptables -F <- 清空iptables所有规则信息(清除filter)
iptables -X <- 清空iptables自定义链配置(清除filter)
iptables -Z <- 清空iptables计数器信息(清除filter)

1、阻止用户访问服务器的22端口

### -A 表示添加规则到相应链上,默认表示添加规则到结尾
iptables -t filter -A INPUT -p tcp --dport 22 -j DROP   ##此规则一添加,则无法连接远程连接,如需连接则要到本机更改规则
#删除规则
#iptables -t filter -D INPUT -p tcp --dport 22 -j DROP   --- -D 表示删除规则从相应链上。


 ###  -I 表示插入规则到相应链上,默认表示插入规则到首部	 
iptables -t filter -I INPUT -p tcp --dport 22 -j DROP 
iptables -t filter -I INPUT 3 -p tcp --dport 22 -j DROP --- 指定规则插入位置
iptables -t filter -R INPUT 6 -p tcp --dport 8080 -j DROP   --- -R 指定将配置好的规则信息进行替换

2、除了某个地址可以访问22端口之外,其余地址都不能访问

列如:
允许ip:10.0.0.9访问
iptables -t filter -A INPUT -s 10.0.0.9 -p tcp --dport 22 -j ACCEPT
    
阻止10网段访问
iptables -t filter -A INPUT -s 10.0.0.0/24 -p tcp --dport 22 -j DROP 
  	 
##通过利用 !进行规则取反,进行策略控制(只允许10.0.0.9访问)
iptables -t filter -A INPUT ! -s 10.0.0.9 -p tcp --dport 22 -j ACCEPT

3、指定阻止访问多个端口服务

--- 匹配连续的端口号访问,连续的端口可以连续
iptables -A INPUT -s 10.0.0.9 -p tcp --dport 22:80 -j DROP 
	   
--- 匹配不连续的端口号访问   
iptables -A INPUT -s 10.0.0.9 -m multiport -p tcp --dport 22,24,25 -j DROP  
	-m   --- 指定应用扩展模块参数
	 multiport   --- 可以匹配多个不连续端口信息

4、通过防火墙实现禁ping功能

实现ping功能测试链路是否正常,基于icmp协议实现的
icmp协议有多种类型:
	icmp-type 8:请求类型 (禁ping的主要类型) 
	icmp-type 0:回复类型
	icmp-type 0:any(所有)	   

情况一:实现禁止主机访问防火墙服务器(禁止其他机子ping)
iptables -A INPUT -p icmp --icmp-type 8 -j DROP
iptables -A OUTPUT -p icmp --icmp-type 0 -j DROP

情况二:实现禁止防火墙访问主机服务器(禁ping)
iptables -A OUTPUT -p icmp --icmp-type 8 -j DROP
iptables -A INPUT -p icmp --icmp-type 0 -j DROP

默认情况:所有icmp类型都禁止
iptables -A INPUT -p icmp -m icmp --icmp-type any -j DROP
iptables -A OUTPUT -p icmp -m icmp --icmp-type any -j DROP

5、实现防火墙状态机制控制

NEW: 发送数据包里面控制字段为syn=1,发送第一次握手的数据包
ESTABLISHED: 请求数据包发出之后,响应回来的数据包称为回复的包
RELATED: 基于一个连接,然后建立新的连接
INVALID: 无效的的数据包,数据包结构不符合正常要求的

iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

6、配置共享上网功能

原理:(来自老男孩教育)
在这里插入图片描述

模拟环境:
1、找一台机子(我这里是虚拟机any),停掉其网卡一,开启内网网卡二,使其不能上网
停网卡示例:
在这里插入图片描述

2、然后在管理机(可以上网的机子)配置iptables规则使用nat表转发网段的子网掩码要与配置的网卡一致

#在管理机(能上网的机器上面)配置
iptables -t nat -A POSTROUING -s 172.16.1.0/16 -j SNAT --to-source 10.0.0.61

#如果管理机的ip是动态的,就使用:
iptables -t nat -A POSTROUING-s 172.16.1.0/24 -j MASQUERADE
#MASQUERADE:掩饰的意思
	
#注意:必须要把nat的转发功能打开:net.ipv4.ip_forward=1
  echo 1 >/proc/sys/net/ipv4/ip_forward   ##打开
  echo 0 >/proc/sys/net/ipv4/ip_forward   ##关闭
把net.ipv4.ip_forward=1添加到/etc/sysctl.conf中:echo ‘net.ipv4.ip_forward=1>>/etc/sysctl.conf实现自启动

3、在any主机上ping www.baidu.com
这里是可以上网的!!!

4、端口转发/映射
公网ip访问内网的时候可以使用管理机进行端口的转发(映射),实现客户端能连上内网的主机
原理图(来自老男孩教育)
在这里插入图片描述在这里插入图片描述

**在配置好共享上网的前提之下**	
	用户从公网访内网的主机,途经管理机转发(端口映射)
	在管理上配置iptables规则:
iptables -t nat -A PREROUTING -d 10.0.0.61 -p tcp --dport 9000 -j DNAT --to-distination 172.16.7:22


配置之后就可以在外网的主机上访问管理机的9000端口,管理机转发到web的22端口上

5、ip映射
公网ip访问内网的时候可以使用管理机进行ip的转发(映射),实现客户端能连上内网的主机

特别说明
可以在管理机上添加虚拟ip来实现实验:(因为ip映射需要大量的ip地址来转发,所以此实验是为了测试,实际生产当中,一般不用)
命令: ip address add ip地址 可以简写为:ip a a ip地址
在这里插入图片描述

原理图:(来自老男孩教育)
在这里插入图片描述

然后配置iptables规则:
无需指定端口:(参数在上面有讲)
iptables -t nat -A PREROUTING -d 10.0.0.62  -j DNAT --to-distination 172.16.7:22

说明:本章部分内容来自老男孩教育

中文名: Linux防火墙 原名: Linux Firewalls: Attack Detection and Response with iptables, psad, and fwsnort 别名: Linux,Firewall,防火墙,iptables,psad,fwsnort 作者: (美)拉什译者: 陈健资源格式: PDF 版本: 中文高清PDF版 出版社: 人民邮电出版社书号: 9787115205803发行时间: 2009年 地区: 大陆 语言: 简体中文 简介: 编辑推荐 Amazon 五星盛誉图书,世界级安全技术专家力作,防火墙技术和入侵检测技术的完美结合。 内容简介   本书创造性地将防火墙技术和入侵检测技术相结合,充分展示开源软件的威力。书中全面阐述了iptables防火墙,并详细讨论了如何应用psad、 fwsnort、fwknop 3个开源软件最大限度地发挥iptables检测和防御攻击的效力。大量真实例子以及源代码更有助于读者理解安全防御的原理、技术和实际操作。   本书讲解清晰且实用性很强,适合Linux系统管理员、网络安全专业技术人员以及广大计算机安全爱好者阅读。 作者简介 Michael Rash世界级的安全技术专家,以防火墙、入侵检测系统等方面的造诣享誉安全界。他是psad, fwknop, and fwsnort等著名开源安全软件的开发者,也是屡获大奖的Dragon入侵防御系统的安全架构师。除本书外,他还与人合撰了Snort 2.1 Intrusion Detection和Intrusion Prevention and Active Response等著作,还是Linux Journal、SysAdmin和;login:等著名技术媒体的专栏作家。 目录: 第1章 iptables使用简介 1.1 iptables 1.2 使用iptables进行包过滤 1.3 安装iptables 1.4 内核配置 1.5 安全性和最小化编译 1.6 内核编译和安装 1.7 安装iptables用户层二进制文件 1.8 默认iptables策略 1.9 本章总结 第2章 网络层的攻击与防御 2.1 使用iptables记录网络层首部信息 2.2 网络层攻击的定义 2.3 滥用网络层 2.4 网络层回应 第3章 传输层的攻击与防御 3.1 使用iptables记录传输层首部 3.2 传输层攻击的定义 3.3 滥用传输层 3.4 传输层回应 第4章 应用层的攻击与防御 4.1 使用iptables实现应用层字符串匹配 4.2 应用层攻击的定义 4.3 滥用应用层 4.4 加密和应用层编码 4.5 应用层回应 第5章 端口扫描攻击检测程序psad简介 第6章 psad运作:检测可疑流量 第7章 psad高级主题:从签名匹配到操作系统指纹识别 第8章 使用psad实现积极回应 第9章 转换Snort规则为iptables规则 第10章 部署fwsnort 第11章 psad与fwsnort结合 第12章 端口碰撞与单数据包授权 第13章 fwknop简介 第14章 可视化iptables日志 附录A 攻击伪造 附录B 一个完整的fwsnort脚本
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值