使用 rsync 或 unison 备份或同步支持 ssh 的 web 主机

August 26th, 2010 VPS评测网 Posted in VPS安全 No Comments »

使用 web 主机而非 VPS 的站长,站点的备份或同步常常是一个问题。很多站点只能使用 ftp 做单向备份,基于较弱的元信息来判定文件是否需要重新下载,缺乏校验、压缩、增量传输等高级特性。有的服务商在 web 控制面板中提供备份功能,或允许上传简单的 cron 脚本,但这些途径通常只适合备份整站或指定目录,而不方便以增量方式传输更新过的内容。Linux 下成熟的镜像同步工具是 rsync,如果你的 web 主机允许 ssh 登录,则可以考虑使用 rsync 或其它类似工具。

网上有很多说法认为 web 主机不允许跑 daemon、不允许开自定义端口,故而无法使用 rsync。其实不然,rsync 可以仅通过 ssh 连接而不需要开放额外的端口,服务端也可以借助 sshd 来启动而不需要作为 daemon 运行。我们需要的只是 ssh 登录以及运行自己上传的程序的权限。我使用的 Godaddy Economy Plan Hosting (Linux) 即属于这种情况。

Godaddy 的 web 主机不提供 rsync 程序,我们可以从本地上传一个。需要注意上传的 rsync 二进制文件应该与你的 web 主机的平台一致,连接 libc、libpopt 等库的版本一致。对于使用 x86 版 CentOS 5.2 的 Godaddy 主机,我也直接在相同版本的 CentOS 中提取了一个 rsync 上传。这时,在客户端使用“-e”参数指定连接方式为 ssh,用“–rsync-path”参数指定服务端 rsync 所在的位置,即可借助 ssh 连接传输数据了。

rsync -vzrtopgl –progress –delete -e ssh –rsync-path=/[remote_home_dir]/bin/rsync [username]@[hostname]:/[remote_home_dir]/html/ /[local_home_dir]/

如果客户端为 Windows,则可以使用 Win32 下移植的 cwRsync,这个工具基于 cygwin 库但不需要安装整个 cygwin 环境,它同时包含了 Win32 版的 OpenSSH 客户端。上述命令无须修改即可在 Windows 下运行。

rsync 解决了文件的单向的备份或镜像功能,但如果需要双向同步,更适合的工具是 unison。unison 使用 OCaml 语言开发,基于 rsync 算法对两端文件进行比较,将它们更新到一致的状态(最新的、不冲突的版本)。unison 可借助 socket、ssh 等连接方式,并支持多种操作系统。与 rsync 类似,我们需要向 web 主机上传一个 unison 二进制文件。官方只提供了最新版的源代码,需要自行下载到本地编译(事先安装 OCaml 编译器及 etags 工具)。服务端部署之后,客户端配置文件([config_name].prf)为:

root = /[local_home_dir]/html/

root = ssh://[username]@[hostname]//[remote_home_dir]/html/

servercmd = /[remote_home_dir]/bin/unison

在客户端执行 ./unison [config_name] 即可完成双向同步。注意 unison 要求服务端和客户端的主次版本号一致。

如果客户端为 Windows,同样可以使用来自 cwRsync 的 ssh 命令。如果嫌这个 ssh 外加 cygwin 库的体积太大(~5M),另一种替代的方案是使用 Putty 提供的 Plink 工具。这是一个小巧的 Win32 ssh 客户端(276K),由于运行参数与 OpenSSH 不同,因此需要写一个批处理文件(ssh.bat)来封装:

@Plink.exe [hostname] -l [username] -pw [password] “/[remote_home_dir]/bin/unison -server”

并在 unicon 配置文件中指定 ssh 命令:

sshcmd = ssh.bat

此时运行 unicon,即可使用 Plink 进行 ssh 连接。

无论使用 OpenSSH 的 ssh 还是 Putty 的 Plink,都可以借助公钥认证方式避免密码的输入。这样有利于定时备份和同步的自动化执行。具体方法不再赘述。

AddThis Social Bookmark Button

Nginx 遇到 502 Bad Gateway 自动重启脚本

July 14th, 2010 VPS评测网 Posted in VPS安全 No Comments »

放到crontab里一分钟执行一次。url和cmd根据自己的改。
原理就是用curl获取HTTP头,发现502状态码就执行重启php-fpm的命令。

#!/usr/bin/php

AddThis Social Bookmark Button

如何设置vps服务器的安全设置?

June 1st, 2010 david Posted in VPS安全 No Comments »

vps服务器安全设置 1

一、vps服务器安全设置首先禁止默认共享。

方法一:建立一个记事本,填上以下代码。保存为*.bat并加到启动项目中

net share c$ /del
net share d$ /del
net share e$ /del
net share f$ /del
net share ipc$ /del
net share admin$ /del

方法二:修改注册表,(注意修改注册表前一定要先备份一下注册表,备份方法。在 运行>regedit,选择 文件》导出 ,取个文件名,导出即可,如果修改注册表失败,可以找到导出的注册表文件双击运行即可。)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters 新建 “DWORD值”值名为 “AutoShareServer” 数据值为“0”

二、远程桌面连接配置。

开始 > 程序 > 管理工具 > 终端服务配置 > 连接

选择右侧”RDP-tcp”连接右击 属性==> 权限 删除其它用户,只保留system,添加administrator(不是administrators),设置这两个用户(system和 administrator)是”完全控制”权限,这样即使服务器被创建了其它的管理员.也无法使用终端服务。

三、serv_u安全设置(注意一定要设置管理密码,否则会被提权)

打开serv_u,点击“本地服务“,在右边点击”设置/更改密码“,如果没有设置密码,”旧密码为空,填好新密码点击”确定“。

四、关闭139、445端口

①控制面板è网络è本地链接è属性(这里勾选取消”网络文件和打印机共享”)ètcp/ip协议属性è高级èWINSèNetbios设置==>禁用Netbios,即可关闭139端口.

②关闭445端口(注意修改注册表前一定要先备份一下注册表,备份方法。在 运行>regedit,选择文件》导出 ,取个文件名,导出即可,如果修改注册表失败,可以找到导出的注册表文件双击运行即可。)

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\netBT\Parameters 新建 “DWORD值”值名为 “SMBDeviceEnabled” 数据为默认值“0”

五、删除不安全组件

WScript.Shell 、Shell.application 这两个组件一般一些ASP木马或一些恶意程序都会使用到。

方法:在“运行”里面分别输入以下命令

①regsvr32 /u wshom.ocx 卸载WScript.Shell 组件
②regsvr32 /u shell32.dll 卸载Shell.application 组件。
③regsvr32 /u %windir%\system32\Wshext.dll

六、设置iis权限。

针对每个网站单独建立一个用户。(下面仅是其中一个站点的权限设置,如果vps上有多个站点,其它站点依据本站点分别设置不同的internet来宾用户。)

①首先,右击“我的电脑”》管理》本地计算机和组》用户,在右边。右击“新用户”,建立新用户,并设置好密码。如图:

vps服务器安全设置

vps服务器安全设置

例如:本测试添加test为某一网站访问用户。

②设置站点文件夹的权限

然后,打开internet信息服务管理器。找到相应站点。右击,选择“权限”如图:

设置站点文件夹的权限

选择权限后,如下图:

vps服务器安全设置 2

删除其它用户,只保留一个超级管理员administrator(可以自己定义,注意不是管理员组administrators)。和系统用户 (system),还有添加访问网站的inernet来宾用户。可以点击“添加”将刚才在系统创建的用户(如test)添加里面。然后勾选该用户 (test)读取和运行、列出文件夹目录、读取、写入的权限。超级管员(administrator)”完全控制”,系统用户(system) “完全控制”权限。并且选择用户(test)è“高级”出现如下图选中“用在些显示的可以应用到子对象的项目替代所有子对象的权限项目”点击“应用”后, 等待文件夹权限传递完毕。

然后点“确定”。

③设置访问用户。

右击 站点 属性==》目录安全性==》编辑, 将刚才添加的用户(如test)添加到匿名访问用户。密码和添加用户时密码一致。

④设置站点访问权限。

右击要设置的站点。属性==》主目录 本地路径下面只选中 读取 记录访问 索引资源

其它都不要选择。执行权限 选择 “纯脚本”。不要选择“脚本和可执行文件”。如图所示:

其它设置和就是iis站点的一般设置,不再多说。

vps服务器安全设置注意事项:对于 ASP.NET 程序,则需要设置 IIS_WPG 组的帐号权限、上传目录的权限设置。这时需要注意,一定要将上传目录的执行权限设为“无”,将文件夹的写入权限选上,这样即使上传了 ASP、PHP 等脚本程序或者 exe 程序,也不会在用户浏览器里触发执行,

对于纯静态网站(全部是html)将(纯脚本)改成(无)。

对于某些程序可能要求everyone有完全控制的权限,可以将网站访问用户(如test用户)对文件夹设置完全控制的权限就行了,并不需要添加everyone来设置完全控制。

AddThis Social Bookmark Button

给网站根目录添加Sgid权限

May 25th, 2010 VPS评测网 Posted in VPS安全 No Comments »

网站根目录不正确的权限除了会带来安全性,还可以导致类似执行请求动作,连接信息必需提供 这样的ftp问题,该如何正确设置网站根目录的权限呢?

今天这里主要讨论给网站根目录添加sgid权限

给目录添加sgid权限,可以使在该目录下创建文件或文件的所属组继承该目录的所属组.

假设该目录的所属组是www,那么添加了sgid权限后,无论你是用什么账户创建文件,其所属组都是www

在设置sgid权限之前你需要修改文件的所属组
cd /var/www/html
chown :www .

然后再设置/var/www/html目录的sgid权限
chmod g+s .
看看所属组的权限有没有 s 位 ,比如

ll -d .
drwxr-sr-x 2 www www 4096 Apr 22 11:58

如此以后在网站根目录下创建文件的所属组就是www,无论你是用什么账户创建的.
来源:http://www.shocr.com/varwww-html-sgid/

AddThis Social Bookmark Button