一、iptables介绍

Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入和流出服务器的数据包进行很精细的控制。特别是它可以在一台非常低的硬件配置服务器上跑的非常好,提供近400人的上网服务丝毫不逊色企业级专业路由器防火墙。 iptables + zebra + squid (企业常用网络开源产品)。

iptables是linux2.4及2.6内核中集成的服务,其功能与安全性比其老一蜚ipfwadm,ipchains 强大的多,iptables主要工作在0SI七层的二、三、四层,如果重新编译内核,iptables也可以支持 7 层控制(squid代理+iptables)。

iptables是Linux内核中内置的防火墙,可以允许管理员通过设置table,chain以及相关的规则来进行数据包过滤和NAT。 一般来讲,iptables防火墙已经内置于CentOS 6及其他Linux版本中,而且iptables服务默认都是启动的。  iptables应用于IPv4,如果要用IPv6,需要使用ip6tables。

1、iptables名词和术语

(1)容器

容器就是用来包装或装载物品的贮存器(如箱、罐、坛)或者成形或柔软不成形的包覆材料。

在iptables里就是用来描述这种包含或者说属于的关系。

(2)Netfilter/iptables

Netfilter是表(tables)的容器,如果把Netfilter看成是某个小区的一栋楼。那么表(tables)就是楼里的其中的一套房子。这套房子"表(tables)"属于这栋“Netfilter”。

(3)表(tables)

表(tables)是链的容器,即所有的链(chains)都属于其对应的表(tables)。如上,如果把Netfilter看成是某个小区的一栋楼,那么表(tables)就是楼里的其中的一套房子。

(4)链(chains)

链(chains)是规则(Policys)的容器。接上,如果把表(tables)当作有一套房子,那么链(chains)就可以说是房子里的家具(柜子等)。

(5)规则(Policy)

规则(Policy)就比较容易理解了,就是iptables系列过滤信息的规范和具体方法条款了,可以理解为柜子如何增加并摆放柜子东西等。

Netfilter

表(tables)

链(chains)

规则(policy)

一栋楼

楼里的房子

房子里的柜子

柜子里的衣服,摆放规则

2、四表五链

表(tables

链(chains

filter

这是默认表,实现防火墙数据过滤功能(过滤流入流出主机的数据包)。

INPUT

对于指定到本地套接字的包,即到达本地防火墙服务器的数据包。负责过滤所有目标是本机地址的数据包

FORWARD

路由穿过的数据包,即经过本地防火墙服务器的数据包。负责转发流经主机的数据包。起到转发的作用,和NAT关系很大。

OUTPUT

本地创建的数据包,处理所有源地址是本机地址的数据包

nat

负责网络地址转换的,即来源与目的的IP地址和port的转换。当遇到新创建的数据包连接时将参考这个表

FREROUTING

一进来就对数据包进行改变,在数据包到达防火墙时,进行路由判断之前执行的规则,作用是改变数据包的目的地址、目的端口等

OUTPUT

本地创建的数据包在路由前进行改变,和主机放出去的数据包有关,改变主机发出数据包的目的地址。

POSTROUTING

在数据包即将出去时改变数据包信息,在数据包离开防火墙时进行路由判断之后执行的规则,作用改变数据包的源地址,源端口等。

mangle

主要负责修改数据包中特殊的路由标记,如TTL,TOS,MARK等,这个表定义了5个链(chains).

INPUT

进入到设备本身的包

FORWARD

对路由后的数据包信息进行修改

FREROUTING

在路由之前更改传入的包

OUTPUT

本地创建的数据包在路由之前改变

POSTROUTING

在数据包即将离开时更改数据包信息

raw

加速数据包穿过防火墙的表,也就是增强防火墙性能的表。

PREROUTING

OUTPUT

每个链对应的都是同名称的数据包,如INPUT链针对的是INPUT数据包。

INPUT链的作用是为了保护本机。例如,如果进入的数据包的目标是本机的80端口,且发来数据包的地址为192.168.100.9时则丢弃,这样的规则应该写入本机的INPUT链。但是要注意,这个本机指的是防火墙所在的机器,如果是硬件防火墙,那么一定会配合FORWARD链。

OUTPUT链的作用是为了管制本机。例如,限制浏览www.taobao.com网页。

INPUT和OUTPUT链很容易理解,FORWARD链起的是什么作用呢?数据包从一端流入,但是不经过本机,那么就要从另一端流出。对于硬件防火墙这很容易理解,数据总要转发到另一个网卡接口然后进入防火墙负责为其"防火"的网段。也就是说,FORWARD链的作用是保护"后端"的机器。

3、防火墙状态机制配置

状态集

说明

NEW

表示新建立连接的数据包状态

ESTABLISHED

表示新建立连接数据包发送之后,回复响应的数据包状态

RELATED

表示借助已经建立的链路,发送新的连接数据包

INVALID

无效无法识别的数据包

4、iptables工作流程小结

(1)防火墙是一层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。

(2)如果匹配上了规则,即明确表明是阻止还是通过,此时数据包就不在向下匹配新规则了。

(3)如果所有规则中没有明确表明是阻止还是通过这个数据包,也就是没有匹配上规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。

(4)防火墙的默认规则是对应链的所有的规则执行完以后才会执行的(最后执行的规则)。

二、基础配置

具体的语法规则:https://linux.die.net/man/8/iptables

1、配置22/ssh端口访问控制规则

iptables -A INPUT -p tcp --dprot 22 -j DROP     # 禁止所有人访问22端口

iptables -I INPUT -p tcp --dprot 22 -j ACCEPT   # 恢复连接方法

iptables -I INPUT 2 -p tcp --dprot 22 -j ACCEPT  # 通过插入指定行号信息,指定将规则插入到第几行

iptables -D INPUT -p tcp --dport 22 -j ACCEPT   # 删除指定规则

iptables -D INPUT 2        # 根据规则行号,删除相应的规则

iptables -I INPUT -s 10.0.0.1 -p tcp --dport 22 -j ACCEPT   #只允许10.0.0.1的ip通过ssh连接这台服务器

2、禁止网段连入(禁止172.16.1.0网段访问172.16.1.188)

iptables -A INPUT  -s 172.16.1.0/24 -d 172.16.1.188  -j DROP

3、禁止某个172.16.1.0网段访问服务器主机的22端口

iptables -A INPUT -s 172.16.1.0/24 -d 172.16.1.188  -p tcp --dport 22 -j DROP

方向说明:

# 在入方向控制

iptables -I INPUT -i eth0  -p tcp --dport 22 -j ACCEPT

# 在出方向控制

iptables -I OUTPUT -o eth0  -p tcp --sport 22 -j DROP

4、除10.0.0.0网段可以进行连接服务器主机外,其余网段都禁止

方法1:修改默认规则,将默认规则改为拒绝

iptables -A INPUT -s 10.0.0.0/24 -d 172.16.1.8  -j ACCEPT

方法2: !--- 表示对规则信息进行取反

iptables -A INPUT ! -s 10.0.0.0/24 -d 172.16.1.8  -j DROP

5、测试匹配列举端口范围

iptables -A INPUT -p tcp --dport 22:80 -j DROP                 # 设置连续多端口控制策略

iptables -A INPUT -p tcp -m multiport  --dport 22,80 -j DROP   # 设置不连续多端口控制策略

三、企业级防火墙配置

开始操作之前:

注意:一定要把你在DigitalOcean/ Linode/ 阿里云上的服务器做一下快照备份 , 否则一旦你 iptables的配置出了问题,极有可能把你自己挡在门外,你自己都无法连接到服务器了!! 出现这种情况可是会欲哭无泪呀,除了重新做系统好像没有更好的办法了。( DigitalOcean提供了一个web console的界面,有时候会给你反悔和擦除iptables设置的机会,但阿里云没有)

决定哪些端口需要开放

首先, SSH 的端口22自然是需要开放的,否则我们就无法登录服务器了。

一般来讲,CentOS的VPS经常作为用LAMP搭建的Web服务器,FTP服务器, Mail服务器等。

对于Web服务来说,需要开放80端口,如果是HTTPS/SSL协议的话,还需用开放443端口

对于Mail服务来说,由于涉及SMTP, POP3, IMAP协议,需要开放的端口如下:

SMTP : 25   Secure SMTP:465  POP3: 110   Secure POP3: 995   IMAP: 143   IMAP over SSL: 993

对于FTP服务来说,需要开放 20, 21两个端口

第一步: 屏蔽最常见的攻击

缺省情况下,CentOS的iptables的设置是允许任何数据通过的。

我们首先要清空iptables中的所有的规则:

1、iptables -F    #清除所有已制定的rule

2、iptables -X   #清除用户自定义的chain/table

3、iptables -Z    #将所有的chain的计数和流量统计归零

然后我们加上阻止简单扫描和攻击的规则:

1、iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP            #NONE 包(所有标识bit都没有设置)主要是扫描类的数据包

2、iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP     #防止sync-flood 攻击

3、iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP              #ALL包(所有的标注bit都被设置了)也是网络扫描的数据包

第二步: 为相应的服务开放对应的端口

首先我们应该接受本机localhost的任何请求,否则,数据库连接等将无法工作

1、iptables -A INPUT -i lo -j ACCEPT

对于不同的服务需要开放不同的端口:

1、iptables -A INPUT -p tcp --dport 22 -j ACCEPT      # SSH

2、iptables -A INPUT -p tcp --dport 80 -j ACCEPT      # HTTP

3、iptables -A INPUT -p tcp --dport 443 -j ACCEPT     #HTTPS

4、iptables -A INPUT -p tcp --dport 25 -j ACCEPT   #SMTP

5、iptables -A INPUT -p tcp --dport 465  -j ACCEPT #Secure SMTP

6、iptables -A INPUT -p tcp --dport 110 -j ACCEPT   #POP3

7、iptables -A INPUT -p tcp --dport 995 -j ACCEPT   #Secure POP3

8、iptables -A INPUT -p tcp --dport 143 -j ACCEPT   #IMAP

9、iptables -A INPUT -p tcp --dport 993 -j ACCEPT   #Secure IMAP

第三步: 加上通用的规则

首先要允许所有从服务器端发起的连接,由此返回的响应数据应该是允许的!比如VPS发起的yum update , 必须要允许外部的update数据进来

1、iptables -I INPUT -m state  --state ESTABLISHED, RELATED -j ACCEPT

最后,设置缺省的策略:屏蔽任何进入的数据请求,允许所有从Server发出的请求

1、iptables -P OUTPUT ACCEPT

2、iptables -P INPUT DROP

至此,规则设置完毕

第四步: 保存设置

首先通过下面的命令查看一下我们的设置是否正确!

1、iptable -L -n

确认没有问题后,执行下面的命令

1、service iptables save

或者iptables-save > /etc/sysconfig/iptables

执行上述命令后,相应的规则会写入 /etc/sysconfig/iptables这个文件,你可以检查一下看看。

最后执行

1、service iptables restart

重新启动iptables防火墙,以使上述设置生效。

转载于:https://www.cnblogs.com/renyz/p/11385729.html

Linux中级之netfilter/iptables应用及补充相关推荐

  1. iptables命令_理解 Linux 下的 Netfilter/iptables

    Netfilter/iptables 项目由 Rusty Russe 创建于1998年,并于 1999 年建立了 Netfilter Core team,并在此后负责维护此项目,同时也于2000年3月 ...

  2. Linux 防火墙:Netfilter iptables

    一.Netfilter 简介 (1) Netfilter 是 Linux 内置的一种防火墙机制,我们一般也称之为数据包过滤机制,而 iptables 只是操作 netfilter 的一个命令行工具 ( ...

  3. (十)洞悉linux下的Netfilteramp;iptables:网络地址转换原理之SNAT

    源地址转换:SNAT SNAT 主要应用于下列场景: 这种情况下,我们只有一个公网地址A,而又有三台主机需要同时上网,这时就需要SNAT了.它的主要作用是将那些由私网发来的数据包skb的源地址改成防火 ...

  4. Linux防火墙实验(iptables)Linux Firewall Exploration Lab

    网络安全课程实验报告 <Linux Firewall Exploration Lab> 目录 **Overview** **Lab Tasks** **Task 1: Using Fire ...

  5. Linux Kernel TCP/IP Stack — L3 Layer — netfilter/iptables 防火墙

    目录 文章目录 目录 iptables/netfilter 框架 iptables-service iptables 指令应用 查看规则 添加规则 删除规则 修改规则 保存和加载规则 常规初始化配置 ...

  6. Linux网络防火墙:iptables与netfilter

    目录 netfilter iptables iptables示例 nftables 参考文档 iptables是一个配置Linux内核防火墙的命令行工具,它基于内核的netfilter机制.新版本的内 ...

  7. Linux网络架构: XDP, iptables/netfilter和iproute2/tc/ip/Qdiscs

    本文目录 1.架构框图 2.网络架构分成三大块 3.网络架构-----对应的配置工具-----对应的原理与概念 说到Linux的网络架构,就离不开谈...这些东西.这几个概念很容易混淆起来,但如果仔细 ...

  8. netfilter/iptables模块功能中文介绍

    功能介绍 (每个info和help本是英文的,为方便阅读我把它翻译成中文,由于水平有限,如果有误请有经验者来信指正) 获取最新patch-o-matic-ng的地址:[url]ftp://ftp.ne ...

  9. linux平台下防火墙iptables原理(转)

    原文地址:http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646466.html iptables简介 netfilter/iptables( ...

  10. netfilter/iptables全攻略

    netfilter/iptables全攻略 日期:2011-11-18 点击:113 来源: fp_moon 分享至: 转自:http://www.opsers.org/linux-home/vide ...

最新文章

  1. 有哪些新手程序员不知道的小技巧?
  2. 4、路由器和主机如何配置IP地址等信息才能使计算机相互通信
  3. swift3.0 Runtime 增加属性
  4. c++ 获取线程id_5分钟带你完全理解什么是线程
  5. 前端:uniapp封装组件用法笔记
  6. 专访余承东:华为引领行业进步 折叠屏手机即将上市
  7. matplotlib数据可视化实战——折线图+散点图
  8. python 显示中文_Python|绘制个性化数据的动态图表及解决中文显示问题……
  9. Task5:第五回:样式色彩秀芳华
  10. 【云原生|K8s系列第5篇】:实战使用Service暴露应用
  11. c语言1076素数,九度OJ 1076:N的阶乘 题解
  12. C/C++ 正则表达式 regex库介绍(详细版)
  13. 通信工程测试图修改软件,通信工程工具仪器大全,你用过几种?
  14. 【刷题笔记】CG第二周
  15. Android如何在账户设置中添加App的账户
  16. android 定时删除文件,使用安卓手机,记得定期清理这4个文件夹,可轻松释放大量空间...
  17. landsat7数据预处理
  18. OpenGLES学习(一)图片显示
  19. WindowsXP支持最多64G内存的工具震撼登场
  20. 计算机键盘fn,USB键盘Fn功能键调节方法

热门文章

  1. GNU Call 开源的Skype替代项目
  2. 存储基础知识(八):备份技术(上)
  3. .net学习笔记图片链接20060523
  4. Illustrator 教程,如何在 Illustrator 中添加文本段落?
  5. 利用zabbix监控ogg进程(Windows平台下)
  6. WGestures鼠标手势快捷手势介绍
  7. mongoDB导出数据库所有集合内容到json文件
  8. 如何搞定纸上代码环节?
  9. Web前端开发所用的调试工具
  10. android activity 的四种启动模式