VPS常用设置技巧整理

3 views 六月 29, 10 by Timothy

本文记录一下搭建VPS常用的一些技巧和方法。此文针对基于Ubuntu系统的VPS,不同Linux发行版估计有稍许差异。

修改SSH默认端口

不要使用默认的22端口,这样很容易暴露SSH服务,也为暴力猜解用户名和密码留下了隐患。解决方法,是将/etc/ssh/sshd_config中的Port由默认的22,改为其他端口

不允许root帐号通过SSH直接登录

这样也是相当危险的,一般的做法是通过SSH配置文件,限制root帐号直接登录。修改/etc/ssh/sshd_config,将PermitRootLogin的值改为no。这样,SSH一律使用普通用户登录,在需要执行更高权限命令时,通过sudo命令,或者su成root再执行

限制同一ID同时多重登陆

这样的做法,能让同一个ID,在同一时间内不能被多人同时登录。
实现方法:编辑 /etc/security/limits.conf
加入如下配置项即可:
#<domain>      <type>  <item>         <value>
*                  hard    maxlogins            1

开启只有FTP登录权限,却没有Shell权限的帐户

非常简单,在useradd添加帐户的时候,设置用户的home目录,却不设置shell类型即可

1
useradd -d /home/user1 -s /bin/false user1

这样,为用户设置了home目录,shell为/bin/false,也即一个不存在的shell,这样,这个用户就只有FTP权限,没有Shell权限了。前提是需要在/etc/shells里面加入/bin/false这种不存在的shell类型,这样系统才不会报错。

VPS禁止ping

1
2
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all  #禁止ping
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all  #允许ping

vps中的iptables规则设置范例

490 views 二月 26, 10 by Timothy

忙乎了一两天,俺的VPS算是上线了,基于Ubuntu Linux的,512MB内存,20G硬盘,1TB月流量,赠送2个IP,还不错。不过,现在还没有把博客迁移过去的打算,此VPS仅作为练手而用,只是建了一些ssh账号,供自己和同事跨栏用,还简单的搭建了基于Nginx+MySql+PHP+FastCGI的WordPress环境,并成功拉过来俺的一位同事在上面安了个blog,嘿嘿。
提到VPS,最重要的还是安全,毕竟你的系统是直接面向公网,如果不加强防范,很容易成为别人手里的肉鸡。Linux中的iptables,用过的同学都知道,是一个基于Linux内核的防火墙,功能比较强大,下面是iptable的一些常用的规则设置:

1
2
3
4
5
6
7
8
9
10
11
12
        /sbin/iptables -P INPUT DROP              #禁止掉服务器所有入口请求,后面的规则只允许部分常用的服务端口
        /sbin/iptables -P OUTPUT ACCEPT          #允许服务器访问出口请求
        /sbin/iptables -A INPUT -i lo -j ACCEPT    #允许本地接口访问
        /sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP #禁止ping,因为ping是基于icmp协议的
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT    #允许部分常用端口入口请求访问
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
        /sbin/iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
        /sbin/iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT  #允许所有已经连接端口请求
        /sbin/iptables -A INPUT -p all -m state --state INVALID,NEW -j DROP              #DROP掉所有失效或者新的请求

可以把上述脚本保存起来,执行,然后用命令/sbin/iptables -L -n查看规则是否生效

把上述脚本再完善一下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:~/bin
export PATH
 
case "$1" in
start)
        echo -n "Staring to write your Iptbales:..."
        /sbin/iptables -P INPUT DROP
        /sbin/iptables -P OUTPUT ACCEPT
        /sbin/iptables -A INPUT -i lo -j ACCEPT
        /sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
        /sbin/iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
        /sbin/iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
        /sbin/iptables -A INPUT -p all -m state --state INVALID,NEW -j DROP
        echo "Ok"
 
;;
stop)
        echo -n "Cleaning your Iptables:..."
        /sbin/iptables -F
        /sbin/iptables -X
        /sbin/iptables -Z
	/sbin/iptables -P INPUT ACCEPT
	/sbin/iptables -P OUTPUT ACCEPT
        echo "Ok"
;;
restart)
        echo -n "Cleaning your Iptables:..."
        /sbin/iptables -F
        /sbin/iptables -X
        /sbin/iptables -Z
        echo "Ok"
        echo -n "Staring to write your Iptbales:..."
        /sbin/iptables -P INPUT DROP
        /sbin/iptables -P OUTPUT ACCEPT
        /sbin/iptables -A INPUT -i lo -j ACCEPT
        /sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
        /sbin/iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT       
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
        /sbin/iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
        /sbin/iptables -A INPUT -p all -m state --state INVALID,NEW -j DROP
        echo "Ok"
;;
*)
        echo "Usage: $0          {start|stop|restart}"
esac
 
exit 0

这样,我们就可以用start/stop/restart的参数来启用、禁止iptables防护了,很方便。另外,可以把此脚本放入/etc/init.d,让它像系统服务一样,在VPS启动的时候自动运行。

PS:
1.此脚本参考自网上,并作了部分修改
2.搜狗云输入法,也有郁闷的时候,在写文章的时候,候选词半天不出来,很卡,囧rz 是我打字速度太快,还是网速很慢?……

WM6.5 短信聊天模式切换

1,975 views 二月 12, 10 by Timothy

自从手机刷了WM6.5的最新版系统后,以前常用的短信聊天模式没了,变成了普通模式,感觉很是不习惯。于是请教了下Google老师,很快找到了答案。原来,WM6.5的短信聊天模式,是在注册表中设定的。二话不说,打开注册表编辑器,定位到注册表的如下路径:HKEY_CURRENT_USER\Software\Microsoft\Inbox\Settings ,将SMSavailable这个键的值,由默认的0(普通模式),改为1(聊天模式)即可。保存修改,重启手机,熟悉的聊天模式又回来了。

上网推荐的DNS设置

282 views 十二月 04, 09 by Timothy

由于某某原因,现在上网变得越来越不容易了,很多网站都经常莫名其妙的打不开,其中有一部分因素,就是遭到DNS劫持。所以,我一般不会用国内的DNS,因为国内的DNS会在解析域名时,“故意”犯错。比较好的方法就是使用国外的免费DNS,这段时间,一直用OpenDNS,效果还不错,今天Google也向公众发布了免费的DNS服务,ping测试了一下,速度还比较快,所以立马采纳了,呵呵。

至此,推荐给大家比较不错的DNS最佳设置(DNS的ping值,电信、网通可能有稍许差异):
Google Public DNS服务:速度不错,家中上网,ping值平均220ms
首选DNS:8.8.8.8
备用DNS:8.8.4.4

补:  Ben同学提供的另外一个Google未披露的DNS 4.3.2.1 目前测试来看,速度应该是最快的

Open DNS服务:家中上网,ping值平均在400ms
首选DNS:208.67.222.222
备用DNS:208.67.220.220

另外,还有个不错的DNS:家中上网,ping值平均在500ms左右
4.2.2.2

目前看来,还是Google的DNS访问起来比较快,推荐设置为首选。