快速入门linux系统的iptables防火墙 1 本机与外界的基本通信管理

概述

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 192.168.1.0/24 -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 80 -j ACCEPT

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

iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 3306 -j ACCEPT

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

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

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

-I 链名  1

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

例如

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

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

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

开机自启动

chkconfig iptables on

规则保存

service iptables save

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

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

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

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

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

快速入门linux系统的iptables防火墙 1 本机与外界的基本通信管理

时间: 2024-10-13 03:12:09

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

Linux系统中的防火墙的实现:iptables/netfilter

防火墙:包括软件防火墙(基于iptables/netfilter的包过滤防火墙)和硬件防火墙,在主机或网络边缘对经由防火墙的报文以一定条件进行检测过滤的一系列组件. Linux系统中的防火墙的实现:利用iptables/netfilter既可以实现主机防火墙(安全服务范围仅限于当前某台主机),又可以实现网络防火墙(安全服务范围为当前局域网).netfilter:Linux系统内核中防火墙的框架,防火墙功能实现的主体:iptables:为netfilter编写数据传输的匹配规则的用户空间中的应用程

Linux系统下磁盘配额、软RAID及LVM的配置与管理

Linux系统下磁盘配额.软RAID及LVM的 配置与管理 一.设定文件系统配额 1.概述:配额是操作系统的一个可选的功能, 它允许管理员以文件系统为单元, 限制分派给用户或组成员所使用的磁盘空间大小或是使用的总文件数量.这经常被用于那些分时操作的系统上, 对于这些系统而言, 通常希望限制分派到每一个用户或组的资源总量, 从而可以防止某个用户占用所有可用的磁盘空间. 2.配置文件系统配额(基于用户): (1)配置配额前准备工作: 1)备份/home目录,创建分区,进行挂载,将/home目录下的数

linux安全之iptables防火墙详解2

在上篇文章中我们介绍了iptables主要的链INPUT,这次我们主要介绍PREROUTING  POSTROUTING这两个链主要用于实现nat功能 nat:相信学网络的人对这个应该很熟悉,网络地址转换,一般用于局域网共享上网或者特殊的端口转换服务 PREROUTING:在数据包到达防火墙时进行路由之前执行的规则,作用是改变数据包的目的地址,目的端口 PSOTROUTING:在数据包离开防火墙进行路由判断之后执行的规则,作用是改变数据包的原地址 源端口 1.部署企业上网网关实战,实验环境如下,

linux安全之iptables防火墙详解1

在介绍iptables防火墙之前我们先来了解下IP TCP报文的格式,因为iptables防火墙的规则基本都是根据这些报文中的字段信息来做匹配,所以报文的格式就非常重要了 ip头部信息 抓包信息如下 TCP头部信息如下 抓包信息如下 大家可以对照着图片和抓包对比每个字段的意思,这里理解起来会更方便,好了下面正式开始介绍我们的iptables,先附上图片简单说明下 Iptables/netfiter Iptables:命令行的编写规则工具 Netfiter:在内核中 链(内置): 相当于5道阀门,

LINUX系统怎么关闭防火墙?

所谓防火墙指的是一个由软件和硬件设备组合而成.在内部网和外部网之间.专用网与公共网之间的界面上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Intranet之间建立起一个安全网关.需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作. 1.重启后永久性生效: 开启:chkconfig iptables on 关闭:chkconfig iptables off 2. 即时生效,重启后失效: 开启:service iptabl

linux centos fedora iptables防火墙配置

平时在搭建环境的时候,经常会有防火墙(iptables)的配置, 现整理成脚本,方便执行 #! /bin/bash   #---- settings rules ----------- iptables -F iptables -X iptables -t nat -F iptables -t nat -X   iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT   iptables -A I

关于linux系统下iptables下的管理的8种命令

虽然iptables在Unix系统中不是服务,但是为了方便平时的管理也就对iptables写了chkconfig的启动脚本(chkconfig的启动脚本可以参看http://jim123.blog.51cto.com/4763600/1845648),定义在/etc/init.d/即rc.d/init.d目录下,但是iptables和正常的service服务又多了几种命令 Usage: /etc/init.d/iptables {start|stop|reload|restart|condres

如何快速在Linux系统的硬盘上创建大文件

dd 命令可以轻易实现创建指定大小的文件,如 dd if=/dev/zero of=test bs=1M count=1000 会生成一个 1000M 的test文件,文件内容为全0(因从/dev/zero中读取,/dev/zero为0源) 但是这样为实际写入硬盘,文件产生速度取决于硬盘读写速度,如果欲产生超大文件,速度很慢 2. 在某种场景下,我们只想让文件系统认为存在一个超大文件在此,但是并不实际写入硬盘 则可以 dd if=/dev/zero of=test bs=1M count=0 s

在Linux系统中,实现将物理机与虚拟机网络共享

编写目的:配置过程对于初学者来说,还是有点复杂:记录下来,即作为分享,也是为了方便阅读. 前提条件:虚拟机系统中已经安装了VMWare Tools. 采用方式:自定义NAT方式(或者自定义NAT方式)共享虚拟机上网. 1.开启虚拟机的网卡 VMnet1和VMnet8网卡 2.设置网卡共享 首先要开启本地网络共享,本地网络设置 -- 属性 -- 共享勾选允许其他网络用户 --  家庭网络VMnet8. 3.设置虚拟机自定义NAT连接方式 VMware中选择菜单 编辑 -- 虚拟网路编辑器 -- 添