2014年4月8日星期二

DD-WRT刷机完整教程

DD-WRT(简称DD)是一个Linux开源操作系统,实质它是第三方的路由器固件。路由和网管功能非常强大,通常我们使用的路由器设备,都具有一个独立的操作系统(英文简称OS),用于对路由器设备进行各种功能设置和管理。其实我们通常所说的升级路由器固件,也就是指升级刷新路由设备里面的操作系统,以使得路由器设备的功能更加强大。常见的第三方路由器固件还有番茄(Tomato)等。

DD-WRT固件刷机流程如下。

一、为什么要刷DD-WRT?

DD-WRT固件可以实现中继、AP、VPN、VOIP、UPNP、DHCP、端口映射、DDNS、IPv6、SNMP、SSH、计费功能、封杀BT、VLAN划分、调整无线信号发射功率等扩展功能。

二、DD-WRT收费吗?

常规版本都不用收费,但也是特别版需要付费。付费版功能更加强大。如:PPPoE验证、ARP欺骗等。

三、哪些路由器可以刷DD-WRT固件

1、支持刷DD-WRT的路由器种类很多,可以参考官方的硬件支持列表。主要是Broadcom芯片方案的路由器,其他的的也有支持,但是并不是很多。

2、首先要了解自己的路由器是否支持DD-WRT、支持那种版本的DD-WRT。其次刷固件方式,如有特殊说明,一般都会有提示。如有一些路由器就提到只能使用TFTP方法刷,否则有可能不成功!

3、DD-WRT的MINI(迷你版)和STD(标准版)固件大小差不多,Flash(闪存)通常在4M或8M就可以刷标准版或增强版的固件。如果你FLASH(闪存)有8MB的话当然是刷MEGA(完整版)好。对于新手你可以先刷好MINI(迷你版)再升级到其他版本,STD(标准版)固件支持的功能要比MINI(迷你版)的多。

版本介绍:
Micro(最小版) 需要 2MB FLASH
Mini(迷你版) 需要 4MB FLASH
Standard(STD标准版) 需要 4MB FLASH
VOIP(VOIP功能版) 需要4MB FLASH
Mega(完整版) 需要 8MB FLASH

四、需要哪些设备或工具

刷路由器通常不需要特殊设备,电脑一台、网线一根、路由器一台即可。而且大部分路由器刷固件都可以在Web界面进行。

五、固件刷新方法种类

1、路由器自带的Web配置界面刷固件。

2、使用TFTP方法刷。

具体使用那种方法新,请参照DD-WRT硬件支持列表的方法。不过一旦升级到了DD-WRT,以后更新的时候可以通过Web界面进行。

六、采用Web方法刷

确认自己的路由器可否使用Web方式刷新,当然大部分路由器都可以这样做。Web方式刷新其实就是路由器设置菜单里面的“更新路由器固件”功能。虽然不是更新同厂的固件,但是也是可以用的,这种升级方式最为方便。

1、确认路由器支持DD、没有特别刷新方法的说明。本教程是以Linksys WRT150N V1 无线路由器为例。

2、下载适合路由器的固件版本。通常都会支持中文或其他网友发布的汉化。最好准备一份路由器的原厂固件,以备恢复时使用。

注意:如果想要下载最新版本,可以进入Feko目录下载,不过这个目录里的固件不是最终版,属于SVN(Subversion)。如果不是为了尝新或者路由器有兼容问题,建议还是不要这么做了。

3、登录Linksys的管理界面→固件升级,点击“浏览”找到下载的DD-WRT固件。这款路由器提供两种升级方式,一种是常规的“升级”,一种是“安全升级”。

4、后者将进入Boot模式将新的固件加载到路由器上,优点是可以避免内存不足而造成的失败。

5、如果提示刷新失败,建议重启路由器再进行刷新。如果重启后还是失败,那么就得分析具体原因了,看看是不是版本不合适引起的。例如是不是固件太大了,超过路由器的容量等。

七、采用TFTP方法刷

TFTP是Windows内置的一个命令。在命令提示符下进行操作。使用TFTP刷新请用网线把电脑和路由器的LAN口相连接。

1、确认路由器支持DD,且只能用TFTP的刷新方法。然后根据路由器型号、下载对应的DD固件版本。某些路由器刷DD使用TFTP有特别说明,一定要看仔细。

2、在开始菜单中选运行然后输入CMD并回车进入命令提示符。输入ipconfig /all了解当前的路由器的IP地址,一般默认都是192.168.1.1。建议手动分配一个地址。防止重启后IP发生变化。请设置电脑和路由器在同一个网段,例如192.168.1.2。然来将dd-wrt.bin固件文件放到C盘的根目录。

3、假设路由器IP是192.168.1.1,输入命令ping 192.168.1.1 -t并回车看通不通得了,通了就OK。然后重启路由器(通过Web界面)。

4、因为需要在启动的时候刷新,所以先输入tftp -i 192.168.1.1 put dd-wrt.bin,但是先不要敲下回车键。

5、重启路由器(有的路由器非要使用Reset按钮才能进入TFTP模式),按下回车。也有一种说法是看路由器指示灯,当所有指示灯一闪而灭的瞬间,按下回车输入命令。成功之后会出现successful的提示,如果失败就再来一次。出现successful之后,还需要你耐心等待几分钟,不要进行任何操作。

八、刷新失败怎么办?

先断开电源重启、按复位(Reset)键等操作看有没有变化。如果没有变化,试试看用TFTP法刷新。如果还不行,可以去买一条路由器相配套的JTAG线,通过它可以把路由器救活。淘宝有些卖家在质保期内也会提供免费救活服务。

PS: DD-WRT里不要盲目加大功率,毕竟信号太强会对身体有伤害。如果信号够用还可以适当降低标准信号功率,从而减少无线信号对人体的辐射。对有些路由器作用并不大,反而是增加无线干扰或导致无线网卡损坏导致经常断线和无信号,而且这种损害是不可逆的和不能修复的,坏了就成砖头,有可能导致路由报废。请大家切记。

OpenVPN的配置和使用

  OpenVPN是一个用于创建虚拟专用网络加密通道的软件包,允许创建的VPN使用公开密钥、数字证书、或者用户名/密码来进行身份验证。OpenVPN能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X与Windows 2000/XP/Vista/7以及Android和iOS上运行,并包含了许多安全性的功能。

  配置OpenVPN 2.0的第一步是建立一个PKI(public key infrastructure 公钥基础设施)。PKI包括:

  • 服务端和每个客户端都有一个证书(也称做公钥)和私钥
  • 一个认证机构(CA)的证书和私钥,用来为每一个服务端和客户端颁发证书(sign each of the server and client certificates)。

  OpenVPN 支持基于证书的双向认证,也就是说客户端需认证服务端,服务端也要认证客户端,

  服务端和客户端验证对方的第一步是验证对方提供的证书是由认证机构(CA)颁发的。然后测试第一步认证通过的证书的头部信息,如:证书的common name,证书的类型(客户端还是服务端)。

  从VPN的观点来看,这一安全模式满足一系列要求:

  • 服务端仅仅需要它自己的证书/私钥对 -- 它不需要知道客户端的证书。
  • 服务端仅仅接受拥有CA颁发的证书的客户端。因为服务端检查证书是否由CA颁发时并不需要访问 CA的私钥,这样就可以将CA的私钥(整个PKI中最重要的私钥)放在另一台机子上。
  • 如果一个私钥(is compromised),通过将它的证书加入CRL(证书吊销列表)可以禁止这一私钥。 CRL允许有选择地拒绝compromised 证书而不需要重建整个PKI。
  • 基于嵌入的证书域比如Vommon Name,服务端能够加强客户端待定(client-specific)访问权限 (access fights)。

生成认证机构(master Certificate Authority(CA))证书 & 私钥

  在这一节我们生成一个认证机构(master CA)证书/私钥,一个服务端证书/私钥,两个客户端的证书/私钥。

  我们使用OpenVPN捆绑的一组脚本。

  在Linux下打开一个Sehll,进入OpenVPN下的easy-rsa目录。如果OpenVPN是从RPM包安装的,easy-rsa目录通常在/usr/share/doc/packages/openvpn或/usr/share/doc/openvpn-2.0目录下(最好在改动之前将这一目录拷到别的地方,比如/etc/openvpn,以免以后OpenVPN的升级覆盖所做的改动)。

  在Windows下,打开一个命令行窗口进入\Program Files\OpenVPN\easy-rsa目录,运行下面的批处理文件将配置文件拷到正确的位置(这一命令会覆盖先前存在的vars.bat和openssl.cnf文件)。

init-config

  编辑vars文件(在Windows下是vars.bat)设置KEY_COUNTRY、KEY_PROVINCE、 KEY_CITY, KEY_ORG和KEY_EMAIL参数,这些参数不能有一个是空白。

  下一步,初始化PKI,Linux下:

. ./vars
./clean-all
./build-ca

  Windows下:

vars
clean-all
build-ca

  最后命令(build-ca)通过调用交互地openssl命令生成认证机构(CA)的证书和私钥。

ai:easy-rsa # ./build-ca
Generating a 1024 bit RSA private key
............++++++
...........++++++
writing new private key to ''ca.key''
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ''.'', the field will be left blank.
-----
Country Name (2 letter code) [KG]:
State or Province Name (full name) [NA]:
Locality Name (eg, city) [BISHKEK]:
Organization Name (eg, company) [OpenVPN-TEST]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server''s hostname) []:OpenVPN-CA
Email Address [me@myhost.mydomain]:

  上面的序列中,大多数询问参数的默认值是在vars或vars.bat文件中设定的值。唯一一个需要明确输入的参数是Common Name,上面的例子中输入的是"OpenVPN-CA"。

为服务端生成证书&私钥

  为服务端生成证书和私钥。Linux/BSD/Unix:

./build-key-server server

  Windows:

build-key-server server

  和前面的一步类似,大多数参数可以保持默认值。当询问Common Name时,输入"server" 。另外两个回答"y"的问题,"Sign the certificate? [y/n]"和"1 out of 1 certificate requests certified, commit? [y/n]"。
Two other queries require positive responses, "Sign the certificate? [y/n]" and "1 out of 1 certificate requests certified, commit? [y/n]".

为3个客户端生成证书&私钥

  生成客户端证书和前一步类似。Linux/BSD/Unix:

./build-key client1
./build-key client2
./build-key client3

  Windows:

build-key client1
build-key client2
build-key client3

  如果你想使用口令保护你的客户端私钥,则使用build-key-pass脚本而不是build-key。

  为每个客户端输入适合的Common Name,也就是"client1", "client2", "client3"。总是为每个客户端指定一个独一无二的名字。

生成 Diffie Hellman 参数

  必须为OpenVPN服务端生成 Diffie Hellman 参数。Linux/BSD/Unix:

./build-dh

  Windows:

build-dh

  输出:

ai:easy-rsa # ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
.................+...........................................
...................+.............+.................+.........
......................................

密钥文件

  在keys目录下生成的私钥和证书。下面是这些文件的解释:

  

文件名 需要者
Needed By
说明
Purpose
秘密
Secret
ca.crt 服务端和所有客户端
server + all clients
根证书
Root CA certificate

NO
ca.key 签发私钥的机器 
key signing machine only
根私钥 
Root CA key

YES
dh{n}.pem 服务器
server only
Diffie Hellman parameters
NO
server.crt 服务器
server only
服务器证书
Server Certificate

NO
server.key 服务器
server only
服务器私钥
Server Key

YES
client1.crt client1 only Clinet1的证书
Client1 Certificate

NO
client1.key client1 only Clinet1的私钥
Client1 Key

YES
client2.crt client2 only Client2的证书
Client2 Certificate

NO
client2.key client2 only Client2的私钥
Client2 Key

YES
client3.crt client3 only Client3的证书
Client3 Certificate

NO
client3.key client3 only Client3的私钥
Client3 Key

YES

  生成密钥的最后一步是将密钥文件拷到需要它们的机器上。


为服务端和客户端创建配置文件

得到例子配置文件 Getting the sample config files

  最好用OpenVPN的例子配置文件作为你自己配置文件的起点。 这些文件在以下目录

  • OpenVPN源代码包的sample-config-files目录
  • 如果从RPM安装,/usr/share/doc/packages/openvpn 或 /usr/share/doc/openvpn-2.0目录下的 sample-config-files目录
  • Windows,Start Menu -> All Programs -> OpenVPN -> OpenVPN Sample Configuration Files

  在Linux, BSD, or unix操作系统中,样例配置文件是server.conf和client.conf。 在Windows下是server.ovpn and client.ovpn。

编写服务端配置文件

  样例配置文件使用虚拟TUN网络接口(路由模式for routing)创建一个VPN,它在 UDP端口1194(OpenVPN的官方端口)上监听客户端连接请求,并且从10.8.0.0/24 子网为连接的客户端分配虚拟地址。

  使用样例配置文件之前,首先要编辑ca、cert、key 和dh 参数,使之指向你在上一节PKI中生成的文件。

  这时服务端配置文件就可以使用了,也可以进一步修改它:

  • 如果你使用以太网桥,则必须使用 server-bridge和dev tap而不是 server和dev tun。
  • 如果想让OpenVPN服务端监听一个TCP端口而不是UDP端口, 使用proto tcp而不是proto udp
  • 如果你想使用不同于10.8.0.0/24的一个虚拟IP地址范围,则修改 server项。记住这一虚拟IP地址范围必须是在你的网络上没有使用的。
  • 如果想让连接的客户端可以通过VPN互相访问,将client-to-client的注释去掉。 默认情况下客户端只能访问服务端。
  • 如果你使用的是Linux、BSD或Unix,则可以将user nobody和group nobody 的注释去掉以增强安全性。

  如果想在同一台机器上运行多个OpenVPN,每个VPN使用一个不同的配置文件, 是可以做到的:

  • 每个VPN实例使用一个不同的port号(UDP和TCP使用不同的端口空间,所以 可以让一个VPN监听UDP-1194,另一个监听TCP-1194)。
  • 如果在Windows下运行,则每一个OpenVPN配置都需要有一个自己的TAP-Win32虚拟网卡。可以使用Start Menu -> All Programs -> OpenVPN -> Add a new TAP-Win32 virtual ethernet adapter来增加TAP-Win32虚拟网卡。
  • 如果你运行了多个OpenVPN,记住编辑指定输出文件的指令,避免一个VPN覆盖另一个VPN 的输出文件。这些指令包括log、log-append、 status和ifconfig-pool-persist。

编写客户端配置文件

  客户端配置文件的例子(client.conf Linux/BSD/Unix或client.ovpn Windows) 和服务端配置文件的例子相对应。

  •   象服务端配置文件一样,首先编辑ca、cert和key 参数使之指向你在上一节PKI生成的文件。每一个客户端有自己的cert/key对。只有ca文件在服务端和所有客户端之间是通用的。

  •   下一步,编辑remote指令使之指向服务端的主机名/IP地址和端口号。 (如果OpenVPN服务端运行在firewall/NAT-gateway之后的一台单网卡机子上,则使用网关的公用IP地址,和你在网关上配置的向OpenVPN服务端转发的端口)。

  •   最后,确保客户端配置文件和服务端配置文件中指令的的一致性。主要检查的是 dev(tun/tap)和proto(udp/tcp)。还有comp-lzo和 fragment(如果使用了)则在客户端和服务端的配置文件中都必须提供。


启动并测试VPN的初始连接

启动服务端

  首先,确保OpenVPN服务端能从internet访问。这意味着:

  • 防火墙打开UDP端口1194(或者你配置的任意TCP/UDP端口)。
  • 设置一个端口转发规则,将UDP端口1194从防火墙/网关转发到运行OpenVPN服务端的机子。 
     

  下一步,确保TUN/TAP虚拟网卡没有被屏蔽。 

  为了减少错误,最好从命令行启动OpenVPN服务端(或者在Windows下,右击.ovpn文件), 不要将其作为后台或服务运行。 

一个服务端的启动过程:
Sun Feb  6 20:46:38 2005 OpenVPN 2.0_rc12 i686-suse-linux [SSL] [LZO] [EPOLL] built on Feb  5 2005
Sun Feb 6 20:46:38 2005 Diffie-Hellman initialized with 1024 bit key
Sun Feb 6 20:46:38 2005 TLS-Auth MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ]
Sun Feb 6 20:46:38 2005 TUN/TAP device tun1 opened
Sun Feb 6 20:46:38 2005 /sbin/ifconfig tun1 10.8.0.1 pointopoint 10.8.0.2 mtu 1500
Sun Feb 6 20:46:38 2005 /sbin/route add -net 10.8.0.0 netmask 255.255.255.0 gw 10.8.0.2
Sun Feb 6 20:46:38 2005 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:23 ET:0 EL:0 AF:3/1 ]
Sun Feb 6 20:46:38 2005 UDPv4 link local (bound): [undef]:1194
Sun Feb 6 20:46:38 2005 UDPv4 link remote: [undef]
Sun Feb 6 20:46:38 2005 MULTI: multi_init called, r=256 v=256
Sun Feb 6 20:46:38 2005 IFCONFIG POOL: base=10.8.0.4 size=62
Sun Feb 6 20:46:38 2005 IFCONFIG POOL LIST
Sun Feb 6 20:46:38 2005 Initialization Sequence Completed

启动客户端

  和服务端一样,最好从命令行(或在Windows下右击client.ovpn文件)启动OpenVPN。

Windows下客户端的启动和上面的服务端启动类似,并且最后以 Initialization Sequence Completed 消息结束。

  现在,从客户端通过VPN发送ping包,如果你使用路由模式(服务端配置文件里是dev tun),输入下面命令: 

  如果使用桥接模式(服务端配置文件是dev tap),尝试ping服务端所在子网的某台机子的IP地址。 

  如果ping成功,祝贺你!你已经有了一个能正常工作的VPN。  

常见问题

  如果ping失败,或者OpenVPN客户端初始化失败,请检查下列现象和解决办法:  

  •   错误信息: TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity). 这个错误表示客户端不能和服务端建立网络连接。

      解决方法:

    • 保证客户端使用允许其访问到OpenVPN服务端的主机名/IP地址和端口号。
    • 如果OpenVPN服务端是受保护的LAN内的单网卡机子,确保在服务端网关防火墙上使用了正确的端口转发规则。假如你的OpenVPN的IP地址是防火墙内的192.168.4.4,在UDP端口1194上监听客户端连接。服务于192.168.4.x子网上的NAT网关应该有一条端口转发规则: forward UDP port 1194 from my public IP address to 192.168.4.4。 
       
    • 打开服务端的防火墙允许到UDP端口1194(或者别的你在服务端配置文件中指定的TCP/UDP端口)的连接。 
       
  •   错误信息: Initialization Sequence Completed with errors -- 这一错误可能出现在windows 下,(a)DHCP客户端服务没有运行,(b)在XP SP2上使用了第三方的个人防火墙。  

      解决办法: 启动DHCP客户端服务,确保使用的个人防火墙和XP SP2能正常工作。  

  •   得到了Initialization Sequence Completed消息,但是ping失败了 -- 这通常是服务端或客户端上的防火墙过滤了TUN/TAP网络接口从而阻止了VPN网络的流量。  

      解决办法: 禁止客户端的防火墙(如果有的话)过滤TUN/TAP网络接口。例如在Windows下,你可以到Windows Security Center -> Windows Firewall -> Advanced取消对应于TAP-Win32网卡的选择(禁止客户端防火墙过滤TUN/TAP网卡从安全角度来看通常是合理的,因为你本来已经告诉防火墙不要阻止授权的VPN流量)。同样确保服务端TUN/TAP接口没有被防火墙过滤,  

  •   当使用proto udp时,连接在启动时停止,服务端的日志文件中有如下一行:  

    TLS: Initial packet from x.x.x.x:x, sid=xxxxxxxx xxxxxxxx

      但是在客户端的日志中却并没有等价的一行。   

      解决办法: 你有客户端到服务端的单向连接。服务端到客户端的连接被防火墙(通常是在客户端一侧)阻止了。防火墙可能是(a)客户端上运行个人软件防火墙,或者(b)是对客户端的NAT路由网关。修改防火墙设置允许服务端返回的UDP包到达客户端。 

  来源:guest_server投稿。

2014年4月6日星期日

DNS攻击原理与防范

  随着网络的逐步普及,网络安全已成为INTERNET路上事实上的焦点,它关系着INTERNET的进一步发展和普及,甚至关系着INTERNET的生存。可喜的是我们那些互联网专家们并没有令广大INTERNET用户失望,网络安全技术也不断出现,使广大网民和企业有了更多的放心,下面就网络安全中的主要技术作一简介,希望能为网民和企业在网络安全方面提供一个网络安全方案参考。

  DNS的工作原理

  DNS分为Client和Server,Client扮演发问的角色,也就是问Server一个Domain Name,而Server必须要回答此Domain Name的真正IP地址。而当地的DNS先会查自己的资料库。如果自己的资料库没有,则会往该DNS上所设的的DNS询问,依此得到答案之后,将收到的答案存起来,并回答客户。

  DNS服务器会根据不同的授权区(Zone),记录所属该网域下的各名称资料,这个资料包括网域下的次网域名称及主机名称。

  在每一个名称服务器中都有一个快取缓存区(Cache),这个快取缓存区的主要目的是将该名称服务器所查询出来的名称及相对的IP地址记录在快取缓存区中,这样当下一次还有另外一个客户端到次服务器上去查询相同的名称 时,服务器就不用在到别台主机上去寻找,而直接可以从缓存区中找到该笔名称记录资料,传回给客户端,加速客户端对名称查询的速度。例如:

  当DNS客户端向指定的DNS服务器查询网际网路上的某一台主机名称 DNS服务器会在该资料库中找寻用户所指定的名称 如果没有,该服务器会先在自己的快取缓存区中查询有无该笔纪录,如果找到该笔名称记录后,会从DNS服务器直接将所对应到的IP地址传回给客户端 ,如果名称服务器在资料记录查不到且快取缓存区中也没有时,服务器首先会才会向别的名称服务器查询所要的名称。例如:

  DNS客户端向指定的DNS服务器查询网际网路上某台主机名称,当DNS服务器在该资料记录找不到用户所指定的名称时,会转向该服务器的快取缓存区找寻是否有该资料 ,当快取缓存区也找不到时,会向最接近的名称服务器去要求帮忙找寻该名称的IP地址 ,在另一台服务器上也有相同的动作的查询,当查询到后会回复原本要求查询的服务器,该DNS服务器在接收到另一台DNS服务器查询的结果后,先将所查询到的主机名称及对应IP地址记录到快取缓存区中 ,最后在将所查询到的结果回复给客户端

  常见的DNS攻击包括:

  1) 域名劫持

  通过采用黑客手段控制了域名管理密码和域名管理邮箱,然后将该域名的NS纪录指向到黑客可以控制的DNS服务器,然后通过在该DNS服务器上添加相应域名纪录,从而使网民访问该域名时,进入了黑客所指向的内容。

  这显然是DNS服务提供商的责任,用户束手无策。

  2) 缓存投毒

  利用控制DNS缓存服务器,把原本准备访问某网站的用户在不知不觉中带到黑客指向的其他网站上。其实现方式有多种,比如可以通过利用网民ISP端的DNS缓存服务器的漏洞进行攻击或控制,从而改变该ISP内的用户访问域名的响应结果;或者,黑客通过利用用户权威域名服务器上的漏洞,如当用户权威域名服务器同时可以被当作缓存服务器使用,黑客可以实现缓存投毒,将错误的域名纪录存入缓存中,从而使所有使用该缓存服务器的用户得到错误的DNS解析结果。

  最近发现的DNS重大缺陷,就是这种方式的。只所以说是“重大”缺陷,据报道是因为是协议自身的设计实现问题造成的,几乎所有的DNS软件都存在这样的问题。

  3)DDOS攻击

  一种攻击针对DNS服务器软件本身,通常利用BIND软件程序中的漏洞,导致DNS服务器崩溃或拒绝服务;另一种攻击的目标不是DNS服务器,而是利用DNS服务器作为中间的“攻击放大器”,去攻击其它互联网上的主机,导致被攻击主机拒绝服务。

  4) DNS欺骗

  DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为。

  原理:如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS欺骗的基本原理。DNS欺骗其实并不是真的“黑掉”了对方的网站,而是冒名顶替、招摇撞骗罢了。

  现在的Internet上存在的DNS服务器有绝大多数都是用bind来架设的,使用的bind版本主要为bind 4.9.5+P1以前版本和bind 8.2.2-P5以前版本.这些bind有个共同的特点,就是BIND会缓存(Cache)所有已经查询过的结果,这个问题就引起了下面的几个问题的存在.

  DNS欺骗

  在DNS的缓存还没有过期之前,如果在DNS的缓存中已经存在的记录,一旦有客户查询,DNS服务器将会直接返回缓存中的记录

  防止DNS被攻击的若干防范性措施

  互联网上的DNS放大攻击(DNS amplification attacks)急剧增长。这种攻击是一种数据包的大量变体能够产生针对一个目标的大量的虚假的通讯。这种虚假通讯的数量有多大?每秒钟达数GB,足以阻止任何人进入互联网。

  与老式的“smurf attacks”攻击非常相似,DNS放大攻击使用针对无辜的第三方的欺骗性的数据包来放大通讯量,其目的是耗尽受害者的全部带宽。但是,“smurf attacks”攻击是向一个网络广播地址发送数据包以达到放大通讯的目的。DNS放大攻击不包括广播地址。相反,这种攻击向互联网上的一系列无辜的第三方DNS服务器发送小的和欺骗性的询问信息。这些DNS服务器随后将向表面上是提出查询的那台服务器发回大量的回复,导致通讯量的放大并且最终把攻击目标淹没。因为DNS是以无状态的UDP数据包为基础的,采取这种欺骗方式是司空见惯的。

  这种攻击主要依靠对DNS实施60个字节左右的查询,回复最多可达512个字节,从而使通讯量放大8.5倍。这对于攻击者来说是不错的,但是,仍没有达到攻击者希望得到了淹没的水平。最近,攻击者采用了一些更新的技术把目前的DNS放大攻击提高了好几倍。

  当前许多DNS服务器支持EDNS。EDNS是DNS的一套扩大机制,RFC 2671对次有介绍。一些选择能够让DNS回复超过512字节并且仍然使用UDP,如果要求者指出它能够处理这样大的DNS查询的话。攻击者已经利用这种方法产生了大量的通讯。通过发送一个60个字节的查询来获取一个大约4000个字节的记录,攻击者能够把通讯量放大66倍。一些这种性质的攻击已经产生了每秒钟许多GB的通讯量,对于某些目标的攻击甚至超过了每秒钟10GB的通讯量。

  要实现这种攻击,攻击者首先要找到几台代表互联网上的某个人实施循环查询工作的第三方DNS服务器(大多数DNS服务器都有这种设置)。由于支持循环查询,攻击者可以向一台DNS服务器发送一个查询,这台DNS服务器随后把这个查询(以循环的方式)发送给攻击者选择的一台DNS服务器。接下来,攻击者向这些服务器发送一个DNS记录查询,这个记录是攻击者在自己的DNS服务器上控制的。由于这些服务器被设置为循环查询,这些第三方服务器就向攻击者发回这些请求。攻击者在DNS服务器上存储了一个4000个字节的文本用于进行这种DNS放大攻击。

  现在,由于攻击者已经向第三方DNS服务器的缓存中加入了大量的记录,攻击者接下来向这些服务器发送DNS查询信息(带有启用大量回复的EDNS选项),并采取欺骗手段让那些DNS服务器认为这个查询信息是从攻击者希望攻击的那个IP地址发出来的。这些第三方DNS服务器于是就用这个4000个字节的文本记录进行回复,用大量的UDP数据包淹没受害者。攻击者向第三方DNS服务器发出数百万小的和欺骗性的查询信息,这些DNS服务器将用大量的DNS回复数据包淹没那个受害者。

  如何防御这种大规模攻击呢?首先,保证你拥有足够的带宽承受小规模的洪水般的攻击。一个单一的T1线路对于重要的互联网连接是不够的,因为任何恶意的脚本少年都可以消耗掉你的带宽。如果你的连接不是执行重要任务的,一条T1线路就够了。否则,你就需要更多的带宽以便承受小规模的洪水般的攻击。不过,几乎任何人都无法承受每秒钟数GB的DNS放大攻击。

  因此,你要保证手边有能够与你的ISP随时取得联系的应急电话号码。这样,一旦发生这种攻击,你可以马上与ISP联系,让他们在上游过滤掉这种攻击。要识别这种攻击,你要查看包含DNS回复的大量通讯(源UDP端口53),特别是要查看那些拥有大量DNS记录的端口。一些ISP已经在其整个网络上部署了传感器以便检测各种类型的早期大量通讯。这样,你的ISP很可能在你发现这种攻击之前就发现和避免了这种攻击。你要问一下你的ISP是否拥有这个能力。

  最后,为了帮助阻止恶意人员使用你的DNS服务器作为一个实施这种DNS放大攻击的代理,你要保证你的可以从外部访问的DNS服务器仅为你自己的网络执行循环查询,不为任何互联网上的地址进行这种查询。大多数主要DNS服务器拥有限制循环查询的能力,因此,它们仅接受某些网络的查询,比如你自己的网络。通过阻止利用循环查询装载大型有害的DNS记录,你就可以防止你的DNS服务器成为这个问题的一部分。

  结束语:网络攻击越来越猖獗,对网络安全造成了很大的威胁。对于任何黑客的恶意攻击,都有办法来防御,只要了解了他们的攻击手段,具有丰富的网络知识,就可以抵御黑客们的疯狂攻击。一些初学网络的朋友也不必担心,因为目前市场上也已推出许多网络安全方案,以及各式防火墙,相信在不久的将来,网络一定会是一个安全的信息传输媒体。特别需要强调的是,在任何时候都应将网络安全教育放在整个安全体系的首位,努力提高所有网络用户的安全意识和基本防范技术。这对提高整个网络的安全性有着十分重要的意义。

  来源:投稿,作者:鲨鱼加速器

2014年4月4日星期五

京东与腾讯合作是引狼入室?

  腾讯发挥自己的网络资源优势,京东发挥自己实体电商优势,二者互通有无,强强联合,无论目的是否为了与马云的淘宝帝国抗争,但都会加速中国电商格局的改变,不排除此组合能够在国内电商争霸中脱颖而出、独占鳌头,这一在中国电商史上具有重大意义的组合美其名曰“痛京组合”注1。在互惠共利的表象之下又有谁能够想到其结局会是一个悲剧?又有谁会想到最终的大赢家将会是腾讯,而京东却因引狼入室而自断财路。

  不平等条约

  腾讯以2.14亿美元收购京东上市前的15%的股权;京东上市时腾讯又追加了15%的股权。而京东100%收编腾讯B2C平台QQ网购和C2C平台拍拍网,以及易迅网少数股权和购买易迅网股权的权利,同时腾讯总裁刘炽平进入京东董事会。

  从字面上看,双方的合作建立在平等的基础之上,而实则却是一份单方有利的不平等条约。腾讯的电商市场份额不超过6%,而京东的市场份额却将近18%,腾讯拥有京东20%的股权,京东却仅仅拥有腾讯电商易讯外的100%和易讯的少数股权,如此悬殊的对比怎能称作是平等合作。当然了有人会说腾讯拥有的20%是付了款的,而京东却免费拥有腾讯电商,亲睁大你的双眼吧,腾讯电商为了能够在电商届立稳脚跟大手笔投资项目一个接着一个1.8亿美元的乐居,10亿元的仓储等等,真是呕心沥血、砸锅卖铁,这样一来与其所有收入的市场份额相比似乎很不划算,不用说投入产出最大化,就是基本平衡点都很难维持,相应之下的腾讯电商就是一根鸡肋,斩了就失去了竞争的机会,留着却半死不活无收益。也正因为如此马化腾才会出手“大方”、报着“吃亏是福”的态度将大部分腾讯电商送给刘强东,然后换来京东20%股权的购买权,而京东的电商收益前面已经讲过十腾讯的三倍,2013年交易额是1000亿,你说这次交易到底谁是赢家?马化腾无疑作了一次最成功的资本投资,为自己在电商领域圈了一块地之外和购得了一棵摇钱树的收益权!

  本性难移

  有人说腾讯才是当之无愧的山寨之王,可有人说不相信。也难怪,世界上本来就没有一边倒的言论,可以说整个互联网领域基本都是腾讯“学习”的对象,如果封腾讯为山寨之王相信天下英雄无不心服口服外加佩服。然而在电商服务区腾讯却丝毫没有捞到油水,一直都被马云踩在脚下,虽然拥有巨大的流量资源,但以具体到实体层次上却是马化腾永久的痛,这块硬伤是山寨的最大难关,一直以来都困扰着腾讯,关键就是腾讯没有得到精髓!

  正在困局无解之际,京东的出现无疑是雪中送炭,为腾讯解了燃眉之急。要知道双方并非平常的“联谊”,而是深度合作,这样一来,京东的实物电商运作要旨,商务秘籍对于腾讯来说就是和尚脑袋上的虱子---明摆着。尤其腾讯总裁刘炽平还加入京东董事会,那不就是安排了一个特工吗?试想,当合作一段时间之后,腾讯拥有了千金不换的电商运作秘诀,何愁再无法自运营电商。如果想踏入一个领域就必须要拥有一个切入点,而京东就是腾讯踏入电商的切入点。可能有人会质疑,QQ网购,拍拍都给了京东即便有了秘诀又能怎样?难道重头开始经营运作吗?到了此时也许大家该恍然大悟,为什么易迅没有送给京东,而且是变成独立运营了。理论上来说,易迅是京东的竞争伙伴,因为都是搞电商,而易迅幕后东家却是腾讯,而腾讯又和京东深度合作,可想而知易迅一定有一天会取代京东的。

  广告位的诱惑

  刘强东说京东不是看中了腾讯的钱,而是看中了腾讯的资源。

  诚然,以京东目前的实力,钱绝对不是问题,缺的就是网络终端客户群。纵观中国网络界,能够与淘宝帝国在客户量上相抗衡的也只能是在电商领域瘸腿的腾讯,所以从外表看,京东是技高一筹,整合想被整合的资源,让对方感激的同时,自己却得到了自己梦寐以求的客户流量,一举两得。那么腾讯到底给了京东什么资源?答曰:微信和QQ手机客户端突出入口位置,以及其他关键平台支持。这个答案实质上反映的就是腾讯并没有付出什么实质上的价值,说白了与京东合作的东西就是广告位而已。至于网络资源丝毫没有加入,更提不上丢失与流失,因为突出入口位置放京东就显示京东,放凤姐就显示凤姐,也就是说入口控制权还是在腾讯手中,京东只是一个广告客户而已。

  腾讯的历史表明了它的野性,腾讯的行迹表现了它的野心,如此危险恐怖的组织真的让我们不得不为京东捏了一把汗!虽然不知道最终的结果会是怎样,但可以大胆的豪言,京东此举一定是引狼入室、饮鸩止渴,最终要么腾讯站在京东的头上成为与淘宝挣第一的主,要么腾讯就是把京东吞下,总之京东即便不死也会是遍体鳞伤,苟延残喘!

  注1:腾讯与京东组合可简称为“腾京”,腾与疼谐音,疼与痛同义,虽然有点绕,但相信大家已经清楚了“痛京组合”的字面来历。为了避讳,没有把“京”通假成“经”,谅解。另外“痛京”也暗指使京东痛,到此解释完毕,还请网友们手下留情!

  来源:投稿,作者:李振杰,原文链接

2014年4月3日星期四

常用上网增强类Chrome扩展

  Chrome是个非常好用的浏览器,拥有丰富的扩展资源库,能够满足网民各种各样的需求,对于网民来说,通过Chrome扩展来增强上网体验是一个基本需求,但是安装过多的扩展有容易耗费大量系统资源,今天月光博客就给大量挑选一些常用的上网增强类Chrome扩展,供大家参考。

  LastPass:用于管理大量网站的密码,给不同网站设置不同的密码,支持自动登录,支持手机两步验证。建议在普通和隐身模式下都启用这个扩展。

  Adblock Plus:广告屏蔽扩展,可以屏蔽不少网站的广告,包括屏蔽Youtube视频广告、Facebook广告、横幅广告以及其他广告,还可以自定义规则,在网络广告泛滥的年代里,可以做到眼不见心不烦。该扩展是一个社区驱动的开源项目 ,有不少志愿者为其作出了贡献。

  程序网页截图:Google提供的网页截图工具,该扩展可以轻松截取当前标签页的可见区域,当前网页的指定区域,或是整张网页的页面,截图后,可以利用图片编辑工具编辑图片,然后将编辑后的图片保存为PNG格式的图片文件。

  RSS Subscription:Google提供的显示网站的RSS地址的扩展,可以在工具栏上显示RSS图标,用于一键订阅。

  Feedly:RSS阅读器网站Feedly自带扩展。

  AutoPager Chrome:自动翻页扩展,在Google搜索网页或浏览论坛帖子时,可以自动翻页并将每一页的内容接在现有内容的末尾,支持自定义规则。

  User-Agent Switcher:设置浏览器的UserAgent,将浏览器伪装成为其他系统的浏览器,例如iPhone等。

  Readium:EPUB阅读扩展,支持在Chrome里阅读EPUB书籍。

  Proxy SwitchySharp:天朝必备,用于安全上网的扩展,你懂的。

  Readability:这个工具其实主要用于科学上网,遇到看不了的文章,点一下,就可以在Readability里面看到。

  IE Tab:在Chrome标签页中以IE内核显示网页,平时没啥用,使用中国的网银系统时必备。

  Google Webspam Report:Google提供的举报垃圾网页的工具,可以举报Google搜索结果里的垃圾网页,提升Google搜索质量和搜索体验。

常用上网增强类Chrome扩展

2014年4月1日星期二

Google翻译将支持表情符号翻译

  今天,谷歌宣布Google翻译将可支持表情符号翻译,但此功能目前仅适用于Android 和iOS版Chrome浏览器。只需点击按钮,谷歌的翻译算法不仅会解释网络释义的单词意思,而且还会解释其使用语境、语调以及时下的面部表情,最后再将它们汇集成清晰且有意义的符号。

  谷歌在博文中写道,随着人们越来越多地使用手机和平板电脑浏览网页,小屏幕上的书面文字渐渐地无法满足人们对信息的极度渴求这一事实也日益明显。每一天,我们不得不滚动和滑动屏幕,在满屏幕的文字中寻找有用的信息。起初,谷歌的团队试图针对移动网络,开发一种能提高全世界人民手指力量并将手指疲劳降至最低的方法,但结果仅仅是很小程度上提高了浏览效率。我们很清楚,我们需要大于十倍的变化。

  一天晚上,当我们因为不断研究而感到精疲力竭时,智能手机上五颜六色的像素图像让我们灵机一现。

  我们突然意识到,我们可以将表情符号的魔力应用到网页中!这种形象化、戏剧化的语言不仅能让我们在日常对话中交流复杂的情绪,而且它还非常简洁。一个表情字符就可以代替几十个书面文字的字符,无需忙个不停地输入文字,大大地提高了效率,缩短了理解时间。

  在Chrome浏览器中测试这项新功能时,我们认识到古埃及人在象形文字上大有作为,但问题在于如何将其规模化:当时并没有足够的抄写员将所有的莎草纸写满!如今,我们将表情符号(当今的数字化象形文字)引入网络,希望能够改善网络沟通效率,使每个屏幕展示更多的内容。

  在使用Android 和iOS版Chrome浏览器查看表情符号网页前,请确保您已经安装了最新版的Chrome浏览器,之后点击菜单按钮,选择“翻译成表情符号”。如需查看原始页面,只需点击“重新载入”即可。目前该功能只支持英语语言,后期我们会根据需求将这项功能扩展到其他语种。

百度上线“种子搜索”

  今天百度上线了“种子搜索”功能,可以直接输入女优姓名和番号查到相关的种子,海量高清无码,百度程序猿1024行代码打造史上最全种子搜索,截止目前已经超过1600万网友成功搜索到种子。

  内测版地址已遭泄露:http://huodong.baidu.com/zhongzi/

  温馨提示:看片有风险,先想想今天是什么日子吧。

百度上线“种子搜索”