RHCE课程-RH253Linux服务器架设笔记十-Iptables防火墙

51CTO首页 | 技术论坛 | 短消息
博 客
  • 我的博客
  • 发表文章
  • 管理博客
技术圈
  • 创建圈子
  • 我的圈子
  • 寻找圈子
相 册
  • 我的相册
  • 上传图片
  • 管理相册
 
版权声明:原创作品,谢绝转载!否则将追究法律责任。
其实不论从nat,包过滤,ALG,稳定性,安全性,来说,用linux做一个防火墙,是一个不错的规划,当然还有价格
Iptables防火墙原理
防火墙技术分为三种
1、包过滤,在ACL中使用ip地址或端口号进行过滤
2、ALG,应用层网关,工作类是代理服务器,linux的squid和win的ISA都是出色的ALG
3、状态化包过滤,使用ACL,通过了解连接状态来确定访问行为
iptables支持包过滤和状态化包过滤
具体防火墙技术相当深奥,不是一言两语可以说清楚
我们用一个实例来分析吧,这个需要对路由和nat要有一定了解才行
实例1:
一个企业使用linux作为网管和防火墙,如果难度再大点就加个DMZ区域
这样就要3块网卡
通过了解DMZ特性
1、不可以访问内网
2、内网和外网可以访问
3、不可以访问外网
通过这三个特性配置DMZ的网段就可以了
DMZ是不允许访问内网的,避外网通过攻破DMZ,进而攻击内网
DMZ位于网络的哪个位置?内网和外网之间
在硬件设备上就是他自动帮你实现了这些功能,在linux就需要你了解原理,然后自己手动配置,达到相同的效果
如果涉及到DMZ的话,肯定还会有状态化包过滤
好像说深了点点,我们继续刚才的课题
作为网关需要设置全局的默认网关到外面那个网卡eth1
内网我们使用eth0
内网所有主机网关指向linux的eth0的IP地址,然后在服务器打开ip转发
vim /etc/sysctl.conf
他是内存正在运行的一些参数的配置文件, 禁ping那个参数可以写到这里,每次开机读取
net.ipv4.ip_forward = 0值改成1
image
更新系统内核参数
sysctl -p
image
现在我们的IP包已经可以出到广域网了,但是广域网上的路由器会丢弃我们内网的IP地址, 所以我们要做nat
好了,开始说到iptables了
要做nat就需要用到iptables的nat表
我们是从里面到外面的包,所以要修改源IP,就叫做源NAT
红帽的官方教材上讲iptables也是用的这个图
image
我们要出去,就是postrouting
现在我们来配置这条命令
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.8.0/24 -j MASQUERADE
image
我们来讲解这条命令
iptables 是命令本身
-t 是执行表,iptables有两个表,一个是filter:过滤的表
一个是nat,就是NAT表,Network Address Translator
然后-A,-A的意思就是添加一条链
这里添加的链是POSTROUTING链,就是源NAT
-o 是出去的网卡设备,我们使用的是eth1网卡
-s 是源地址,我们设置内网的192.168.8.0/24网段
-j是动作,MASQUERADE 动态源地址转换(动态IP的情况下使用)
如果我们使用的静态外网地址,就可以这样写
iptables -t nat -A POSTROUTING -o eth1  -j  SNAT --to  1.1.1.1 
把出去的地址都转换成1.1.1.1
好了,现在内网用户可以通过linux网关上网了
这个时候我们为了保证内网安全,我们就需要控制进来的包了
现在我们不考虑DMZ,或者是内部有服务器的问题,这样,外部进来的包,我们默认都要丢弃
比方说,你的代理:192.168.0.1 而我的pc在另外一个网段,192.168.8.88   gw192.168.8.188
这样的话就还需要一个网卡了,通过这个网卡来路由撒
为了防止外网伪装内网IP进行攻击。
私网地址的范围如下:
10.0.0.0 ~ 10.255.255.255
172.16.0.0 ~ 172.31.255.255
192.168.0.0 ~ 192.168.255.255
127开头的(lookback地址)
169.254开头的(WINDOWS保留地址)
先要把10.0.0.0
172.16-31.0.0
192.168.0.0 全部禁止,这几条放在最上面
然后再考虑对外要开放的端口号,最后默认策略要是DROP
变成命令就是这样
iptables -t filter -A INPUT -s 10.0.0.0/8 -j DROP
iptables -t filter -A INPUT -s 172.16.0.0/16 -j DROP
iptables -t filter -A INPUT -s 172.17.0.0/16 -j DROP
省略
iptables -t filter -A INPUT -s 192.168.0.0/24 -j DROP
image
这样把私有网段先全部禁止了
现在外网的私有网段已经ping不通eth1网卡了
image
而内网192.168.8.0/24网段正常
image
然后我们开放一个80端口
iptables -t filter -A INPUT -p tcp -i eth1 --dport 80 -j ACCEPT
image
允许所有IP,当然上面禁止的私有IP不行,都可以访问eth1接口IP的80端口
然后就是最后一条,默认都DROP,INPUT就是从外网进来的
iptables -t filter -P INPUT DROP
没有匹配的包全部丢弃
image
现在内网也ping不通eth1网卡IP地址
image
但是上网没问题
image
外网的就OK了,现在我们来配置内网的防火墙
那个还需要做一个PREROUTING,目标NAT
为了防止内网用户攻击外网的用户,所以需要在内网做一些策略
iptables -t filter -A INPUT -i eth1 -j DROP
image
保存iptables规则
service iptables save
service iptables restart
image
###############Michael分割线#################
本文出自 “ 王乾De技术Blog[爱生活,爱学习]” 博客,谢绝转载!
本文出自 51CTO.COM技术博客


上一篇 RHCE课程-RH253Linux服务器架设笔记九-tcp_wra..  下一篇 Java EE WEB工程师培训-JDBC+Servlet+JSP整合..

类别:Linux/Unix ┆ 技术圈( 1) ┆ 阅读( 3191) ┆ 评论( 20) ┆ 推送到技术圈 ┆ 返回首页  


     相关文章
     文章评论
 
[1楼]        鲜橙加冰
2009-05-22 17:27:10
莫非是沙发?

对了,顺便和楼主讨论个问题。PREROUTING 在我测试中无法阻断udp那种视频收看,不知道你遇到过这样的问题没

博主回复:
udp视频收看,没测试过,你试下禁止端口
2009-05-23 10:18:31
  短消息通知评论者

[2楼]        鲜橙加冰
2009-05-23 21:28:46
他们用80端口

博主回复:
80端口?那就封那个视频网站吧
2009-05-24 09:36:33
  短消息通知评论者

[3楼]        鲜橙加冰
2009-05-24 23:59:29
哈哈。。我就是那么干的。

博主回复:
恩,直接禁止域名时,iptables会自动转换成ip,呵呵~
2009-05-25 19:46:27
  短消息通知评论者

[4楼]        黎仔
2009-05-28 21:07:19
有的图被水印档住重要内容了
短消息通知评论者

[5楼]        devilangel
2009-06-22 08:28:24
正在学习IPTABLES 学习了!!!
短消息通知评论者

[6楼]        sakula00544
2009-07-09 15:55:26
-o 是指一个设备名
-i 也是指一个设备名,这二个有什么区别嘛?
短消息通知评论者

[7楼]        szsaihe
2009-07-15 18:34:46
第一次看博主的文章,很不错!
短消息通知评论者

[8楼]        chenym321
2009-09-03 21:46:41
iptables的内容有点少,好像讲师讲课的时候根本就没讲这些,没有分什么内外网
短消息通知评论者

[9楼]        Think_A
2009-10-17 13:43:26
谢谢版主提供的资料~!
短消息通知评论者

[10楼]       [匿名]51CTO游客
2009-11-16 19:48:01
-i 是 input interface -o 是 output interface
在iptables 是有明显区别的 根据数据包和iptables链条选择不同的参数-i或-o
在早期的2.4的内核里面的 ipchains 是不区分的,
短消息通知评论者

[11楼]       [匿名]51CTO游客
2009-11-17 20:10:23
iptables -t filter -A INPUT -p tcp --dort 22 -j LOG --log-prefix "iptables" --log-level 5
iptabels -t filter -A INPUT -p tcp --dport 22 -j ACCEPT

vim /etc/syslog.conf
kern.=notice   /var/log/iptables
:x

/etc/init.d/iptables save
/etc/init.d/iptables restart
/etc/init.d/syslog restart


iptables 's LOG functions

短消息通知评论者

[12楼]       [匿名]51CTO游客
2009-11-17 20:11:23
netfilter is a kernel's architecture
iptables is a users's tools
so we calld netfiler/iptables

this is key point
短消息通知评论者

[13楼]       [匿名]51CTO游客
2009-11-17 20:13:34
input 是对所有进入本机的包进行处理的
output 是对所有从本机出去的包进行处理的
forward 是对所有局域网用户的数据包进行处理的 (所谓的经过本机)

prerouting 是专门进行dnat 和 端口的REDIRECT的
postrouting 是进行 snat 和 masquerade 的

这个 是重点,每个 chian是 是做什么的至少要说啊
短消息通知评论者

[14楼]       [匿名]51CTO游客
2009-11-17 20:16:55
iptables -t filter -A INPUT -p tcp --dport 80 -i eth0 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 80 -i eth1 -j DROP
假设这样的两条命令给在iptables中写着,那么会产生不同的效果
即使 内网可以访问www 而外网不可以访问www
请不要忽略 iptables中的 -i 和-o的选项, 如果在2.4的 内核中 ipchains 中 您忽略这个问题,似乎还可以原谅,但是在iptables中这个 是非常重要的问题,iptables到底理解没有,就看对这两个参数的理解了,还有就是 每个 tables中的chains 是做什么的 ,这个是 netfilter、iptables的 核心内容吧
短消息通知评论者

[15楼]       [匿名]51CTO游客
2009-11-17 20:17:18
-i 是 input interface -o 是 output interface
在iptables 是有明显区别的 根据数据包和iptables链条选择不同的参数-i或-o
在早期的2.4的内核里面的 ipchains 是不区分的,
短消息通知评论者

[16楼]       [匿名]51CTO游客
2009-11-17 20:32:41
vim /etc/sysctl.conf
ip_forward=1
sysctp -p
iptables -X
iptables -Z
iptables -F
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j MASQUERADE
iptables -t filter -A FORWARD -s 192.168.3.0/24 -i eth0 -o eth1 -j ACCEPT
iptables -t filter -A FORWARD -i eth1 -o eth0 -m state --state established.related -j ACCEPT
iptables -t filter -P FORWARD DROP
iptables -t nat -P POSTROUTING DROP
iptables -t nat -P PREROUTINg DROP
短消息通知评论者

[17楼]       [匿名]51CTO游客
2009-11-17 20:41:54
i think that you really donnnt understand the netfilter/iptabes
such as ech chains functions and pots floating
and hope that you can understuand what's the really mean of the input output forward
短消息通知评论者

[18楼]       [匿名]51CTO游客
2009-11-17 20:46:45
您的 iptables 有问题的哦
我还没有见过 使用 就是用一个input 链就敢说自己有内外网段的哦
根据iptables的 数据包的流向 您所谓的 内网的数据包不可能通过input
不管是进站包 还是出站包都只会通过 filter表的 forward链条出去
还是建议您在深刻理解下 到底什么是 netfilter /iptables 和 每个链条到底是什么作用,这个非常重要,要不然您写的这些只能和网上有些人写的文章差不多,--没有真正的理解 netfilter 的核心思想
i think that you really donnnt understand the netfilter/iptabes
such as ech chains functions and pots floating
and hope that you can understuand what's the really mean of the input output forward

至今见过真正理解netfilter/iptables的 就是 台湾的 vbird 和 netman
建议您最好去瞧瞧.
否则应该不会出现您文章中的 只不过是编辑一个 input chians 就敢说自己 已经划分好了 内网 lan 和外网 wan
短消息通知评论者

[19楼]       [匿名]51CTO游客
2009-11-17 20:49:35
  * filter:主要跟 Linux 本机有关,这个是预设的 table 喔!
      o INPUT:主要与封包想要进入我们 Linux 本机有关;
      o OUTPUT:主要与我们 Linux 本机所要送出的封包有关;
      o FORWARD:这个咚咚与 Linux 本机比较没有关系,他可以封包『转递』到后端的计算机中,与 nat 这个 table 相关性很高。
  *   nat:主要跟 NAT 主机的设定有关
      o PREROUTING:在进行路由判断之前所要进行的规则
      o POSTROUTING:在进行路由判断之后所要进行的规则
      o OUTPUT:与发送出去的封包有关
短消息通知评论者

[20楼]       [匿名]51CTO游客
2009-11-17 20:57:24
iptables -t filter -A INPUT -p tcp -i eth1 --dport 80 -j ACCEPT
这条rulers您认为这样写怎么样呢

iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -m state --state established,related -j ACCEPT

你可能感兴趣的:(linux,职场,iptables,休闲,rhce)