选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……
这其实是一个很严肃的话题。
我在酒店或者提供免费wireless访问的地方一般都会拨VPN回家/公司,然后通过那里的路由访问Internet。这个习惯不能完全消除运营商进行的攻击,但能减少能够实施这种攻击的人的范围。
许多地方会提供免费或收费的 Internet 服务给访客,以方便{会议,旅行,占小便宜,蛋疼}等各种心态的人群的需要。但是,这些地方的网络有时会有一些问题,例如,为了方便,往往它们并不会设置任何访问控制手段,或使用公共的密码。
攻击者可以携带一个提供Internet访问的无线接入点,将其配置成与那个公共的无线接入点采用同样的认证方式。例如,这个人可能在隔壁的房间,很明显,在使用那些认证信息时,你的计算机有很大的可能会连接到攻击者提供的接入点。在你的系统看来,攻击者此时具备与运营商相同的地位:他可以劫持DNS【实际上,第一次访问Internet时弹出的那个登录页面通常就是通过DNS劫持来实现的】,替换你访问的网站(比如银行,邮箱,等等),或进行更复杂一些的攻击,例如通过劫持某个子站来进行XSS,等等。
拨VPN回家可以避免受到这类攻击的侵害:你和VPN服务器要互相做身份验证,并且对通讯内容进行加密。
当然,这样做并不能阻止你的VPN服务器的Internet提供者进行的攻击,但是,相对来说,这类攻击要更容易追查(因为你知道应该去找谁)。
Read more...我完全无法理解为什么会有人愿意被一个应用程序绑住。无非两种情况:一种是这个应用程序是花钱买来的,一种是这个应用程序没花钱。花钱买来的程序,没啥可废话的,直接要求对方提供就好了。如果不是花钱买的,可选的东西那么多,为什么非得选那么一个破玩意呢?
吐槽完,推荐一个网站: http://www.showmycode.com/。你懂的。
Read more...有时,会有需要接入远程的 IPv6 网络。例如,办公或网吧等环境可能不提供 IPv6 接入的条件,或者需要接入更高安全级别的网络等等。
使用 OpenVPN 提供 IPv6 服务需要的条件包括:
一些关键的配置
在 tap0 上配置一个固定的 IPv6 地址。例如,你的 IPv6前缀::1/64。
在 /etc/rtadvd.conf 中配置:
tap0:\
:addr="你的IPv6前缀::":prefixlen#64:
此处64为用于VPN的前缀长度。
OpenVPN配置为使用tap设备。
OpenVPN需要有一个 up 脚本,类似这样:
#!/bin/sh
/sbin/ifconfig tap0 内网IPv4地址/掩码
/sbin/ifconfig tap0 inet6 IPv6地址 prefixlen 64
这个配置主要是为了避免在重启OpenVPN时丢掉网卡的IPv6配置。
客户端的连接后脚本大致如此:
#!/bin/sh
/sbin/ifconfig tap0 inet6 accept_rtadv auto_linklocal
/usr/sbin/rtsold tap0
安全考虑
Read more...今天跟 刘老师 讨论交换机问题的时候想到的。记一下这条命令。
tcpdump -nn -v -i em0 -X -s 1500 -c 1 'ether[20:2] == 0x2000'
原則上,在 Internet 提供服務的機器,應提供對應的 whois 記錄,以便在出現問題時能夠與事主及時聯絡。北美地區的數字資源,例如 IP 地址、AS號等等,是由 ARIN 負責分配的。
對於比較小的地址塊, ARIN 通常並不直接分配(目前 ARIN 分配 IPv4 地址的最小單元是 /23)。往往這些小地址塊是從上游 ISP 獲得的,根據規定,上游 ISP 有責任為客戶註冊相應的信息備查。
在開始獲得 IP 地址之前,需要先到 ARIN 註冊 Web 賬戶和 POC Handle。POC Handle 隨後提交給 ISP 去做 SWIP 註冊。對應的表格是"ARIN-REASSIGN-DETAILED",填妥之後交給 ISP,由 ISP 去 ARIN 註冊。成功之後,在 ARIN 的 Web 賬戶裡就可以看到自己的 Org ID(未來在其他ISP也可以重複使用) 並進行管理了。
附帶說一句,ARIN在採用REST的Whois以後,whois信息的更新基本上是即時生效的了。在幾個月前,類似的操作需要多至一天才會反映到 whois 系統中。
以上。
Read more...今天去 中国驻旧金山总领事馆 换了护照,这里记下过程,希望对别人有用。
需要准备的材料:
具体过程如下:
工作日早上9点开车到达旧金山 Japan Town 的 停车场,然后从 Geary Blvd 上来(中国驻旧金山总领事馆的地址是在 1450 Laguna Street,但护照及签证处则是在 Geary Blvd 上,直接走过去即可)。停车的收费标准是 $2/hr。
进入签证大厅时需要通过安检。和美国驻华大使馆类似,这里原则上也不允许携带照相器材(不过这次专程从 Redmond, WA 飞过来换护照的老康同学还是带了手机),而且也没有地方可以存包,所以我把手机等物品都留在了车上。
进入签证大厅之后首先在右手边取号(护照换新和签证是两个不同的按钮)。由于之前没能准备小二寸照片,因此首先在左手边的拍照柜台拍照片,大约3分钟之后即可取得。由于现场拍照的人比较多,因此照片不会由照相柜台进行裁剪,而是由在护照窗口的工作人员将照片剪下。
换护照会把申请表、照片、原护照、复印件、现金支票、预付费的信封和排队的号收走。正常情况下,在办完之后申请人手里应该有下面这些东西:
由于来办理签证和护照的人都不少(美国西海岸多个州以及北加州都归旧金山总领事馆负责),因此要早去排队。从进门到办完全部手续所需的时间大约是60-90分钟。
Read more...VirtualBox可以在远程运行,并把界面通过 ssh 的 X11 转发放到管理员的桌面。
在 FreeBSD 上可以用 port 来安装 VirtualBox:
# portsnap fetch update
# cd /usr/ports/emulators/virtualbox-ose
# make install clean
接着配置 VirtualBox 所需要的内核模块:
echo 'vboxdrv_load="YES"' >> /boot/loader.conf
echo 'vboxnet_enable="YES"' >> /etc/rc.conf.local
将需要使用VirtualBox的用户添加到vboxusers组:
# pw groupmod vboxusers -m delphij
安装 xauth:
# cd /usr/ports/x11/xauth
# make install clean
重启系统,或手工加载模块之后,就可以从远程 ssh 进来运行 VirtualBox 了:
desktop% ssh -Y vsvc.example.com # 【注1】
vsvc% VirtualBox
VirtualBox的管理界面会出现在客户端系统上(当然,在列出文件时仍然是服务器端的文件)。
在安装、调试之后,就可以用VBoxHeadless来启动远程的虚拟机了。
【注1】这里使用的是"Trusted Forwarding",如果远程主机不可信,这样做会提高安全风险。
Read more...之前 @quakelee 提的一个问题(通道上登录第二台机器作为跳板登录第三台机器,但不把ssh私钥传到中间那台机器上)。如果shell是csh,在 ~/.cshrc 中加入:
source ~/auth.csh
[ -e ${SSH_AUTH_SOCK} ] || ssh-agent -t 15m -c > ~/auth.csh && source ~/auth.csh
然后所有的 csh 就可以使用同一个ssh agent了。
注意事项:
之前家里用的那个 Linksys WRT310N 路由器就有相当严重的问题(不排除是DD-WRT的问题),如果连续若干天不重启的话,无线网络的连接有时就会失败。部署新的路由器之后,设置了一个cron任务令其每天早上5:30重启:
30 5 * * * /usr/bin/ssh root@10.253.87.254 reboot > /dev/null 2>&1
当然,执行cron的那个用户需要使用ssh key来登录WRT310N,并事先将key传到WRT310N上面。
由于 FreeBSD 默认会对链路状态的变化进行记录,因此只要查看系统日志就可以知道cron是否真的执行了。
在之前的部分我们讨论过关于功耗的问题。在实际使用过程中,我发现 powerd(8) 对于 CPU 占用的计算是有问题的:它计算的是所有CPU的占用率之和,而比较合理的依据则是占用率最高的CPU的占用率。不过,对 Atom 来说 powerd 能够产生的影响有限,因此如果真在使用Atom系统的话不一定真的需要这个patch。下面这个patch可以让 powerd 更有效地 throttle CPU 的频率:
Index: usr.sbin/powerd/powerd.c
===================================================================
--- usr.sbin/powerd/powerd.c (revision 213306)
+++ usr.sbin/powerd/powerd.c (working copy)
@@ -127,6 +127,7 @@
{
static long *cp_times = NULL, *cp_times_old = NULL;
static int ncpus = 0;
+ int newload;
size_t cp_times_len;
int error, cpu, i, total;
@@ -151,7 +152,7 @@
return (error);
if (load) {
- *load = 0;
+ *load = newload = 0;
for (cpu = 0; cpu < ncpus; cpu++) {
total = 0;
for (i = 0; i < CPUSTATES; i++) {
@@ -160,8 +161,10 @@
}
if (total == 0)
continue;
- *load += 100 - (cp_times[cpu * CPUSTATES + CP_IDLE] -
+ newload = 100 - (cp_times[cpu * CPUSTATES + CP_IDLE] -
cp_times_old[cpu * CPUSTATES + CP_IDLE]) * 100 / total;
+ if (*load < newload)
+ *load = newload;
}
}
对路由器这样的设备来说,当有软件 bug 的时候,我们往往希望系统自己恢复并报告问题,而不是等待用户去用调试器现场调试。想要达到这个目的,可以使用 watchdog 机制。在这款主板上有两个 watchdog,其中系统没有自带的那个 Winbond watchdog 的驱动如下:
Read more...