收藏 分享(赏)

我们来配置一个filter表的防火墙.doc

上传人:scg750829 文档编号:6832670 上传时间:2019-04-23 格式:DOC 页数:13 大小:66KB
下载 相关 举报
我们来配置一个filter表的防火墙.doc_第1页
第1页 / 共13页
我们来配置一个filter表的防火墙.doc_第2页
第2页 / 共13页
我们来配置一个filter表的防火墙.doc_第3页
第3页 / 共13页
我们来配置一个filter表的防火墙.doc_第4页
第4页 / 共13页
我们来配置一个filter表的防火墙.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、我们来配置一个 filter 表的防火墙:1、查看本机关于 IPTABLES 的设置情况roottp # iptables -L -nChain INPUT (policy ACCEPT)target prot opt source destinationChain FORWARD (policy ACCEPT)target prot opt source destinationChain OUTPUT (policy ACCEPT)target prot opt source destinationChain RH-Firewall-1-INPUT (0 references)target

2、prot opt source destinationACCEPT all - 0.0.0.0/0 0.0.0.0/0ACCEPT icmp - 0.0.0.0/0 0.0.0.0/0 icmp type 255ACCEPT esp - 0.0.0.0/0 0.0.0.0/0ACCEPT ah - 0.0.0.0/0 0.0.0.0/0ACCEPT udp - 0.0.0.0/0 224.0.0.251 udp dpt:5353ACCEPT udp - 0.0.0.0/0 0.0.0.0/0 udp dpt:631ACCEPT all - 0.0.0.0/0 0.0.0.0/0 state R

3、ELATED,ESTABLISHEDACCEPT tcp - 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22ACCEPT tcp - 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80ACCEPT tcp - 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25REJECT all - 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited可以看出我在安装 linux 时,选择了有防火墙,并且开放了22,80,25 端口。如果你在安装 linux 时没有

4、选择启动防火墙,是这样的:roottp # iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 什么规则都没有。2、清除原有规则不管你在安装 linux 时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在 filter 的所有

5、规则。roottp # iptables -F 清除预设表 filter 中的所有规则链的规则roottp # iptables -X 清除预设表 filter 中使用者自定链中的规则我们再来看一下:roottp # iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt sou

6、rce destination 什么都没有了吧,和我们在安装 linux 时没有启动防火墙是一样的。(提前说一句,这些配置就像用命令配置 IP 一样,重起就会失去作用)怎么保存?roottp # /etc/rc.d/init.d/iptables save 这样就可以写到/etc/sysconfig/iptables 文件里了。写入后记得把防火墙重起一下,才能起作用。roottp # service iptables restart 现在 IPTABLES 配置表里什么配置都没有了,那我们开始我们的配置吧。3、设定预设规则 roottp # iptables -p INPUT DROP roo

7、ttp # iptables -p OUTPUT ACCEPT roottp # iptables -p FORWARD DROP 上面的意思是,当超出了 IPTABLES 里 filter 表里的两个链规则(INPUT,FORWARD)时,不在这两个规则里的数据包怎么处理呢,那就是DROP(放弃).应该说这样配置是很安全的,我们要控制流入数据包 而对于 OUTPUT 链,也就是流出的包我们不用做太多限制,而是采取 ACCEPT,也就是说,不在着个规则里的包怎么办呢,那就是通过. 可以看出 INPUT,FORWARD 两个链采用的是允许什么包通过,而OUTPUT 链采用的是不允许什么包通过。这

8、样设置还是挺合理的,当然你也可以三个链都 DROP,但这样做我认为是没有必要的,而且要写的规则就会增加.但如果你只想要有限的几个规则是,如只做 WEB 服务器,还是推荐三个链都是 DROP。注:如果你是远程 SSH 登陆的话,当你输入第一个命令回车的时候就应该掉了,因为你没有设置任何规则。怎么办,去本机操作呗! 4、添加规则。首先添加 INPUT 链, INPUT 链的默认规则是 DROP,所以我们就写需要 ACCETP(通过)的链。为了能采用远程 SSH 登陆,我们要开启 22 端口。roottp # iptables -A INPUT -p tcp -dport 22 -j ACCEPT

9、roottp # iptables -A OUTPUT -p tcp -sport 22 -j ACCEPT (注: 这个规则,如果你把 OUTPUT 设置成 DROP 的就要写上这一步,好多人都是望了写这一部规则导致,始终无法 SSH。在远程一下,是不是好了。其他的端口也一样,如果开启了 web 服务器,OUTPUT 设置成DROP 的话,同样也要添加一条链:roottp # iptables -A OUTPUT -p tcp -sport 80 -j ACCEPT ,其他同理。如果做了 WEB 服务器, 开启 80 端口。roottp # iptables -A INPUT -p tcp

10、-dport 80 -j ACCEPT 如果做了邮件服务器,开启 25,110 端口。roottp # iptables -A INPUT -p tcp -dport 110 -j ACCEPT roottp # iptables -A INPUT -p tcp -dport 25 -j ACCEPT 如果做了 FTP 服务器, 开启 21 端口 roottp # iptables -A INPUT -p tcp -dport 21 -j ACCEPT roottp # iptables -A INPUT -p tcp -dport 20 -j ACCEPT 如果做了 DNS 服务器, 开启

11、53 端口 roottp # iptables -A INPUT -p tcp -dport 53 -j ACCEPT 如果你还做了其他的服务器,需要开启哪个端口,照写就行了. 上面主要写的都是 INPUT 链,凡是不在上面的规则里的, 都 DROP 允许 icmp 包通过, 也就是允许 ping, roottp # iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT 设置成 DROP 的话) roottp # iptables -A INPUT -p icmp -j ACCEPT (INPUT 设置成 DROP 的话) 允许 loopback!(不然会导

12、致 DNS 无法正常关闭等问题) IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP) IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP) 下面写 OUTPUT 链,OUTPUT 链默认规则是 ACCEPT,所以我们就写需要 DROP(放弃)的链. 减少不安全的端口连接 roottp # iptables -A OUTPUT -p tcp -sport 31337 -j DROP roottp # iptables -A OUTPUT -p tcp -dport 3133

13、7 -j DROP 有些些特洛伊木马会扫描端口 31337 到 31340(即黑客语言中的 elite 端口) 上的服务。既然合法服务都不使用这些非标准端口来通信,阻塞这些端口能够有效地减少你的网络上可能被感染的机器和它们的远程主服务器进行独立通信的机会 还有其他端口也一样,像:31335 、27444 、27665、20034 NetBus、9704 、137-139(smb),2049(NFS)端口也应被禁止,我在这写的也不全,有兴趣的朋友应该去查一下相关资料。当然出入更安全的考虑你也可以把 OUTPUT 链设置成 DROP,那你添加的规则就多一些,就像上边添加允许 SSH 登陆一样。下面

14、写一下更加细致的规则,就是限制到某台机器 如:我们只允许 192.168.0.3 的机器进行 SSH 连接 roottp # iptables -A INPUT -s 192.168.0.3 -p tcp -dport 22 -j ACCEPT 如果要允许,或限制一段 IP 地址可用 192.168.0.0/24 表示192.168.0.1-255 端的所有 IP. 24 表示子网掩码数.但要记得把 /etc/sysconfig/iptables 里的这一行删了. -A INPUT -p tcp -m tcp -dport 22 -j ACCEPT 因为它表示所有地址都可以登陆. 或采用命令方

15、式: roottp # iptables -D INPUT -p tcp -dport 22 -j ACCEPT 然后保存,我再说一边, 反是采用命令的方式,只在当时生效, 如果想要重起后也起作用,那就要保存. 写入到/etc/sysconfig/iptables文件里. roottp # /etc/rc.d/init.d/iptables save 这样写 !192.168.0.3 表示除了 192.168.0.3 的 ip 地址 其他的规则连接也一样这么设置. 在下面就是 FORWARD 链,FORWARD 链的默认规则是 DROP,所以我们就写需要 ACCETP(通过)的链,对正在转发链

16、的监控 . 开启转发功能,(在做 NAT 时,FORWARD 默认规则是 DROP 时,必须做) roottp # iptables -A FORWARD -i eth0 -o eth1 -m state -state RELATED,ESTABLISHED -j ACCEPT roottp # iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT 丢弃坏的 TCP 包 roottp #iptables -A FORWARD -p TCP ! -syn -m state -state NEW -j DROP 处理 IP 碎片数量,防止攻击, 允许每秒 100

17、 个 roottp #iptables -A FORWARD -f -m limit -limit 100/s -limit-burst 100 -j ACCEPT 设置 ICMP 包过滤, 允许每秒 1 个包,限制触发条件是 10 个包. roottp #iptables -A FORWARD -p icmp -m limit -limit 1/s -limit-burst 10 -j ACCEPT 我在前面只所以允许 ICMP 包通过, 就是因为我在这里有限制。配置一个 NAT 表防火墙 1、查看本机关于 NAT 的设置情况 roottp rc.d# iptables -t nat -L

18、Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination SNAT all - 192.168.0.0/24 anywhere to:211.101.46.235 Chain OUTPUT (policy ACCEPT) target prot opt source destination 我的 NAT 已经配置好了的( 只是提供最简单的代理上网功能 ,还没有添加防火墙规则).关于

19、怎么配置 NAT,参考我的另一篇文章 当然你如果还没有配置 NAT 的话, 你也不用清除规则 ,因为 NAT 在默认情况下是什么都没有的 如果你想清除,命令是 roottp # iptables -F -t nat roottp # iptables -X -t nat roottp # iptables -Z -t nat 2、添加规则 添加基本的 NAT 地址转换,( 关于如何配置 NAT 可以看我的另一篇文章), 添加规则,我们只添加 DROP 链.因为默认链全是 ACCEPT. 防止外网用内网 IP 欺骗 roottp sysconfig# iptables -t nat -A PRE

20、ROUTING -i eth0 -s 10.0.0.0/8 -j DROP roottp sysconfig# iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP roottp sysconfig# iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP 如果我们想,比如阻止 MSN,QQ,BT 等的话 ,需要找到它们所用的端口或者 IP,(个人认为没有太大必要) 例: 禁止与 211.101.46.253 的所有连接 roottp # iptabl

21、es -t nat -A PREROUTING -d 211.101.46.253 -j DROP 禁用 FTP(21)端口 roottp # iptables -t nat -A PREROUTING -p tcp -dport 21 -j DROP 这样写范围太大了,我们可以更精确的定义. roottp # iptables -t nat -A PREROUTING -p tcp -dport 21 -d 211.101.46.253 -j DROP 这样只禁用 211.101.46.253 地址的 FTP 连接,其他连接还可以.如 web(80 端口) 连接 . 按照我写的,你只要找到

22、QQ,MSN 等其他软件的 IP 地址, 和端口,以及基于什么协议,只要照着写就行了. 最后: drop 非法连接 roottp # iptables -A INPUT -m state -state INVALID -j DROP roottp # iptables -A OUTPUT -m state -state INVALID -j DROP roottp # iptables-A FORWARD -m state -state INVALID -j DROP 允许所有已经建立的和相关的连接 roottp # iptables-A INPUT -m state -state ESTAB

23、LISHED,RELATED -j ACCEPT roottp # iptables-A OUTPUT -m state -state ESTABLISHED,RELATED -j ACCEPT roottp # /etc/rc.d/init.d/iptables save 这样就可以写到/etc/sysconfig/iptables 文件里了.写入后记得把防火墙重起一下,才能起作用 roottp # service iptables restart 别忘了保存,不行就写一部保存一次。你可以一边保存,一边做实验,看看是否达到你的要求, 上面的所有规则我都试过,没有问题。 写这篇文章,用了我将近个月的时间查找资料,自己做实验,希望对大家有所帮助如有不全及不完善的地方还请提出。 因为本篇文章以配置为主.关于 IPTABLES 的基础知识及指令命令说明等我会尽快传上,当然你可以去网上搜索一下,还是很多的。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报