Linux 一键安装包集合
[ 2011/01/25 11:40 | by selboo ]
From:http://none.name/vps-one-by-one-setup/
无名收集了一些Linux VPS下的一键安装包,一键安装包可以大大简化人工成本,节约时间,不仅方便了使用Linux VPS的小白,对于Linux老手来讲编译安装需要输入大量的命令,如果是配置生产环境需要耗费大量的时间。这些一键安装包使用非常简单,傻瓜化的安装方式,采用Shell编写,容易修改。
本文会不断更新,无名如果发现有新的一键安装包会及时加进来,如果你有更好的请告知我。谢谢~
Web套装一键安装包LNMP一键安装包
LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RadHat、Debian/Ubuntu VPS(VDS)或独立主机安装LNMP(Nginx、MySQL、PHP、phpMyAdmin)生产环境的Shell程序。
适用系统:CentOS/Debian/Ubuntu
安装方法:http://lnmp.org/install.html
无名收集了一些Linux VPS下的一键安装包,一键安装包可以大大简化人工成本,节约时间,不仅方便了使用Linux VPS的小白,对于Linux老手来讲编译安装需要输入大量的命令,如果是配置生产环境需要耗费大量的时间。这些一键安装包使用非常简单,傻瓜化的安装方式,采用Shell编写,容易修改。
本文会不断更新,无名如果发现有新的一键安装包会及时加进来,如果你有更好的请告知我。谢谢~
Web套装一键安装包LNMP一键安装包
LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RadHat、Debian/Ubuntu VPS(VDS)或独立主机安装LNMP(Nginx、MySQL、PHP、phpMyAdmin)生产环境的Shell程序。
适用系统:CentOS/Debian/Ubuntu
安装方法:http://lnmp.org/install.html
Nginx的WordPress配置
[ 2010/08/23 09:25 | by selboo ]
WordPress是一个非常流行的Blog系统,它可以利用Apache的mod_rewrite来实现URL的静态化。安装好的WordPress在配置了持久链接之后,会在网站的根目录下(如果可写)生成一个.htaccess文件,这个文件可以指示Apache如何进行URL重写(如果服务器配置为允许使用htaccess的指令的话),它的内容如下:
这个文件的意思就是,如果当请求的文件不存在,那么把请求内部重定向到/index.php。Wor
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
这个文件的意思就是,如果当请求的文件不存在,那么把请求内部重定向到/index.php。Wor
Mysql数据库基本配置建议
[ 2009/08/04 11:44 | by selboo ]
作者:石展 来源:http://dbaview.cn 转载请注明作者和出处,且不能用于商业用途,违者必究。
如下是数据库安装后的基本配置规范,提取了配置中最最通用的部分,给出数据库最基本的配置要求,且给出的参数是脱离应用,不会由于参数调整引起crash的,请大家回贴多多拍砖!
一.mysql配置文件my.cnf参考:
#####################################################
[mysqld]
#通用配置部分
port
= 端口
socket
= mysql_path/var/mysql.sock
table_cache = 512
thread_cache = 30
max_connections = 500
back_log = 400
max_connect_errors = 1000
thread_concurrency = 8
log-error=ecomdb-err.log
log-slow-queries = ecomdb-slow.log
long_query_time =1
#mysql 4.1以上开启
#log-queries-not-using-indexes
#若是主库,则开启binlog
#log-bin=ecomdb-master-bin
#建议配置部分(若需结合应用寻求更多帮助,直接回贴问石展~~~~)
#若使用innodb请开启如下配置
#innodb_buffer_pool_size = (内存的50%-80%,建议保守设置)
#innodb_additional_mem_pool_size = 100M
#innodb_log_file_size = 100M
#innodb_log_buffer_size = 16M
#######################################################
2.重要配置选项说明:
(1) 最大连接数
Max_connections为允许的并行客户端最大连接数,为避免连接数溢出引起连接拒绝,调大此值至500:
Max_connections = 500
(2) 最大错误连接数
Max_connect_errors为最大错误连接数,默认为10,当由于密码错误等原因引起与数据库和客户端中断超过该数目,则阻塞后面的连接。建议调大为1000:
Max_connect_errors = 1000
(3) 表缓存
table_cache为所有线程打开的表数目的缓存,增大该值可以增加mysqld需要的文件描述符的数量,建议调至512:
table_cache = 512
(4) 线程缓存
thread_cache为数据库端的线程缓存。如果新连接很多,可以增加该变量以提高性能。此参数和应用对数据库的连接数关系较大,一般比数据库的正常连接数稍大即可,可以考虑设置为30:
thread_cache = 30
(5) back_log
当主MySQL线程在短时间内得到许多连接请求时发挥作用。主线程需要花一些时间(尽管很少)来检查连接并启动一个新线程。back_log值说明 MySQL临时停止响应新请求前在短时间内可以堆起多少请求,可以考虑调整为400:
back_log = 400
(6) 慢查询日志
如下配置将时间超过 long_query_time(秒) 的慢查询记录到适当命名的慢查询日志文件中,以方便进行数据库优化,超时时间建议为1秒,此项必须开启。
log-slow-queries = ecomdb-slow.log
long_query_time =1
#mysql 4.1以上开启,可记录未使用索引的sql
#log-queries-not-using-indexes
(7) 二进制日志
对于主库,需开启二进制日志,在灾难恢复及数据库同步时使用:
log-bin=sfdbwsz-master-bin
(8) 错误日志
将数据库严重错误时的信息写入指定文件名的日志文件中,数据库故障时需首先查看这些日志:
log-error=ecomdb-err.log
如下是数据库安装后的基本配置规范,提取了配置中最最通用的部分,给出数据库最基本的配置要求,且给出的参数是脱离应用,不会由于参数调整引起crash的,请大家回贴多多拍砖!
一.mysql配置文件my.cnf参考:
#####################################################
[mysqld]
#通用配置部分
port
= 端口
socket
= mysql_path/var/mysql.sock
table_cache = 512
thread_cache = 30
max_connections = 500
back_log = 400
max_connect_errors = 1000
thread_concurrency = 8
log-error=ecomdb-err.log
log-slow-queries = ecomdb-slow.log
long_query_time =1
#mysql 4.1以上开启
#log-queries-not-using-indexes
#若是主库,则开启binlog
#log-bin=ecomdb-master-bin
#建议配置部分(若需结合应用寻求更多帮助,直接回贴问石展~~~~)
#若使用innodb请开启如下配置
#innodb_buffer_pool_size = (内存的50%-80%,建议保守设置)
#innodb_additional_mem_pool_size = 100M
#innodb_log_file_size = 100M
#innodb_log_buffer_size = 16M
#######################################################
2.重要配置选项说明:
(1) 最大连接数
Max_connections为允许的并行客户端最大连接数,为避免连接数溢出引起连接拒绝,调大此值至500:
Max_connections = 500
(2) 最大错误连接数
Max_connect_errors为最大错误连接数,默认为10,当由于密码错误等原因引起与数据库和客户端中断超过该数目,则阻塞后面的连接。建议调大为1000:
Max_connect_errors = 1000
(3) 表缓存
table_cache为所有线程打开的表数目的缓存,增大该值可以增加mysqld需要的文件描述符的数量,建议调至512:
table_cache = 512
(4) 线程缓存
thread_cache为数据库端的线程缓存。如果新连接很多,可以增加该变量以提高性能。此参数和应用对数据库的连接数关系较大,一般比数据库的正常连接数稍大即可,可以考虑设置为30:
thread_cache = 30
(5) back_log
当主MySQL线程在短时间内得到许多连接请求时发挥作用。主线程需要花一些时间(尽管很少)来检查连接并启动一个新线程。back_log值说明 MySQL临时停止响应新请求前在短时间内可以堆起多少请求,可以考虑调整为400:
back_log = 400
(6) 慢查询日志
如下配置将时间超过 long_query_time(秒) 的慢查询记录到适当命名的慢查询日志文件中,以方便进行数据库优化,超时时间建议为1秒,此项必须开启。
log-slow-queries = ecomdb-slow.log
long_query_time =1
#mysql 4.1以上开启,可记录未使用索引的sql
#log-queries-not-using-indexes
(7) 二进制日志
对于主库,需开启二进制日志,在灾难恢复及数据库同步时使用:
log-bin=sfdbwsz-master-bin
(8) 错误日志
将数据库严重错误时的信息写入指定文件名的日志文件中,数据库故障时需首先查看这些日志:
log-error=ecomdb-err.log
IIS配置文件(MetaBase.bin)后门
[ 2008/12/08 21:42 | by selboo ]
本文的内容是如何利用IIS本身的一些特性建立后门.当然,这主要是一份供网络管理员和网络安全工作人员参考的“Know Your Enemy”类文档,作者希望这篇文章能够对检查和清除后门有所帮助,而并不鼓励或赞同利用本文的技巧进行违法活动.
首先简单介绍一下IIS的配置文件MetaBase.bin.这个文件位于%SystemRoot%\system32\inetsrv\MetaBase.bin,包含了几乎所有IIS的配置信息,是非常重要的系统文件.简单的说,我们在“intenet服务管理器”中所作的一切设置最终都会被保存在MetaBase.bin中.在日常的系统管理中除了通过“intenet服务管理器”来对MetaBase.bin进行操作外,Windows还提供了一个脚本adsutil.vbs可以对MetaBase.bin进行操作.
MetaBase的结构类似于注册表,也是树形结构,有类似键、值、项的概念.事实上在IIS3和PWS中,MetaBase的内容就是存储在注册表中的.MetaBase有两个主键:LM和Schema.其中,Schema保存了系统默认的一些配置,通常不需要修改,一旦改错也非常危险,所以无论是“intenet服务管理器”还是adsutil.vbs都没有提供修改Schema的机制.LM中包含了IIS的HTTP服务,FTP服务,SMTP服务等的配置信息.其中,LM/W3SVC/下是我们要用到的HTTP服务的配置信息.
几个下面会提到的值:
LM/W3SVC/InProcessIsapiApps,进程内启动ISAPI.这是一个数组,里面包含的是一组指向一些ISAPI的路径.在这个数组里面的ISAPI运行的时候都是由inetinfo.exe直接启动的,继承inetinfo.exe的local system权限;而不在其中的ISAPI则是由svchost.exe派生的dllhost.exe进程启动的,运行的身份是IWAM_NAME,当然,这是IIS默认的安全级别“中”的情况下,如果设为低,那么所有ISAPI都会由inetinfo.exe直接派生.另外,如果设定的时候不指定路径,而是仅指定一个扩展名,那么任何路径下的同名ISAPI在被调用的时候都会以system权限执行.
ScriptMaps,脚本映射.在某个目录下设定该值后,则向该目录请求的特定扩展名的文件会交给指定的ISAPI执行.需要强调的是,设定ScriptMaps的目录并不一定要真实存在的,只要在MetaBase中某个HTTP实例的root键下建了一个子键,对该字键同名目录的HTTP请求IIS会认为是合法的,并会交由映射的ISAPI处理.这也算是IIS的一个问题吧.
CreateProcessAsUser,在某个目录下指定改值为0,则该目录下的应用程序会继承inetinfo.exe的local system权限.
AccessWrite,决定某个目录是否允许写入,也就是WEBDAV的PUT方法.
AccessExecute,决定某个目录是否允许执行应用程序.
后门思路:
创建一个特定扩展名的脚本映射,指向我们的ISAPI,并把该ISAPI添加到InProcessIsapiApps列表中.那么我们向服务器请求该扩展名类型文件时就会在服务器上以local system权限执行该ISAPI,且所请求的文件并不需要是真实存在的.
技巧:
1、既然并不需要真的建一个目录来设定ScriptMaps,那么就可以只写一个键,并给这个键加上ScriptMaps.这样,从“intenet服务管理器”里是看不出这个目录的,更看不到这个ScriptMaps.
2、虽然“intenet服务管理器”里面看不出来,但是有经验的管理员可能习惯于偶尔用adsutil.vbs enum /p来看一下:
# adsutil.vbs enum /p /w3svc/1/root
Microsoft (R) Windows Script Host Version 5.6
版权所有(C) Microsoft Corporation 1996-2001.保留所有权利.
[/w3svc/1/root/_vti_bin]
[/w3svc/1/root/evildir]
这样就暴露了.
因为我们设的那个键并不是真实存在的虚拟目录,只是配置文件中的一个字符串,所以可以使用0x08这样的字符来做键值.0x08是Backspace键对应的16进制值,控制台上显示的效果是向左边删除一个字符,其实就是把“/”给删了:
# adsutil.vbs enum /p /w3svc/1/root
Microsoft (R) Windows Script Host Version 5.6
版权所有(C) Microsoft Corporation 1996-2001.保留所有权利.
[/w3svc/1/root/_vti_bin]
[/w3svc/1/root]
面对这种输出,一般人是不会留意的.
当然也可以设为类似_vti_script,_vti_bin这样的名字,只要不设KeyType,在“intenet服务管理器”中是看不见的.
因为系统中本身InProcessIsapiApps中有一个\WINNT\System32\msw3prt.dll,是.printer的映射,一般用不上.我们可以删掉D:\WINNT\System32\msw3prt.dll的值,换上\WINNT\System32\inetsrv\msw3prt.dll.
3、美中不足的是HTTP请求会留下痕迹,但是HTTP也有好处,那就是可以随便用一个代理服务器做跳板.另外,也可以用插入0x0D 0x0A来伪造日志的方法,(详见《Apache,IIS等多种http服务器允许通过发送回车符伪造日志》一文)这就是构造目录的技巧了.
具体实现:
当然可以用adsutil.vbs手工来加.不过需要注意,adsutil.vbs只能设,不能改,所以用adsutil.vbs的时候一定要把原先的也加上,否则原先的就会丢失.不同条目之间用空格分开.
先用下面命令取得当前的InProcessIsapiApps列表:
adsutil.vbs get /W3SVC/InProcessIsapiApps
取到之后把自己的ISAPI路径也加进去.
adsutil.vbs set /W3SVC/InProcessIsapiApps "C:\WINNT\System32\idq.dll" "C:\WINNT\System32\inetsrv\httpext.dll" ………………
ScriptMaps的设定同InProcessIsapiApps.
当然这样比较麻烦,也无法写入0x08这样的键值,所以我干脆自己写个VBS一次性搞定.至于那个做后门的ISAPI,能实现的功能就完全取决于想象力了.这里是一个简单例子的屏幕拷贝:
# nc 10.11.0.26 80
POST /%08/anything.tom
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-1998 Microsoft Corp.
C:\WINNT\system32>whoami
NT AUTHORITY\SYSTEM
C:\WINNT\system32>exit
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Wed, 08 Jan 2003 06:49:37 GMT
更隐蔽的方法是写一个特殊的ISAPI,并注册为解析asp的.通常情况下,该程序把收到的请求转给系统原来的asp.dll,并把结果返回,当收到一个特殊POST请求时就启动自己的后门代码,这样日志里面也不会有什么显示.审核时也很难发现.
除了上面所述利用脚本映射的方法外,还可以赋予某个虚拟目录AccessWrite和AccessExecute权限.需要运行后门的时候利用WEBDAV上载ISAPI,然后运行,使用完了再删除.(是否能删除?还是需要restart W3SVC ?我没有试验.)如果上载的不是DLL而是EXE文件,那么把该目录下的CreateProcessAsUser设为0也可以获得local system权限,这个方法早有人撰文论述.但AccessWrite和AccessExecute的改变都可以在“intenet服务管理器”中看出来,隐蔽性就差了.
首先简单介绍一下IIS的配置文件MetaBase.bin.这个文件位于%SystemRoot%\system32\inetsrv\MetaBase.bin,包含了几乎所有IIS的配置信息,是非常重要的系统文件.简单的说,我们在“intenet服务管理器”中所作的一切设置最终都会被保存在MetaBase.bin中.在日常的系统管理中除了通过“intenet服务管理器”来对MetaBase.bin进行操作外,Windows还提供了一个脚本adsutil.vbs可以对MetaBase.bin进行操作.
MetaBase的结构类似于注册表,也是树形结构,有类似键、值、项的概念.事实上在IIS3和PWS中,MetaBase的内容就是存储在注册表中的.MetaBase有两个主键:LM和Schema.其中,Schema保存了系统默认的一些配置,通常不需要修改,一旦改错也非常危险,所以无论是“intenet服务管理器”还是adsutil.vbs都没有提供修改Schema的机制.LM中包含了IIS的HTTP服务,FTP服务,SMTP服务等的配置信息.其中,LM/W3SVC/下是我们要用到的HTTP服务的配置信息.
几个下面会提到的值:
LM/W3SVC/InProcessIsapiApps,进程内启动ISAPI.这是一个数组,里面包含的是一组指向一些ISAPI的路径.在这个数组里面的ISAPI运行的时候都是由inetinfo.exe直接启动的,继承inetinfo.exe的local system权限;而不在其中的ISAPI则是由svchost.exe派生的dllhost.exe进程启动的,运行的身份是IWAM_NAME,当然,这是IIS默认的安全级别“中”的情况下,如果设为低,那么所有ISAPI都会由inetinfo.exe直接派生.另外,如果设定的时候不指定路径,而是仅指定一个扩展名,那么任何路径下的同名ISAPI在被调用的时候都会以system权限执行.
ScriptMaps,脚本映射.在某个目录下设定该值后,则向该目录请求的特定扩展名的文件会交给指定的ISAPI执行.需要强调的是,设定ScriptMaps的目录并不一定要真实存在的,只要在MetaBase中某个HTTP实例的root键下建了一个子键,对该字键同名目录的HTTP请求IIS会认为是合法的,并会交由映射的ISAPI处理.这也算是IIS的一个问题吧.
CreateProcessAsUser,在某个目录下指定改值为0,则该目录下的应用程序会继承inetinfo.exe的local system权限.
AccessWrite,决定某个目录是否允许写入,也就是WEBDAV的PUT方法.
AccessExecute,决定某个目录是否允许执行应用程序.
后门思路:
创建一个特定扩展名的脚本映射,指向我们的ISAPI,并把该ISAPI添加到InProcessIsapiApps列表中.那么我们向服务器请求该扩展名类型文件时就会在服务器上以local system权限执行该ISAPI,且所请求的文件并不需要是真实存在的.
技巧:
1、既然并不需要真的建一个目录来设定ScriptMaps,那么就可以只写一个键,并给这个键加上ScriptMaps.这样,从“intenet服务管理器”里是看不出这个目录的,更看不到这个ScriptMaps.
2、虽然“intenet服务管理器”里面看不出来,但是有经验的管理员可能习惯于偶尔用adsutil.vbs enum /p来看一下:
# adsutil.vbs enum /p /w3svc/1/root
Microsoft (R) Windows Script Host Version 5.6
版权所有(C) Microsoft Corporation 1996-2001.保留所有权利.
[/w3svc/1/root/_vti_bin]
[/w3svc/1/root/evildir]
这样就暴露了.
因为我们设的那个键并不是真实存在的虚拟目录,只是配置文件中的一个字符串,所以可以使用0x08这样的字符来做键值.0x08是Backspace键对应的16进制值,控制台上显示的效果是向左边删除一个字符,其实就是把“/”给删了:
# adsutil.vbs enum /p /w3svc/1/root
Microsoft (R) Windows Script Host Version 5.6
版权所有(C) Microsoft Corporation 1996-2001.保留所有权利.
[/w3svc/1/root/_vti_bin]
[/w3svc/1/root]
面对这种输出,一般人是不会留意的.
当然也可以设为类似_vti_script,_vti_bin这样的名字,只要不设KeyType,在“intenet服务管理器”中是看不见的.
因为系统中本身InProcessIsapiApps中有一个\WINNT\System32\msw3prt.dll,是.printer的映射,一般用不上.我们可以删掉D:\WINNT\System32\msw3prt.dll的值,换上\WINNT\System32\inetsrv\msw3prt.dll.
3、美中不足的是HTTP请求会留下痕迹,但是HTTP也有好处,那就是可以随便用一个代理服务器做跳板.另外,也可以用插入0x0D 0x0A来伪造日志的方法,(详见《Apache,IIS等多种http服务器允许通过发送回车符伪造日志》一文)这就是构造目录的技巧了.
具体实现:
当然可以用adsutil.vbs手工来加.不过需要注意,adsutil.vbs只能设,不能改,所以用adsutil.vbs的时候一定要把原先的也加上,否则原先的就会丢失.不同条目之间用空格分开.
先用下面命令取得当前的InProcessIsapiApps列表:
adsutil.vbs get /W3SVC/InProcessIsapiApps
取到之后把自己的ISAPI路径也加进去.
adsutil.vbs set /W3SVC/InProcessIsapiApps "C:\WINNT\System32\idq.dll" "C:\WINNT\System32\inetsrv\httpext.dll" ………………
ScriptMaps的设定同InProcessIsapiApps.
当然这样比较麻烦,也无法写入0x08这样的键值,所以我干脆自己写个VBS一次性搞定.至于那个做后门的ISAPI,能实现的功能就完全取决于想象力了.这里是一个简单例子的屏幕拷贝:
# nc 10.11.0.26 80
POST /%08/anything.tom
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-1998 Microsoft Corp.
C:\WINNT\system32>whoami
NT AUTHORITY\SYSTEM
C:\WINNT\system32>exit
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Wed, 08 Jan 2003 06:49:37 GMT
更隐蔽的方法是写一个特殊的ISAPI,并注册为解析asp的.通常情况下,该程序把收到的请求转给系统原来的asp.dll,并把结果返回,当收到一个特殊POST请求时就启动自己的后门代码,这样日志里面也不会有什么显示.审核时也很难发现.
除了上面所述利用脚本映射的方法外,还可以赋予某个虚拟目录AccessWrite和AccessExecute权限.需要运行后门的时候利用WEBDAV上载ISAPI,然后运行,使用完了再删除.(是否能删除?还是需要restart W3SVC ?我没有试验.)如果上载的不是DLL而是EXE文件,那么把该目录下的CreateProcessAsUser设为0也可以获得local system权限,这个方法早有人撰文论述.但AccessWrite和AccessExecute的改变都可以在“intenet服务管理器”中看出来,隐蔽性就差了.