防火墙原理和iptables

本文主要介绍linux上的防火墙工具iptables,顺便介绍硬件防火墙

什么是防火墙

  • 用来保护内部网络不受外部网络恶意攻击和入侵的网络安全技术,通常是内部网络和外部网络的边界,根据定义的规则,对管理的网络内的数据包进行分析和过滤,限制访问

分为硬件防火墙和软件防火墙

  • 硬件防火墙是由厂商设计好的主机设备
  • 软件防火墙就是用来保护系统网络的一套工具软件,如linux下的iptables和TCP Wrappers

硬件防火墙



具体功能

  • 安全隔离,访问控制,VPN,内容过滤,病毒防护

三种类型

  • 包过滤防火墙(路由)
  • 应用代理:代理服务
  • 状态检测:基于状态化检测

五种模式

  • 透明模式(交换模式)
  • 旁听模式
  • 路由模式
  • 多模式:多实例防火墙,主要用于IDC数据中心
  • failover:状态化切换,备份

区域部署

  • 双区域
  • 三区域:inside、outside、DMZ

软件防火墙



iptables:是netfilter提供的一种网络资源访问控制的机制,一种编写防火墙的工具,在内核版本centos 2.4之后才出现的,以前类似的机制叫ipchains

netfilter:数据包过滤机制

  • 是工作在内核 Tcp/ip 棧上的一个 包过滤机制:所谓的包过滤,就是将数据包头部数据提取出来进行分析

netfilter框架中定义了默认的五条内置的链(chain)和多张表(table)

  • 五条内置链作为数据包过滤的点

PREROUTING

     INPUT

     FORWARD

     OUTPUT

     POSTROUTING

  • 常用的表

 filter:过滤(INPUT、FORWARD、OUTPUT)

     nat:用于nat地址转换(PREROUTING、POSTROUTING、OUTPUT)

     mangle:修改报文元数据(可以作用在所有链上),修改TTL或做防火墙标记都是利用mangle做的

     

访问和转发图解


数据包过滤规则

  • 根据预先定义的规则,按顺序从第一条到最后一条进行匹配
  • 若数据包数据与规则匹配,则执行动作,不匹配则进行下一条规则对比
  • 若都不匹配则使用默认的策(policy)动作

iptables的语法和使用



iptables可以基于 端口、ip、协议、接口、mac模块、状态、时间、包速率等做匹配和过滤,还能实现nat功能(水好深)


查看

  • iptables [-L 列出table规则,默认filter] [-t 指定table] [-n 不进行ip和hostname反查速度快] [-v 列出更详细信息]
  • iptables-save 列出完整的规则(我们写入的命令会列出)

删除

  • iptables [-t table] [-F 清除所有规则] [-X 清除自定义的table] [-Z 将所有的chain的流量统计和计数都归0]

定义默认策略(policy)

  • iptables [-t table] -P [chain] [策略 ACCEPT DROP REJECT LOG]

保存

  • /etc/init.d/iptables save 保存

添加规则

  • iptables [-t table] [-A 在当前后面添加] [-I 在最前面添加规则] [-p 协议TCP/UDP] [-i 进接口] [-o 出接口] [-s 来源ip] [-d 目的ip] [--sport 来源端口号协议名] [--dport] [-j 操作]
  • ip格式:192.168.0.1  192.168.0.0/24
  • 对口格式:单个 23 连续 1024:65535 直接名 ssh
  • 操作:ACCEPT DROP REJECT LOG

mac和state状态模块

  • [-m state mac] [--state 状态]
  • -m mac aa:bb:cc:dd:ee:ff
  • -m state --state [INVALID 无效包] [NEW 新建连接的数据包] [ESTABLISHED 已连接成功] [RELATED 表示是和主机发出去的数据包相关]

icmp类型

  • [-p icmp] [--icmp-type 类型] :类型8是echo request,一般主机不是作为路由器(不需要进行ping测试)可以去掉回复

基于时间time模块

  • -m time [--timestart 开始时间] [--timestop结束时间] [--days 日期]  -j 动作  (简单介绍这几个参数)
  • 例子:在每个星期一到星期五的12:00到14:00开放网络

iptables -t filter -A FORWARD -m time --timestart 12:00 --timestop 14:00 --day Mon,Tue,Wed,Thu,Fri -m state --state ESTABLISHED,RELATED -j ACCEPT

基于包速率匹配recent模块

  • -m recent [--name 设定列表名] [--resource 源地址] [--rdest 目标地址] [--second 指定时间内] [--hitcount 命中次数] [--set 将地址添加进列表并更新包括时间戳等] [--rcheck 检测地址是否在列表内,从第一次匹配起算时间] [--update 和rcheck一样从最后一个匹配开始算时间] [--remove 从列表中删除地址,后接表名和地址]

NAT功能



SNAT:修改数据包的源ip(ip地址转换)在内网出口进行私网地址到公网地址的映射

过程(转发)/proc/sys/net/ipv4/ip_forward

  • 数据包到达主机,进入NAT 的PREROUTING链
  • 经过FILTER 的FORWARD链
  • 通过NAT 的POSTROUTING链,在这个链上,将数据包的源ip修改为公网ip,并将对应关系做缓存记录
  • Internet上的主机返回数据包时,在PREROUTING链上,将数据包的目标ip从公网ip根据之前的记录做修改
  • 例子1:192.168.1.0/24做端口转换

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE

  • 例子2:web服务器有192.168.1.10到1.15六个地址需要转为公网ip,public ip设置在eth1上(直接指定修改)

iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.1.10-192.168.1.15

DNAT:主要用于外部主动访问内部服务器(DMZ区域),基本是SNAT的逆过程

  • 可以做端口的映射,即将实际端口隐藏,例如:利用8080来开启web服务,然后在转发的linux主机上的OUTPUT/PREROUTING链上转成80端口
  • 例子:开放web服务器地址192.168.1.10,linux边缘设备public ip设置在eth1网卡,通过nat将外部访问进行转发到内部服务器

iptables -nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80 // 可以修改一下这个端口成其他不知名端口

时间: 2024-10-26 05:37:40

防火墙原理和iptables的相关文章

(转)详解LVS负载均衡之三种工作模型原理和10种调度算法

前言:最近在为我们的产品在做高可用,一边搭环境,一边了解相关知识,搜到这篇博客,质量不错,表述清晰,于是转载过来学习. 标签:详解LVS负载均衡之三种工作模型原理和10种调度算法 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://linuxnx.blog.51cto.com/6676498/1195379 LVS负载均衡原理和算法详解    Internet的快速增长使多媒体网络服务器面对的访问数量快速增加,服务器需要具备提供大

linux架构学习第三十天防火墙初识及iptables详解

内容: 1.防火墙简介 2.iptables简介 3.iptables的使用说明(主机防火墙和网络防火墙) 4.iptables的保存 一.防火墙简介 1.防火墙(Firewall),它是一种位于内部网络与外部网络之间的网络安全系统.一项信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过.内部网络和外部网络之间的所有网络数据流都必须经过防火墙,这是防火墙所处网络位置特性,同时也是一个前提.因为只有当防火墙是内.外部网络之间通信的唯一通道,才可以全面.有效地保护企业网内部网络不受侵害,

计算机网络原理和OSI模型与TCP模型

计算机网络原理和OSI模型与TCP模型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.计算机网络的概述 1.计算机网络的定义 计算机网络是一组自治计算机的互连的集合 2.计算机网络的基本功能 a.资源共享 b.分布式处理与负载均衡 c.综合信息服务 3.计算机网络的演进 4.按照地域范围 a>.LAN(Local Area Network) 通常指几千米以内的,可以通过某种介质互联的计算机.打印机.modem或其他设备的集合 MAN(Metropolitan Area N

CentOS下配置iptables防火墙 linux NAT(iptables)配置

CentOS下配置防火墙 配置nat转发服务CentOS下配置iptables防火墙 linux NAT(iptables)配置 CentOS下配置iptables 1,vim /etc/sysconfig/network   这里可以更改主机名称. NETWORKING=yesNETWORKING_IPV6=noHOSTNAME=BGI-TJ.localdomain GATEWAY=192.168.11.1(超算网关) 2.vim /etc/sysconfig/network-scripts/

Mybatis插件原理和PageHelper结合实战分页插件(七)

今天和大家分享下mybatis的一个分页插件PageHelper,在讲解PageHelper之前我们需要先了解下mybatis的插件原理.PageHelper 的官方网站:https://github.com/pagehelper/Mybatis-PageHelper 一.Plugin接口 mybatis定义了一个插件接口org.apache.ibatis.plugin.Interceptor,任何自定义插件都需要实现这个接口PageHelper就实现了改接口 package org.apach

iOS开发UI篇—程序启动原理和UIApplication

iOS开发UI篇-程序启动原理和UIApplication 一.UIApplication 1.简单介绍 (1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序. (2)每一个应用都有自己的UIApplication对象,而且是单例的,如果试图在程序中新建一个UIApplication对象,那么将报错提示. (3)通过[UIApplicationsharedApplication]可以获得这个单例对象 (4) 一个iOS程序启动后创建的第一个对

加密、解密原理和openssl自建CA过程详解

一.加密和解密相关知识简介 1.信息安全标准 NIST(National Institute of Standards and Technology)美国国家标准与技术研究院,制定了网络信息安全与保密的三个要素: 保密性(confidentiality):信息不泄露给非授权用户.实体或过程,或供其利用的特性.(一般包括数据保密性.隐私性.) 完整性(Integrity):数据未经授权不能进行改变的特性.即信息在存储或传输过程中保持不被修改.不被破坏和丢失的特性.(一般包括数据完整性.系统完整性.

iOS-程序启动原理和UIApplication

iOS开发UI篇—程序启动原理和UIApplication 一.UIApplication 1.简单介绍 (1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序. (2)每一个应用都有自己的UIApplication对象,而且是单例的,如果试图在程序中新建一个UIApplication对象,那么将报错提示. (3)通过[UIApplicationsharedApplication]可以获得这个单例对象 (4) 一个iOS程序启动后创建的第一个对

LINUX防火墙firewall、iptables

(1) 重启后永久性生效: 开启: systemctl enable iptables.service'.ln -s '/usr/lib/systemd/system/iptables.service' '/etc/systemd/system/basic.target.wants/iptables.service' 关闭: systemctl disable iptables.service (2) 即时生效,重启后失效: 开启:systemctl start iptables.service