Web Server(Nginx为例)
1、为防止跨站感染,要做虚拟主机目录隔离(我是直接利用fpm建立多个程序池达到隔离效果)
2、上传目录、include类的库文件目录要禁止代码执行(Nginx正则过滤)
3、path_info漏洞修正:

if ($request_filename ~* (.*)\.php) {
set $php_url $1;
}
if (!-e $php_url.php) {
return 404;
}

4、重新编译Web Server,隐藏Server信息。
5、打开相关级别的日志,追踪可疑请求,请求者IP等相关信息。

改变目录和文件属性,禁止写入

find -type f -name \*.php -exec chmod 444 {} \;
find -type d -exec chmod 555 {} \;

注:当然要排除上传目录、缓存目录等;
同时最好禁止chmod函数,攻击者可通过chmod来修改文件只读属性再修改文件!

PHP配置
禁用危险函数:

dl,eval,exec,passthru,system,popen,shell_exec,proc_open,proc_terminate,curl_exec,curl_multi_exec,show_source,touch,escapeshellcmd,escapeshellarg

MySQL账号安全:
禁止mysql用户外部链接,程序不要使用root账号,最好单独建立一个有限权限的账号专门用于Web程序。

查杀木马、后门
常见的一句话后门:

grep -r –include=*.php  ‘[^a-z]eval($_POST’ . > grep.txt
grep -r –include=*.php  ‘file_put_contents(.*$_POST\[.*\]);’ . > grep.txt

把搜索结果写入文件,下载下来慢慢分析,其他特征木马、后门类似。有必要的话可对全站所有文件来一次特征查找,上传图片肯定有也捆绑的,来次大清洗。

查找近2天被修改过的文件:

find -mtime -2 -type f -name \*.php

注意:攻击者可能会通过touch函数来修改文件时间属性来避过这种查找,所以touch必须禁止

最后要及时补上Web程序漏洞

总结
木马、后门查杀是个漫长的过程,网站一旦被入侵任何旮旯拐角都可能留下后门。中途可能和攻击者进行神交,摸清攻击者的性格、习性等,这些都有利于查杀。要现需谨慎地和攻击者交流,期间就有几个攻击者加我QQ和我交流。
也是个很有意思的过程

这些都是非常基本的命令,希望这篇小短文对Linux新手有帮助:

查看某目录占用空间命令:

# du -sh DirPath

比如: du -sh /home/snail

查看某目录下有多少个文件命令:

# find DirPath -type f | wc -l

比如: find /home/snail -type f | wc -l

如果想查看 src 目录下有多少 C 文件,如下:

# find ./src -type f -name "*.c" | wc -l

find 命令的 -type 后的参数有以下选择,每种都代表不一样的“类型(type)”
-type 文件类型
        b      块文件(比如内存)
        c      字符文件(比如串口)
        d      目录文件(目录也是一种文件)
        p      有名管道(FIFO)
        f      普通文件
        l      符号链接(如果使用 -L 或 -follow 选项则不起作用,除非链接损坏)
        s      socket文件(比如 /tmp/mysql.sock)
        D      door (Solaris)

------------------------------------------------------------------------------------------
终端登录系统后检查日志发现 ip_conntrack: table full, dropping packet. 错误:

# vi /var/log/messages
...
Nov  8 08:54:58 server kernel: ip_conntrack: table full, dropping packet.
Nov  8 08:55:03 server kernel: printk: 49 messages suppressed.
Nov  8 08:55:03 server kernel: ip_conntrack: table full, dropping packet.
Nov  8 08:55:08 server kernel: printk: 49 messages suppressed.
...

-bash: crontab: command not found 不指定

jed , 2012-8-6 08:49 , 服务器技术 , 评论(0) , 阅读(5791) , Via 本站原创
在给VPS上的CentOS系统添加自动备份的作业时,执行:crontab -e,然后出现错误:“-bash: crontab: command not found”。

解决该错误,需要安装一个东西:vixie-cron。

执行:



yum install vixie-cron -y



就可以了
Tags: ,
    大家都知道mysql目前(5.1.x是现行用的最多的版本,至于最新版5.5.x有什么新的强大功能,就不得而知了)还是不支持sql语句直接跨服务器查询数据和操作数据的。但是我们要的数据在两个不同的服务器上数据库上,该怎么办?其实办法还是有的,谁叫网络上的牛人多啊。我这里就讲一下通过mysql federated 引擎 变相实现跨服务器的效果。废话少说,直接上操作步骤!

           1.root登录mysql,输入show engines 结果如下(如果不尽相同纯属版本问题):

+------------+----------+----------------------------------------------------------------+
| Engine     | Support  | Comment                                                        |
+------------+----------+----------------------------------------------------------------+
| MyISAM       | DEFAULT  | Default engine as of MySQL 3.23 with great performance         |
| MEMORY      | YES      | Hash based, stored in memory, useful for temporary tables      |
| InnoDB        | YES      | Supports transactions, row-level locking, and foreign keys     |
| BerkeleyDB  | NO       | Supports transactions and page-level locking                   |
| BLACKHOLE | YES      | /dev/null storage engine (anything you write to it disappears) |
| EXAMPLE     | YES      | Example storage engine                                         |
| ARCHIVE      | YES      | Archive storage engine                                         |
| CSV             | YES      | CSV storage engine                                             |
| ndbcluster   | DISABLED | Clustered, fault-tolerant, memory-based tables                 |
| FEDERATED  | YES      | Federated MySQL storage engine                                 |
| MRG_MYISAM | YES      | Collection of identical MyISAM tables                          |
| ISAM       | NO       | Obsolete storage engine                                        |
+------------+----------+----------------------------------------------------------------+


             如果 federated 显示不为 yes,也不用紧张,速度找到my.cnf文件,改配置文件一般在/etc/my.cnf  这里指linux服务器上的路径。打开编辑,找到[mysqld] 并在下面添加一行 federated 然后保存退出,重启服务,再进mysql,输入show engines 看看是不是 federated 为yes了。 如果一开始就没有federated这个项,就麻烦了。这里不多说了。

          2.假设我有两个服务器A(192.168.0.10:3306) 和 B(192.168.0.11:3306)  

          在A上建数据库DB_A,DB_A上建表TB_A,TB_A上建字段id,name,sex....随意,然后添加一些测试数据。

          在B上建数据库DB_B,DB_B上建表TB_A(不过这里的表不要工具建,直接上代码、、)

          CREATE TABLE `TB_B` (
          `id` int(11) NOT NULL AUTO_INCREMENT,
          `name` varchar(20) DEFAULT NULL,
          `sex` varchar(4) DEFAULT NULL,
          PRIMARY KEY (`id`)
          ) ENGINE=federated connection ='mysql://root:123456@192.168.0.10:3306/DB_A/TB_A'
          DEFAULT CHARSET=utf8;

          注意:新建表的结构要和A服DB_A库TB_A表上的一致哦。。。

          3.一切搞定后,在B服DB_B库上输入 select * from DB_B.TB_B  看看什么结果。是不是A服DB_A库TB_A表上的数据都可以在B服务器上显示了!其实原理和同步差不多,然而如果TB_A表上数据有变动的话,TB_B表也会时时跟进的,达到让数据保持一致的效果。既然数据都在一个服务器能显示了。接下来改怎么做,就不用多说了吧。
Tags: ,
网上有诸多介绍源码安装Mysql时开启Federated引擎的方法,诸如:

./confiure --with-plugin-federated
./confiure --with-federated-storage-engine

但本人试验统统报unrecognized options错误,google了半天,居然是Mysql的bug ,至今未修复。

经测试(version:5.1.52)只有--with-plugins=federated能用:

./confiure --with-plugins=federated


安装完成后show engines查看:

+------------+--------+
| Engine | Support |
+------------+--------+
...
| FEDERATED | NO |
...
+------------+--------+

Federated引擎安装成功。

接着将其开启,修改my.cnf,在 [mysqld] 下添加一行:

federated

重启Mysql,完成。
Tags: ,
假设我这里有大量图像、CSS、javascript等静态文件,分别放在后端服务器  192.168.1.5 和 192.168.1.6上,那么我如何利用nginx的反向代理功能将不同的 http_user_agent 请求发送到指定的服务器上呢?如 "Mozilla" 转发到 192.168.1.5 ,MSIE  转发到 192.168.1.6 。

Nginx web 服务器支持if条件表达式,由此来跳转或者使用不同的配置变量。在本文中需要使用 $http_user_agent 变量,它标记了用户浏览器的类别,版本以及操作系统的一些信息,语法如下:
Tags: ,

centos禁止ip段和禁止icmp 包 不指定

jed , 2012-5-28 10:31 , 服务器技术 , 评论(0) , 阅读(7539) , Via 本站原创
# iptables -F
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD ACCEPT
# iptables -A FORWARD -s 124.115.0.0/24 -j DROP
# iptables -I FORWARD -d 202.96.170.164 -j DROP

补充::

单个IP的命令是
iptables -I INPUT -s 124.115.0.199 -j DROP

封IP段的命令是
iptables -I INPUT -s 124.115.0.0/16 -j DROP
iptables -I INPUT -s 124.115.3.0/16 -j DROP
iptables -I INPUT -s 124.115.4.0/16 -j DROP

封整个段的命令是
iptables -I INPUT -s 124.115.0.0/8 -j DROP

封几个段的命令是
iptables -I INPUT -s 61.37.80.0/24 -j DROP
iptables -I INPUT -s 61.37.81.0/24 -j DROP

用iptables禁止一个IP地址范围

iptables -A FORWARD -s 10.0.0.1-255 -j DROP

用防火墙禁止(或丢弃) icmp 包
iptables -A INPUT -p icmp -j DROP
Tags: ,
错误描述
BEGIN failed--compilation aborted at Makefile.PL line 24.
make[1]: *** [PerlMagick/Makefile] Error 2
make[1]: Leaving directory `/root/ImageMagick-6.4.9-10'
make: *** [all] Error 2


在安装ImageMagick出现这个错误!可能是没安装perl-CPAN

运行:

yum -y install perl-CPAN

这个命令之后再重新编译一下试试看!

我的环境是centos6
PHP的安装虽然有时候很简单,可是如果应用一多,我们安装起来就很头痛了!常见的就是PHP插件的安装问题最多了!

       其实不管是你是Apache类的应用还是Nginx类的.PHP的安装都不是很简单,虽然网上很多configure,但是那不一定是适合你的,因为很多都直接关系着你的系统及系统版本和内核.那下面就进入正题

    首先来一个最常见的就是configure: error: libjpeg.(a|so) not found
分页: 10/34 第一页 上页 5 6 7 8 9 10 11 12 13 14 下页 最后页 [ 显示模式: 摘要 | 列表 ]