Total Pageviews

Saturday 31 December 2011

定时清除kloxo的没用日志方法

因为kloxo控制面板,本身自动生成日志。 导致日志庞大。

下面给出如何定时清除kloxo日志方法。

创建cleankloxo.sh,并且填写上如下

# !/bin/bash
rm -rf /home/*/__processed_stats/*
rm -rf /home/kloxo/httpd/lighttpd/*
rm -rf /var/log/kloxo/*
rm -f /home/httpd/*/stats/*
cd /usr/local/lxlabs/kloxo/httpdocs/
lphp.exe ../bin/collectquota.php

上传至/etc/cron.daily
ssh下执行

chmod 755 /etc/cron.daily/cleankloxo.sh

即可清除kloxo下所有用户的日志文件以及自动修正kloxo统计

httpd的垃圾文件清理:rm -rf /var/log/httpd/*

Linux下的文件权限

在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。
Cheap Hotel in Salvador
Hotel deals in Salvador
Internet Only!    Curitiba Hotels
Hotel in Curitiba
We have the best rates!
OnlineHotel Ads

通过设定权限可以从以下 三种访问方式限制访问权限:只允许用户自己访问;允许一个预先指定的用户组中的用户访问;允许系统中的任何用户访问。同时,用户能够控制一个给定的文件或 目录的访问程度。一个文件活目录可能有读、写及执行权限。当创建一个文件时,系统会自动地赋予文件所有者读和写的权限,这样可以允许所有者能够显示文件内 容和修改文件。文件所有者可以将这些权限改变为任何他想指定的权限。一个文件也许只有读权限,禁止任何修改。文件也可能只有执行权限,允许它想一个程序一 样执行。

三种不同的用户类型能够访问一个目录或者文件:所有着、用户组或其他用户。所有者就是创建文件的用户,用户是所有用户所创建的文件 的所有者,用户可以允许所在的用户组能访问用户的文件。通常,用户都组合成用户组,例如,某一类或某一项目中的所有用户都能够被系统管理员归为一个用户 组,一个用户能够授予所在用户组的其他成员的文件访问权限。最后,用户也将自己的文件向系统内的所有用户开放,在这种情况下,系统内的所有用户都能够访问 用户的目录或文件。在这种意义上,系统内的其他所有用户就是other用户类。
Cheap Hotel in Mykonos
Best Hotels in Mykonos
Do not miss this opportunity!    Rio de Janeiro Hotels
Cheap hotels Rio de Janeiro
We have the best rates!
OnlineHotel Ads

每一个用户都有它自身的读、写和执行权限。第一套权限控制访 问自己的文件权限,即所有者权限。第二套权限控制用户组访问其中一个用户的文件的权限。第三套权限控制其他所有用户访问一个用户的文件的权限,这三套权限 赋予用户不同类型(即所有者、用户组和其他用户)的读、写及执行权限就构成了一个有9种类型的权限组。

我们可以用-l参数的ls命令显示文件的详细信息,其中包括权限。如下所示:
[root@localhost ~]# ls -lh
总用量 368K
-rw-r–r– 1 root root 12K 8月 15 23:18 conkyrc.sample
drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop
-r–r–r– 1 root root 325K 10月 22 21:08 libfreetype.so.6
drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic
-rwxr-xr-x 1 root root 9.6K 11月 5 08:08 net.eth0
-rwxr-xr-x 1 root root 9.6K 11月 5 08:08 net.eth1
-rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo
drwxr-xr-x 2 root root 48 9月 6 13:06 vmware

当执行ls -l 或 ls -al 命令后显示的结果中,最前面的第2~10个字符是用来表示权限。第一个字符一般用来区分文件和目录:
d:表示是一个目录,事实上在ext2fs中,目录是一个特殊的文件。
-:表示这是一个普通的文件。
l: 表示这是一个符号链接文件,实际上它指向另一个文件。
b、c:分别表示区块设备和其他的外围设备,是特殊类型的文件。
s、p:这些文件关系到系统的数据结构和管道,通常很少见到。

下面详细介绍一下权限的种类和设置权限的方法。

一、普通权限
第2~10个字符当中的每3个为一组,左边三个字符表示所有者权限,中间3个字符表示与所有者同一组的用户的权限,右边3个字符是其他用户的权限。这三个一组共9个字符,代表的意义如下:
r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目 录的权限。
w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
-:表示不具有该项权限。

下面举例说明:
-rwx——: 文件所有者对文件具有读取、写入和执行的权限。
-rwxr—r–: 文件所有者具有读、写与执行的权限,其他用户则具有读取的权限。
-rw-rw-r-x: 文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。
drwx–x–x: 目录所有者具有读写与进入目录的权限,其他用户近能进入该目录,却无法读取任何数据。
Drwx——: 除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。

每个用户都拥有自己的专属目录,通常集中放置在/home目录下,这些专属目录的默认权限为rwx——:
[root@localhost ~]# ls -al
总用量 5
drwxr-xr-x 9 root root 240 11月 8 18:30 .
drwxr-xr-t 22 root root 568 10月 15 09:13 ..
drwxr-xr-x 2 root root 48 8月 11 08:09 ftp
drwxrwxrwx 2 habil users 272 11月 13 19:13 habil
-rw-r–r– 1 root root 0 7月 31 00:41 .keep
drwxr-xr-x 2 root root 72 11月 3 19:34 mp3
drwxr-xr-x 39 sailor users 1896 11月 11 13:35 sailor
drwxr-xr-x 3 temp users 168 11月 8 18:17 temp
drwxr-xr-x 3 test users 200 11月 8 22:40 test
drwxr-xr-x 65 wxd users 2952 11月 19 18:53 wxd

表示目录所有者本身具有所有权限,其他用户无法进入该目录。执行mkdir命令所创建的目录,其默认权限为rwxr-xr-x,用户可以根据需要修改目录的权限。

此 外,默认的权限可用umask命令修改,用法非常简单,只需执行umask 777 命令,便代表屏蔽所有的权限,因而之后建立的文件或目录,其权限都变成000,依次类推。通常root帐号搭配umask命令的数值为022、027和 077,普通用户则是采用002,这样所产生的权限依次为755、750、700、775。有关权限的数字表示法,后面将会详细说明。
用户登录系统时,用户环境就会自动执行rmask命令来决定文件、目录的默认权限。
二、特殊权限
其实文件与目录设置不止这些,还有所谓的特殊权限。由于特殊权限会拥有一些“特权”,因而用户若无特殊需求,不应该启用这些权限,避免安全方面出现严重漏洞,造成黑客入侵,甚至摧毁系统!!!
s或S(SUID,Set UID):可执行的文件搭配这个权限,便能得到特权,任意存取该文件的所有者能使用的全部系统资源。请注意具备SUID权限的文件,黑客经常利用这种权限,以SUID配上root帐号拥有者,无声无息地在系统中开扇后门,供日后进出使用。
s或S(SGID,Set GID):设置在文件上面,其效果与SUID相同,只不过将文件所有者换成用户组,该文件就可以任意存取整个用户组所能使用的系统资源。
T或T(Sticky):/tmp和 /var/tmp目录供所有用户暂时存取文件,亦即每位用户皆拥有完整的权限进入该目录,去浏览、删除和移动文件。

因为SUID、SGID、Sticky占用x的位置来表示,所以在表示上会有大小写之分。加入同时开启执行权限和SUID、SGID、Sticky,则权限表示字符是小写的:
-rwsr-sr-t 1 root root 4096 6月 23 08:17 conf

如果关闭执行权限,则表示字符会变成大写:
-rwSr-Sr-T 1 root root 4096 6月 23 08:17 conf
三、使用文件管理器来改变文件或目录的权限:
如果用户要改变一个文件目录的权限,右击要改变权限的文件或者目录,在弹出的快捷菜单中选择“属性”,系统将打开属性对话框

在“属性”对话框中,单击“权限”标签,就会打开“权限”选项卡。

在这里你可以修改文件或者目录的所有者、组群和其他用户的权限,而且可以设置特殊权限

对于特殊权限,最好不要设置,不然会带来很严重的安全问题。

当然,在这里你也可以改变文件和目录的所有者和所属组。


四、使用chmod和数字改变文件或目录的访问权限
文件和目录的权限表示,是用rwx这三个字符来代表所有者、用户组和其他用户的权限。有时候,字符似乎过于麻烦,因此还有另外一种方法是以数字来表示权限,而且仅需三个数字。
r: 对应数值4
w: 对应数值2
x:对应数值1
-:对应数值0

数字设定的关键是mode的取值,一开始许多初学者会被搞糊涂,其实很简单,我们将rwx看成二进制数,如果有则有1表示,没有则有0表示,那么rwx r-x r- -则可以表示成为:
111 101 100
再将其每三位转换成为一个十进制数,就是754。
例如,我们想让a.txt这个文件的权限为:
自己 同组用户 其他用户
可读 是 是 是
可写 是 是
可执行

那么,我们先根据上表得到权限串为:rw-rw-r–,那么转换成二进制数就是110 110 100,再每三位转换成为一个十进制数,就得到664,因此我 们执行命令:
[root@localhost ~]# chmod 664 a.txt

按照上面的规则,rwx合起来就是4+2+1=7,一个rwxrwxrwx权限全开放的文件,数值表示为777;而完全不开放权限的文件“---------”其数字表示为000。下面举几个例子:
-rwx——:等于数字表示700。
-rwxr—r–:等于数字表示744。
-rw-rw-r-x:等于数字表示665。
drwx—x—x:等于数字表示711。
drwx——:等于数字表示700。
在文本模式下,可执行chmod命令去改变文件和目录的权限。我们先执行ls -l 看看目录内的情况:
[root@localhost ~]# ls -l
总用量 368
-rw-r–r– 1 root root 12172 8月 15 23:18 conkyrc.sample
drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop
-r–r–r– 1 root root 331844 10月 22 21:08 libfreetype.so.6
drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic
-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0
-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1
-rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo
drwxr-xr-x 2 root root 48 9月 6 13:06 vmware

可以看到当然文件conkyrc.sample文件的权限是644,然后把这个文件的权限改成777。执行下面命令
[root@localhost ~]# chmod 777 conkyrc.sample
然后ls -l看一下执行后的结果:
[root@localhost ~]# ls -l
总用量 368
-rwxrwxrwx 1 root root 12172 8月 15 23:18 conkyrc.sample
drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop
-r–r–r– 1 root root 331844 10月 22 21:08 libfreetype.so.6
drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic
-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0
-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1
-rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo
drwxr-xr-x 2 root root 48 9月 6 13:06 vmware
可以看到conkyrc.sample文件的权限已经修改为rwxrwxrwx

如果要加上特殊权限,就必须使用4位数字才能表示。特殊权限的对应数值为:
s或 S (SUID):对应数值4。
s或 S (SGID):对应数值2。
t或 T :对应数值1。
<code>
用同样的方法修改文件权限就可以了
例如:
<code>
[root@localhost ~]# chmod 7600 conkyrc.sample
[root@localhost ~]# ls -l
总用量 368
-rwS–S–T 1 root root 12172 8月 15 23:18 conkyrc.sample
drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop
-r–r–r– 1 root root 331844 10月 22 21:08 libfreetype.so.6
drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic
-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0
-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1
-rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo
drwxr-xr-x 2 root root 48 9月 6 13:06 vmware
加入想一次修改某个目录下所有文件的权限,包括子目录中的文件权限也要修改,要使用参数-R表示启动递归处理。

例如:
[root@localhost ~]# chmod 777 /home/user 注:仅把/home/user目录的权限设置为rwxrwxrwx
[root@localhost ~]# chmod -R 777 /home/user 注:表示将整个/home/user目录与其中的文件和子目录的权限都设置为rwxrwxrwx
五、使用命令chown改变目录或文件的所有权
文件与目录不仅可以改变权限,其所有权及所属用户组也能修改,和设置权限类似,用户可以通过图形界面来设置,或执行chown命令来修改。

我们先执行ls -l看看目录情况:
[root@localhost ~]# ls -l
总用量 368
-rwxrwxrwx 1 root root 12172 8月 15 23:18 conkyrc.sample
drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop
-r–r–r– 1 root root 331844 10月 22 21:08 libfreetype.so.6
drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic
-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0
-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1
-rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo
drwxr-xr-x 2 root root 48 9月 6 13:06 vmware
可以看到conkyrc.sample文件的所属用户组为root,所有者为root。

执行下面命令,把conkyrc.sample文件的所有权转移到用户user:
[root@localhost ~]# chown user conkyrc.sample
[root@localhost ~]# ls -l
总用量 368
-rwxrwxrwx 1 user root 12172 8月 15 23:18 conkyrc.sample
drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop
-r–r–r– 1 root root 331844 10月 22 21:08 libfreetype.so.6
drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic
-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0
-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1
-rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo
drwxr-xr-x 2 root root 48 9月 6 13:06 vmware
要改变所属组,可使用下面命令:
[root@localhost ~]# chown :users conkyrc.sample
[root@localhost ~]# ls -l
总用量 368
-rwxrwxrwx 1 user users 12172 8月 15 23:18 conkyrc.sample
drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop
-r–r–r– 1 root root 331844 10月 22 21:08 libfreetype.so.6
drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic
-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0
-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1
-rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo
drwxr-xr-x 2 root root 48 9月 6 13:06 vmware
要修改目录的权限,使用-R参数就可以了,方法和前面一样。
--------------

Linux中的SUID机制

SUID简称位,英文全称是Set owner User ID up on execution,它是一种特殊的文件权限,能够让用户(如Bob)用其他用户(如root用户)的权限运行一个程序,而不需要用sudo进行临时提权

同一类的还有SGID,就不详细说了,原理与SUID一样,就以SUID为例

在一个程序执行的时候会有三个ID状态,在深入学习SUID之前必须能够区分下面三种ID:

  • Real User ID
  • Effective User ID
  • Saved User ID

Real User ID 是执行这个程序的用户的真实ID,是已用户login时候的ID为准

Effective User ID 是程序执行过程中使用权限时真正起作用的用户ID,操作系统在检查一个程序有没有某个权限的时候会看这个ID

Saved User ID 是程序临时提权时需要保存的先前的用户ID,等提权结束后需要回退到这个用户ID.

如果用户user2有另一个用户user1的程序的执行权限,并且user1给这个程序设置了SUID位,那么user2就可以用user1的权限来执行这个程序

简单来说,SUID能够让用户(如Bob)用其他用户(如root用户)的权限运行一个程序,而不需要用sudo进行临时提权

举个例子:

所有用户的密码保存在 /etc/shadow 文件中,但是这个文件只有root用户能够进行写操作

1
2
root@kali:~# ls -l /etc/shadow
-rw-r----- 1 root shadow 1639 Jan 27 12:50 /etc/shadow

那如果普通用户想要修改自己的密码,是否需要让root用户帮着修改呢?

显然不需要,修改密码用到了 /usr/bin/passwd 这个程序,我们来看一下它的权限

1
2
root@kali:~# ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 63944 Dec 20 10:39 /usr/bin/passwd

可以看到,这个程序的所有者是root用户,但是所有用户都有执行权限,并且设置了s位(怎么看出来的后面会说)

这样SUID机制就会在程序执行的时候发生作用,让普通用户可以用root权限修改/etc/shadow文件

SUID机制的存在使程序权限的控制更加方便,用户可以执行某个程序而不需要登录到程序拥有者的账号.

通过命令 ls -l 即可看到文件的详细信息,包括权限表 -rwxrwxrwx

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
-   rwx   rwx   rwx

第一位是文件类型,-就是普通文件,d代表目录,l代表链接文件,还有一些其他类型的文件不详细说了

后面的9位可以分成三组,分别表示所有者权限、同组内用户权限,组外其他用户权限

每一组都有三位,r 代表有读取权限,w 代表有写入权限,x 代表有执行权限,如果是 _ 就代表没有相应的权限

如果文件所有者权限的 x 换成 s 就代表设置了SUID

同理如果组内用户权限的 x 换成了 s 就代表设置了SGID

使用 chmod 4000 filename 可以设置SUID位

使用 chmod 2000 filename 可以设置SGID位

使用 chmod 6000 filename 可以同时设置SGID和SUID位

注意: 2000\4000\6000都是不完整的权限,正常使用应该将000替换为相应的权限,例如 4755

使用 chmod 755 filename 可以取消SGID和SUID位

或者 chmod u-s filename or chmod g-s filename 也可以.


因为SUID位让程序在执行的时候有了所有者的权限,所以可以利用这点来提权

示例:

1
2
3
4
# 进入nmap的交互模式
nmap --interactive
# 执行sh,提权成功
!sh

详细介绍见: https://www.leavesongs.com/PENETRATION/linux-suid-privilege-escalation.html


假如user1用 chmod 4777 /home/user1/script.sh 命令给script.sh脚本设置SUID位,登录user2后执行这个脚本提示没有权限

这是因为SUID位只对编译过的可执行程序起作用,sh脚本的实际执行程序是sh或者bash之类,如果它们在执行的时候并不会检查脚本文件的SUID位,那就不会起作用了

Perl执行器会检查perl脚本的suid位,所以可以给pl脚本设置suid位

fastvps.co:年付12usd的vps

Fast $12/YR,

https://www.fastvps.co/cart.php?a=add&pid=3

  • 15GB Disk Space
  • 1000GB Bandwidth
  • 1 X 2.67 GHZ CPU
  • 256MB RAM
  • Instant Setup
  • Free VPS Templates
 fastvps.co是新开的公司,域名注册于2011-10-31.需小心。

https://www.fastvps.co/vps-hosting.php,估计是openvz vps.

性价比很不错的dedicated server-最低款为45usd/mo,2GB RAM

10Mbps, 100Mbps, 1Gbps+ available
Dual Core ATOM
2GB RAM
250GB HDD
$45/mo+

10Mbps, 100Mbps, 1Gbps+ available
USA or EU location
Dual Core ATOM
4GB RAM
1.5TB HDD
$59/mo+
FROM http://fdcservers.net/dedicated_servers.php 
http://fdcservers.net/upgrade_pricing.php (升级内存和硬盘的价格) 
----------------------------------------------------------------
http://www.ovh.co.uk/dedicated_servers
http://www.ovh.co.uk/dedicated_servers/superplan_best_of.xml 
(16gb ram,4tb hdd,65pounds/mo,约110usd/mo)
------------------------------------------------------------------
https://www.datashack.net/dedicated/

Phenom II x4 840

  • 4GB DDR3 RAM
  • 500GB Hard Drive
  • 10TB Monthly Transfer
  • Linux/Windows* OS
  • 5 usable IPv4 Address
  • /64 IPv6 Address Block**
  • Remote Reboot Access
  • FREE Setup
$49.00 per month

Dual Opteron 2216

  • 4GB DDR3 RAM
  • 500GB Hard Drive
  • 10TB Monthly Transfer
  • Linux/Windows* OS
  • 5 usable IPv4 Address
  • /64 IPv6 Address Block**
  • Remote Reboot Access
  • FREE Setup
$49.00 per month
-----------------------------------------------------------------
 Dedicated Servers $49 - www.servercraft.co - 4GB DDR3 RAM, 250GB. 7200RPM. 5 Day Money Back Guarantee.
------------------------------------------------------------------
You can use our contact form if you have any questions.
★★CLICK TO CONTACT KILOSERVE.COM★★

AMD Opteron 2.2ghz 275 Dual Core
4 Gigabytes of RAM
250 GB SATA Hard Drive
1000 Gigabyte Monthly transfer
2 IP Addresses
$65/month
Upgrade to Quad Core (2x Opteron 275 Dual Core)  for +$15/month
★★CLICK TO CONTACT KILOSERVE AND PURCHASE★★
--------------------------------------------------------------------------------

Managing Virtual Machines with Archipel

Virtualization gained many fans in 2011. More system administrators than ever before are seeing the benefit of creating virtual machines for a variety of purposes, from sectioning off business operations to hosting virtual private servers for customers. The more virtual machines you have, the more difficult it can be to manage all of them. Fortunately, a free and open source tool called Archipel can help make the task easier.
The Archipel Project offers virtual machine management for the smallest projects (such as a single computer), the largest projects (multiple data centers), and everything in between. It works with libvirt-supported virtualization techniques, including Xen, KVM, OpenVZ, and VMware.
The web-based application includes the following features:
  • real-time management, making use of the XMPP protocol, allowing virtual machines to send and receive messages
  • Modular design – this makes it easily expandable
  • Built-in VNC client for remote virtual machine graphical management, right within the browser
  • Global connectivity – Using XMPP, servers can communicate with each other no matter where they are.
  • Open Source – Released under the AGPL, Archipel is free to download, install, use, modify, and give away.
Archipel is currently in beta, but you can still download it and give it a try by visiting the project’s website.
from http://www.serverschool.com/virtual-private-servers-vps/archipel-virtual-machines/
-----------------------------------------------------------------------------------

Start servers
ST XL-11
ST XXL-11
Processor
Intel i5 4x 2.66 GHz+
Intel i7 4x 2.66 GHz+
Memory RAM
16GB
24GB
Hard disk
2000 GB
2000 GB
Bandwidth
100 Mbps
100 Mbps
Traffic
Unlimited
Unlimited
IPv4
1
1
IPv6
/64
/64
IP Failover
Optional (max 3)
Optional (max 3)
IP RIPE
Optional (max 32)
Optional (max 32)
FTP backup
100 GB
100 GB
root access
Self managed
Setup fee
Free
Free
Setup time
0-24h max
0-24h max
Price / month
Availability
   70
    FROM http://www.seedhost.eu/dedicated-server.php
------------------------------------------------------------
https://www.xothost.com/catalog/6,Build your own Dedicated Server!

truedns:一个获取真实的dns解析结果的驱动级工具(仅限于linux desktop os),解决DNS污染问题


truedns是一个准确、快速、便捷的域名解析工具。它不改变系统现有架构,以驱动方式过滤中国大陆某墙的干扰,实时返回最真实的域名解析结果,是一个获取真实域名解析的驱动级工具,可以在系统底层以udp协议工作并过滤中国大陆GFW墙的干扰。

设置大陆以外的dns,如8.8.8.8或8.8.4.4或opendns等

使用时加载驱动就可正常运行。区分系统,32位和64位的驱动互不通用

加载驱动 insmod ip_ns.ko

卸载驱动 rmmod ip_ns.ko

官方项目主页:https://code.google.com/p/truedns/

官方最新版下载-https://truedns.googlecode.com/files/ip_ns.ko

下载地址:https://code.google.com/archive/p/truedns/downloads

作者补充的使用教程如下:

客户端安装过程
1、确定内核版本
执行

uname -a

显示类似于2.6.32-71.el6.x86_64,其中2.6.32表示内核版本,x86_64为64位版。32位为i686或i386字样
或执行
file /sbin/init

显示/sbin/init: ELF 64-bit。 64-bit为64位,32-bit为32位
2、下载对应的驱动并改名为truedns.ko
以下是文件改名代码,请根据实际情况修改(若已改过可忽略)

rename truedns_2_6_18_32bit.ko truedns.ko

3、安装驱动
insmod truedns.ko

为了确保系统稳定性及的升级便捷性,不推荐将本驱动设置为开机自动加载.
--------------------------

dns proxy for linux desktop

介绍:
我 们是在Linux下用Python并利用Twisted的network engine来写最简单的DNS Proxy并实现了多线程和简单的cache。 (Twisted是用Python写的事件驱动的Network Engine)。我们的DNS Proxy是可以通过多个用户的domain请求同时向Google发送请求再将Google应答返回各用户。其中我们用的是Google的Public DNS (8.8.8.8)。我们的DNS Proxy包括一个server和一个client。
我们的Project包括:
  • server.py
  • client.py
  • message.py
  • resolv.conf
下载我们的hw2-dns_proxy(12/10/2010 update)。
编程环境:
(1) 操作系统:Ubuntu 10.10
(2) 编写语言:Python 2.6
(2) 重点module:Twisted 2.7
运行方式:
先切换到个文件的当前目录再分别执行如下操作:
(1)对于server:python server.py
(2)对于client:python client.py domain
其中domain是用户所请求的,格式如:www.baidu.com 或 baidu.com 均可以。
步骤:
(1) Client发出domain的请求
(2) DNS Proxy为每一个接收到的请求创建一个线程。每一线程访问Google的公开DNS Server。
(3) Google的DNS Server再分别处理来自各处的请求并发回我们的DNS Proxy
(4) 我们的DNS Proxy再分别发回原请求的client
其中都是通过53端口实现的。Client与我们的DNS Proxy之间用的是UDP协议,我们的DNS Proxy与Google用的是TCP协议。
代码说明:
(1) server.py
从 main函数起,设置了端口DNS_PORT和LOCAL_PORT为53。我们的DNS Server将会从文件resolv.conf中被读出来。之后我们通过reactor.listenUDP(LOCAL_PORT, BaseThreadedUDPServer())语句来设置让reactor监听53端口的UDP包然后通过reactor.run()来启动这个 reactor。Twisted的好处是它能自己管理好线程,因此,每监听到每一个UDP包,会将创建一个新线程。由于我们通过 reactor.callFromThread()把要被线程运行的函数放在主循环中,会是多线程安全的。默认的线程个数为10。每一线程会运行 BaseThreadedUDPServer类中的datagramReceived函数。(注:resolv.conf只含一行并且格式 为:nameserver 8.8.8.8)
通过得到answer包RR的最小值TTL可以知道什么时候cache里该数据过期。在查询和加入cache时都会检查是否需要“清洗”cache。
(2) client.py
这个会从命令行得到用户的domain请求并建立UDP包发给我们的DNS Proxy。最后通过一个socket来向我们的DNS Proxy发送。
(3) message.py定义好了DNS包头,questions section,和RR sections的结构。创建一个Message对象有两种方法,一个就是用一个已经写好的dns包(注意不是Message的对象,是真正的dns包) 来初始化即fromWire(),也可以调用createQuery()或createAnswer()。因为我们这次作业不许要创建answer,所以 在Message类里createAnswer()是空的。toWire()函数就是把Message类转换成要发送的DNS包。因为用TCP时要发送 DNS包的长度所以我们的Message类可以根据是否使用TCP或UDP来进行toWire(),fromWire()。
需要改进的:
由于时间和精力的限制没能通过下列几点来改进我们的程序。
(1) 没有进行压缩
(2) 虽然用了UDP,但是我们没有考虑丢包重传scheme
(3) 我们当前的resolv.conf认为只有那一行
(4) 我们的Message类目前认为QDCOUNT即question个数是1
下载我们的课堂报告:DNS Proxy.pdf(12/10更新)
from http://course.ccert.edu.cn/2010a/blog/phaby/2010/12/07/dns-proxy/
------------------------------------------------------------

在linux desktop os上使用tcp dns,防止dns污染


对tcp dns开始感兴趣,于是动手写了一个小脚本
可以把udp和tcp的dns请求全部转换到tcp发送到dns服务器
使用方法:
使用sudo或者root下执行python tcpdns.py
(绑定1024以下的端口需要root权限)
然后把本机dns设为127.0.0.1
需要安装python和python-twisted-core
dns设置方法:
在/etc/resolv.conf中添加nameserver 127.0.0.1
注意:
默认dns为8.8.4.4 可自己打开脚本修改
其他:
为保证安全性在绑定端口后会把脚本降低权限,默认为os.setuid(1000)
使用前请检查当前用户的uid是否为1000然后做出修改,在/etc/passwd中可以查到
在xp上也可以使用,需要安装python、twisted和zope,可以在以下地址中下载
http://www.python.org/
http://twistedmatrix.com/trac/wiki/Downloads
http://pypi.python.org/pypi/zope.interface#download
----------------------------------------------------------

如何本地避免GFW的DNS污染


我来说下目前我知道的各平台上,本地避免DNS 污染的方法。
DNS污染的原理部分,参考这篇 深入理解GFW:DNS污染。本地避免污染,有两个思路:
  1. 通过加密方式,查询可信的DNS服务器
  2. 设置国外DNS服务器,并丢弃GFW DNS伪包
第一种思路下,目前比较靠谱的是 DNSCrypt,支持Windows (下载)和 Mac(下载)。DNSCrypt 使用很方便,把 Enable OpenDNS、Enable DNSCrypt 全勾上就好,也建议勾上 Fallback to insecure DNS。
第二种方式,Windows上不好弄。Mac 和 Linux 都有办法实现。前提是设置国外DNS,继续推荐台湾中华电信的168.95.1.1 。然后:
  • Mac:安装 kernet 内核扩展(下载),我自己做的,开机自启动,风险自负。
  • Linux:西厢计划项目做了这一部分,不过编译内核模块毕竟麻烦。2.6.33.7 以上版本的内核(不保证这是最低版本),依赖 iptables 1.4.10,都会自带u32 模块,可以用iptables 规则做丢弃GFW DNS伪包:
    iptables -I INPUT -p udp -m udp –sport 53 -m u32 –u32 “0&0x0F000000=0×05000000 && 22&0xFFFF@16=0x5d2e0859,0xcb620741,0x0807c62d,0x4e10310f,0x2e52ae44,0xf3b9bb27,0xf3b9bb1e,0x9f6a794b,0x253d369e,0x9f1803ad” -j DROP
    iptables -I INPUT -p udp -m udp –sport 53 -m u32 –u32 “0&0x0F000000=0×05000000 && 22&0xFFFF@16=0x3b1803ad” -j DROP
    设置联网自动加载iptables 配置:Ubuntu下,可以把以上规则写入 /etc/network/if-pre-up.d/iptablesload 文件。其它Linux发行版应该也有类似的方法。强烈建议淘宝上卖自制路由器的同学们,把这个防火墙规则写到路由器中,也能多一个卖点。

    from http://liruqi.info/post/28775426009/how-to-avoid-dns-hijack-locally 
---------------------------------------------------------------------------------------------------

使用ipfilter过滤GFW的DNS污染

 
最原始文档请参考AutoVPN上滴 这篇文章 喵~
咱将其原始脚本修订了一些,并添加了 OpenWRT滴正确使用姿势喵~
一、OpenWRT的准备工作
普通Linux用户可以直接跳过这一节,因为大多数发行版已经安装了这些必要的软件包了喵~
opkg update opkg install iptables-mod-filter bind-dig

二、脚本本体及注释
#!/bin/ash #这行是用一个不存在的域名解析来钓出强制跳转地址 NONEXISTDOMAIN="non.exist.domain.cn" #这行写入一些会被污染的域名 POSIONEDDOMAIN="www.twitter.com www.facebook.com www.youtube.com plus.google.com" #下面这行写入本地的DNS地址,即被污染的DNS服务地址 WALLSERVER="61.139.2.69" LOOPTIMES=9 badip="" #钓出非法域名强制跳转地址 for DOMAIN in $NONEXISTDOMAIN ; do for IP in $(dig $DOMAIN +time=1 +tries=1 +retry=0 | grep ^$DOMAIN | grep -o -E "([0-9]+\.){3}[0-9]+") ; do if [ -z "$(echo $badip | grep $IP)" ] ; then badip="$badip $IP" fi done done echo First Step: $badip #钓出污染的IP地址(GFW反馈的) for i in $(seq $LOOPTIMES) ; do for DOMAIN in $POSIONEDDOMAIN ; do for IP in $(dig @$WALLSERVER $DOMAIN +time=1 +tries=1 +retry=0 | grep ^$DOMAIN | grep -o -E "([0-9]+\.){3}[0-9]+") ; do if [ -z "$(echo $badip | grep $IP)" ] ; then badip="$badip $IP" echo $IP $DOMAIN fi done done done echo Second Step: $badip #将这些地址在 Firewall里面过滤掉 for IP in $badip do hexip=$(printf '%02X ' ${IP//./ }; echo) # echo $hexip iptables -I INPUT -p udp --sport 53 -m string --algo bm --hex-string "|$hexip|" --from 60 --to 180 -j DROP iptables -I FORWARD -p udp --sport 53 -m string --algo bm --hex-string "|$hexip|" --from 60 --to 180 -j DROP done

三、原理介绍
因为DNS是使用UDP数据包进行发送的,正常的查询如下:
PC 查询域名 -查询UDP包-> 网关 -查询UDP包-> DNS服务器 -返回UDP包-> 网关 -返回UDP包-> PC结束查询
被GFW污染之后,GFW抢先在DNS服务器正确包到达之前返回被污染结果:
PC 查询域名 -查询UDP包-> 网关(路由旁路触发GFW) -查询UDP包-> DNS服务器 -返回UDP包-> (GFW抢先返回)网关 -GFW返回UDP包-> PC结束查询 -正确的UDP包-> 被遗弃
但是GFW只能固定返回几个IP(返回正确IP风险很高,比如暴风上次导致的故障),所以只要找到这几个IP,加以过滤,则能够将GFW抢答的包在防火墙上设置无效丢包即可,正确的包就会在稍加等待后返回。
-------------------------

dnsproxycn 的官方简介

windows系统的一个本地dns代理工具, 通过延时的方法减少中国的dns污染, 通过加载ipv6host.txt文件, 可强制只返回ipv6地址, 使得浏览器只能通过ipv6进行工作, 可通过ipv6访问google, 有图比 等网站.

ipv6host.txt中的地址提取自紫狐浏览器, 使用该工具不需紫狐浏览器也能使通过隧道运行ipv6的机器用ipv6host中的地址进行访问, 效果几乎和紫狐浏览器一样. 中国境外用户不需要本工具.

官方项目  http://code.google.com/p/dnsproxycn/

下载地址 http://code.google.com/p/dnsproxycn/downloads/detail?name=DNSProxy.exe&can=2&q=

具体使用方法 启动 DNSProxy.exe

把ADSL用户把宽带连接的DNS改成127.0.0.1
路由用户改本地连接的DNS为127.0.0.1

程序有CMD窗口,需要隐藏CMD窗口的话,就下载下面的 RunHiddenConsole.zip

使用方法
RunHiddenConsole.exe C:\DNSProxy\DNSProxy.exe
即可。
RunHiddenConsole.zip下载地址:http://www.box.com/s/vh43ev9m43eidotz5ll1
----------------

什么是DNS污染

回答这个问题之前,如果你不知道DNS的作用是什么,我可以简单的说,DNS的中文是域名系统,英文是Domain Name System,简称DNS,是因特网的一项业务服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。(抄自域名系统
然后,DNS污染简单来说就是让找不到正确的IP,然后就没有然后,上不了网了,开着VPN也没用。
下面举个例子吧,下面同样域名得到差异很大的结果。如果我们使用国内的DNS服务器或者ISP提供的DNS服务器,就算开着VPN,我们也不能正常的DNS解析的。
[23:13:07] roowe@roowe-gentoo /tmp$ nslookup twitter.com 8.8.8.8
Server:         8.8.8.8
Address:        8.8.8.8#53
 
Non-authoritative answer:
Name:   twitter.com
Address: 199.59.148.82
Name:   twitter.com
Address: 199.59.149.230
Name:   twitter.com
Address: 199.59.150.39
 
[23:14:37] roowe@roowe-gentoo /tmp$ nslookup twitter.com 114.114.114.114
Server:         114.114.114.114
Address:        114.114.114.114#53
 
Non-authoritative answer:
Name:   twitter.com
Address: 46.82.174.68
--------
resolvconf的作用就是 managing multiple DNS configurations,要不然resolv.conf配置全乱了,第一个都不是我们想要的127.0.0.1。
resolvconf配置如下。
resolv_conf=/etc/resolv.conf
name_servers=127.0.0.1
用了resolvconf之后,我们自动生成的resolv.conf配置大概如下:
[23:46:30] roowe@roowe-gentoo /tmp$ cat /etc/resolv.conf 
# Generated by resolvconf
nameserver 127.0.0.1
nameserver 8.8.8.8
nameserver 8.8.4.4
------------------
发现fedora很多包都更新得很慢,我虽然不是很热衷于新版本,但是现在有些新版本的feture是我需要呀,比如Xfce按住Alt+Tab之后的左右方向键在xfce-4.9是有效,但是在4.8版本是没有用的,囧!还有Emacs还没有升级到24呀。想到这里,我就想马上搬我的电脑过来用gentoo。除了更新慢之外,还有些包没有,比如resolvconf这个包竟然没有。所以就没法管理resolv.conf了,但是为了使用dnsmasq,还是有办法的,在 /etc/sysconfig/network-scripts/ifcfg-p33p1(这个文件是我的,找你相应的)这个文件后面添加DNS1=127.0.0.1,然后/etc/init.d/network restart下就好了。PS:我没用NetworkManager,这货坑爹的,直接用network来管理.

如何修改win vps的远程桌面的连接端口

3389端口是Windows2000(2003)Server远程桌面的服务端口,可以通过这个端口,用”远程桌面”等连接工具来连接到远程的服务器,如果连接上了,输入系统管理员的用户名和密码后,将变得可以像操作本机一样操作远程的电脑.
修改数值的话需要修改注册表的两个地方:
第一个地方:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\Wds\rdpwd\Tds\tcp]PortNumber值,默认是3389,修改成所希望的端口,比如6000
第二个地方:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp]PortNumber值,默认是3389,修改成所希望的端口,比如6000
现在这样就可以了。重启系统就可以了.

HOWTO: Secure Firefox traffic with PuTTY(经典文章)


There are times when you want to connect to the Internet through unknown and/or insecure networks such as the local Panera or other WiFi hotspot. If you aren’t careful, you might make it all too easy for someone to sniff your connection using Ettercap.
One of the best ways to secure your connection is to use a VPN, but that isn’t always practical. So here’s a way to securely connect to the net using only an SSH client and a remote box that you control/trust.
Requirements:
  1. PuTTY* loaded on your local machine
  2. Remote host running OpenSSH (e.g. Linux box at home)
  3. Firefox (obviously)
  4. Gaim for all your IM needs
Just follow these steps…

1. Create a new PuTTY session
Run PuTTY and create a new session in PuTTY to connect to the remote host that is running OpenSSH. Fill in the hostname, the port (usually 22), make sure SSH is checked, give it a session name and hit Save:
PuTTY Session Config
2. Configure a secure tunnel
Click on “Tunnels” on the left and set up dynamic fowarding for a local port (e.g. 7070). Under “Add new forwarded port” type in 7070 for the source port, leave the destination blank, and check Auto and Dynamic. Then it the Add button. If you did it correctly, you’ll see D7070 listed in the Forwarded Ports box:
PuTTY Tunnels Config
That’s it for tunnels, as there is no need to create more than one. Remember to save your session profile in PuTTY so you don’t have to set up the tunnel next time.
3. Connect to the remote SSH box
Double click on the connection profile and type in your username and password when prompted.
4. Configure Firefox
Go to Tools, Options, General, and then click on Connection Settings…
Firefox connections
Check Manual Proxy Configuration, leave most of the fields blank, but fill in 127.0.0.1 for the SOCKS v5 host with a port of 7070 (or whatever you used in Step 2):
Firefox connection settings
5. Configure Gaim
Fire up Gaim and hit the Preferences button:
Gaim
Then select Network on the left and set up the Proxy Server. The Proxy Type should be SOCKS 5. The host is 127.0.0.1 and the port is 7070 (or whatever you chose in Step 2).
Gaim
There’s no need for a user or password. Then hit close.
6. Enjoy
That’s it. From now on, as long as you first log into the remote ssh host with PuTTY, your Firefox and IM traffic will be routed over a secure tunnel to the remote host and then out to the Net. Good stuff.
* Yes, PuTTY is available for Linux. It’s even in Portage!
Update (Email): Actually, the setup for Thunderbird to securely proxy your email traffic is pretty much the same as it is for Firefox.
And then type in 127.0.0.1 and your port number:
That’s it.
Update: Getting some linkage from Digg.
Corrections/Addendum:
  1. Note that this method will secure your connection between your remote location (e.g. WiFi hotspot) and the ssh host (e.g. Linux box at home). It is not secure from the ssh host to Internet. For the most part, that’s OK as it will provide reasonable protection from people running packet sniffers at the hotspot. But please recognize that if your ssh host is on your cable connection at home, your ISP can still (obviously) easily sniff all your packets.
  2. Quite a few people have correctly pointed out that DNS queries will still be “leaked” to the untrusted network. So the names of any sites you visit will still get logged. Now if you don’t mind people knowing what sites your are connecting to, then there’s nothing to worry about. But if are running the current version of Firefox and would like to protect that information, you can open the about:config page, and change network.proxy.socks_remote_dns to true.
    You can do the same thing in Thunderbird if you would like.
    For a greater level of security on all your connections, you should consider running a full VPN (see also: IPCop + OpenVPN HOWTO).
  3. As Nate pointed out in the comments, if you have the command-line version of OpenSSH already installed on your computer, you don’t need to mess with PuTTY. Just run ssh -D 7070 user@host.example.com and that will set up your tunnel. I’m not an Apple user, but I think OS X has everything you need.
  4. There are portable versions of Firefox, Gaim, and Thunderbird, and PuTTY runs from a USB drive. So using this method (unlike using OpenVPN) there is no need to install anything on the computer you are using. Quite handy if you are borrowing someone’s computer or you are in a school computer lab.
  5. How do you know if it’s working? Personally, I used SmartSniff to look at the packets and make sure they looked encrypted and were on the right ports. Of course, any packet sniffer would do. The other method (and I tried this one too) is to get all set up and running with the tunnels. And then after it is apparently working, kill PuTTY and see if you lose the connection.
    Of the two, the packet sniffer is the better way to go.
  6. Apparently Opera only does SOCK4. I didn’t personally try it, but this should work with SOCKS4 proxies as well as SOCKS5.
  7. SocksCap (non-commercial, home-use only) will let you run just about anything over a SOCKS5 proxy。
from http://thinkhole.org/wp/2006/05/10/howto-secure-firefox-and-im-with-putty/