假设两点:

1 不能让访问真正访问到真实服务器
2 记录访问发送的内容

我的笨方法:

1 在网关上控制数据的访问
2 建立一个网关,把所有转发数据都发送到本地webserver,记录日志
3 修改被监控的机器网关

Step 1,iptables脚本:

#!/bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -F
iptables -t nat -F
iptables -P FORWARD ACCEPT

iptables -A INPUT -t filter -s 192.168.1.1/24 -j ACCEPT
iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp -d ! 192.168.1.1/24 -j REDIRECT --to-ports 80


Step 2,建立nginx记录日志(配置简化):

log_format  main  '$remote_addr - $http_host [$time_local] "$request" '
        '$status $body_bytes_sent "$http_referer" '
        '"$http_user_agent" "||$http_cookie||" "||$request_body||"';

server {
listen       80;
server_name  localhost;
access_log  /Data/logs/host.access.log  main;
location / {
    root   html;
    index  index.html index.htm;
}
}


Step 3,修改被检测机器的网关为刚才的服务器

这个结果是,被检测的机器发送的所有外网请求都会记录在日志里,日志里包含了域名、post的数据、cookie信息等,比如:

引用
192.168.1.27 - www.aslibra.com [13/May/2010:19:50:09 +0800] "GET / HTTP/1.1" 404 169 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET
CLR 3.5.30729)"||-||" "||-||"
192.168.1.27 - 221.176.31.1 [13/May/2010:19:50:09 +0800] "POST /ht/sd.aspx?t=i&i=1 HTTP/1.1" 404 169 "-" "IIC2.0/PC 3.6.2020" "||ssi
c=||" "||-||"
192.168.1.27 - www.google.com.hk [13/May/2010:19:50:10 +0800] "GET / HTTP/1.1" 200 151 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windo
ws NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)" "||-||" "||-||"
192.168.1.27 - qurl.f.360.cn [13/May/2010:19:50:10 +0800] "POST /check_outchain.php HTTP/1.1" 404 169 "-" "Post_Multipart" "||-||" "
||-||"
192.168.1.27 - www.sqm.microsoft.com [13/May/2010:19:51:18 +0800] "POST /sqm/messenger/sqmserver.dll HTTP/1.1" 404 169 "-" "MSDW" "|
|-||" "||-||"
192.168.1.27 - dict.youdao.com [13/May/2010:19:51:23 +0800] "GET /fsearch?client=deskdict&keyfrom=deskdict.network_test&q=Yodao%20di
ct%20Retest&pos=7&doctype=xml&xmlVersion=3.2&dogVersion=1.0&id=3d933c2ef00b99c1&vendor=360z&in=___________________3.1.17.6336&appVer
=3.1.17.6336&le=eng&wstate=yes&proc=iexplore.exe HTTP/1.1" 404 169 "-" "Yodao Desktop Dict (Windows 5.1.2600)" "||OUTFOX_SEARCH_USER
_ID=-2146282@1.2.3.4; DESKDICT_VENDOR=360z; JSESSIONID=bfds6TxoFfFvb_uv1srIs||" "||-||"


比如可以知道机器做了啥:

1 访问阿权的书房的
2 不明白什么访问的
3 访问谷歌的
4 360提交了什么东西
5 微软提交了什么东西
6 有道词典的数据,有cookie信息

知道访问的域名了,就可以在真正的网关禁止访问某个ip($x)即可。

iptables -t nat -A PREROUTING -p tcp -m tcp -d $x -j REJECT
或者
iptables -t nat -A PREROUTING -p tcp -m tcp -d $x -j REDIRECT --to-ports 80


完成~~
PS: 我们的大大的防火墙是否也类似这样呢。。

参考阅读:

1 透明代理配置
2 使用nginx截取https数据
3 NginxHttpLogModule
4 iptables 端口转发


原创内容如转载请注明:来自 阿权的书房
收藏本文到网摘
Tags: ,
a
2010/05/17 12:56
所有的包都转发到本地,不会影响上网呢
hqlulu 回复于 2010/05/17 13:13
为了检测这个,你可以用一个虚拟机做呀。。
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemotemotemotemotemotemotemotemotemot
emotemotemotemotemotemotemotemotemotemotemotemot
打开HTML 打开UBB 打开表情 隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写
 

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐