禁止上网 和 封堵端口

GX_NET 2003-05-19 01:54:55
请问那位知道会给些提示,如何才能在网关计算机上进行禁止局域网某计算机上网,和封堵端口,注意,我说道事编程方法,最好有代码,谢谢
...全文
471 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hany1979 2003-09-10
  • 打赏
  • 举报
回复
首先确认你的共享代理软件(别告诉我不用代理,局域网的机器都可以上网),如果是自己编程,那就很好解决了。
如果使用的现成的wingate,internet共享等方法,需要编程截获局域网来的数据包。可以参考<<windows防火墙和网络封包截获技术>>。截获数据包后分析包头,如果访问的是外部地址,则判断是否转发到下一层,否则转发。
windbells 2003-09-10
  • 打赏
  • 举报
回复
我也来说一下,根据大家所说的,总结起来也就分为一下三种。
1、arp欺骗:这个主要是通过发送arp的应答包,在SourceMac里添入错误的Mac地址,这样返回给对应Ip的数据包就会发到错误的Mac地址上,达到阻断的目的,需要注意的是,由于arp表是放在缓存里的,会定期刷新,发送的包没有收到应答的话,系统会重复广播arp请求包。所以采用这种方法的最好做法就是,一旦收到目标地址发送的数据包,先检测目的mac是否为自己添入的欺骗mac地址,如果是,不做处理,反之,发送arp欺骗包。这种办法的特点是对tcp和udp包都有效,缺点是一旦目标机器把需要访问ip的mac地址加入静态arp表里或者做了arp保护这种方法就没用了。

2、发送icmp端口不可达包:通过发送icmp类型为3的包,可以使目标机器上对应接收socket上产生一个端口不可达的错误信息。如果用户自己实现的协议里对这种错误的处理是中断当前的连接,那么这种欺骗就是有效的。但是很多软件对这种信息都不处理,象qq一类的,即使收到了,也会继续向外发送。这种方法需要注意的是,icmp端口不可达包需要封装上原有的出错的IP包,而且要保证你发送的icmp包在应答包之前到达目标机器。

3、发送带有Rst标志的Tcp包:通过构造带有Rst标志的TCP应答包来中断目标机器的连接,这种办法只对TCP连接有效,需要注意的是请求序号和应答序号的预测,这两个序号的取值和当前包的大小和各种状态位有关,不能取错,如果错了的话就一点也没有效果。这种方法也要求
你发送的Rst包要在应答包返回之前到达,否则也会失效,如果程序是运行在网关处,那效果好一些,否则就会出现有时可以中断,时而不行的现象。

4、网关过滤型:由于所有的数据包都会经过网关,所以网关可以根据目标机器的mac或ip是否在被控制的规则内,如果是对所有该地址的数据包过滤或不进行转发,这种方法比以上三种方法都要好。

以上四种方法是实现禁止上网和封堵端口的一般方法,不过效果不同。不过在某些情况下,那可能就一点效果也没有了,比如他可以对自己机器上发出的数据报进行重新封装,伪装成信任机器上发出的数据包,等返回后在解析,扔给对应的协议层,比如象现在有些宽带就允许一个用户连入,那我就写了一个协议转换的小程序,把我机器上发发出的ip包转换成pppoe的session包,返回后在转换一次,这样就可以实现在任意一台机器上动态切入拨号用户的连接里。所以如果想更好的控制的话,可以采取客户端认证,连接注册,端口注册等各种方法。
GX_NET 2003-09-09
  • 打赏
  • 举报
回复
:)
GX_NET 2003-09-09
  • 打赏
  • 举报
回复
san fen le!
syl5005 2003-08-03
  • 打赏
  • 举报
回复
up
farfh 2003-08-03
  • 打赏
  • 举报
回复
mark
canoe_eyes 2003-08-03
  • 打赏
  • 举报
回复
同意cwanter(海阔天空)
GX_NET 2003-06-07
  • 打赏
  • 举报
回复
***********************************************

上面几位仁兄说得很好,已经可一个分了
不过,我想多听听高见,所以,现在先不发分,不过我决定在加100分,等这个给分的时候,我会同志大家到那个帖子拿分

希望大加继续,有远吗的就贴贴

cwanter 2003-05-30
  • 打赏
  • 举报
回复
如果对网关有操纵能力的话,可以用一个比较笨的方法:在网关的ARP表中把要禁止的机器的IP与一个错误的ARP绑定,这样网关转向那台机器的帧就会被丢弃~
njtlxm 2003-05-30
  • 打赏
  • 举报
回复
to GX_NET(什么都不懂) :

如果局域网内部计算机上网是通过一个网关出去的,那么就可以在网关对内的网卡上安装NDIS的中间层驱动来解决这个问题。

发送RST包只是在有限的情况下有效,对UDP包无效。我本来想发送ICMP重定向欺骗包来做,但是发现实现起来的条件还是很苛刻,所以放弃了。

刷新arp缓存的网关mac地址很简单。因为windows系统的arp实现有点小bug,缺省的情况下接收所有arp响应包。一般来说,A发送一个广播的arp包,查询B计算机的mac地址,然后B回答了一个给A,A就修改了本机ARP缓存中B的MAC地址。但是如果A根本就没有发出ARP广播查询包,而此时B计算机向A发送了一个ARP回应包,A计算机也会接收这个数据包并修改自己的ARP缓存。

如果在上面所说的情况中作一个修改:如果是C计算机向A计算机发送ARP包,而把这个ARP包的源IP地址改成B,结果会如何?结果是很简单而有趣的。

关于这方面的东东网上有高人解释得很清楚,我只不过是拾人牙慧而已。
tomew 2003-05-30
  • 打赏
  • 举报
回复
thinking...
GX_NET 2003-05-29
  • 打赏
  • 举报
回复
kingzai(kingzai) ,njtlxm(njtlxm) 等
大家讲的都不错,但是我觉得不应该很麻烦的问题。
例如网络岗它可以接在交换机的嗅探端口,这样他只能检查到每个数据报,但是不可能过滤掉的呀,所以说不可能是顾虑数据报的方式来禁止上网和通讯的。
我也怀疑他用的是rst包来中断tcp/ip但是他如何阻止udp呢
另外就是对端口的封堵,比如说对qq的封堵,那位有更好的见解呢???

TO:njtlxm(njtlxm)
能否解释以下“刷新目标计算机ARP缓存里的网关MAC地址。”的原理和方法??
crazygg 2003-05-29
  • 打赏
  • 举报
回复
waiting!!!!!!!!!!!!!!!
lbird 2003-05-23
  • 打赏
  • 举报
回复
up
harry202 2003-05-23
  • 打赏
  • 举报
回复
拔他网线-_-;
njtlxm 2003-05-23
  • 打赏
  • 举报
回复
本人在这方面做了比较长的时间,下面说说一点体会:

假设所有机子是在局域网内,通过一个网关连接到公网。

如果是禁止上网(internet),有下面几种办法:

1、刷新目标计算机ARP缓存里的网关MAC地址。
2、在网关上安装上网过滤,目标计算机发来的数据包一律过滤。

如果是禁止目标计算机访问某一个网站,有效的办法只能是过滤。

如果是禁止目标计算机访问局域网,那么....呵呵,不说这个,我们公司有产品。

另外,对楼上几位的建议有点想法:

发送RST欺骗其实效果不好,这个办法对tcp协议有一点效果,但是要看目标计算机是使用什么软件上网。我测试过,这个办法对IE、网络蚂蚁还可以,但是对“证券之星”这样的软件就没有什么好效果。另外,对于UDP包就无效。

发送ICMP欺骗包均无效,反正我的测试结果是这样。如果哪位测试成功了,可以交流一下。

发送ARP欺骗刷新缓存的办法其实不好,因为首先你得不停地刷新,而且一旦成功,将所有的网络连接都断了,包括一些合法的网络操作。


yztgx 2003-05-23
  • 打赏
  • 举报
回复
gz
kingzai 2003-05-23
  • 打赏
  • 举报
回复
njtlxm:
你说的很有道理,有空我们交流一下?
cwanter 2003-05-20
  • 打赏
  • 举报
回复
包过滤~
kingzai 2003-05-20
  • 打赏
  • 举报
回复
我看它的说明里是写接HUB口是为了解决交换机上不能嗅探的问题。如果是交换环境,则必须在网关,否则,可以,在LAN任何一台机。
加载更多回复(8)

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧