Posted by zuzhihui in vps技术 on 2008/07/29 with No Comments
登录Linux VPS一般都是通过SSH,通过SSH执行Shell,比使用CPanel等面板的功能要强大。但SSH的安全性必须要引起注意,因为在互联网上每时每刻都有很多人和程序在试图破解SSH的用户名和密码,一个VPS一天遭遇上千次SSH的登录请求有时候也很常见。虽然攻击很多,但不用担心,因为只要掌握好VPS安全要点,VPS就不怕被人攻击。下面就谈谈Linux VPS SSH Server的安全性。
SSH支持常见的凭密码登录和凭证书(Public Key & Private Key)登录。我们缺省用密码登录。
这种方式的优点是方便。缺点是别人可以来猜你的密码。如果是用密码登录VPS,下面几条能提高安全性:
评证书登录VPS的优点是安全性极高,使用这种方式根本不用担心VPS的密码被别人猜到。这种方式的缺点是生成证书要稍微复杂一些。
缺省所有的Linux VPS既支持证书登录,又支持密码登录。我们强烈建议如果你已经配置了证书登录,那就拒绝使用密码登录VPS,否则VPS的安全性还是没有提高。配置方法是修改文件/etc/ssh/sshd_config包含”PasswordAuthentication no”即可。
产生证书的方法是在VPS上运行命令ssh-keygen然后一路回车即可,这个命令将会在$HOME/.ssh目录下生成两个文件,id_rsa和id_rsa.pub
test@zzh-laptop:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/test/.ssh/id_rsa):
Created directory '/home/test/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/test/.ssh/id_rsa.
Your public key has been saved in /home/test/.ssh/id_rsa.pub.
The key fingerprint is:
c4:5d:6e:50:2c:ba:a2:d6:59:12:05:cd:24:c9:24:30 test@zzh-laptop
test@zzh-laptop:~$ ls -a .ssh
. .. id_rsa id_rsa.pub
test@zzh-laptop:~$
其中id_rsa.pub是公钥,这个文件不需要保密,你可以把它公开给任何人,没有关系!id_rsa就不同了,它是私钥,这个文件一定要保密,不能让别人看到这个文件的内容。
有了公钥和私钥,接下来就把私钥,也就是id_rsa这个文件传送到你的PC机上去,然后建议在VPS上删除这个文件!
在VPS上运行如下命令:
cd
cd .ssh
cp id_rsa.pub authorized_keys2
也就是把公钥保存到$HOME/.ssh/authorized_keys2文件里面。
如果你的PC机是Linux系统(那么你应该知道怎么做了,接下来的估计是废话),那么就把私钥文件id_rsa放在$HOME/.ssh/目录下,注意.ssh目录和id_rsa文件的权限要和下面一致:
test@zzh-laptop:~$ ls -ld .ssh
drwx------ 2 test test 4096 2008-07-29 22:15 .ssh
test@zzh-laptop:~$ ls -l .ssh/id_rsa
-rw------- 1 test test 1675 2008-07-29 22:10 .ssh/id_rsa
然后在Linux PC机上运行ssh root@vps (root代表用户名,vps代表vps的IP地址)就可以无密码SSH登录VPS了。
如果你的PC机是Windows操作系统,则需要把id_rsa私钥转换成putty的ppk格式,然后配置putty软件使用证书登录VPS。如果你还使用winscp软件来拷贝文件,则还可以配置winscp使用私钥无密码访问Linux VPS
Posted by zuzhihui in vps技术 on 2008/07/28 with No Comments
在VPS上安装完MySQL之后,缺省的用户只有root@localhost,新添加MySQL用户最简单的方法是:
在phpmyadmin里面执行如下语句(语句最后要加分;号):
grant all privileges on DBNAME.* to USERNAME@localhost identified by 'PASSWORD'
flush privileges
当然在SSH里面运行
mysql -uroot -p
之后也能够输入上面的sql语句,效果一样。
解释如下:
这将添加新用户,用户名称是USERNAME,密码是PASSWORD,这个用户在DBNAME这个数据库里面有修改,读取等权限。
Posted by zuzhihui in vps技术 on 2008/07/08 with No Comments
Nginx天生是不支持CGI的,所以Nginx也就没有了CGI方面的漏洞,提高了安全性。Nginx虽然不支持CGI,但它支持fastCGI,我们可以用fastCGI来达到CGI同样的效果。本文参考了 http://wiki.codemongers.com/NginxSimpleCGI
待续
Posted by zuzhihui in vps技术 on 2008/07/07 with No Comments
这里的手动安装指的是不用Linux操作系统的包管理方式来安装,而是自己去下载phpmyadmin的文件包,自己来配置安装。由于不使用apt-get/rpm等,所以本文的安装方式适合各种Linux VPS。
确保Web Server, PHP, mysql都已经安装配置好了。容易忘记的是安装下面两个php组件:php5-mcrypt, php5-mysql,忘记了不要紧,yum/apt-get安装了就是。
phpmyadmin的官方网站好像国内不能下载,所以我去华军软件下载phpMyAdmin 2.11.7 Final for Linux,下载地址是:http://www.onlinedown.net/soft/15758.htm
你准备在哪个目录下安装phpmyadmin? 这个目录要在web server(apache, nginx等)的文档目录之下。我选定的安装目录是 /var/www/phpmyadmin,因为/var/www是我的VPS的web server的文档目录。测试一下目录的有效性:
cd /var/www/
mkdir phpmyadmin
echo "GOOD VPS" > phpmyadmin/test.html
echo '< ?phpinfo();?>' > phpmyadmin/info.php
然后在浏览器里访问: http://myhost.com/phpmyadmin/test.html 应该能看到GOOD VPS字样,如果看不到,请不要继续,先把这个问题解决了再继续。同样,访问http://myhost.com/phpmyadmin/info.php应该能看到php输出的信息。
cd /var/www/phpmyadmin
tar zxf phpMyAdmin-2.11.7-all-languages.tar.gz
mv phpMyAdmin-2.11.7-all-languages/* .
ls index.php #应该能看到index.php
然后在浏览器访问:http://myhost.com/phpmyadmin 应该会看到错误信息如下:
#1045 - Access denied for user 'root'@'localhost' (using password: NO)
这是因为还没有配置phpmyadmin,配置phpmyadmin可以通过它自带的界面进行配置,但是这种方法可选项非常多,配置很复杂,我不推荐这种方法。我的简单的配置方法是:
cd /var/www/phpmyadmin
cp config.sample.inc.php config.inc.php
vim config.inc.php # 修改相应部分为:
然后修改config.inc.php的相应部分:
$cfg['blowfish_secret'] = 'hellorashost';
$cfg['auth_type'] = 'cookie';
然后在浏览器访问:http://myhost.com/phpmyadmin 应该会看到登录界面了。
Posted by zuzhihui in vps技术 on 2008/07/03 with No Comments
RasHost 是目前国内唯一一家基于开源的Linux/Xen虚拟化技术的VPS主机供应商。专注于开放源代码的Xen等虚拟化技术,在Linux/Xen虚拟化技术 方面拥有多年的研究管理经验。我们坚信基于开源技术的虚拟化解决方案能大大降低企业的信息化成本。我们的宗旨是:为客户提供一流的技术服务,提供具有高可 靠性(Reliability),可用性(Availability),可服务性 (Serviceability)的VPS主机。我们的VPS全部位于北京的三线机房(网通,电信和铁通),无论用户身在什么地方,都能流畅访问。另外我们的VPS有多种操作系统供客户选择,包括 Windows 2003 Server, Debian Linux, Ubuntu Linux, Centos Linux等。RasHost VPS系列网站包括:
RasHost VPS 主站: http://rashost.com/
VPS Blog: http://rashost.com/blog
虚拟化社区:http://v12n.cn/
English VPS: http://www.chinavpshosting.com/
Posted by zuzhihui in vps技术 on 2008/07/03 with No Comments
MySQL是Linux的重要组件,所有的Linux几乎都自带MySQL。RasHost VPS为了给所有客户提供一个干净的VPS环境,没有预装MySQL,毕竟不是所有的客户都用MySQL。 本文给出在Linux VPS下怎样手工安装配置和优化mysql
在Debian/Ubuntu下:
apt-get install mysql-server-5.0
在CentOS下:
yum install -y mysql-server
主要是中文环境配置,配置MySQL全面缺省支持UTF-8。修改mysql的配置文件/etc/mysql/my.cnf,在[mysqld] 和 [client]段都加入如下指令:
default-character-set=utf8
MySQL一般包括3个服务,mysql, mysqld-ndb, mysql-ndb-mgm。mysql服务就是我们常有的数据库服务,mysqld-ndb是mysql cluster用的,mysql-ndb-mgm是mysql cluster的管理用的,我们在VPS上一般用不到mysql cluster,所以应该禁止掉mysql-ndb和mysql-ndb-mgm。 在Debian/Ubuntu下:
update-rc.d -f mysql-ndb remove
update-rc.d -f mysql-ndb-mgm remove
在CentOS下:
chkconfig mysql-ndb off
chkconfig mysql-ndb-mgm off
Posted by zuzhihui in vps技术 on 2008/07/01 with No Comments
在Linux VPS下运行vmstat命令可以显示系统资源占用的情况。加上一个时间参数可以定期循环输出资源占用情况,比如运行vmstat 2就可以每隔2秒钟输出一次。
vmstat命令输出的各项含义是:
项目 | 含义 |
---|---|
r | 在运行队列中等待的进程数,如果经常大于CPU的个数,则表示cpu的负荷重 |
b | 在等待io的进程数 |
项目 | 含义 |
---|---|
swpd | 已经使用的交换内存(k表示),这个数越小越好 |
free | 空闲的内存(k表示),越大越好 |
buff | 内核buffers部分的内存(k表示),这些内存也是可用的,所以这个数也是越大越好 |
cache | 内核cache部分的内存(k表示),这些内存也是可用的,所以这个数也是越大越好 |
项目 | 含义 |
---|---|
si | 从磁盘swap到内存的总量(k表示),这个数应该是0才对,大于0就表示,发生过swap,内存不够了 |
so | 从内存中swap到磁盘的总量(k表示),这个数应该是0才对,大于0就表示,发生过swap,内存不够了 |
项目 | 含义 |
---|---|
bi | 从块设备(一般是硬盘)中读入的块总数,这个数越大表示IO越忙 |
bo | 输出到块设备(一般是硬盘)中的块总数,这个数越大表示IO越忙 |
项目 | 含义 |
---|---|
in | 每秒的中断次数 |
cs | 每秒的进程上下文切换的次数 |
项目 | 含义 |
---|---|
us | CPU在用户态执行花费的时间 |
sy | CPU在内核态执行花费的时间 |
id | CPU空闲的时间 |
wa | CPU等待IO的时间,这个数字大表示IO忙 |
st | 这个我搞不清楚,如果你清楚,请留言告知,谢谢 |
Posted by zuzhihui in vps技术 on 2008/06/16 with No Comments
我们的VPS主要面向国内用户,所以语言基本上都是中文。中文有很多种编码,最流行的就是UTF8和GBK。我们推荐客户使用UTF8编码,因为这是国际标准,能兼容任何语言的编码。
在CentOS VPS下修改语言编码:
localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
export LC_ALL=zh_CN.utf8
上面第一步是用来产生编码文件,这一步不是必须,编码文件一般都存在,运行localedef –help能查看当前编码文件所在的路径。第二步更改当前的编码为zh_CN.utf8,如果要永久更改,运行:
echo 'LANG=zh_CN.UTF-8' > /etc/sysconfig/i18n
echo 'LC_ALL=zh_CN.UTF-8' >> /etc/sysconfig/i18n
在Debian/Ubuntu VPS下修改语言编码更简单:
dpkg-reconfigure locales
Posted by zuzhihui in vps技术 on 2008/06/14 with No Comments
Debian Linux 4 是我们推荐的VPS操作系统,我们在VPS上按照如下方式配置Debian Linux
apt-get install rcconf openssh-server less psmisc locales vim lftp
apt-get install bc bzip2 ntpdate sudo python curl ftp unzip
cp /usr/share/vim/vim70/vimrc_example.vim /etc/vim/vimrc.local
cat >> /etc/vim/vimrc.local < set fileformats=unix
set nobackup
set nu
set ignorecase
set tabstop=4
set shiftwidth=4
set noexpandtab
set noautoindent
set fileencodings=utf-8,euc-cn
EOF
注意:如果在ubuntu804下要把vimrc.local里面的set mouse=a注释掉,否则putty上没有办法选择
vi /etc/bash.bashrc /root/.bashrc /etc/skel/.bashrc #去掉相应的注释
echo ". /etc/bash.bashrc" >> /root/.bashrc
Posted by zuzhihui in vps技术 on 2008/06/06 with No Comments
瑞豪开源VPS的某些客户曾经碰到自己的VPS特别忙,登录特别慢的情况。出现这种情况的原因绝大部分都是因为内存用完了。
在有swap的情况下,内存用完之后会用swap,而当Linux使用swap的时候,常用Linux的人都知道这时候性能会非常差,因为这时候Linux把硬盘当内存使用,能不慢吗?在VPS上使用swap的话,会很耗费CPU资源。
在没有swap的情况下,如果内存耗尽之后,Linux的解决方案是杀掉一些占用内存的进程。这时候被Linux杀掉的那些进程,比如说是mysqld进程,往往还有一些监护进程,比如mysqld_safe等,这些监护进程检测到它所监护的进程消失了,就会立刻再创建一个mysqld进程。Linux Kernel然后再杀掉这个新创建的进程。如此反复的这些动作非常耗费CPU资源。
登录到 http://rashost.com , 在控制面板里面 “硬关机” 然后再 “开机” 即可!
近期评论