概述

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. Lucene学习笔记(更新)

    1.Lucene学习笔记 http://www.cnblogs.com/hanganglin/articles/3453415.html    

  2. Java 互联网工程师要具备哪些技能或技术?

    Java技术的世界是个无底洞,永远也学不完,不废话了,我就简单的说一下自己的看法(偏重Java方面,什么html.css.js这些不在这次的讨论之内,虽然JavaServer开发有时候也都需要懂点): ...

  3. python下载图片

    import re import  urllib.request   def getHtml(url): page = urllib.request.urlopen(url) html = page. ...

  4. Object窥探

    /* * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETA ...

  5. binary-tree-maximum-path-sum(mock)

    注意: // 注意,如果一个类放在另一个类里面,初始化时候会报错 Solution is not a enclosing class// 这是因为如果TreeNode不是static,那么要求先有外部 ...

  6. Codeforces Round #272 (Div. 2) C. Dreamoon and Sums (数学 思维)

    题目链接 这个题取模的时候挺坑的!!! 题意:div(x , b) / mod(x , b) = k( 1 <= k <= a).求x的和 分析: 我们知道mod(x % b)的取值范围为 ...

  7. js各种间距数据汇总

    clientX,offsetX,screenX,pageX区别 先总结下区别: event.clientX.event.clientY 鼠标相对于浏览器窗口可视区域的X,Y坐标(窗口坐标),可视区域不 ...

  8. 新版本 JSAPI微信支付V3 C# DEMO

    小弟在公众号后台无意中点了更新(微信支付接口升级)PS:想都没有想,心里还乐滋滋的免费的干嘛不升级...后果来了.面临着支付不能用了,代码需要重新更新. /** * JS_API支付demo * == ...

  9. UVa 11481 (计数) Arrange the Numbers

    居然没有往错排公式那去想,真是太弱了. 先在前m个数中挑出k个位置不变的数,有C(m, k)种方案,然后枚举后面n-m个位置不变的数的个数i,剩下的n-k-i个数就是错排了. 所以这里要递推一个组合数 ...

  10. UVALive 5532 King(差分约束,spfa)

    题意:假设一个序列S有n个元素,现在有一堆约束,限制在某些连续子序列之和上,分别有符号>和<.问序列S是否存在?(看题意都看了半小时了!) 注意所给的形式是(a,b,c,d),表示:区间之 ...