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 |
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 是我打字速度太快,还是网速很慢?……
1,975 views 二月 12, 10 by Timothy
自从手机刷了WM6.5的最新版系统后,以前常用的短信聊天模式没了,变成了普通模式,感觉很是不习惯。于是请教了下Google老师,很快找到了答案。原来,WM6.5的短信聊天模式,是在注册表中设定的。二话不说,打开注册表编辑器,定位到注册表的如下路径:HKEY_CURRENT_USER\Software\Microsoft\Inbox\Settings ,将SMSavailable这个键的值,由默认的0(普通模式),改为1(聊天模式)即可。保存修改,重启手机,熟悉的聊天模式又回来了。
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访问起来比较快,推荐设置为首选。