发布时间:2014-09-05 17:37:43作者:知识屋
邪恶八进制
好不容易把桌面都移植到ubuntu里来了,虽然有点不适应,但是还是可以接受了。(牢骚、1.4G cpu +512内存跑vista我都可以接受,还有什么是不能接受的。。。)
本文介绍了包子在Linux桌面应用安全方面的一些经验和心得,主要以ubuntu为主题,并涉及到CentOS和Gentoo等发行版,相对还是比较通用的,本人学艺不精,无法对pax进行代码级别的诠释,不足之处还请各位看官不吝斧正。请关注http://baoz.net 和 http://xsec.org 获得最新版本。
还有这个文章我只打算做一个HOWTO,告诉我们如何保护自己linux桌面的安全,我并不打算把里面涉及的所有术语和程序都解释的十分清楚,如果看官您对本文的某些地方有不懂的,可以先google一下。
一、背景
1、为什么选ubuntu因为简单好用,一装好,基本什么都配置的差不多了,我们只需要装个字体什么的,配置一下就可以用了,我在这之前用过 gentoo,无可否认,gentoo是十分优秀的发行版,但我个人觉得不适合我这种爱好升级的懒人,因为我在升级的时候总是出现很多RPWT,虽然大部分问题都可以在 forums.gentoo.org找到答案,这个是gentoo十分优秀的地方,他有一个论坛,只要在那里搜索,基本可以找到问题的答案,如果找不到,要么当了小白鼠,要么就是RPWT,gentoo还有一个很好的地方就是我觉得她们比较关心安全,明显的有一个hardened-gentoo,很不错,还有他的genkernel,只需要这个命令,他就会自己给你配置内核了,我们需要的就是make install,编译内核十分方便。而且我很害怕配置X,可能是因为大学的时候刚开始接触linux的时候被搞怕了吧,设置那什么fonts.conf文件,人都快搞晕了,搞了N久还是没搞好,不过这个事情也把我导向了学习linux的正途,我个人认为抛弃图形界面学习linux是最好的,那样逼着你用 cli,尽可能掌握更多的命令,尽可能更熟悉vi。
2、环境
IBM R50E 1.4G CPU 512M内存 集成的intel显卡
ubuntu 6.10
3、要求
读者必须会使用linux下的编辑器
读者必须会自己编译内核
读者必须知道怎么去掉代码里的注释
4、适合人群
关心自己系统安全的linux桌面用户
注意:近期有RPWT的朋友请慎用,并备份旧内核,本人对下面过程中出现的RPWT和非RPWT而导致的任何意外和非意外都不负有任何连带责任。
二、基本安全
1、口令安全:不要使用简单的密码
2、关闭ssh服务:如果你不需要远程控制你的系统的话,关闭ssh服务,ubuntu默认是没有安装这个服务的。
baoz@laptop:~$ sudo update-rc.d -f ssh remove
Removing any system startup links for /etc/init.d/ssh ...
3、BIOS密码:不要让别人用livecd进入你的系统
4、sulogin:ubuntu在这个方面做的很好,单用户进入系统还是需要密码的,因为使用的是sulogin,这个已经设置好了的,我们不需要去动,我就是介绍一下 、)
5、用普通用户登录:这个ubuntu做的很好,强迫使用普通用户,装好系统的时候先给root设置密码,sudo passwd root 就可以修改root密码了。
6、防止社会工程攻击:说白了,社会工程就是欺骗,忽悠,骗人,呵呵,当然这个骗人可能是骗了一个人,或者骗了N个人。
A、骗一个人:比如某人发给你一个elf程序,说这个程序是怎么怎么怎么的,让你试试,这个时候,你可千万不要随便执行,特别是执行这个文件需要 root权限的时候,更加不 要执行,我们可以先用strings命令查看这个程序里面的一些字符,看看有没明显的backdoor password或者bot这样的字眼。
baoz@laptop:/tmp$ strings unknown.elf | more
/lib/ld-linux.so.2
__gmon_start__
libc.so.6
stdout
strerror
snprintf
__strtol_internal
qsort
fgets
memcpy
feof
malloc
optarg
readdir
__stack_chk_fail
如果你很想知道这个程序到底做了什么并且你比较自信的话,你可以使用strace -o aa ./unknown.elf,用strace跟一下,然后用more aa命令看看这个程序到底对你的系统进行了一些什么操作
baoz@laptop:/tmp$ strace -o aa ./unknown.elf
baoz@laptop:/tmp$ more aa
execve("./unknown.elf", ["./unknown.elf"], [/* 41 vars */]) = 0
brk(0) = 0x8066260
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4f336000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=90086, ...}) = 0
mmap2(NULL, 90086, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4f320000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
不过我还是建议在使用strace的时候先用aide之类的程序对我们的HOME目录进行一个校验,或者我们大概看看我们的HOME目录下的bashrc profile之类的程序,因为我们可以防止未知程序修改我们的用户登录脚本。如果你不是十分自信,请在断网的情况下使用strace跟踪程序,并且在跟踪完毕之后重新启动系统并检查启动脚本是否被更改。还是要提醒一下,千万别用root用户来跟踪程序,因为所谓的用strace跟踪,是要执行未知程序一次的。。。。。。还有一个事情要提醒大家的是,如果我们使用file命令查看这个unknown.elf,发现他不是一般的elf文件,就是他加密了或者压缩了,那么我们要考虑是否要放弃跟踪了。
B、骗一票人:社会工程的更高境界,需要一定水平和层次,如何骗一票人呢?大致有几个办法:
a、制作一个貌似很好用,很受欢迎的程序,发布其源代码,或者代码根本无法正常编译,同时发布其二进制文件,并在其中植入后门。不是我崇洋媚外,我们要特别小心我们中国人玩这一手,为什么要特别小心中国人,因为不少中国人好这一口,并且没有什么事情中国人做不出来的。说白了,就是当你遇到一个程序,他无法提供代码或者代码无法编译的时候,我们不要用他的elf文件,无论这个程序写的多好,想想,我们都可以从windows迁移到linux了,可以放弃那么多好用的软件不用了,难道我不用你这个软件我就活不下去?呵呵
b、自己制作系统升级镜像网站,包括CentOS/RHEL的apt/yum和debian/ubuntu的source还有gentoo的 MIRROR我们都要小心,在这些很优秀的包管理程序给我们带来了极大的方便,同时国内很多热心的朋友充分利用自己的资源给大家提供了国内的升级镜像,但是我们在升级的过程中必须注意,你升级的软件很可能由于两个原因被修改了(镜像服务器主人故意放置后门和镜像服务器被入侵,比如openssh程序被加入后门或者apache的默认启动的模块被替换),但是在升级的过程中,apt或许只是会给你一个简单的警告,如果你顺手的按了一下Y,你的系统就很可能被植入了后门。下面我们详细的说说:
CentOS的apt其实还是RPM,我们可以自己打包程序成RPM文件并发布,安装的时候系统不会提出特别的警告,所以这个是十分危险的。。。如果你很关心系统安全,建议大家都从官方网站更新程序。
debian/ubuntu系列,纯正的apt,安装的时候有签名校验检查,在安装和签名不符合的deb的时候会报警,说到这个我很奇怪,我记得我安装 ubuntu610之后,我apt-get upgrade,系统竟然报glftp没通过认证:( 所以当我们apt-get install 或者upgrade的时候,千万记得小心看,不要随便按Y。警告大致是这样“【警告】:下列的软件包不能通过验证!”
gentoo系列,通过SYNC下载软件数据,通过MIRROR下载软件包,这两个东西可以在不同的站点下载,也可以在同一个站点下载。建议大家把 SYNC和MIRROR设置成不同的服务器,这样在被修改了的软件包下载回来安装的时候,校验就会出错并拒绝安装,我印象中至少有MD5和SHA1校验。这样使用的话,基本上就很安全了。
c、官方网站被入侵,相关软件被替换,这个没什么好说的了,认了吧,呵呵。
三、防止溢出攻击
1、什么是溢出攻击
略去N行。。。。。。。。有兴趣知道什么是溢出攻击的朋友可以去google搜索一下。
2、基于linux先天相对比较安全并在我们做了上述的操作之后,我们的ubuntu系统基本上可以对抗物理接触的攻击(除非拆你的硬盘。。。。),但是面对远程的威胁,我们还是需要做一些防范的,我们一起来想想,作为一个桌面机,什么东西给了别人一个远程进入的口子:
在线交流程序:QQ、MSN、Skype、IRC等
网站浏览和下载程序:Firefox、Mail、BT和Emule client等,需要特别注意的是firefox的extention其实也很危险的
本地打开的一些文件:比如pdf、ppt、doc等等
虽然linux很
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能