科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道Linux下基于路由策略的IP地址控制实例

Linux下基于路由策略的IP地址控制实例

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

背景描述:LINUX是一台网关服务器,内有3块网卡。 eth1绑定172.17.0.0/16的IP,该网段IP可以通过172.17.1.1上网。 eth0绑定192.168.10.0/24的IP,该网段IP可以通过192.168.10.1上网。

作者:jsjzhang  来源:赛迪网技术社区 2008年7月2日

关键字: IP地址 IP地址控制 linux安全 Linux 系统安全

  • 评论
  • 分享微博
  • 分享邮件

  一、背景描述

  LINUX是一台网关服务器,内有3块网卡。

  eth1绑定172.17.0.0/16的IP,该网段IP可以通过172.17.1.1上网。

  eth0绑定192.168.10.0/24的IP,该网段IP可以通过192.168.10.1上网。

  eth2绑定192.168.1.1,是内网用户的网关。

  二、需求分析

  内网用户应该走172.17.1.1这个路由上网。

  但由于工作需要,部分用户应该有访问图中“专用网络”的权限。

  也就是说,应该走192.168.10.1这个路由。

  另外一点,所有人应该可以访问FTP服务器,这个服务器的IP是192.168.10.96

  也就是说,走172.17.1.1路由的人,也应该能访问192.168.10.96,且可以上网。

  三、解决方案

  要解决这个问题,用到了一下几个命令,具体使用方法需要另查资料。ip route

  ip rule

  注:关于ip命令的用法,请查阅ip中文手册,www.google.com上有。

  1、绑定IP

  ifconfig eth1 172.17.3.x netmask 255.255.0.0

  ifconfig eth0 192.168.10.2 netmask 255.255.255.0

  ifconfig eth2 192.168.1.1 netmask 255.255.255.0

  然后分别修改/etc/sysconfig/network-script/ifcfg-ethx文件,以使计算机启动自动设置IP地址。

  2、创建特殊路由表

  vi /etc/iproute2/rt_table

  代码:

  #

  # reserved values

  #

  255 local

  254 main

  253 default

  0 unspec

  200 NET10

  #

  # local

  #

  #1 inr.ruhep

  上面那个200 NET10为新添加,自定义编号为200,名字为NET10

  3、向NET10路由中添加它自己的默认路由。

  代码:

  ip route add default via 192.168.10.1 table NET10

  注意,这个table NET10一定不要忘了写,否则写到了主路由表中。

  4、创建特殊路由规则

  用ip rule可以看到计算机当前的路由规则。

  引用:

  0: from all lookup local

  32766: from all lookup main

  32767: from all lookup default

  可以看到,规则中走了3个路由表,local、main、default

  我们平常用route看到的,实际是路由表main

  这些规则是按序号大小顺序走的,一个不同,则走下一个,知道通路或走完为止。

  开始添加我们自己的路由NET10到路由表中。

  代码:

  ip rule add from 192.168.1.222 pref 10000 table NET10

  这个意思是说,如果来自IP地址为192.168.1.222的访问,则启用NET10的路由表中的路由规则。

  而NET10的路由规则是什么呢?上面已经设置了,走的是192.168.10.1的网段。

  接下来,使LINUX可以NAT(这里不再细说HOW TO了)

  5、让所有人可以访问192.168.10.xx(这个IP不便说出来)

  因为其余人都走了172.17.1.1这个路由,所以他们是无法访问192.168.10.xx的 。

  怎么才能实现呢?再添加个策略就可以了!

  代码:

  ip rule add to 192.168.10.xx pref 10001 table NET10

  这句话的意思是说,所有人,如果目的IP是192.168.10.xx,则临时使用NET10的路由表。

  这样做,安全会不会有安全问题呢?路由变了,他们会不会访问到专用网络呢?

  不会的,因为路由规则是to 192.168.10.xx,也就是目标是96时,才该路由的,访问别的网站还是走原来的路由。

  如果说访问到专用网络的机器,也就只有10.xx这一台而已。

  这里,我们还可以做一个小技巧,不告诉别人192.168.10.xx的地址,只告诉他们网关192.168.1.1上有这个服务

  iptables -t nat -A PREROUTING -d 192.168.1.1/32 --dport 21 -j DNAT --to 192.168.10.xx:21

  6、防止其他人篡改IP地址而获得特殊权限

  arp有个静态功能CM,不是C,大家可能知道。

  如果给一个IP地址强行绑定一个非他自己的MAC,会怎么样呢?双方会话将会失败!

  好,我们来利用这一点!

  首先,我写了一个文件iproute.c

  代码:

  #include

  #include

  main ()

  {

  int i;

  for(i=2;i<255;i++)

  printf("192.168.1.%d\t\t00:00:00:00:00:00\n",i);

  }

  gcc iproute.c -o iproute

  将编译出一个可执行文件

  注:不应该包括主机IP地址本身,所以从2循环到254(255是广播)

  其次,生成一个C的IP地址和全为00的MAC地址。

  代码:

  ./iproute >/etc/ethers

  再次,修改IP-MAC匹配列表。

  vi /etc/ethers

  具体怎么该我就不用细说了,相信大家都会。

  最后,做静态IP-MAC绑定。

  arp -f

  7、为了安全,建立防火墙,修改main路由表

  默认的路由表应该有192.168.10.0/24和172.17.0.0/16网段的内容,为了安全,可以去掉。

  另外,如果是AS3的话,还会有169.254.0.0/16的路由,具体为什么我不知道,去掉。

  然后写一个防火墙脚本,利用iptables,把你的机器变得更加坚固!

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章