找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 9069|回复: 4

[linux] [转]Linux下的NAT及防火墙的混合应用

[复制链接]
发表于 2004-8-10 22:58:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
单块网卡配置 IP, Netmask, Gateway /etc/sysconfig/network-scripts/ifcfg-eth0 多块网卡配置 IP, Network(网络号), Broadcast(广播号) /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1 ... Gateway网关配置 /etc/sysconfig/network 主机名配置 /etc/hosts DNS配置 /etc/resolv.conf 配置好后通过"route"查看路由表,看默认网关是否正常 示例网络: 192.168.0.2 Internet  /proc/sys/net/ipv4/ip_forward 此时内网用户就可以通过设置网关为202.204.208.5上网了 DNAT例: iptable -t nat -A PREROUTING -i eth1 -d 202.204.208.5 -p tcp -dport 80 -j DNAT -to-destination 192.168.0.2:80 解释: -p [!] proto protocol: by number or name, eg. `tcp' -s [!] addr[/mask] source specification -d [!] addr[/mask] destination specification -dport -to-destination ipaddr[-ipaddr][:port-port] 通过eth1接口的TCP协议请求到202.204.208.5:80在经过防火墙之前改变目标地址为192.168.0.2:80 但这会造成同一局域网内的机器无法访问202.204.208.5:80端口,原因? 解决方法: iptable -t nat -A POSTROUTING -p tcp -s 192.168.0.0/24 -d 192.168.0.2/32 -j SNAT -to-source 192.168.0.1 当从192.168.0.*来的IP访问192.168.0.2时,在数据包离开防火墙时修改源地址为192.168.0.1 这相当于在局域网内部,又作了一次NAT转换。局域网内部通过192.168.0.1作为转发,而不是直接进行通信,这就避免了无法访问局域网内部ip的情况?? 目前,nat的功能就已经实现,但是并没有对包进行过滤。 RFC-2979 规定的互联网防火墙规则配置的基本准则之一:一切未被允许的就是禁止的。 防御网络攻击: 1. 仅开启http端口 iptables -P INPUT -j DROP #拦截主机上所有的通讯 iptables -A INPUT -p tcp -dport 80 -j ACCEPT #打开tcp协议80端口 解释: -P chain target Change policy on chain to target -A chain Append to chain 2. 防止Ping of death 解释: 由于在早期的阶段,路由器对包的最大尺寸都有限制,许多操作系统对TCP/IP栈的实现在ICMP包上都是规定64KB,并且在对包的标题头进行读取之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区。当产生畸形的,声称自己的尺寸超过ICMP上限的包也就是加载的尺寸超过64K上限时,就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使接受方当机。 解决: iptables -A INPUT -p icmp -icmp-type echo-request -i eth1 -j DROP 3. 防止SYN Flood(拒绝服务攻击) 解释: SYN Flood 是目前最流行的拒绝服务攻击与分布式拒绝服务攻击的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽的攻击方式。 前面已经提过TCP的三次握手,问题就出在TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器一般会重试(再次发送SKY+ACK给客户端)并等待一段是句丢弃这个未完成的连接,这段时间的长度我们称为(SYN Timeout),一般来说这个时间是分钟为单位(半分钟-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源----数以万计的半连接,即使是简单的保存并遍历也会消耗很多的CPU资源与时间,何况还要不断对这个列表中的IP进行SYN+ACK的重试。实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃---即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬合法请求(客户端的正常请求相较于非法请求来说非常小),此时从正常连接的角度来说,服务器失去了响应,这种情况我们称为服务器收到了洪水攻击。 从防御角度来说,可以缩短SYN-Timeout时间,由于SYN FLOOD攻击效果取决于服务器上保持的SYN半连接数,这个值等于SYN攻击的频度* SYN Timeout,所以通过缩短从接受到SYN报文到确定这个报文无效并丢弃连接的时间,可以降低服务器的负荷。 解决: iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT 在所有的IPTABLES规则制定完成后,可以用"iptables-save > iptables-script"把写入的规则写入到文件,然后在/etc/rc.d/rc.local中加入: iptables-restore iptables-script,这样每次启动系统都将自动载入iptables设定好的规则。转自 古桐先生 http://www.netboys.net/
routeros
发表于 2004-8-11 11:43:34 | 显示全部楼层
的确是篇好文章,我昨天已经学习过了  没想到你转这里来了,最好写上原作者的名字,省的麻烦
routeros
回复

使用道具 举报

 楼主| 发表于 2004-8-11 11:45:59 | 显示全部楼层
OK,谢谢提醒
routeros
回复

使用道具 举报

发表于 2004-8-11 12:50:58 | 显示全部楼层
很好
routeros
回复

使用道具 举报

发表于 2005-2-26 14:10:22 | 显示全部楼层
这个很实用,是不是简单的配置用这些就够了!
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-11-24 06:28 , Processed in 0.083030 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表