文档章节

Linux安全之iptables详解

Andy-xu
 Andy-xu
发布于 2014/07/31 14:44
字数 2531
阅读 299
收藏 6
点赞 0
评论 1

   基本上,依据防火墙管理的范围,我们可以将防火墙区分为网域型与单一主机型的控管。在单一主机型的控管方面, 主要的防火墙有封包过滤型的 Netfilter 与依据服务软件程序作为分析的 TCP Wrappers(只于服务名称有关) 两种。若以区域型的防火墙而言, 由于此类防火墙都是当作路由器角色,因此防火墙类型主要则有封包过滤的 Netfilter 与利用代理服务器 (proxy server) 进行存取代理的方式了。 

        防火墙在 做信息包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的信 息包过滤表中,而这些表集成在 Linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 信息包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。

        虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。

        1.netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。

        2.iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否则需要下载该工具并安装使用它

netfilter/iptables 的最大优点是它可以配置有状态的防火墙,有状态的防火墙能够指定并记住为发送或接收信息包所建立的连接的状态

在决定新的信息包过滤时,防火墙所使用的这些状态信息可以增加其效率和速度,这里有四种有效状态:ESTABLISHED 、 INVALID 、 NEW 和 RELATED。

状态 ESTABLISHED 指出该信息包属于已建立的连接,该连接一直用于发送和接收信息包并且完全有效。INVALID 状态指出该信息包与任何已知的流或连接都不相关联,它可能包含错误的数据或头。状态 NEW 意味着该信息包已经或将启动新的连接,或者它与尚未用于发送和接收信息包的连接相关联。最后, RELATED 表示该信息包正在启动新连接,以及它与已建立的连接相关联。


如图所示:防火墙的规则指定所检查包的特征,和目标。如果包不匹配,将送往该链中下一条规则检查;如果匹配,那么下一条规则由目标值确定.该目标值可以是用户定义的链名,或是某个专用值,如ACCEPT[通过],DROP[删除],QUEUE[排队],或者 RETURN[返回]。

但是需要注意的是:防火墙的规则是允许通过则访问目标(所以需要主机策略的定制顺序)实例3


IPtables详细介绍以及配置案列:

目前IPtables有三张表和五条链:即filter、nat 、mangle表INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING.

filter:一般的过滤功能 默认是此表

nat:用于nat功能(端口映射,地址映射等包的转发)

mangle:用于对特定数据包的修改

PREROUTING:数据包进入路由表之前  (DNAT)当数据包进入路由前进行目的的改变

INPUT:通过路由表后目的地为本机

FORWARDING:通过路由表后,目的地不为本机

OUTPUT:由本机产生,向外转发

POSTROUTIONG:发送到网卡接口之前 (SNAT)




IPtables设置详细命令:

iptables命令的管理控制选项(常用):
-A 在指定链的末尾添加(append)一条新的规则
-D删除(delete)指定链中的某一条规则,可以按规则序号和内容删除
-I在指定链中插入(insert)一条新的规则,默认在第一行添加
-L列出(list)指定链中所有的规则进行查看
-F清空(flush)
-n使用数字形式(numeric)显示输出结果
注意:更多使用详情可以查看:iptables -h


防火墙处理数据包的四种方式:
ACCEPT 允许数据包通过
DROP 直接丢弃数据包,不给任何回应信息
REJECT 拒绝数据包通过,必要时会给数据发送端一个响应的信息。
LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则


iptables防火墙规则的保存与恢复
#iptables-save    此命令把规则保存到文件中,再由目录rc.d下的脚本(/etc/rc.d/init.d/iptables)自动装载
同时也可以使用#service iptables save(直接保存到配置文件开机自动启动)
使用命令iptables-save来保存规则。一般用iptables-save > /etc/sysconfig/iptables


注意:一般在重新定义iptables策略时都会将当前的策略清空

#iptables -F

完成策略配置之后我们必须进行保存,加载配置文件中,以便于开机自动加载配置

#/etc/init.d/iptables save


下面我们就用实例来演示一下:

1.拒绝进入防火墙的所有ICMP协议数据包(如果不使用-t指定表,默认指的是filter表)
#iptables -A INPUT -p icmp -j REJECT

2.允许防火墙转发除ICMP协议以外的所有数据包
#iptables -A FORWARD -p ! icmp -j ACCEPT
说明:使用“!”可以将条件取反。

3.拒绝转发来自192.168.0.10主机的数据,允许转发来自192.168.0.0/24网段的数据
#iptables -A FORWARD -s 192.168.0.11 -j REJECT
#iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
说明:在实际添加规则的时候,这个顺序必须先REJECT,因为如果先ACCEPT就默认不会检测下面的

4.丢弃从外网接口(eth1)进入防火墙本机的源地址为私网地址的数据包
#iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP
#iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
#iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

5.封堵网段(192.168.0.0/24),两小时后解封。
# iptables -A INPUT -s 192.168.0.0/24 -j DROP              从192.168.0.0网段进来的数据全部拒绝
# iptables -A FORWARD -s 192.168.0.0/24 -j DROP     从192.168.0.0远端来的禁止转发
# at now +2 hours
at> iptables -D INPUT 1
at> iptables -D FORWARD 1
说明:在实际机房里维护服务器时千万谨慎,不然你在远程链接进行维护,执行第一条命令后就会立马断开,此时,坑爹的你就要进去机房维护服务器咯^*^

6.限制使用SSH远程登录防火墙主机。
#iptables -A INPUT -p tcp --dport 22 -s 192.168.0.2  -j ACCEPT            192.168.0.2主机允许访问22
#iptables -A INPUT -p tcp --dport 22 -j DROP                                        其他访问ssh(22)断开
说明:这个规则主要用来设置某个主机的保护方案,这样远程ssh就不能访问。

7.允许本机开放从TCP端口20-1024提供的应用服务。
#iptables -A INPUT -p tcp --dport 20:1024 -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 20:1024 -j ACCEPT

8.允许转发来自192.168.0.0/24局域网段的DNS解析请求数据包。               (注意DNS同时开启UDP和TCP)
#iptables -A FORWARD -s 192.168.0.0/24 -p udp --dport 53 -j ACCEPT
#iptables -A FORWARD -d 192.168.0.0/24 -p udp --sport 53 -j ACCEPT

9.禁止转发来自MAC地址为00:0C:29:27:55:3F的和主机的数据包
#iptables -A FORWARD -m mac --mac-source 00:0c:29:27:55:3F -j DROP
说明:iptables中使用“-m 模块关键字”的形式调用显示匹配。咱们这里用“-m mac –mac-source”来表示数据包的源MAC地址。

10.允许防火墙本机对外开放TCP端口20、21、25、110以及被动模式FTP端口1250-1280
#iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT
说明:这里用"-m multiport –dport"来指定目的多个端口

11.禁止转发源IP地址为192.168.1.20-192.168.1.99的TCP数据包。
iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP
说明:此处用"-m –iprange –src-range"指定IP范围。一般作为NAT服务器需要

12.拒绝访问防火墙的新数据包,但允许响应连接或与已有连接相关的数据包
#iptables -A INPUT -p tcp -m state --state NEW -j DROP
#iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
说明:“ESTABLISHED”表示已经响应请求或者已经建立连接的数据包,“RELATED”表示与已建立的连接有相关性的,比如FTP数据连接等。

13.只开放本机的web服务(80)、FTP(20、21、20450-20480),放行外部主机发住服务器其它端口的应答数据包,将其他入站数据包均予以丢弃处理。
#iptables -I INPUT -p tcp -m multiport --dport 20,21,80 -j ACCEPT
#iptables -I INPUT -p tcp --dport 20450:20480 -j ACCEPT
#iptables -I INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
#iptables -P INPUT DROP


来自192.168.0.0网段的客户,通过eth0进来链接ssh的用户拒绝
# iptables -A INPUT -i eth0 -p tcp -s 192.168.0.0/24 --sport 1024:65535 --dport ssh -j DROP

说明:--sport指定的端口意义,就是TCP/IP的链接机制(客户端给一个1024+端口,服务返回一个1024-端口)

                                                                                                      

注意:本篇iptables 的简单配置大多是根据自己对应用的理解增加的注释,因此解释的不到位的地方希望大家能够及时指出,同时对与很多参数并没有详细的指出作用,有需要的访客可以自行查看。

希望转载的朋友能够加上原文地址:http://my.oschina.net/xxbAndy/blog/296787




© 著作权归作者所有

共有 人打赏支持
Andy-xu
粉丝 109
博文 95
码字总数 179246
作品 0
大兴
运维
加载中

评论(1)

Galen_Z
Galen_Z
非常详细的东西,非常好,顶起了!
Linux操作系统下IPTables配置方法详解(转载)

配置一个filter表的防火墙 1、查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEP......

Start-up
2012/06/13
0
0
linux下IPTABLES配置详解

如果你的IPTABLES基础知识还不了解,建议先去看看. 开始配置 我们来配置一个filter表的防火墙. (1)查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables -L -n Chain INPUT (policy ACCEPT...

龙上
2012/04/14
0
2
Linux系统防止黑客NMAP扫描的方法

许多网络服务使用的是Linux系统,安装了Apache服务器软件。容易受到黑客用NMAP来扫描web网站,现分享一个防范经验。   我样可以通过设置,让Linux对NMAP扫描不理彩。即用iptables工具来过滤...

开了瓶的可乐
2013/01/21
0
0
40.host不能访问虚拟机的WEB

在虚拟机上写了个server,本机127.0.0.1:8888能正常访问,但是用host访问不成功。telnet 192.168.0.120 8888报端口失败。 1.修改虚拟网卡为桥接,还是失败 2.把centos的防火墙关掉,chkconf...

quanpower
2013/08/06
0
0
关于win7与虚拟机LINUX互通问题

首先,介绍如何在VMWARE中设置LINUX的网络。一般网络选项有Bridged, NAT, host-only几种。本次以我实现的host-only为样本来做详细说明,如下图: 在选择host-only模式之后,打开VMWARE的网络...

Sandy_wu
2013/03/19
0
0
教你使用Linux防火墙隔离本地欺骗地址!

导读 几乎所有的 Linux 发行版都带着一个内建的防火墙来保护运行在 Linux 主机上的进程和应用程序。大多数防火墙都按照 IDS/IPS 解决方案设计,这样的设计的主要目的是检测和避免恶意包获取网...

问题终结者
05/10
0
0
iptables基础知识详解

iptables防火墙可以用于创建过滤(filter)与NAT规则。所有Linux发行版都能使用iptables,因此理解如何配置 iptables将会帮助你更有效地管理Linux防火墙。如果你是第一次接触iptables,你会觉得...

好铁
2014/09/16
0
0
大数据教程(2.6):Linux防火墙配置详解

我们从事IT的部分人员中,经常会与Linux系统打交道,而Linux中有一个非常重要的包过滤工具,它就是防火墙。大多数人员可能对这块知识不甚了解,亦或是只知道其中一些简单的配置。本节博主将为...

em_aaron
07/11
0
0
如何使用 Linux 防火墙隔离本地欺骗地址

如何使用 iptables 防火墙保护你的网络免遭黑客攻击。 即便是被入侵检测和隔离系统所保护的远程网络,黑客们也在寻找各种精巧的方法入侵。IDS/IPS 不能停止或者减少那些想要接管你的网络控制...

作者: Michael Kwaku Aboagye
05/04
0
0
配置 Linux 服务器 SSH 安全访问的四个小技巧

以 CentOS 为例,简单地总结一下如何配置 SSH安全访问。 Linux SSH 安全策略一:关闭无关端口   网络上被攻陷的大多数主机,是黑客用扫描工具大范围进行扫描而被瞄准上的。所以,为了避免被...

lichao19881026
2014/05/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

pbgo: 基于Protobuf的迷你RPC/REST框架

https://www.oschina.net/p/pbgo

chai2010
29分钟前
0
0
rsync工具介绍、常用选项以及通过ssh同步

linux下的文件同步工具 rsync rsync是非常实用的一个同步工具,可以从a机器到b机器传输一个文件,也可以备份数据,系统默认没有这个工具,要使用命令 yum install -y rsync 安装。 rsync的命...

黄昏残影
45分钟前
0
0
OSChina 周四乱弹 —— 表妹要嫁人 舅妈叮嘱……

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @哈哈哈哈哈嗝:一定要听——The Pancakes的单曲《咁咁咁》 《咁咁咁》- The Pancakes 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :...

小小编辑
今天
194
4
流利阅读笔记30-20180719待学习

重磅:让人类得老年痴呆的竟是它? Lala 2018-07-19 1.今日导读 去年奥斯卡最佳动画长片《寻梦环游记》里有一句经典台词:“比死亡更可怕的,是遗忘”。在电影中,年迈的曾祖母会重复说一样的...

aibinxiao
今天
3
0
1.16 Linux机器相互登录

Linux机器之间以密码方式互相登录 运行命令#ssh [ip address],标准命令:#ssh [username]@ip, 如果没有写用户名,则默认为系统当前登录的用户 命令#w查看系统负载,可查看到连接到该主机的...

小丑鱼00
今天
0
0
about git flow

  昨天元芳做了git分支管理规范的分享,为了拓展大家关于git分支的认知,这里我特意再分享这两个关于git flow的链接,大家可以看一下。 Git 工作流程 Git分支管理策略   git flow本质上是...

qwfys
今天
2
0
Linux系统日志文件

/var/log/messages linux系统总日志 /etc/logrotate.conf 日志切割配置文件 参考https://my.oschina.net/u/2000675/blog/908189 dmesg命令 dmesg’命令显示linux内核的环形缓冲区信息,我们可...

chencheng-linux
今天
1
0
MacOS下给树莓派安装Raspbian系统

下载镜像 前往 树莓派官网 下载镜像。 点击 最新版Raspbian 下载最新版镜像。 下载后请,通过 访达 双击解压,或通过 unzip 命令解压。 检查下载的文件 ls -lh -rw-r--r-- 1 dingdayu s...

dingdayu
今天
1
0
spring boot使用通用mapper(tk.mapper) ,id自增和回显等问题

最近项目使用到tk.mapper设置id自增,数据库是mysql。在使用通用mapper主键生成过程中有一些问题,在总结一下。 1、UUID生成方式-字符串主键 在主键上增加注解 @Id @GeneratedValue...

北岩
今天
2
0
告警系统邮件引擎、运行告警系统

告警系统邮件引擎 cd mail vim mail.py #!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sysreload(sys)sys.setdefaultencoding('utf8')import getoptimport smtplibfr......

Zhouliang6
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部