1.基础概念。

防火墙,其实说白了讲,用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。

目前市面上比较常见的有3、4层的防火墙,叫网络层的防火墙,还有7层的防火墙,其实是代理层的网关。

对于TCP/IP的七层模型来讲,我们知道第三层是网络层,三层的防火墙会在这层对源地址和目标地址进行检测。但是对于七层的防火墙,不管你源端口或者目标端口,源地址或者目标地址是什么,都将对你所有的东西进行检查。所以,对于设计原理来讲,七层防火墙更加安全,但是这却带来了效率更低。所以市面上通常的防火墙方案,都是两者结合的。而又由于我们都需要从防火墙所控制的这个口来访问,所以防火墙的工作效率就成了用户能够访问数据多少的一个最重要的控制,配置的不好甚至有可能成为流量的瓶颈。

2.Iptables 基础知识

1)规则 – 用于确定要匹配的封包和目标的标准,或用于确定如何处理这些封包的操作。

2)链 – 规则列表,将按顺序检查,第一个匹配生效。

3)策略 – 如果在内置链中没有规则匹配,将执行的默认操作, ACCEPT 或 DROP 。

4)表 – 用于特定目的的链集合: filter 用于阻止通信, nat 用于修改封包的目标或表面源。

3.目标(当封包匹配规则时,要采用的操作)

1)ACCEPT (接受) – 封包通过链

2)DROP (丢弃) – 封包被丢弃,如同其从未出现

3)REJECT (拒绝) - 封包被拒,并且防火墙发送错误消息(默认情况下是 ICMP 端口不可到达息)

4)LOG (记录) - 关于封包的信息记录到系统日志;继续检查链中的下一项规则

4.Netfilter 的表和链

    4.1链

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

INPUT:处理入站的数据包

OUTPUT:处理出站的数据包

FORWARD:处理转发的数据包

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

    4.2表

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

mangle表:为数据包设置标记

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

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

规则表的先后顺序:raw→mangle→nat→filter 

    4.3规则链的先后顺序: 

入站顺序:PREROUTING→INPUT

出站顺序:OUTPUT→POSTROUTING

转发顺序:PREROUTING→FORWARD→POSTROUTING

    4.4还有三点注意事项:

1).没有指定规则表则默认指filter表。

2).不指定规则链则指表内所有的规则链。

3).在规则链中匹配规则时会依次检查,匹配即停止(LOG规则例外),若没匹配项则按链的默认状态处理。

5.iptables 命令

  1)iptables 用于设置或查看内核内存中的规则。

  iptables 选项                定义

   -F                         从链中删除所有规则

-vnL --line-numbers          在数字模式下,完整地列出所有规则

  -A CHAIN <rule> -j <target>    将规则添加到链的末尾

  -I CHAIN # <rule> -j <target>   将规则作为规则 # 插入链;如果没有 # ,则作为第一个规则

  -D CHAIN #                  将规则 #从链中删除

-P 设置默认策略:iptables -P INPUT (DROP|ACCEPT)

 示例:

  # iptables -vnL --line-numbers

  # iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT

  # iptables -I  INPUT 1 -s 192.168.0.233 -j REJECT

  # iptables -D INPUT 1

  # iptables -F INPUT    清空

/etc/init.d/iptables  save  将修改后的策略保存到/etc/sysconfig/iptables

    2)自定义链名

 iptables    -N redhat:添加自定义链名

iptables    -D redhat 1:删除自定义链下的策略

iptables    -X redhat:删除自定义链

iptables    -A INPUT -s !192.168.0.4 -p tcp --dport 23 -j REJECT:只有4可以连接

    2)规则(匹配标准)语法

iptables 规则包括匹配标准,可以与在封包中找到的标题信息进行比较。

概念                指令

源IP 或网络           -s 192.168.0.0/24

目标IP 或网络        -d 10.0.0.1

UDP/TCP 和端口    -p udp --sport 68 --dport 67

ICMP 和类型          -p icmp --icmp-type echo-reply

入站网络接口          -i eth0

出站网络接口          -o eth0

连接跟踪                -m state --state ESTABLISHED,RELATED

  示例:

# iptables -A FORWARD -s 192.0.2.0/24 -d 10.0.0.1 -j DROP

# iptables -A FORWARD -p udp --sport 68 --dport 67 -j ACCEPT

# iptables -A FORWARD -p icmp --icmp-type echo-reply -j ACCEPT

# iptables -A INPUT -i lo -j ACCEPT

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

连接跟踪存储关于之前看到的通信消息,以做出匹配决定。允许连接后,信息放置在连接跟踪表中,直至超时、连接关闭或看到更多匹配的通信(重要计时器)。尽管这需要更多的内核内存,但是好处在于可以简化规则设计。

状态                定义

NEW                封包开始新通信,将规则添加到连接跟踪表

ESTABLISHED       与连接跟踪表中的规则匹配的任一封包

RELATED           在某种程度上与 ESTABLISHED 通信“相关”的通信 ;如 FTP 等协议

INVALID            无法确定的封包;通常,这些封包应被拒绝或丢弃

    注意:

为使 RELATED 规则起作用,您可能需要在 /etc/sysconfig/iptables-config 中启用相应的程序模块。

运行 iptables 命令更改内存中的 netfilter 内核模块规则,但如果重新引导,则不会持续。

运行 service iptables save 将采用内存中的当前规则,并将其写入 /etc/sysconfig/iptables 。

    示例:

# modprobe nf_conntrack_ftp

# modprobe nf_conntrack_tftp

# iptables -F

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

# iptables -A INPUT -m state --state NEW -p tcp --dport 21 -j ACCEPT

# iptables -A INPUT -m state --state NEW -p tcp --dport 69 -j ACCEPT

# iptables -A INPUT -m state --state NEW,INVALID -j DROP

注意:如果不加载相应的内核模块,那么跟踪状态将不法生效。

6.永久生效:

1. 编辑文件: /etc/sysconfig/iptables-config

IPTABLES_MODULES="nf_conntrack_ftp nf_conntrack_tftp"

2. 保存策略:

# service iptables save

3. 开机自启:

# chkconfig iptables on

注意:在实际环境中更推荐把所有策略保存到自定义脚本中,并把脚本加入 /etc/rc.local 实现开机自启。

7.完整配置

# 1.删除现有规则
iptables -F# 2.配置默认链策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP# 3.允许远程主机进行SSH连接
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT# 4.允许本地主机进行SSH连接
iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT# 5.允许HTTP请求
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

总结

Iptables是一个非常重要的工具,它是每一个防火墙上几乎必备的设置,也是我们在做大型网络的时候,为了很多原因而必须要设置的。学好Iptables,可以让我们对整个网络的结构有一个比较深刻的了解,同时,我们还能够将内核空间中数据的走向以及linux的安全给掌握的非常透彻。我们在学习的时候,尽量能结合着各种各样的项目,实验来完成,这样对你加深iptables的配置,以及各种技巧有非常大的帮助。

转载于:https://blog.51cto.com/willis/1854212

iptables基础概念相关推荐

  1. iptables基础——链与表

    1.防火墙相关概念 此处先描述一些相关概念. 1)从逻辑上讲,防火墙可以大体分为主机防火墙和网络防火墙. 主机防火墙:针对于单个主机进行防护. 网络防火墙:往往处于网络入口或边缘,针对于网络入口进行防 ...

  2. iptables基本概念详解

    来自:https://www.flyzy2005.cn/iptables-concept/ 转载声明 该日志转载于http://www.zsythink.net/archives/1199由flyzy ...

  3. 运维之DNS域名解析服务基础概念与Bind9安装

    ​0x00 前言简述 基础概念 基础术语 记录类型 0x01 DNS服务介绍 原理流程 实验目标 0x02 DNS服务之Bind9 Ubuntu 安装 CentOS 安装 Docker 容器 1) 源 ...

  4. Linux云计算虚拟化-Kubernetes 容器集群管理系统基础概念讲述

    文章目录 Linux云计算虚拟化-Kubernetes 容器集群管理系统基础概念讲述 1. kubernetes简介 2. k8s常见组件介绍 3. k8s原理持续更新...... Linux云计算虚 ...

  5. 【云原生|K8s系列第1篇】:K8s的基础概念、组件架构及实战安装

    云原生|K8s系列第1篇目录 1.先从K8s不是什么讲起 2.K8s是什么及核心基础概念 2.1 Container容器 2.2 Pod 2.3 Node 2.4 Label 2.5 Annotati ...

  6. TCP/IP基础概念及通信过程举例

    TCP/IP基础概念及通信过程举例 出现 上个世纪60年代,由于中央集中式网络的容灾性较弱,以美国国防部为中心的一家组织研究出分组交换网络.后来为了验证分组交换技术的实用性,ARPANET出现了,并且 ...

  7. Python+Dash快速web应用开发——基础概念篇

    作者:费弗里 来源:Python大数据分析 ❝本文示例代码与数据已上传至https://github.com/CNFeffery/DataScienceStudyNotes ❞ 1 简介 这是我的新系 ...

  8. 理解 angular2 基础概念和结构 ----angular2系列(二)

    前言: angular2官方将框架按以下结构划分: Module Component Template Metadata Data Binding Directive Service Dependen ...

  9. 数据库基础笔记(MySQL)1 —— 基础概念

    (写算法题目把自己心态搞崩了,休息两天顺便把之前学的数据库手写笔记记录在网上方便查阅,因为只是自己学的时候做的笔记,如果有错误欢迎大家指正,过两天再重回算法的怀抱哈哈) 如何下载配置 这个感觉视频讲的 ...

最新文章

  1. UAVStack的慢SQL数据库监控功能及其实现
  2. Python django-restframework 前后端分离实现在线教育课程平台
  3. 技术人员转型是件痛苦的事情~
  4. c++-add two numbers 两个链表相加
  5. linux 系统yum下安装vnc
  6. ROS笔记(24) Amcl
  7. linux怎么让cat运行,使用lolcat让你的Linux命令行出现七彩虹
  8. liunx 常用操作
  9. dataguard 下主备 online redo 与 standby redo log resize 重建
  10. 使用Bugzilla,你肯定会遇到的坑。
  11. 什么是OLAP?主流八大开源OLAP技术架构对比
  12. oracle的多个exclude,记录一下expdp exclude的用法
  13. 如何让Bing快速收录你的网站?
  14. 孪生素数对php编写,孪生素数
  15. TimusOJ - 1225.Flags 1119.Metr 1009.K-based Numbers (DP简单题)
  16. 英语单词常见词根总结
  17. 9月15日相约苏州丨共同探讨数智化时代,国产数据库的技术创新与实践
  18. Anchor-based 与 Anchor-free 优缺点
  19. 1024竟是官方节日,祝大家节日快乐
  20. Stata:psestimate-倾向得分匹配(PSM)中匹配变量的筛选

热门文章

  1. jmeter中变量的作用范围_Jmeter参数化方式总结
  2. oracle请求界面,Oracle EBS如何enable 请求界面 View XML按钮
  3. php sorcket_深入浅出讲解:php的socket通信
  4. Python得到n个从start到end的不重复随机数(set实现)
  5. vscode禁用 json 添加注释时的报错
  6. 20191020:(leetcode系习题)检测大写字母
  7. mysql timediff 时间相减_leetcode题库-sql练习精讲系列--十、日期时间函数的使用
  8. 构造avl树_浅谈AVL树,B-树,B+树
  9. zk的数据一致性问题
  10. 利用WinRar压缩和解压缩文件