亮的MARK库

mark.liangliang.org.cn

2008-11-27 Toy Posted in Apps, ServerRSS

[作者/Zhang Huangbin]

iRedMail,中文名为”艾瑞得邮件”,由 rhms 项目更名而来。是针对 Red Hat(R) Enterprise Linux 和 CentOS 设计的邮件服务器解决方案,是在操作系统安装好后使用的一套 shell 脚本,用于快速部署一套功能完善的邮件服务器解决方案。

最新发布的 iRedMail 0.3.2-beta1 主要是基于 0.3.1 做了一些 bug 修正,完善已有组件的功能,并更新了少量软件包。

主要的改进有:

* Roundcube WebMail 现在已经搭配基于 LDAP 的方案,但用户自行修改密码和设置转发的功能暂时无法使用。设置假期自动回复的功能仍可正常使用。并且自动使用 OpenLDAP 做为全局地址簿。 * 从基于 LDAP 的方案中移除 postgrey,统一使用 Policyd v1 提供灰名单(greylist)服务。 注意:以上两个更改使得 MySQL 成为基于 LDAP 的方案中的一个必不可少的组件。 * 在 Horde WebMail 里,用户可以自定义邮件过滤规则,如果使用 OpenLDAP 存储邮件账号,则会默认使用 OpenLDAP 作为全局地址簿。 * 改进对已有 AMP (Apache, MySQL, PHP) 环境的支持。 * 默认为 MySQL 启用 SSL 支持。 * 默认使用 unix socket 方式连接 MySQL 数据库,性能更好一些。 * 首次引入 php-eaccelerator — PHP 加速器。 * 首次引入 Awstats-6.8 作为 web 和 mail 日志分析工具。 * 增加补丁用于修正 PostfixAdmin 登录页面的安全隐患。参考链接:https://sourceforge.net/mailarchive/forum.php?thread\_name=49057E07.30… * 在 logrotate 中默认使用 bzip2 对日志文件进行压缩,以得到更大的压缩比,为您节省一些磁盘空间。 * 修正 ExtMail 默认附件大小。感谢 tongds@gmail 的反馈。 * 在 Dovecot 中集成对磁盘容量告警、删除过期邮件的支持。但默认禁用。 注:用于邮箱容量告警的脚本需要自己编写,也可以从 iredmailsupport@ 邮件列表的文件下载区获得模板。 * 增强 mailgraph,现在可以正确统计 greylist 信息了。 * 软件包更新: - ClamAV => 0.94.1。感谢 chenwei1973@gmail 的提醒。 - php-rrdtool, rrdtool => 1.2.28 - phpMyAdmin => 2.11.9.3 * 移除了几个工具脚本: - tools/backup_mysql_db.sh:MySQL 数据库备份脚本 - tools/convert_winmail_mailbox.sh:迁移 WinMail 用户邮箱的脚本 - tools/create_mail_user_ldap.sh:批量创建 LDAP 用户的脚本 - tools/create_mail_user_mysql.sh:批量创建 MySQL 用户的脚本 - tools/get_helo_count.sh:统计 HELO 标识的脚本 - tools/migrate_extmail_mailbox.sh:迁移 ExtMail 用户的脚本 - tools/sysreport.sh:获取系统报告的脚本

项目主页:http://iredmail.googlecode.com 下载地址:http://code.google.com/p/iredmail/downloads/list

Hi Hans.

Hans du Plooy, 12.04.2007 22:00: > When I load my wireless driver, be it ndiswrapper or bcm43xxx, the > interface comes up as eth0_rename or wlan0_rename, and I see this in > dmesg: > > wlan0: ethernet device 00:14:a5:2a:04:28 using NDIS driver: bcmwl5, > version: 0x40a2801, NDIS version: 0x501, vendor: ‘’, 14E4:4318.5.conf > wlan0: encryption modes supported: WEP; TKIP with WPA, WPA2, WPA2PSK; > AES/CCMP with WPA, WPA2, WPA2PSK > ndiswrapper: changing interface name from ‘wlan0’ to ‘wlan0_rename’ > usbcore: registered new interface driver ndiswrapper > > Anybody know why? It’s not too much of a problem, the interface still > works, it just looks out of place.

Do you have ifrename installed? If yes, just get rid of it and run /lib/udev/write_net_rules instead; this will generate udev-based persistent naming rules for your network devices; you can modify them by editing the file /etc/udev/rules.d/z25_persistent-net.rules. What to edit should be pretty clear; if not, have look at this[0] howto.

sudo rm -f /etc/fonts/conf.d/44-wqy-zenhei.conf; sudo wget http://wenq.org/upload/44-wqy-zenhei.conf –output-document=’/etc/fonts/conf.d/44-wqy-zenhei.conf’

也就是替换44-wqy-zenher.conf内容为如下:

WenQuanYi Zen Hei false 0 true true hintnone false false none false

serif Bitstream Vera Serif DejaVu Serif WenQuanYi Zen Hei sans-serif Bitstream Vera Sans DejaVu Sans WenQuanYi Zen Hei monospace Bitstream Vera Sans Mono DejaVu Sans Mono

刚接触dspam一个多星期,把安装和学习的过程记录下来。不对的地方请多指教。

本文最初发表于 http://hi.baidu.com/delphiss/blog/item/24da4611395c33fac3ce79c3.html 转载请注明出处 作者:wdy

一、 安装

下载 dspam-3.8.0.tar.gz #./configure \ –with-dspam-home=/var/dspam \ –with-dspam-home-owner=vmail \ –with-dspam-home-group=postdrop \ –with-dspam-mode=2510 \ –with-dspam-owner=vmail \ –with-dspam-group=postfix \ –with-delivery-agent=/usr/sbin/sendmail \ –with-storage-driver=mysql_drv \ –with-mysql-includes=/usr/include/mysql \ –with-mysql-libraries=/usr/lib/mysql \ –enable-preferences-extension \ –enable-virtual-users \ –enable-daemon \ –enable-debug \ –enable-syslog \ –enable-clamav \ –with-logdir=/var/log/dspam

#make #make install –with-storage-driver: 存储垃圾邮件识别数据用的存储器类型,这里用了mysql,其他类型请查询安装文档。 –with-dspam-home-owner 和 –with-dspam-owner 直接用了maildrop投递邮件的用户vmail,也可以单独建一个用户。 –enable-virtual-users 启用虚拟user,与unix系统用户分离。 –with-dspam-home:存储user和一些配置信息的路径。

创建mysql的库和表。

# cd src/tools.mysql_drv # mysql -u root -p -e “create database dspam” # mysql -u root -p -e “grant all on dspam.* to dspam@localhost identified by ‘passwd123456’”

给 mysql_objects-4.1.sql 和 virtual_users.sql 增加一行内容到最上面: use dspam;

# mysql -u dspam -p < mysql_objects-4.1.sql # mysql -u dspam -p < virtual_users.sql

二、配置

安装后dspam的配置文件为 /usr/local/etc/dspam.conf,修改之

TrustedDeliveryAgent    /usr/sbin/sendmail Trust root Trust vmail Trust postfix

# spamAction 表示识别为垃圾邮件后的处理,quarantine:扔到隔离区,tag:给邮件Subject增加标记,deliver:直接投递 # quarantine 需要设置 QuarantineAgent Preference “spamAction=tag” # spamSubject tag操作的时候给邮件Subject前面增加的字符 Preference “spamSubject=SPAM” #signatureLocation: dspam给每个识别后的邮件编个号码,将来可以用作重新训练 #’message’: 把signature加在邮件正文后面,’headers’:把signature加在邮件头里 Preference “signatureLocation=headers” # ‘message’ or ‘headers’ Preference “showFactors=on”

# mysql的设置 MySQLServer             /var/lib/mysql/mysql.sock MySQLUser               dspam MySQLPass               passwd123456 MySQLDb                 dspam MySQLCompress           true

启动 dspam 后台进程: #/usr/local/bin/dspam –daemon &

三、原理

先说明一一下dspam的基本原理和一个非常重要的概念:user。

dspam刚安装完成的时候,还不能识别垃圾邮件,因为没训练它。对它的训练,就是喂给他一些邮件,并注明是垃圾邮件还是不是垃圾邮件。dspam把垃圾或非垃圾邮件的特征存储下来,以备后面识别使用。

当dspam开始上岗工作的时候,它从标准输入里读取邮件内容,根据之前识别的数据和一些算法来确定邮件是否是spam,然后根据配置文件进行下一步的操作(给邮件打标记或扔到隔离区等)。

现在问题来了,如果一个用户总是把某些邮件训练为垃圾邮件,而另外一些用户不认为是垃圾邮件,就会造成识别混乱。所以dspam在训练或识别的时 候,都需要加一个参数 user ,通过 不同的 user 参数,把不用的用户的特征数据分开。设置 –enable-virtual-users后, user 参数只是一个字符符号,可以任意来取,不和系统账号或邮件账号必然对应。

下面的问题:怎么设定user?

基本的就两种方式: 1. 每个邮箱账号对应一个训练和识别user,user的名字可以设置成邮箱账号(user@domain.com),每个用户自己训练dspam识别垃圾邮件。 2. 系统使用一个全局固定的user,由管理员来训练识别垃圾邮件,这个全局user来为所有的邮箱账号服务。

上面的方案各有利弊。 方案1优点是用户自己训练邮件,不会造成有异议识别,缺点就是每个用户得自己亲自来训练。如果用户账号数目很多,n多的user管理也是个麻烦事。 方案2的优点是用户不必自己训练了,由管理员代劳,但可能会造成误识别。比如管理员认为某邮件是垃圾邮件,而一些用户则认为不是。

如果确定使用方案1,可以加上参数 –enable-domain-scale,这样user的数据可以存储为 $HOME/data/domain.com/user,否则就是 $HOME/data/user。

本文后面用是方案2。

四、训练识别

比如我们手头有个垃圾邮件的样本: spam01.eml,可以这样训练它

cat spam01.eml /usr/local/bin/dspam –mode=teft –source=corpus –class=spam –feature=noise –user mydspam

--class=spam 表示训练识别垃圾邮件,训练识别非垃圾邮件则用参数 –class=innocent –source=corpus 与 –source=error 对应的设置 –user mydspam 训练的user,dspam会自动创建。

dspam提供了一个批量训练邮件的命令:

dspam_train [username] [spam_dir] [nonspam_dir]

username 是训练用的user,spam_dir 和 nonspam_dir 是垃圾邮件和非垃圾邮件存储的目录。目录下每个邮件一个文件。

五、postfix的配置

修改master.cf 加上:

dspam   unix    -       n       n       -       10      pipe flags=Rhqu user=vmail argv=/usr/local/bin/dspam –deliver=innocent –user mydspam -i -f $sender – $recipient

dspam就是用来识别处理垃圾邮件的transport, –user mydspam 是识别邮件的user。如果采用方案1,那么有可能就是 –user $user 或 –user $recipient。 –deliver=innocent 表示对非垃圾邮件进行投递。 -f $sender – $recipient 告诉dspam发信人和收信人地址。

交给dspam的邮件,dspam先根据 user 参数取出之前训练产生的特征数据进行识别,识别后会调用 /usr/sbin/sendmail 再送给postfix,postfix则会交给maildrop等mda将邮件投入邮箱。

main.cf 需要增加: dspam_destination_recipient_limit = 1

下面一个问题:在哪个环节让postfix来识别处理垃圾邮件?

postfix灵活的结构可以设置在n个地方进行垃圾邮件的过滤,比如 给smtpd 增加参数:-o content_filter=dspam: 等等,这里用下面的一种方式。

修改 main.cf: smtpd_client_restrictions = permit_sasl_authenticated, permit_mynetworks, check_client_access pcre:/etc/postfix/dspam_filter_access

check_client_access 将根据smtp客户端host和ip进行过滤判别。 permit_sasl_authenticated permit_mynetworks 避免了对SMPT用户认证通过的和mynetworks的客户端的垃圾邮件识别。

# vi /etc/postfix/dspam_filter_access /./     FILTER dspam:dspam

/./ 是个正则表达式,表示匹配所有主机和ip。

通过maillog可以看到dspam的工作情况。 dspam会给经手的邮件头部加上自己的信息。 X-DSPAM-Result: Spam 表示此封邮件为 spam X-DSPAM-Result: Innocent 表示此封邮件为 nonspam

六、配置DSPAM Web Control

DSPAM Web Control 的功能是让dspam的user设置个人参数,查看识别邮件记录,还可以重新训练识别错误的邮件。 Web Control的用户通过Apache的HTTP Auth来登录,所以要把dspam user加到AuthUserFile里。 (前面提到的方案1在这里会有很大的问题)

#mkdir /var/www/cgi-bin/dspam #cp -R webui/cgi-bin/* /var/www/cgi-bin/dspam/ #cp webui/htdocs/base.css /var/www/htdocs/ #cp webui/htdocs/dspam-logo-small.gif /var/www/htdocs/ #chown -R vmail.vmail /var/www/cgi-bin/dspam/

base.css 和 dspam-logo-small.gif 拷贝到apache的 DocumentRoot

创建apache http auth 用户 #/usr/local/apache2/bin/htpasswd -c /usr/local/apache2/dspam.pass mydspam

设置管理员用户名: echo “mydspam” > /var/www/cgi-bin/dspam/admins 修改 Apache httpd.conf <Directory “/var/www/cgi-bin/dspam”> Options ExecCGI Options -Indexes DirectoryIndex dspam.cgi AllowOverride All Order deny,allow Deny from all AuthType Basic AuthName “DSPAM Control Center” AuthUserFile /usr/local/apache2/dspam.pass Require valid-user Satisfy Any

ScriptAlias /dspam /var/www/cgi-bin/dspam

Web Control 生成图形需要用到Perl的几个图形模块: GD::Graph::bars, GD, GD::Graph, GD::Text::Align,请安装。

修改 /var/www/cgi-bin/dspam/configure.pl

$CONFIG{‘DSPAM_HOME’}   = “/var/dspam”; $CONFIG{‘DSPAM_BIN’}    = “/usr/local/bin”; $CONFIG{‘LOCAL_DOMAIN’} = “yourdomain.com”;

#下面两个根据编译参数修改 #$CONFIG{‘LARGE_SCALE’} = 0; #$CONFIG{‘DOMAIN_SCALE’} = 0; 打开网页 http://host/dspam/dspam.cgi , 输入用户名口令登录。

如何在Debian下简单配置apache2和perl的cgi程序运行环境。

1 修改apache2配置文件

将/etc/apache2/apache2.conf 文件打开,找到如下内容:

#AddHandler cgi-script .cgi

修改成:

AddHandler cgi-script .cgi .pl

如果你打算偷懒,那么直接复制下面的代码好了。

cd /etc/apache2

sudo sed ‘s/#AddHandler cgi-script .cgi/AddHandler cgi-script .cgi .pl/g’ apache2.conf > ~/temp

sudo mv ~/temp apache2.conf

2 安装mod_perl默认包

sudo apt-get install libapache2-mod-perl2

3 相关配置

默认安装好后,cgi-bin的目录默认指向 /usb/lib/cgi-bin/目录。而安装apache2的时候这个目录一般是不会自动创建的。之所以选择这个目录,原因在下面这个文件:

/etc/apache2/sites-enabled/000-default

该文件是个链接,指向

/etc/apache2/sites-available/default

打开看看,里面有这样的一段,把cgi-bin目录指向了实际的/usr/lib/cgi-bin/目录。

\ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

<Directory “/usr/lib/cgi-bin”>

\AllowOverride None

Options ExecCGI -\MultiViews +\SymLinksIfOwnerMatch

Order allow,deny

Allow from all

这就是问题根源所在。我们可以修改这个目录,指向自己创建的一个目录,也可以留着它,自行添加一个目录。 可以不必如它那么复杂,用这样的格式:

\ScriptAlias /cgi/ /home/*/src/perl/cgi-bin/

<Directory /home/*/src/perl/cgi-bin>

Options ExecCGI

\SetHandler cgi-script

这个格式的意思是定义一个 http://localhost/bin 的虚拟目录,指向/home/*/src/perl/cgi-bin/ 这个实际的目录,并且目录下所有的东西都认为是cgi程序。

不想把所有的东西都当成cgi程序?那就改成这样:

\ScriptAlias /cgi/ /home/*/src/perl/cgi-bin/

<Directory /home/*/src/perl/cgi-bin>

Options +ExecCGI

\AddHandler cgi-script .cgi .pl

只把后缀是cgi和pl的文件当做cgi程序。

4 测试配置成功与否

保存一个如下内容的文件,比如命名为 helloworld.pl 文件到定义的cgi文件夹中。

#!/usr/bin/perl

print “Content-type: text/html\n\n”;

print “Hello, World.”;

然后赋予可执行权限

sudo chmod a+x helloworld.pl

最后重启一下apache2

sudo /etc/init.d/apache2 restart

http://www.liangliang.org.cn/at\_tools/phpspy\_2008.rar

PhpSpy

项目信息

发布时间:2008-01-07 项目作者:angel 项目类别:WEB后门 工作环境:PHP 项目版本:2008 2008地址:http://www.4ngel.net/project/phpspy\_2008.rar 2006地址:http://www.4ngel.net/project/phpspy\_2006.rar 2005地址:http://www.4ngel.net/project/phpspy\_2005.rar 1.5 下载:http://www.4ngel.net/project/phpspy\_v1.5.rar

项目介绍

PhpSpy是一个用PHP语言编写的在线管理程序,同时集成很多和海阳顶端网所类似的功能,也可以说是一个WEB方式的后门,结合现有的攻击手法,本着实用、简洁、小巧的原则,开发了这个程序。由于程序性质问题,公开提供下载的版本不会提供更多的操作。例如MSSQL连接、WIN主机反弹等。

2008功能列表(基于2006) 加强cookie功能。 改成全英文版并根据数据库的编码设置声明相应的页面编码,以确保各编码服务器能正常输出。 加强文件管理功能,增加批量删除文件。增加新的文件属性显示方式和宿主。增加目录改名。增加查看网站根目录和当前目录下的所有可写子目录。在WIN主机下自动探测所有分区以及分区类型。 增加通过MYSQL方式上传下载文件,其中下载文件不需要数据库用户具有FILE权限。即可完整下载。程序自动判断两种方式下载。上传需要具有FILE权限。 加强MYSQL数据库管理功能,增加查询回显并带分页显示,增加插入、修改、删除记录。增加查看表结构和常用信息、删除表功能。并支持多句同时运行。 增加执行PHP代码功能,并附加一些有用的PHP代码。例如Serv-U本地提权利用代码,适用于6.4以及一下版本,以及MYSQL反弹SHELL等。 增强执行命令功能。 简化一些PHP环境变量显示。 大大提高各个操作的效率,尤其是文件管理。加快多文件目录的输出速度。 基本全部改为POST方式提交数据和跳转。大大的增加了隐蔽性。防止管理员查看日志找出端倪。 增加linux主机端口反弹功能。使用PERL和C 双重实现。 ……

2006功能列表(基于2005) 用函数生成页面中的表格,体积比不用函数生成的时候减少了7kb,比全功能海阳2006小39kb 去掉了SESSION认证,提高兼容性 增加在WIN服务器上执行命令/程序的操作 增加在WIN服务器上对注册表的操作 增加在线HTTP代理功能 增加直接下载MYSQL备份文件 增加文件名改名 增加了克隆时间和自定义文件时间 2005版登陆要点按钮,这个版本直接回车 删除了几个地方的垃圾多余代码,换更加简练的方式写 修改了他妈的多处细节,更加流氓化

2005功能列表(基于1.5)

完整版(39.1K) 增加选定文件打包下载 增加备份指定数据库 增加显示主机名和IP 增建文件创建时间和最后修改时间的比较 修正几个小BUG 优化部分代码

精简版(20.7K) 删除新建目录功能 删除文件属性修改功能 删除PHP环境变量功能 删除Session的验证方式 增加显示主机名和IP 修正几个小BUG 优化部分代码

1.5功能列表(基于1.0) 支持MySQL语句执行 修正登陆验证的BUG 增加三个执行系统命令的函数 正确识别各个文件的URL 修正下载文件下了多余的HTML代码的BUG 用户可查看自定义PHP配置参数 大幅度优化、修正程序代码,修正若干细节

1.0功能列表 在线新建文件、文件夹,在权限允许的情况下可完全控制文件,具备一般文件管理所具备的功能。 在权限允许的情况下,可下载任何硬盘上存在的文件。 可以很好的修改目录以及文件的权限(不是win那种,是*nix的0XXX那种,win系统下也可以操作)。 比其他的同类程序更好的识别URL,完美解决浏览器某些特殊字符的编码问题(现有的程序,没有一个可以很好识别某些特殊字符的)。 会自动探测被禁用函数而决定某些操作。 会自动探测安全模式的状态而决定某些操作。 安全模式关闭的情况下,可选择用system、passthru两种函数执行系统命令。 没有开发某些多余的操作,精简,实用,体积仅22.3K,仅仅是海阳顶端网ASP木马2004的1/2。 在phpinfo函数被禁用的情况下,可以进入“PHP环境变量”获得很多有用的信息。 可选择是否需要登陆验证,同时可以通过配置选择session和cookie两种方式进行验证。 更多功能请自己挖掘……

Installation on Debian unstable (sid) or testing (lenny)

Debian now contains the packaged module source and prebuilt modules for Debian kernels.

If you use a custom kernel, you can build tp_smapi with module-assistant:

* # aptitude install tp-smapi-source * # m-a -t a-i tp-smapi

If you use a stock Debian kernel, you can install the tp_smapi modules with:

* # apt-get install tp-smapi-modules-`uname -r`

介绍Linux系统安全的命令。 passwd

1.作用 passwd命令用来修改账户的登陆密码,使用权限是所有用户。

2.格式 passwd [选项] 账户名称

3.主要参数 -l:锁定已经命名的账户名称,只有具备超级用户权限的使用者方可使用。 -u:解开账户锁定状态,只有具备超级用户权限的使用者方可使用。 -x, –maximum=DAYS:最大密码使用时间(天),只有具备超级用户权限的使用者方可使用。 -n, –minimum=DAYS:最小密码使用时间(天),只有具备超级用户权限的使用者方可使用。 -d:删除使用者的密码, 只有具备超级用户权限的使用者方可使用。 -S:检查指定使用者的密码认证种类, 只有具备超级用户权限的使用者方可使用。

4.应用实例

$Content$nbsp;passwd Changing password for user cao. Changing password for cao (current) UNIX password: New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.

从上面可以看到,使用passwd命令需要输入旧的密码,然后再输入两次新密码。

su

1.作用 su的作用是变更为其它使用者的身份,超级用户除外,需要键入该使用者的密码。

2.格式 su [选项]… [-] [USER [ARG]…]

3.主要参数 -f , –fast:不必读启动文件(如 csh.cshrc 等),仅用于csh或tcsh两种Shell。 -l , –login:加了这个参数之后,就好像是重新登陆为该使用者一样,大部分环境变量(例如HOME、SHELL和USER等)都是以该使用者(USER)为主,并且工作目录也会改变。如果没有指定USER,缺省情况是root。 -m, -p ,–preserve-environment:执行su时不改变环境变数。 -c command:变更账号为USER的使用者,并执行指令(command)后再变回原来使用者。 USER:欲变更的使用者账号,ARG传入新的Shell参数。

4.应用实例 变更账号为超级用户,并在执行df命令后还原使用者。 su -c df root

umask

1.作用 umask设置用户文件和目录的文件创建缺省屏蔽值,若将此命令放入profile文件,就可控制该用户后续所建文件的存取许可。它告诉系统在创建文件时不给谁存取许可。使用权限是所有用户。

2.格式 umask [-p] [-S] [mode]

3.参数 -S:确定当前的umask设置。 -p:修改umask 设置。 [mode]:修改数值。

4.说明 传统Unix的umask值是022,这样就可以防止同属于该组的其它用户及别的组的用户修改该用户的文件。既然每个用户都拥有并属于一个自己的私有组,那么这种“组保护模式”就不在需要了。严密的权限设定构成了Linux安全的基础,在权限上犯错误是致命的。需要注意的是,umask命令用来设置进程所创建的文件的读写权限,最保险的值是0077,即关闭创建文件的进程以外的所有进程的读写权限,表示为-rw——-。在~/.bash_profile中,加上一行命令umask 0077可以保证每次启动Shell后, 进程的umask权限都可以被正确设定。

5.应用实例

umask -S u=rwx,g=rx,o=rx umask -p 177 umask -S u=rw,g=,o=

上述5行命令,首先显示当前状态,然后把umask值改为177,结果只有文件所有者具有读写文件的权限,其它用户不能访问该文件。这显然是一种非常安全的设置。

chgrp

1.作用 chgrp表示修改一个或多个文件或目录所属的组。使用权限是超级用户。

2.格式 chgrp [选项]… 组 文件… 或 chgrp [选项]… –reference=参考文件 文件…

将每个<文件>的所属组设定为<组>。

3.参数 -c, –changes :像 –verbose,但只在有更改时才显示结果。 –dereference:会影响符号链接所指示的对象,而非符号链接本身。 -h, –no-dereference:会影响符号链接本身,而非符号链接所指示的目的地(当系统支持更改符号链接的所有者,此选项才有效)。 -f, –silent, –quiet:去除大部分的错误信息。 –reference=参考文件:使用<参考文件>的所属组,而非指定的<组>。 -R, –recursive:递归处理所有的文件及子目录。 -v, –verbose:处理任何文件都会显示信息。

4.应用说明 该命令改变指定指定文件所属的用户组。其中group可以是用户组ID,也可以是/etc/group文件中用户组的组名。文件名是以空格分开的要改变属组的文件列表,支持通配符。如果用户不是该文件的属主或超级用户,则不能改变该文件的组。

5.应用实例 改变/opt/local /book/及其子目录下的所有文件的属组为book,命令如下: $Content$nbsp;chgrp - R book /opt/local /book

chmod

1.作用 chmod命令是非常重要的,用于改变文件或目录的访问权限,用户可以用它控制文件或目录的访问权限,使用权限是超级用户。

2.格式 chmod命令有两种用法。一种是包含字母和操作符表达式的字符设定法(相对权限设定);另一种是包含数字的数字设定法(绝对权限设定)。

(1)字符设定法 chmod [who] [+ - =] [mode] 文件名

◆操作对象who可以是下述字母中的任一个或它们的组合 u:表示用户,即文件或目录的所有者。 g:表示同组用户,即与文件属主有相同组ID的所有用户。 o:表示其它用户。 a:表示所有用户,它是系统默认值。

◆操作符号 +:添加某个权限。 -:取消某个权限。 =:赋予给定权限,并取消其它所有权限(如果有的话)。

◆设置mode的权限可用下述字母的任意组合 r:可读。 w:可写。 x:可执行。 X:只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x属性。 s:文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。 t:保存程序的文本到交换设备上。 u:与文件属主拥有一样的权限。 g:与和文件属主同组的用户拥有一样的权限。 o:与其它用户拥有一样的权限。 文件名:以空格分开的要改变权限的文件列表,支持通配符。 一个命令行中可以给出多个权限方式,其间用逗号隔开。

(2) 数字设定法 数字设定法的一般形式为: chmod [mode] 文件名

数字属性的格式应为3个0到7的八进制数,其顺序是(u)(g)(o)文件名,以空格分开的要改变权限的文件列表,支持通配符。

数字表示的权限的含义如下:0001为所有者的执行权限;0002为所有者的写权限;0004为所有者的读权限;0010为组的执行权限;0020为组的写权限;0040为组的读权限;0100为其他人的执行权限;0200为其他人的写权限;0400为其他人的读权限;1000为粘贴位置位;2000表示假如这个文件是可执行文件,则为组ID为位置位,否则其中文件锁定位置位;4000表示假如这个文件是可执行文件,则为用户ID为位置位。

3.实例 如果一个系统管理员写了一个表格(tem)让所有用户填写,那么必须授权用户对这个文件有读写权限,可以使用命令:#chmod 666 tem

上面代码中,这个666数字是如何计算出来的呢?0002为所有者的写权限,0004为所有者的读权限,0020为组的写权限,0040为组的读权限, 0200为其他人的写权限,0400为其他人的读权限,这6个数字相加就是666(注以上数字都是八进制数),tem文件的权限是-rw-rw-rw-,即用户对这个文件有读写权限。

如果用字符权限设定使用下面命令: #chmod a =wx tem

chown 1.作用 更改一个或多个文件或目录的属主和属组。使用权限是超级用户。

2.格式 chown [选项] 用户或组 文件

3.主要参数 –dereference:受影响的是符号链接所指示的对象,而非符号链接本身。 -h, –no-dereference:会影响符号链接本身,而非符号链接所指示的目的地(当系统支持更改符号链接的所有者,此选项才有效)。

--from=目前所有者:目前组只当每个文件的所有者和组符合选项所指定的,才会更改所有者和组。其中一个可以省略,这已省略的属性就不需要符合原有的属性。 -f, –silent, –quiet:去除大部分的错误信息。 -R, –recursive:递归处理所有的文件及子目录。 -v, –verbose:处理任何文件都会显示信息。

4.说明 chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或用户ID;组可以是组名或组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的目录下以后,让用户拥有使用该文件的权限。

5.应用实例 1.把文件shiyan.c的所有者改为wan $Content$nbsp;chown wan shiyan.c

2.把目录/hi及其下的所有文件和子目录的属主改成wan,属组改成users。 $Content$nbsp;chown - R wan.users /hi

chattr

1.作用 修改ext2和ext3文件系统属性(attribute),使用权限超级用户。

2.格式 chattr [-RV] [-+=AacDdijsSu] [-v version] 文件或目录

3.主要参数 -R:递归处理所有的文件及子目录。 -V:详细显示修改内容,并打印输出。 -:失效属性。 +:激活属性。 = :指定属性。 A:Atime,告诉系统不要修改对这个文件的最后访问时间。 S:Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。 a:Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。 i:Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。 D:检查压缩文件中的错误。 d:No dump,在进行文件系统备份时,dump程序将忽略这个文件。 C:Compress,系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后才写入磁盘。 s:Secure Delete,让系统在删除这个文件时,使用0填充文件所在的区域。 u:Undelete,当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件。 4.说明 chattr 命令的作用很大,其中一些功能是由Linux内核版本来支持的,如果Linux内核版本低于2.2,那么许多功能不能实现。同样-D检查压缩文件中的错误的功能,需要2.5.19以上内核才能支持。另外,通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。

5.应用实例 1.恢复/root目录,即子目录的所有文件 # chattr -R +u/root

2.用chattr命令防止系统中某个关键文件被修改 在Linux下,有些配置文件(passwd ,fatab)是不允许任何人修改的,为了防止被误删除或修改,可以设定该文件的“不可修改位(immutable)”,命令如下: # chattr +i /etc/fstab

sudo

1.作用 sudo是一种以限制配置文件中的命令为基础,在有限时间内给用户使用,并且记录到日志中的命令,权限是所有用户。

2.格式

sudo [-bhHpV] [-s ] [-u <用户>] [指令] sudo [-klv]

3.主要参数

-b:在后台执行命令。 -h:显示帮助。 -H:将HOME环境变量设为新身份的HOME环境变量。 -k:结束密码的有效期,即下次将需要输入密码。 -l:列出当前用户可以使用的命令。 -p:改变询问密码的提示符号。 -s :执行指定的Shell。 -u <用户>:以指定的用户为新身份,不使用时默认为root。 -v:延长密码有效期5分钟。

4.说明 sudo 命令的配置在/etc/sudoers文件中。当用户使用sudo时,需要输入口令以验证使用者身份。随后的一段时间内可以使用定义好的命令,当使用配置文件中没有的命令时,将会有报警的记录。sudo是系统管理员用来允许某些用户以root身份运行部分/全部系统命令的程序。一个明显的用途是增强了站点的安全性,如果需要每天以超级用户的身份做一些日常工作,经常执行一些固定的几个只有超级用户身份才能执行的命令,那么用sudo是非常适合的。

ps

1.作用 ps显示瞬间进程 (process) 的动态,使用权限是所有使用者。

2.格式 ps [options] [–help]

3.主要参数 ps的参数非常多, 此出仅列出几个常用的参数。

-A:列出所有的进程。 -l:显示长列表。 -m:显示内存信息。 -w:显示加宽可以显示较多的信息。 -e:显示所有进程。 a:显示终端上的所有进程,包括其它用户的进程。 -au:显示较详细的信息。 -aux:显示所有包含其它使用者的进程。

4.说明 要对进程进行监测和控制,首先要了解当前进程的情况,也就是需要查看当前进程。ps命令就是最基本、也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行、运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等。图2给出了ps-aux命令详解。大部分信息都可以通过执行该命令得到。最常用的三个参数是u、a、x。下面就结合这三个参数详细说明ps命令的作用:ps aux

图2 ps-aux命令详解

图2第2行代码中,USER表示进程拥有者;PID表示进程标示符;%CPU表示占用的CPU使用率;%MEM占用的物理内存使用率;VSZ表示占用的虚拟内存大小;RSS为进程占用的物理内存值;TTY为终端的次要装置号码。

STAT 表示进程的状态,其中D为不可中断的静止(I/O动作);R正在执行中;S静止状态;T暂停执行;Z不存在,但暂时无法消除;W没有足够的内存分页可分配;高优先序的进程;N低优先序的进程;L有内存分页分配并锁在内存体内 (实时系统或 I/O)。START为进程开始时间。TIME为执行的时间。COMMAND是所执行的指令。

4.应用实例 在进行系统维护时,经常会出现内存使用量惊人,而又不知道是哪一个进程占用了大量进程的情况。除了可以使用top命令查看内存使用情况之外,还可以使用下面的命令: ps aux sort +5n

who

1.作用 who显示系统中有哪些用户登陆系统,显示的资料包含了使用者ID、使用的登陆终端、上线时间、呆滞时间、CPU占用,以及做了些什么。使用权限为所有用户。

2.格式 who - [husfV] [user]

3.主要参数

-h:不要显示标题列。 -u:不要显示使用者的动作/工作。 -s:使用简短的格式来显示。 -f:不要显示使用者的上线位置。 -V:显示程序版本。

4.说明 该命令主要用于查看当前在线上的用户情况。如果用户想和其它用户建立即时通信,比如使用talk命令,那么首先要确定的就是该用户确实在线上,不然 talk进程就无法建立起来。又如,系统管理员希望监视每个登录的用户此时此刻的所作所为,也要使用who命令。who命令应用起来非常简单,可以比较准确地掌握用户的情况,所以使用非常广泛。

动手练习

1.使用Linux命令检测系统入侵者 安装过Mandrake Linux和Red Hat Linux的用户都会知道,Linux系统会内置三种不同级别(标准、高、更高)的防火墙,当进行了Linux服务器的安装和一些基本的设置后,服务器应该说是比较安全的,但是也会有黑客通过各种方法利用系统管理员的疏忽侵入系统。如何快速查找黑客非常重要。一般来说,可以使用命令查询黑客是否入侵,见表 1。

表1 查询黑客入侵现象的命令对应表

举例说明,如果黑客嗅探网络,那么它必须使网卡接口处于混杂模式,使用下面命令进行查询:

#ifconfig -a eth0 Link encap:Ethernet HWaddr 00:00:E8:A0:25:86 inet addr:192.168.1.7 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING PROMISCUOUS MTU:1500 Metric:1 ……

从这个命令的输出中,可以看到上面讲到的这些概念。第一行的00:00:E8:A0:25:86是mac地址,第二行的192.168.1.7是IP地址,第四行讲的是接收数据状态,这时正在被黑客嗅探。一般而言,网卡有几种接收数据帧的状态,如Broadcast、Multicast、 Promiscuous等。Broadcast是指接收所有类型为广播报文的数据帧;Multicast是指接收特定的组播报文;Promiscuous 则是通常说的混杂模式,是指对报文中的目的硬件地址不加任何检查、全部接收的工作模式。

2.限制su命令的滥用 我们知道,超级用户在Linux中有最大的权利,几乎所有黑客都想得到这个目标。Linux可以增加对切换到超级用户的限制。使用PAM (Pluggable Authentication Modules)可以禁止除在wheel组以外的任何人su成root,修改/etc/pam.d/su文件,除去屏蔽标识#。使用 /usr/sbin/usermod G10 bjecadm将bjecadm这个账号加入gid为10的组,就是wheel组。命令如下:

/etc/pam.d/su # 使用密码验证# auth sufficient /lib/security/pam_wheel.so debug # 限制只有wheel组用户才可以切换到root# auth required /lib/security/pam_wheel.so use_uid chmod -G10 bjecadm

另外,每当用户试图使用su命令进入系统用户时,命令将在/usr/adm/sulog文件中写一条信息,若该文件记录了大量试图用su进入root的无效操作信息,则表明了可能有人企图破译root口令。

Linux命令有着强大的功能。对于Linux系统管理员来说,往往只需要通过各种安全命令技巧,组合构成安全防线。从计算机安全的角度看,世界上没有绝对安全的计算机系统,Linux系统也不例外。

(一)RedHat/CentOS/Fedora 系统密码破解

1.在grub选项菜单按E进入编辑模式 2.编辑kernel 那行最后加上S (或者Single) 3.按B,启动到single-user mode 4.进入后执行下列命令 # mount -t proc proc /proc # mount -o remount,rw / #passwd #sync #reboot

(二)Debian linux 系统密码破解

1.在grub选项菜单’Debian GNU/Linux,…(recovery mode)’,按e进入编辑模式 2.编辑kernel那行最后面的 ro single 改成 rw single init=/bin/bash,按b执行重启 3.进入后执行下列命令 root@(none)#mount -a root@(none)#passwd root root@(none)#reboot

(三)Freebsd 系统密码破解

1.开机进入引导菜单 2.选择每项(按4)进入单用户模式 3.进入之后输入一列命令 root@#mount -a root@#fsck -y root@#passwd(修改密码命令) root@#root(要破解密码的用户名) Enter new unix password: root@#init 6 (重启)

(四)Solaris 系统密码破解

1.在grub选项菜中选择solaris failasfe 项 2.系统提示Do you wish to have it mounted read-write on /a ?[y,n,?] 选择y 3.就进入单用户模式 4.输入下列命令:passwd root@#init 6 (重启)

(五)NetBsd 系统密码破解

1.开机:当出现提示符号并开始倒数五秒时, 键入以下指令: > boot -s (进入单用户模式命令) 2.在以下的提示符号中 Enter pathname of shell or RETURN for sh: 按下 Enter。 3.键入以下指令: # mount -a # fsck -y 4.使用 passwd 更改 root 的密码。 5.使用 exit 指令进入多人模式。

(六)SUSE 系统密码破解

1.重新启动机器,在出现grub引导界面后,在启动linux的选项里加上init=/bin/bash,通过给内核传递init=/bin/bash参数使得OS在运行login程序之前运行bash,出现命令行。 2.稍等片刻出现(none)#:命令行。 3.这时输入mount -n / -o remount,rw 表示将根文件系统重新mount为可读写,有了读写权限后就可以通过passwd命令修改密码了。 4.这时输入passwd命令就可以重置密码了 5.修改完成后记得用mount -n / -o remount,ro将根文件系统置为原来的状态。

0%