- 浏览: 405875 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
锦毛鼠:
嗯!不错哦,先支持一下!
MySQL-Front 5 注册码 -
bolan392:
我公司现在也想用这个工具,对于商业用户所使用的版本在国内该如何 ...
IP端口扫描工具(Tenable Nessus)的简介 -
exe:
如果目录结果不变,ant其实也不需要怎么修改,直接copy。
Maven 和 ANT 的区别 -
wx3957156:
wx3957156 写道灰常好!灰常好!
利用Java生成静态HMTL页面的方法收集 -
wx3957156:
灰常好!灰常好!
利用Java生成静态HMTL页面的方法收集
iptables使用实例
首先让我们看一下服务器/客户机的交互原理。服务器提供某特定功能的服务总是由特定的后台程序提供的。在TCP/IP网络中,常常把这个特定的服
务绑定到特定的TCP或UDP端口。之后,该后台程序就不断地监听(listen)该端口,一旦接收到符合条件的客户端请求,该服务进行TCP握手后就同
客户端建立一个连接,响应客户请求。与此同时,再产生一个该绑定的拷贝,继续监听客户端的请求。
举一个具体的例子:假设网络中有一台服务器A(IP地址为1.1.1.1)提供WWW服务,另有客户机B(2.2.2.2)、
C(3.3.3.3)。首先,服务器A运行提供WWW服务的后台程序(比如Apache)并且把该服务绑定到端口80,也就是说,在端口80进行监听。当
B发起一个连接请求时,B将打开一个大于1024的连接端口(1024内为已定义端口),假设为1037。A在接收到请求后,用80端口与B建立连接以响
应B的请求,同时产生一个80端口绑定的拷贝,继续监听客户端的请求。假如A又接收到C的连接请求(设连接请求端口为1071),则A在与C建立连接的同
时又产生一个80端口绑定的拷贝继续监听客户端的请求。如下所示,因为系统是以源地址、源端口、目的地址、目的端口来标识一个连接的,所以在这里每个连接
都是唯一的。
服务器 客户端
连接1:a.b.c.1:80 <=>; a.b.c.4:1037
连接2:a.b.c.1:80 <=>; a.b.c.7:1071
每一种特定的服务都有自己特定的端口,一般说来小于1024的端口多为保留端口,或者说是已定义端口,低端口分配给众所周知的服务(如WWW、
FTP等等),从512到1024的端口通常保留给特殊的UNIX TCP/IP应用程序,具体情况请参考/etc/services文件或
RFC1700。
假设网络环境如下:某一单位,租用DDN专线上网,网络拓扑如下:
+--------------+
| 内部网段 | eth1+--------+eth0 DDN
| +------------|firewall|<===============>;Internet
| 198.168.80.0 | +--------+
+--------------+
eth0: 198.199.37.254
eth1: 198.168.80.254
以上的IP地址都是Internet上真实的IP,故没有用到IP欺骗。并且,我们假设在内部网中存在以下服务器:
www服务器:www.yourdomain.com 198.168.80.11
ftp服务器:ftp.yourdomain.com 198.168.80.12
email服务器:mail.yourdomain.com 198.168.80.13
下面我们将用iptables一步一步地来建立我们的包过滤防火墙,需要说明的是,在这个例子中,我们主要是对内部的各种服务器提供保护。
1. 在/etc/rc.d/目录下用touch命令建立firewall文件,执行chmod u+x firewll以更改文件属性 ,编辑
/etc/rc.d/rc.local文件,在末尾加上 /etc/rc.d/firewall 以确保开机时能自动执行该脚本。
2. 刷新所有的链的规则
#!/bin/sh
echo "Starting iptables rules..."
#Refresh all chains
/sbin/iptables -F
3. 我们将首先禁止转发任何包,然后再一步步设置允许通过的包。
所以首先设置防火墙FORWARD链的策略为DROP:
/sbin/iptables -P FORWARD DROP
4.设置关于服务器的包过虑规则:
在这里需要注意的是,服务器/客户机交互是有来有往的,也就是说是双向的,所以我们不仅仅要设置数据包出去的规则,还要设置数据包返回的规则,我们先建立针对来自Internet数据包的过虑规则。
WWW服务:服务端口为80,采用tcp或udp协议。规则为:eth0=>;允许目的为内部网WWW服务器的包。
###########################Define HTTP packets####################################
#Allow www request packets from Internet clients to www servers
/sbin/iptables -A FORWARD -p tcp -d 198.168.80.11 --dport www -i eth0 -j ACCEPT
FTP服务:FTP服务有点特别,因为需要两个端口,因为FTP有命令通道和数据通道。其中命令端口为21,数据端口为20,并且有主动和消极两
种服务模式,其消极模式连接过程为:FTP客户端首先向FTP服务器发起连接请求,三步握手后建立命令通道,然后由FTP服务器请求建立数据通道,成功后
开始传输数据,现在大多数FTP客户端均支持消极模式,因为这种模式可以提高安全性。FTP服务采用tcp协议。规则为:eth0=>;仅允许目的
为内部网ftp服务器的包。
############################Define FTP packets#####################################
#Allow ftp request packets from Internet clients to Intranet ftp server
/sbin/iptables -A FORWARD -p tcp -d 198.168.80.12 --dport ftp -i eth0 -j ACCEPT
EMAIL服务:包含两个协议,一是smtp,一是pop3。出于安全性考虑,通常只提供对内的pop3服务,所以在这里我们只考虑针对smtp的安全性问题。smtp端口为21,采用tcp协议。eth0=>;仅允许目的为email服务器的smtp请求。
###########################Define smtp packets####################################
/sbin/iptables -A FORWARD -p tcp -d 198.168.80.13 --dport smtp -i eth0 -j ACCEPT
5. 设置针对Intranet客户的过虑规则:
在本例中我们的防火墙位于网关的位置,所以我们主要是防止来自Internet的攻击,不能防止来自Intranet的攻击。假如我们的服务器都
是基于linux的,也可以在每一部服务器上设置相关的过虑规则来防止来自Intranet的攻击。对于Internet对Intranet客户的返回
包,我们定义如下规则。
#############Define packets from Internet server to Intranet#######################
/sbin/iptables -A FORWARD -p tcp -s 0/0 --sport ftp-data -d 198.168.80.0/24 -i eth0 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp -d 198.168.80.0/24 ! -syn -i eth0 -j ACCEPT
/sbin/iptables -A FORWARD -p udp -d 198.168.80.0/24 -i eth0 -j ACCEPT
说明:第一条允许Intranet客户采用消极模式访问Internet的FTP服务器;第二条接收来自Internet的非连接请求tcp包;最后一条接收所有udp包,主要是针对oicq等使用udp的服务。
6. 接受来自整个Intranet的数据包过虑,我们定义如下规则:
#############Define packets from Internet server to Intranet server###############
/sbin/iptables -A FORWARD -s 198.168.80.0/24 -i eth1 -j ACCEPT
7. 处理ip碎片
我们接受所有的ip碎片,但采用limit匹配扩展对其单位时间可以通过的ip碎片数量进行限制,以防止ip碎片攻击。
#################################Define fregment rule##################################
/sbin/iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
说明:对不管来自哪里的ip碎片都进行限制,允许每秒通过100个ip碎片,该限制触发的条件是100个ip碎片。
8. 设置icmp包过滤
icmp包通常用于网络测试等,故允许所有的icmp包通过。但是黑客常常采用icmp进行攻击,如ping of death等,所以我们采用limit匹配扩展加以限制:
#################################Define icmp rule##################################
/sbin/iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
说明:对不管来自哪里的icmp包都进行限制,允许每秒通过一个包,该限制触发的条件是10个包。
通过以上个步骤,我们建立了一个相对完整的防火墙。只对外开放了有限的几个端口,同时提供了客户对Internet的无缝访问,并且对ip碎片攻
击和icmp的ping of death提供了有效的防护手段。以下是完整的脚本文件内容,希望通过这个实例能是对iptables的用法有所了解:
#!/bin/sh
echo "Starting iptables rules..."
#Refresh all chains
/sbin/iptables -F
###########################Define HTTP packets####################################
#Allow www request packets from Internet clients to www servers
/sbin/iptables -A FORWARD -p tcp -d 198.168.80.11 --dport www -i eth0 -j ACCEPT
############################Define FTP packets#####################################
#Allow ftp request packets from Internet clients to Intranet ftp server
/sbin/iptables -A FORWARD -p tcp -d 198.168.80.12 --dport ftp -i eth0 -j ACCEPT
###########################Define smtp packets####################################
/sbin/iptables -A FORWARD -p tcp -d 198.168.80.13 --dport smtp -i eth0 -j ACCEPT
#############Define packets from Internet server to Intranet#######################
/sbin/iptables -A FORWARD -p tcp -s 0/0 --sport ftp-data -d 198.168.80.0/24 -i eth0 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp -d 198.168.80.0/24 ! -syn -i eth0 -j ACCEPT
/sbin/iptables -A FORWARD -p udp -d 198.168.80.0/24 -i eth0 -j ACCEPT
#############Define packets from Intranet to Internet###############
/sbin/iptables -A FORWARD -s 198.168.80.0/24 -i eth1 -j ACCEPT
#################################Define fregment rule##################################
/sbin/iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
#################################Define icmp rule##################################
/sbin/iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
发表评论
-
iptables封ip段
2011-09-28 21:01 1572linux下实用iptables封ip段的一些常见命令: ... -
linux gzip 命令详解
2010-06-29 09:08 1894linux gzip 命令详解 减少文件大小有两个明显的好 ... -
Nginx 介绍
2010-06-19 11:16 932一、介绍 Nginx是俄罗斯人编写的十分轻量级的HTTP服务 ... -
使用 xmllint + schema 校验 xml 文档
2010-01-23 18:31 3163使用 xmllint + schema 校验 xml 文档 ... -
Linux操作系统下Route命令详细使用说明
2010-01-18 16:00 1412Linux 操作系统下Route 命令详细 ... -
init6与reboot的区别
2010-01-13 21:08 1366init命令用于改变操作系统的运行级别。 Init 6是重新 ... -
lsof 命令详解
2010-01-08 17:18 1968lsof 命令详解 lsof全名list opened f ... -
linux id 命令详解
2010-01-07 15:52 5118linux id 命令详解 功能说明:显示用户的 ... -
xhost +
2010-01-07 15:42 1062xhost是用来控制X server访问权限的。 通常当你从 ... -
Shell 条件判断总结
2010-01-06 13:57 978Shell 条件判断总结 UNIX ... -
查看硬盘信息的linux命令
2010-01-05 11:13 3345[root@localhost ~]# fdisk -l D ... -
Linux面试题
2009-12-18 13:37 1398Linux面试题 一.填空题 ... -
Linux一句话精彩问答
2009-12-04 21:35 22960001 修改主机名(陈绪) vi /etc/sy ... -
tar命令详解
2009-12-04 21:18 1327tar命令详解 ... -
linux gzip 命令详解
2009-12-04 21:11 1951linux gzip 命令详解 减 ... -
什么是xinetd?
2009-11-26 09:27 1500什么是xinetd? 大家 ... -
inetd Internet 超级服务器
2009-11-26 09:19 662inetd ... -
How to create user on linux
2009-11-24 09:17 953Create a user named nxuser. 1. ... -
Linux 指令篇:文件系统--sync
2009-11-23 15:19 812名称 : sync 使用权限 : 系统管理者 ... -
Linux/UNIX命令dd简介
2009-11-23 15:08 935dd 是 Linux/UNIX 下的一个非常有用的命令 ...
相关推荐
多个实用的linux iptable实例应用。让你快速掌握好linux iptable的部署使用。
1. 概述 2. 框架图 3. 语法 4. 实例分析 5. 网管策略 6. FAQ 7. 实战
共7中获取MAC地址方法 使用GetAdaptersInfo 使用Netbios 使用IpTable 使用IOCTL 使用UUID 使用SNMP 使用ipconfig /all命令
当数据包进入或离开受保护的网络空间时,将根据防火墙规则测试数据包的内容(特别是有关其来源、目标和计划使用的协议的信息),以确定是否应该允许数据包通过。下面是一个简单的例子: 防火墙可以根据协议或基于目标...
Ubuntu中保存iptables防火墙规则的例子.docx
第一次上传,发个iptables实例。内容很简单,希望对大家有所帮助;
linux下防火墙iptables 一、基本知识 二、iptable的安装与配置 禁止端口的实例 强制访问指定的站点 发布内部网络服务器 通过NAT上网 iptables实例
iptable详细配置 iptables官方网站:http://netfilter.org/ •数据包经过防火墙的路径 •禁止端口 •强制访问某站点 •发布内部网络服务器 •智能DNS •端口映射 •通过NAT上网 •IP规则的保存与恢复 •iptables...
主要内容包括:防火墙的基础知识,linux防火墙管理程序iptable,构建防火墙的方法,防火墙的优化,数据包的转发,网络监控和攻击检测,内核强化等。本书独立于linux某个发行版本,涉及常驻于linux内核的netfilter...
下面小编就为大家分享一篇python读文件保存到字典,修改字典并写入新文件的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
参考实例 还原iptables配置: [root@linuxcool ~]# iptables-restore < iptables.bak 指定在还原iptables表时候,还原当前的数据包计数器和字节计数器的值: [root@linuxcool ~]# iptables-restore -c < ip
使用Cloudeploy可以快速创建主流云实例,安装等各种简化发布工作。 特性 支持多平台创建实例 阿里云 Ucloud 极简接口,仅有3个RESTful API 内嵌数据库 可配置化 小巧方便,仅8M大小的jar文件 安装 Oracle官方下载...
本文介绍如何利用nginx屏蔽ip来实现防止采集,当然也可以通过iptable来实现。 1.查找要屏蔽的ip 代码如下: awk ‘{print $1}’ nginx.access.log |sort |uniq -c|sort -n nginx.access.log 为日志文件, 会到如下...
ipTable = ['158.59.194.213', '18.9.14.13', '58.59.14.21'] fileObject = open('sampleList.txt', 'w') for ip in ipTable: fileObject.write(ip) fileObject.write('\n') fileObject.close() 2、字典保存 #2/...
大量真实例子以及源代码更有助于读者理解安全防御的原理、技术和实际作。 作者简介 Michael Rash,世界级的安全技术专家,以防火墙、入侵检测系统等方面的造诣享誉安全界。他是psad、fwsnort和fWknop等著名开源...
下面以iptable_filter.o 模块的工作流程为例简单介绍一下Netfilter/Iptables 系统是如何工作的。 当数据包进入系统时,系统首先根据路由表决定数据包的流向(即将数据包发往那个关键点),则可能 有三种情况: 图1 分组...
参考实例 指定要保存的iptables表时,保存当前的数据包计算器和字节计数器的值: [root@linuxcool ~]# iptables-save -c > iptables.bak 指定要保存的表的名称: [root@linuxcool ~]# iptables-save -t filter > ...
iptstate命令以top命令类似的风格实时显示Linux内核中iptables的工作状态。输出信息可以以任何字段进行排序,可以定义状态刷新的频率和单次显示状态信息。...参考实例 以top风格实时显示iptables的工作状态: