2012年11月28日星期三

被黑之后笨办法检查远程登录记录


  • 首先开启对登陆事件的记录(服务器版的Windows默认是开的):
    "Admin Tools" - "Local Security Settings" - then in MMC Uunder "Local Policies", "Audit Policy" then on the right "Audit account logon events"
  • 然后去"事件查看器" - "Windows 日志" - "安全"里面筛选任务类别为“登录"的,导出为txt
  • 将此txt上传到linux……用csplit切开:
    csplit -k log.txt 49 {1000000}
    这里不明白为什么明明是每48行一段的,参数需要写49才正确
  • 然后找出登录的:
    find  ./  -name "xx*" | xargs -n50 grep 'winlogon.exe' > file
    "xx"是csplit切分的默认前缀
  • 稍微处理一下列表,得到包含文件名为其中一整行的新文件:
    tr -s ":" "\n" <file >file.txt
  •  写个脚本用于把这些日志挪别处去:
    cat file.txt | while read line
    do
    mv $line {path}
    done
  • 然后继续从这些日志中删掉自己登陆的,先找出来:
    find  ./  -name "xx*" | xargs -n50 grep '{常用ip}' > file
    由于之前没有过滤登录类型,所以记得首先排除127.0.0.1
  • 再把上述脚本改改,把自己登陆的log删掉
  • 然后看看剩下的,黑我的人是从哪里登录用了什么用户名之类……
其他额外获得的知识:
  • Windows用户登录的类型代码
  • grep与正则,如需要grep <tab>:
    grep $'tab'

2012年10月30日星期二

WZR-HP-G450H使用官方DD-WRT固件配合autoddvpn实操

首先从Buffalo官网下载pro版本的固件(即DD-WRT)升级

然后按照官方教程所讲的进行配置,注意事项有:

  1. 文中提到的dnsmasq配置的样例文件,在我这里需要把等号前后各加上空格才能生效
  2. 官方的vpnup.sh只包含了由gfwlist包含的域名nslookup而来的ip,且很多非www的二级域名对应的ip将不会支持,加之gfwlist更新缓慢,所以需要自行将遇到的访问受限的站点如为min.us等多个网站提供CDN服务的cloudfront.net等查到ip段:
    nslookup domain.name 8.8.8.8
    加到dnsmasq option:
    server = /domain.name/8.8.8.8
    和vpnup_custom:
    route add -net aaa.bbb.ccc.0/24 gw $VPNGW
  3. 因为采用的是gracemode并手动执行openvpn,所以参考这篇教程。有点过时了,比如comp-lzo一定后面要加参数了,还有script-security 3 system也是一定要有的……具体可以自己看log
    值得注意的是因为default GW不是VPN的,服务器端openvpn的server.conf也要记得去掉
    push "gateway def1"
    而保留
    push "bypass-dhcp"
  4. 因为是用dnsmasq的,所以在内网机器ping任何站点都没问题(会按照设置用指定的dns server去查询并返回结果);不要去路由器上直接ping受限站点,因为默认是用ISP的dns server的…这样会造成人为的污染并缓存下来,然后内网各机器就都上不去了…

2011年7月5日星期二

在高校等复杂网络环境通过Privoxy实现自动全能代理

本文的写作目的:辛苦管理员一个人配置好代理服务器,方便大多数使用者只需记住一个代理地址。

高校(除去少数cernet节点)网络的特点:
  1. 和所有人面对的不便一样,你懂的。
  2. 受限于cernet和所在地区ISP的政策,除上述之外访问国外正常网站时有不便
  3. 多半用各种方式实现了cernet2亦即ipv6接入
类似的还有公司(除去少数提供高速出国VPN的外企)内网

那么很可能一个高校用户面对的现实是:
  1. 大部分国内网站(所谓cernet免费列表)可以访问
  2. 无论是否学术所需,各种国外网站能否打开要凭运气
  3. 配合ipv6的hosts或dns,可以访问google(包括youtube)、facebook等对ipv6支持较为完善的网站
这时候他有可能求助于管理员,于是管理员会发现无论开ssh tunnel,改ipv6 hosts都无法单独实现无障碍+不浪费访问所有网站的需求(比如用autoproxy会导致本可以用ipv6访问的google系列服务走慢速的ssh等),再加上gfwlist和ipv6 hosts的频繁变更,乘以需要处理的电脑数量,管理员觉得自己死定了。

死之前,他知道自己需要的理想的解决方案应该满足代理调度和维护的自动化,做到:
  1. 一处配置,多处使用
  2. 手动预设,自动更新
这时候google告诉他,只要用Privoxy配合一点点计划任务就可以搞定,不用着急走。这事就这样成了。

Privoxy曾经一度很流行,但多半是因为被作为Tor套装推荐的缘故。后来随着IE使用者的减少、Chrome+Proxy Switchy!的流行,加之本身配置的不够直观慢慢淡出了。但这其实是个很强大的软件。以下基于Windows版进行说明,Linux版没什么区别。

首先请看这两篇文章:

第一篇指出了多代理调度的原理,给出了简洁有序的配置文件;第二篇作者维护的autoproxy2privoxy项目解决了应该把哪些网站丢给ssh去处理的问题。

还需要处理:
  1. (可选)搞到一个相对稳定高速的普通用途代理(From学校网络中心或者公司网管)
  2. 将有人定期维护的ipv6 hosts文件中的网站写入privoxy的action文件,调用ipv6访问
  3. 实现autoproxy2privoxy和ipv6 hosts的定时自动更新
最终具体需要做的事情如下:
  1. 在要作为你对外服务的代理的机器上安装Privoxy,做好基本的设置,比如监听地址改为
    :8118
    按照你自己的需要决定是否储存log,debug信息级别等
  2. 将ipv6 hosts内容加入你自己的hosts文件
  3. 打开你的ssh tunnel
  4. 修改Privoxy安装目录下的user.action文件(软件主界面菜单options→Edit User Actions),首先清空,按照第一篇文章的范例,先定义各个代理的alias和默认走高速代理或直连:
    {{alias}}
    default = +forward-override{forward high_speed_proxy_ip:port}
    direct = +forward-override{forward .}
    ssh = +forward-override{forward-socks5 ssh_tunnel_ip:port .}
    ipv6 = +forward-override{forward .}
    #==========默认代理==========
    {default}
    #你没有或不需要上层代理则注释掉上一行,用下一行
    #{direct}
    /
  5. 输入
    #==========SSH==========
    {ssh}
    复制gfw.action的内容,去掉第一行,粘贴到此文件
  6. 输入
    #==========ipv6==========
    {ipv6}
    用支持正则表达式的文本编辑器打开ipv6 hosts内容,替换下列内容为空:
    ^2\S+\s
    (删去行首2开头的ipv6地址,得到支持ipv6访问的域名列表)
    粘贴处理过后的内容到此文件
  7. 保存。
  8. 然后能够访问到你机器的人将代理设为Privoxy中设定的your_ip:port就可以无障碍上网了
一些说明和疑问,希望读者能帮忙解答:
  1. 因为autoproxy2privoxy是基于gfwlist的,可能更新不会非常及时,遇到部分网站确实无法直接访问可以在{ssh}手动添加,比如最近的flipboard,加这一行即可:
    .flipboard.com
  2. 还有个遗留的问题就是action文件过滤是基于域名的,对于部分需要用内网ip直接访问的网站不知应该如何将规则写入直连的段落,在此求教
  3. 之所以将规则都写入user.action这同一个文件是因为要确保能走ipv6的就不要走ssh提高速度,而一个文件内能确认是后面覆盖前面的,省去手动调整这两份维护得很好的列表;分别写入多个文件可能逻辑上更清晰但我不知道Privoxy对于.action的执行顺序
  4. 实际上ipv6 hosts因为受原本设计用途所限(不支持泛解析)而显得很冗长,不知道是否可以自动归并同域名(如诸多blogspot站点、appspot应用等)并添加泛解析改写为action?
  5. 自动更新的话,可以用wget、curl下载在线规则再配合随便grep、sed之类处理之后重写hosts和user.action,想必powershell肯定也行,再加上任务计划或者crontab定时更新即可
  6. 上面一条虽说是这样,但是作为脚本苦手希望有读者能贡献具体的写法……
最后感谢@ccpkg,ipv6-hosts对于两份列表的维护,感谢Lainme的启发。