概述

iptables是一种运行在linux下的防火墙组件,下面的介绍可以快速的学习iptables的入门使用。

特点(重要)

  1. 它的工作逻辑分为 链、表、规则三层结构。
  2. 数据包通过的时候,在对应表中,规则从上向下匹配,匹配到即跳出,后续规则忽略。
  3. 常用于过滤数据包和转发数据包(代理服务器)。
  4. 工作方式基于IP 端口 和MAC

结构

链名 PREROUTING FORWARD POSTROUTING INPUT OUTPUT
含义

一般是指从外网发送到当前主机上

并且在路由规则处理之前

一般指从外网发送到当前主机上

路由规则处理的情况,这种情况

大概有两种可能性

  1. 本机处理外部来源的网络数据
  2. 转发外部来源的网络数据到其他地址

一般是指从外网发送到当前主机上

并且在路由规则处理之后,这种情

况出现的可能性也有两种

  1. 本机主动向外请求时产生
  2. 转发网络数据的时候产生
 发送给本机的数据  本机向外主动发送的数据
默认可用表
  1. mangel(特殊数据包标记 )
  2. NAT(地址转换)
  1. mangel(特殊数据包标记 )
  2. filter(过滤)
  1. mangel(特殊数据包标记 )
  2. NAT(地址转换)
  1. mangel(特殊数据包标记 )
  2. filter(过滤)
  1. mangel(特殊数据包标记 )
  2. filter(过滤)

iptables的工作流程大体上可以表达为三种

  1. 源地址发送数据--> {PREROUTING-->路由规则-->POSTROUTING} -->目的地址接收到数据
  2. 源地址发送数据--> {PREROUTING-->INPUT-->本机}
  3. {本机-->OUTPUT-->POSTROUTING} -->目的地址接收到数据

从上表当中我们可以看到,对于不考虑地址转发的情况下,例如一台独立的主机的网络管理,我们只需要配置INPUT和OUTPUT两条链即可完成对网络的管理,本次的重点也是这两条链接。

实例

1, 管理规则

iptables  [-t 表名]  [选项]   -n

选项:

  1. -L  查看

  2. -F  清除所有规则

  3. -X  清除自定义链

  4. -Z  清除所有链统计

-n的含义是用ip和端口的方式来显示规则

例:

查看filter表中的所有规则

iptables -t filter -L -n

清空filter表中的规则

iptables -t filter -F

2,定义表的默认规则

首先要牢记iptables是有链 有表的结构 , 那么定义每一条链上的每一条表的默认规则的格式为

iptables -t 表 -P 链  动作类型

-t 就不说了 -P 这里要大写  链的名称也是大小写敏感的注意不要写错  动作类型有ACCEPT允许通过 DROP丢弃 也就是禁止 还有一种动作是LOG作为日志记录,目前我还没有用过。

例:

设置INPUT链上filter表默认规则

iptables -t filter -P INPUT ACCEPT

这里要注意的是,默认允许了所有的链接都可以通过,到达服务器。这样的设置在正式生产服务器环境上是十分危险的,不建议这么设置,应当设置为DROP,但是默认允许所有的链接都禁止的后果就是把自己的远程操作也踢掉了,服务器在本地还无所谓,但是在远程这就麻烦了。于是要牢记,默认规则要在设置好自己访问的规则以后再设置,最好是在最后设置。

3,自定义规则

下面我们来真正设置某一条链上的某个表中一个基于IP和端口的规则,也是iptables最常见的用途

格式:

iptables  [-AI  链]  [-io  网卡]  [-p  协议]  [-s  源IP]  [-d  目标ip]  -j  动作

例:

禁止ip为192.168.1.110的计算机访问本机eth0网卡

分析:

  1. 禁止XXX访问本机 所以是INPUT链 增加规则使用-A
  2. 网卡是eth0因为是INPUT链 所以参数应该是 -i
  3. 源ip是 192.168.1.110
  4. 动作是  DROP

于是应该这样写

iptables -A INPUT -i eth0 -s 192.168.1.110 -j DROP

反过来,禁止本机访问192.168.1.110可以这么写

iptables -A OUTPUT -o eth0 -d 192.168.1.110 -j DROP

例:

允许本机访问本地回环网卡 localhost

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

现在我们可以添加一个针对固定IP的策略了,那么如何添加一个网段的策略的,例如禁止192.168.1.xxx 这个网段所有的IP访问本机,这里是要用下面的写法的

iptables -A INPUT -i eth0 -s -j DROP

这里的192.168.0/24是代表网段,具体含义可以去了解 计算机网络原理,24其实指的是二进制的从左到右 有24个1 ,在IPV4的ip地址表示方法下 有32位,那么32-24=8 也就是十进制IP最后一段位置代表是0

于是我们可以 1 针对IP  2 针对IP段 设置策略

下面来添加对端口的策略,这个往往也是最细节最有用的内容

格式:

iptables  -A  链 -io 网卡 -p 协议  -s 源ip  --sport  源端口  -d  目标ip  --dport  目标端口  -j  动作

这里有几个点要注意

  1. 和IP一样 链的不同(可能是INPUT也可能是OUTPUT) 使用不同的-i或者-o
  2. -p是小写的。 代表协议,类型可以是tcp、udp、icmp或者all,特别是要注意的是我们平时使用的ping命令 其实是icmp协议,而这个协议比较特殊,不使用端口 所以在使用all的时候(包含icmp)同时设置端口可能会出错!
  3. INPUT要有源,OUTPUT要有目标,但是INPUT往往是限制目标端口,OUTPUT往往是限制源端口,注意逻辑不要乱。

例:

web服务器添加80服务

iptables -A INPUT -p tcp --dport -j ACCEPT

允许192.168.1.x网段访问mysql数据库

iptables -A INPUT -p tcp -s --dport -j ACCEPT

最后说明一下,当有多条规则匹配一次访问的时候,以最前面的规则为准,当无法匹配到对应规则的时候,使用默认规则

在前面的例子中相信你已经发现了-A 往往是代表 ADD的意思,每次ADD都是增加规则到列表的最后,那么除了ADD 其实还有-I  INSERT插入规则

具体用法是将I替换成A 同时在链名后添加数字排序

-I 链名  1

1代表了第一位顺序 也就是最优先的匹配规则

例如

iptables -I INPUT -p tcp --dport -j ACCEPT

======================我是分割线====================

上面的介绍都是具体的规则配置,这些配置在防火墙重启的时候会丢失,那么如何管理防火墙服务是下面的内容

开机自启动

chkconfig iptables on

规则保存

service iptables save

上面的命令其实是把规则保存在/etc/sysconfig/iptables文件中,重启会自动读取

如果是业务相对固定的服务器这样做无所谓,但如果需要经常切换规则,那么讲规则都写在这一个文件中并不是十分容易管理

可以把规则写成单独的文件,在开机的时候自动载入(/etc/rc.local中添加),但是要注意权限设置(755),这样做的好处是便于管理,缺点是只有开机的时候有效

如果是重启防火墙服务,则无法载入对应规则。

总结:iptables看似复杂,实际上找好逻辑对应关系还是不难的关键是5条链的几个表要理解含义,这里只简单的介绍了本机和外界通信的基本管理。

快速入门linux系统的iptables防火墙 1 本机与外界的基本通信管理的更多相关文章

  1. 0基础如何更快速入门Linux系统?学完Linux有哪些就业方向?

    Linux系统是使用Linux内核及开源自由软件组成的一套操作系统,是一种类UNIX系统,其内核在1991年10月5日由林纳斯·托瓦兹首次发布. 它的主要特性:Linux文件一切皆文件.完全开源免费. ...

  2. 在新安装的Linux系统中,防火墙默认是被禁掉的,一般也没有配置过任何防火墙的策略,所有不存在/etc/sysconfig/iptables文件。

    原因:在新安装的Linux系统中,防火墙默认是被禁掉的,一般也没有配置过任何防火墙的策略,所有不存在/etc/sysconfig/iptables文件. 解决办法: .随便写一条iptables命令配 ...

  3. 版本控制工具Git工具快速入门-Linux篇

    版本控制工具Git工具快速入门-Linux篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.版本管理系统的介绍 1>.版本管理系统的特点 1.1>.自动生成备份: ...

  4. 零基础程序员入门Linux系统 !如何快速恢复系统?

    新手在学习Linux系统的时候,难免会遇到命令输错,或系统出错的难题.那么如何快速解决呢?本文就先给你一个后悔药,让你快速备份并恢复Linux系统.本文将以Ubuntu为例,在这之前,你需要一台服务器 ...

  5. Linux中的iptables防火墙策略

    0x01 简介 iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的"安全框架"中,这个" ...

  6. Linux学习笔记 --iptables防火墙配置

    iptables防火墙配置 一.防火墙简介 1.功能: 1)通过源端口,源IP地址,源MAC地址,包中特定标记和目标端口,IP,MAC来确定数据包是否可以通过防火墙 2)分割内网和外网[附带的路由器的 ...

  7. linux入门--Linux系统的优缺点

    1) 大量的可用软件及免费软件 Linux 系统上有着大量的可用软件,且绝大多数是免费的,比如声名赫赫的 Apache.Samba.PHP.MySQL 等,构建成本低廉,是 Linux 被众多企业青睐 ...

  8. LINUX系统怎么关闭防火墙?

    所谓防火墙指的是一个由软件和硬件设备组合而成.在内部网和外部网之间.专用网与公共网之间的界面上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Int ...

  9. 配置linux-Fedora系统下iptables防火墙

    参考地址:https://blog.csdn.net/zhangjingyi111/article/details/78902820 本篇文章为实验课过程记录,较为简略. 1.查看系统是否安装ipta ...

随机推荐

  1. AE开发 入门教程

    此过程说明适合那些使用.NET建立和部署应用的开发者,它描述了使用ArcGIS控件建立和部署应用的方法和步骤. 你可以在下面的目录下找到相应的样例程序: <安装目录>/DeveloperK ...

  2. c#换ip代理源码

    很多朋友都想如何提高自己的网站流量,可是都没有什么好的办法 经过很长时间的研究,在C#中实现了,当然了,这部分代码其中一部分是网上的,不是原创. using System; using System. ...

  3. SASS -- 基本认识

    SASS 是一种 CSS 的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得 CSS 的开发,变得简单和可维护. SASS 提供四个编译风格的选项: * nested:嵌套缩进的 css ...

  4. Hadoop集群(第8期)_HDFS初探之旅

    1.HDFS简介 HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开 ...

  5. cmd.exe-应用程序错误 应用程序无法正常启动(0xc0000142)

    之前还好好的,突然就遇到这个问题,运行CMD报错(如上图),后面无论怎么重启都是这样. 导致所有与CMD相关的程序任务都出错,例如Ctrl+Alt+Delete 只好开始各种百度谷歌 找到如下几种解决 ...

  6. 一些数论概念与算法——从SGU261谈起

    话说好久没来博客上面写过东西了,之前集训过于辛苦了,但有很大的收获,我觉得有必要把它们拿出来总结分享.之前一直是个数论渣(小学初中没好好念过竞赛的缘故吧),经过一道题目对一些基础算法有了比较深刻的理解 ...

  7. Strlen()与sizeof()

    在学习C语言时以及面试中,经常会见到strlen()与sizeof()这一对容易混淆的概念,搞清楚这两个概念,往往考察了编程人员对语言的基本掌握能力. 首先大家先明确两个概念是: 1.strlen() ...

  8. Windows上安装Yeoman

    之前直接安装完Node.js后,运行npm install -g yo命令,结果出现什么"要安装framework2.0 sdk,vcbuild"什么的错误,怎么也弄不好,结果是各 ...

  9. (转)CWnd与HWND的区别与转换

    一.区别HWND是句柄,CWnd是MFC窗体类,CWnd中包含HWND句柄成员对象是m_hWnd.HWND是Windows系统中对所有窗口的一种标识,即窗口句柄.这是一个SDK概念.   CWnd是M ...

  10. 每天一个Linux命令(3): cd

    Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的. 所以,学习Linux 常用命令,首先就要学好 cd 命令的使用方法技巧. 1.  ...