作者归档:yuliang

windows xp欢迎屏幕显示administrator管理员账户

在Windows XP的欢迎屏幕上,默认情况下会显示除Administrator外的所有本地用户名。如果您想在欢迎屏幕显示Administrator账户,可以打开注册表编辑器,定位到“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\ SpecialAccounts\UserList”,在右侧的窗口中找到以Administrator命名的键(如果没有可以自己建立),双击,将键值由0改为1,退出后重新启动计算机。这样,Administrator账户就可以在欢迎屏幕上显示了。

 

同理,如果您想隐藏某个用户,可以在上面提到的位置新建一个以您想隐藏的用户为名的键,然后把值设置成0,重启机器,这个用户就从欢迎屏幕上隐藏起来了。

WinConnect Server XP 最新版 多用户管理软件下载

WinConnect Server XP能够安装在XP系统下,不受XP系统1用户远程连接限制,并最多支持21个
客户端的同时并发连接数,支持24位真彩画面、音频传播,可自定连接
方式,支持对客户端发送消息,支持有线或无线TCP/IP协议连接,
例如LAN、WAN、dial-up (Internet)、DSL\ADSL、ISDN、VPN,支持
128位加密。

mysql数据库备份及恢复命令mysqldump

还原一个数据库: -h localhost -u root -p123456 www

备份一个数据库:mysqldump -h localhost -u root -p123456 www > d:\www2008-2-26.sql

 

//以下是在程序中进行测试

//$command = “mysqldump –opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip > $backupFile”;
$command=”mysqldump -h localhost -u root -p123456 guestbook > guestbook2-29.sql”;
system($command);
echo “success”;

************************************************

备份MySQL数据库的命令

mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql
备份MySQL数据库为带删除表的格式
备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。

mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql
直接将MySQL数据库压缩备份

mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz
备份MySQL数据库某个(些)表

mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql
同时备份多个MySQL数据库

mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql
仅仅备份数据库结构

mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql
备份服务器上所有数据库

mysqldump –all-databases > allbackupfile.sql
还原MySQL数据库的命令

mysql -hhostname -uusername -ppassword databasename < backupfile.sql
还原压缩的MySQL数据库

gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename
将数据库转移到新服务器

mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename

几个常用用例:
1.导出整个数据库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u root -p dataname >dataname.sql
这个时候会提示要你输入root用户名的密码,输入密码后dataname数据库就成功备份在mysql/bin/目录中.

2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u root -p dataname users> dataname_users.sql

3.导出一个数据库结构
mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc >d:\wcnc_db.sql
-d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table

4.导入数据库
常用source 命令
进入mysql数据库控制台,
如mysql -u root -p

mysql>use 数据库

然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source d:\wcnc_db.sql

mysqldump支持下列选项:
–add-locks
在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。

–add-drop-table
在每个create语句之前增加一个drop table。

–allow-keywords
允许创建是关键词的列名字。这由表名前缀于每个列名做到。

-c, –complete-insert
使用完整的insert语句(用列名字)。

-C, –compress
如果客户和服务器均支持压缩,压缩两者间所有的信息。

–delayed
用INSERT DELAYED命令插入行。

-e, –extended-insert
使用全新多行INSERT语法。(给出更紧缩并且更快的插入语句)

-#, –debug[=option_string]
跟踪程序的使用(为了调试)。

–help
显示一条帮助消息并且退出。

–fields-terminated-by=…

–fields-enclosed-by=…

–fields-optionally-enclosed-by=…

–fields-escaped-by=…

–fields-terminated-by=…

这些选择与-T选择一起使用,并且有相应的LOAD DATA INFILE子句相同的含义。
LOAD DATA INFILE语法。

-F, –flush-logs
在开始导出前,洗掉在MySQL服务器中的日志文件。

-f, –force,
即使我们在一个表导出期间得到一个SQL错误,继续。

-h, –host=..
从命名的主机上的MySQL服务器导出数据。缺省主机是localhost。

-l, –lock-tables.
为开始导出锁定所有表。

-t, –no-create-info
不写入表创建信息(CREATE TABLE语句)

-d, –no-data
不写入表的任何行信息。如果你只想得到一个表的结构的导出,这是很有用的!

–opt
同–quick –add-drop-table –add-locks –extended-insert –lock-tables。
应该给你为读入一个MySQL服务器的尽可能最快的导出。

-pyour_pass, –password[=your_pass]
与服务器连接时使用的口令。如果你不指定“=your_pass”部分,mysqldump需要来自终端的口令。

-P port_num, –port=port_num
与一台主机连接时使用的TCP/IP端口号。(这用于连接到localhost以外的主机,因为它使用 Unix套接字。)

-q, –quick
不缓冲查询,直接导出至stdout;使用mysql_use_result()做它。

-S /path/to/socket, –socket=/path/to/socket
与localhost连接时(它是缺省主机)使用的套接字文件。

-T, –tab=path-to-some-directory
对于每个给定的表,创建一个table_name.sql文件,它包含SQL CREATE 命令,和一个table_name.txt文件,它包含数据。注意:这只有在mysqldump运行在mysqld守护进程运行的同一台机器上的时候才工作。.txt文件的格式根据–fields-xxx和 –lines–xxx选项来定。

-u user_name, –user=user_name
与服务器连接时,MySQL使用的用户名。缺省值是你的Unix登录名。

-O var=option, –set-variable var=option
设置一个变量的值。可能的变量被列在下面。

-v, –verbose
冗长模式。打印出程序所做的更多的信息。

-V, –version
打印版本信息并且退出。

-w, –where=’where-condition’
只导出被选择了的记录;注意引号是强制的!
“–where=user=’jimf’” “-wuserid>1″ “-wuserid<1″

最常见的mysqldump使用可能制作整个数据库的一个备份:
mysqldump –opt database > backup-file.sql

但是它对用来自于一个数据库的信息充实另外一个MySQL数据库也是有用的:
mysqldump –opt database | mysql –host=remote-host -C database
由于mysqldump导出的是完整的SQL语句,所以用mysql客户程序很容易就能把数据导入了:

shell> mysqladmin create target_db_name
shell> mysql target_db_name < backup-file.sql
就是
shell> mysql 库名 < 文件名

立可达 Likuda 13dbi 天线使用效果

   最近无聊逛淘宝,逛着逛着,看到一个超强的13DBI的天线,经过一系列的思想斗争还是买回来了,加底座60和延长馈线,本来想买个5DBI的算了,后来见到这个13DBI的,想着就一步到位算了,后来就买了。收到天线一看是个大家伙,比较粗大,总认为效果还不错的,但是接上去一试,根本就没什么效果,作用不大。

不知道是真的所谓的,发射角度比较小,还是因为天线本身就不行,这个具体就不太清楚了,可能和两个都有关,买了号称强大的天线,估计也是一个虚标,而且还这么贵,5DBI的也就10-20的可以了,而且是比较好的了。这个牌子的9DBI 也只要30块,13DBI的竟然要5、60,关键是没感觉到有啥效果,以后买东西还是不要买新的,高标号的了。。。。555

 

恢复视力的辅助训练方法

、远方凝视:

找一处10米以外的草地或绿树:绿色由于波长较短,成像在视网膜之前,促使眼部调节放松、眼睫状肌松弛,减轻眼疲劳。不要眯眼,也不要总眨眼,排除杂念、集中精力、全神贯注的凝视25秒,辨认草叶或树叶的轮廓。接着把左手掌略高于眼睛前方30厘米处,逐一从头到尾看清掌纹,大约5秒。看完掌纹后再凝视远方的草地或树叶25秒,然后再看掌纹。10分钟时间反复20次,一天做三回,视力下降厉害的要增加训练次数。

2、晶体操

● 转眼:双手托腮,让眼球按上、下、左、右的顺序转动10次,接着再逆时针、顺时针各转动10次。

● 找一幅3米外的景物(如:墙上的字画等),同时举起自己的左手距眼睛略高处伸直(约30厘米),看清手掌手纹后,再看清远物,尽量快速的在二者间移动目光,往返20次。
3、推拿操

采取坐式或仰卧式均可,将两眼自然闭合,然后依次按摩眼睛周围的穴位。要求取穴准确、手法轻缓,以局部有酸胀感为度。

1.揉天应穴:用双手大拇指轻轻揉按天应穴(眉头下面、眼眶外上角处)。

2.挤按睛明穴:用一只手的大拇指轻轻揉按睛明穴(鼻根部紧挨两眼内眦处)先向下按,然后又向上挤

3.揉四白穴:用食指揉按面颊中央部的四白穴(眼眶下缘正中直下一横指)。

4.按太阳穴、轮刮眼眶:用拇指按压太阳穴(眉梢和外眼角的中间向后一横指处),然后用弯屈的食指第二节内侧面轻刮眼眶一圈,由内上->外上->外下->内下,使眼眶周围的攒竹鱼腰、丝竹空、瞳子寥、球后、承泣等穴位受到按摩。对于假性近视、或预防近视眼度数的加深有好处。

手机隐藏的功能【转】仅供参考

不知道 是否真的像这里所说的那样,具体也就不清楚了,转这里仅供参考.

 

 

1、隐形的备用电池

  你的手机电量不足了,为了让它能够继续使用,按*3370#键,手机会重新启动,启动完毕后,你就会发现电量增加了50%。这部分隐藏的备用电量用完了你就必须得充电了,再次充电的时候,隐形的备用电池也同时充电,下次电量低的时候又可以用这个方法。知道这个在紧急情况下如果手机电量不足非常管用。

  2、车用遥控器落在车里了?

  你的车用遥控能打开吧?如果可以,在你有一天将车用遥控器落在车里而且备用的遥控又在家里的话,你会发现有个手机真方便,用手机拨通家里人的手机,将你的手机拿在离车门一英尺的地方,同时家里人拿着遥控器在他的手机旁边按响遥控器上的开锁键,这边你的车门就可以打开了。这个方法不管你把车开得离家有多远都奏效。(SEVEN亲身试过了,很有效,很神奇哦)

  3、紧急情况

  全世界的手机都可以拨打的共同紧急救援号码是 112,加入你发现自己所在的地区无手机信号覆盖,同时你又遇到了紧急状况,用你的手机拨打112准没错,因为这时候你的手机会自动搜索所有可用的网络并建立起紧急呼叫。特别有趣的是,即使你的手机是在键盘锁定的状态,你同样可以拨打112。试试吧!

  4、手机被偷了?

  有个办法让小偷也用不了,嘿嘿!查看手机的序列号,只需键入* # 0 6 #, 15位序列号会出现在手机屏幕上,全世界的每一台手机都有一个独一无二的序列号,把这个序列号记录下来并保存好。有一天如果你的手机不幸被偷了,打电话给手机提供商,并提供你的手机序列号,他们会帮你把手机屏蔽,这样即使小偷换了SIM卡,仍然无法使用,你的手机对小偷来说变得一无是处。如果全世界每个手机持有者都这么做,那么偷手机就没有意义了。在澳洲,警方甚至建立了一个被盗手机数据库,如果你的手机被找到了,就可以归还给你了。

  日常维护必用:

  1、手机电池不要等到没电才充电。

  一般我们都会有一种想法就是手机的电池电力要全部放完再充电比较好基本上是没错的,因为我们在以前使用的充电电池大部分是镍氢(NiH)电池,而镍氢电池有所谓的记忆效应若不放完电再充的话会导致电池寿命急速减少。因此我们才会用到最后一滴电才开始充电。但现在的手机及一般IA产品大部分都用锂(Li) 电池,而锂电池的话就没有记忆效应的问题。若大家还是等到全部用完电后再充的话反而会使得锂电池内部的化学物质无法反应而寿命减少。最好的方法就是没事就充电让它随时随地保持最佳满格状态,这样你的电池就可用的又长又久喔。这是从厂商那得到的讯息,并经过本身测试而得。

  2、当手机正在充电时,请勿接电话!!

  原因是手机在充电时,来电接听的话会有潜在的危险。印度有一个31岁在保险公司任职业务经理的年轻人,十几天前在手机还接着充电器的时候接听电话,过了几秒大量的电流经过手机,这个年轻人被摔落到地面,家人发现时,手指烧伤,心跳微弱,并且已经失去意识。经紧急送到医院后,医生宣布到院死亡。行动电话是目前大家最常使用的现代发明。然而,我们也必须要警觉到仪器致死的危险。

  3、手机剩一格时不要使用

  收讯满格与只剩一格时相比,发射强度竟然相差1000倍以上.所以……常讲手机的人……要注意哦……^0^、昨天从一位手机商那儿获得一项很重要的讯息,那就是当你发现手机的收讯强度只剩下一格的时候,宁可挂断不谈或者是改用公用电话.千万不要再滔滔不绝、口沫横飞、浓情蜜意、欲罢不能、没完没了…为什幺呢?大家都知道手机的电磁波一直是让人担心的问题.而手机的设计为了在收讯较差的地区仍能保有相当的通话质量,会加强手机的电磁波发射强度.当收讯满格与只剩一格时相比,发射强度竟然相差1000倍以上.电磁波强度高达0.6W(瓦特).0.6W究竟有多强呢?我无法具体描述它对你的脑袋会有什幺不良影响,但可以换成两个例子来比较:

  1)把喇叭直径约4公分左右的小型收音机音量开到最大然后贴在耳朵上,那样的噪音能量一般为0.25W,不到0.5W。

  2)把手指头放在输出强度0.1W的雷射光前面(相当于光纤网络的?D干线能量)几秒钟内你会有灼痛的感觉,你能长时间忍受上述这两种状况吗?

  那你又如何确认0.6W的电磁波紧贴在你的耳朵上会没事呢?

  4.12593+电话号码=陷阱

  你是不是把外地朋友的电话用17951+电话号码的格式储存在电话号码本里?而不是单独拨?那么收费就会从0.39元每分钟变成1.3元每分钟.我也向 1860查询过了他们的解释是如果储存在电话号码本里?系统将无法识别。所以无法获得资费优惠,必须每次在键盘上直接按12xxx。神州行用户如此?动感地带用户,全球通也一样。如果你是一个中国移动用户,当你知道中国移动为你设置以下的陷阱的时候,便不再惊讶于你的话费为何会像长了翅膀一样的飞走。用 12593+电话号码可以优惠,但如果你预先将“12593+电话号码“存在手机的电话本,使用的时候调出来然后拔打出去,这时中国移动不承认你使用了 12593这种优惠的拔打方式,而按照直接拔打的方式计费。如果你是在漫游,两种计费方式可以相差7倍之多!当我得知如此计费之后,我真的不知如何表达我的愤怒,后来打10086咨询时,如果不是主动冶询问这个问题,工号为6608的小姐根本就不告诉我这样的计费。

  5、手机费的寄生虫

  手机莫名其妙定置了无用短信,强烈建议大家都看一下自己有没有中招,最简单方法退订每月偷你手机费的寄生虫!中国移动在3.15被迫推出一项新业务,如果您是中国移动的手机用户,键入数字“0000“,发送短信至10086,数秒钟内将自动回复一条短信列表,显示您的手机上究竟订制了哪些短信服务,究竟是哪些短信服务商明着、暗着每月扣除您的手机费;键入数字“00000“,发送短信至186201,即可退订所有短信服务。

  6、不要赶着凑正好1分钟

  我们打电话的时候常常会为了正好赶在1:00前结束而庆幸,但其实并不是这样的,据一位中国移动的工作人员说,其实在你通话到0:55的时候就已经算一分钟了,所以0:55~1:00的通话时间其实是算你2分钟的钱~

  7、手机一进水,请切记不要作任何按键动作,尤其是关机(一按任何动作,水马上会跟着电路板流串),正确的方法为马上打开外盖,直接将电池拿下,直接强迫断电,可保主机板不被水侵袭。

  这个常识非常重要,故转告各位,使大家的手机可用久一点。学一学吧!以后以备不时之需啊!

  8、如何让手机电池起死回生

  当你的行动电话电池使用时间变短(记忆效应或老化)时,你是否会再买一颗电池来更换呢?

  下次当你碰到这种情况时请省下你的钱,告诉你一个很有效的方法不妨试试看:

  1)把电池用报纸包起来再放进塑料袋裹包好放入冷冻库三天(报纸可吸收多余水份)

  2)三天后取出常温下放二天

  3)二天后将电池充电,充饱后装进行动电话裹测试(预估可救回80%-90%)

  本讯息由知名电池厂商工程师透露,根据测试过的朋友指出效果相当有效.

  至于有没有效果,反正电池快没用了,而且冰箱人人有,各位朋友不妨试试看吧!

  9、给你的手机做个CPR吧!

  手机是否常断电?或是明明充饱了电没多久就又没电了?

  一定怀疑过是不是手机的寿命终了?

  别担心,它只是一时“心跳停止”,只要一块小小的橡皮擦就能起死回生了!

  把电池取出后用橡皮擦把电池上的接点(黄铜片)擦干净,再装回手机上,你会发现真是太神奇了!它竟然活过来了!还像颗新的呢!

  真的很有用,提供大家做参考!

  10、教你如何消除手机屏幕刮痕

  大家是否常常会遇到手机屏幕有刮痕而不知如何处理的情况呢?

  告诉大家一个好用的秘方….(前几天在电视上看到的)

  把牙膏适量挤在湿抹布上后用力在手机屏幕刮伤处前后左右来回用力涂匀…..

  你将发现…..手机的屏幕刮痕会因此而消失….很神奇吧…!!

  更神奇的事….在用干净的抹布或卫生纸擦干净后..手机屏幕还会变得更亮哦….

  台大化学教授表示:原理为牙膏它只是刷牙的辅助用品,具有磨擦作用(修补作用)

  和去除菌斑,清洁抛光牙面,因此使用在手机屏幕上面会有同样的效果。

Freebsd安全设置

FreeBSD 是一个非常安全的操作系统。也正因为它的 source code 是可以免费的取得,这个 OS 长久以来不断的有人改进加强。尽管 FreeBSD 一出厂就非常安全, 但是仍然有更多加强安全性的措施,这份 HOW-TO 会教你一些步骤, 以更加强你机器的整体安全。

5.1.1 网络

5.1.1.1 inetd (Inet Daemon)
网络在系统安全上扮演了一个很重要的角色。FreeBSD 的根基是有着内建网络功能, 且具有最稳最快的 TCP/IP stacks 的 4.4BSD。这个 stack 支持了非常多的协议像是telnet, ftp, talk, rsh 等… 这些 service 的的主设定档便是 /etc/inetd.conf。要编辑这个档, 请输入 \"vi /etc/inetd.conf\" (在这个例子里, 我使用 vi 。你可以使用其它你较为上手的编
辑器。或许你可以试试 pico)。如果你要使用 pico, 请在启动它时加上 -w 选项:

-w 关掉自动断行。(因此可以容许超过 80 字符的行存在)

这选项在编辑 /etc/inetd.conf 时非常有用。

当然了, 你也可以使用 ee – 它随着 FreeBSD 一起 \"出厂\" 的, 而且也是 root 预设的编辑器。不过, 请再 \"echo $EDITOR\" 确认一次。 开启了这个档案后, 你可以看到里面怎么描述每个 service 怎么激活, 要以那位使用者执行等等的信息。(man 5 inetd.conf)既然这个档案是许多 internet service 的主要设定档, 好好的设定它便是一件十分重要的事。你要关掉一个 service的话,只消在那一行前面加个 \"#\" 符号。基本的概念是, 关掉些你不熟悉的 services – 如果你不知道那个 service 是啥, 或者不知道它可以干啥。理想状态下, 你不须要把所有的 service 都打开。例如, 你的器只是要跑 web server。这种情况下, 你只要激活 ssh 和 httpd 便够了。关于啥是ssh, 下面会说明。如果你啥 service 都不想跑,最直接干脆的方法是-关掉 inetd。做法很简单, 只要编辑 /etc/rc.conf 并且把inetd_enable=\"YES\"改成inetd_enable=\"NO\"就可以了。

如此一来没人可以 telnet, rlogin, 或 ftp 到计算机中。如果你决定要激活你的 inetd 的话, 记得激活 log 选项, 并提高一个 service 每分钟激活的上限数目。(默认值是 256, 我建议提高到 1024-自行参照下面解说调整吧!)为什么要这么做呢…? 就 modem user 或是低速专线用户是没什么差别。但高速线路的人, 上限值太低会蹦出一个 DoS attack(Denial of Service)。某个坏心的人可以简单的用一个 shell script 同时搞出超过 256 个 connections, 这么一来你的 inetd会很不幸的阵亡。换句话说, 如果你想让每分钟每个 service可接受的connection 数多点, 记得做如下的设定, 不然来个坏心的人就可以搞垮你的计算机。因此, 在这行inetd_enable=\"YES\"

下面的:
inetd_flags=\"\"
要改成:
inetd_flags=\"-l -R 1024\"

这会将联机的动作都 log 下来(-l 参数)而且将同时最大联机数从预设的 256 增加到1024。你还须要对你的 /etc/syslog.conf 作些修改, 这些等会儿会提到。

5.1.1.2 SSH
在以下提到的案例中, 你完全不须要 run inetd。例如, 如果你只有跑 web, news, 或是 nfs server, 那么就没有必要在你的机器上再跑其它的services。但是你一定会问,\"我要怎么控制我的机器啊!?\" 嗯嗯, 所以现在要介绍 SSH。你可以透过 SSH (SecureShell) 来登入你的机器。Secure Shell 当初便是设计来取代 rsh, rlogin 等其它的Berkeley r* 命令。相信你很快就会了解 SSH 是如何有用,而且开始使用它,来代替其它的程序像是 telnet 和 ftp。SSH 具有很多功能,但是最为人知的是, 它的加密通讯方式, 也就是防止你的密码和资料以明码的方式在网络上传输。如果你使用 telnet,你的通讯内容可能会被\"窃听\": 传输中的资料被改变, 通讯内容被看到。(不是有 S/Key可以解决吗? 很不幸的, 它还是有着插入资料和连接时被破解的问题) 我希望你可以完全的关掉 inetd 而使用 SSH。如果你认为完全不靠
inetd 来激活某些 services,是完完全全不可能的事, 那么希望你至少激活 log 功能, 而且要增加每分钟同一个 servi-ce 可激活的次数。 (原因上面有提到)

你可以从 ftp://ftp.funet.fi/pub/unix/security/login/ssh 下载 SSH。

若你想要更简单的方法:

# cd /usr/ports/security/ssh
# make install

5.1.1.3 inetd (part II)

好吧, 你仍然执意要使用 inetd。那么我们来看看在 inetd.conf 有那些选项, 可以增进你的系统安全。在攻击某系统之前, 攻击者都会先收集该系统的相关信息。就 telnetd 而言, 你可以试试在 telnetd 那行后面加个 -h:

telnet stream tcp nowait root /usr/libexec/telnetd telnetd -h
从 telnetd 的 man page 可以知道:
-h Disable the printing of host-specific information before login
has been completed.

当有很多管道可以获得系统信息的同时, 这招和下面的那招是个不错的解决方案。如果你认为跑 telnet daemon 是没有必要的, 那么只消加个 \"#\" 在该行的最前面就行了:

#telnet stream tcp nowait root /usr/libexec/telnetd telnetd

有个极不错的措施是, 你可以拒绝没有完整 FQDN 的人来联机。要做到这点, 也只要加个 -U 选项到 telnetd 后面:
telnet stream tcp nowait root /usr/libexec/telnetd telnetd -h -U

这是个小动作, 但是对你的系统安全有莫大的助益。

5.1.1.4 ftpd
现在来看看 ftp。 对于 ftp FreeBSD 已经做了一些 log 的动作 。 可以看到在/etc/inetd.conf 里面 ftpd 那一行已经加了 \"-l\"。然而, 你还是要设定你的syslogd, 使它可以接受 ftp daemon 产生的 log。从 man page 可以得知:

每个成功或是失败的 ftp 登入尝试, 都会以 LOG_FTP 机制纪录起来。如果这个选项被指定了两次, 所有的下载 (get), 上载(put), 新增, 删除,建立目录, 及更名的动作和文件名字都会被纪录下来。 又: LOG_FTP 讯息预设是不会被 syslogd(8) 纪录下来的。你还要在 syslogd(8) 的设定文件里面激活这个功能才行。

让我们开启 syslogd 纪录 ftpd log 的功能吧~ 这个档案是 /etc/syslog.conf (别忘了顺便看看 man 5 syslog.conf)。把下面这一行加到这个设定档里:

ftp.* /var/log/ftpd

也不要忘了执行这个指令 \"touch /var/log/ftpdlog\", 因为 syslogd 不能写入到一个没有被开启过的档案。如果你想要你的 ftpd 提供你更多的 log 讯息, 那么就在 ftp那一行多加个 \"-l\" 吧:

ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l -l

如果你想要确定你的使用者们都用 scp (Secure Copy, 附属在 SSH 里面), 但是又想要提供 anonymous ftp 服务, 也只消加个 \"-A\" 在 ftp 那行后面就行了:

ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l -A

你也可以编辑 /etc/ftpwelcome, 说明目前接受 anonymous ftp 登入, 但是系统内的使用者就得使用 rcp 了。如果你有提供 anonymous ftp, 你可以使用 -S 选项来记录传输的情形:

ftp stream tcp nowait root /usr/libexec/ftpd ftpd -A -S

5.1.1.5 fingerd
Finger 服务默认值还算安全: 它不容许不带 user name 的 query。这是一件不错的事(tm)。然而, 就是有些人无论如何也不想 run fingerd。这种情形下, 你只要简单的给它加个 \" #\" 在这行的最前面就可以了。又, 你想要 log 住谁来 finger 的话, 加个\"-l\" 也就行了:

finger stream tcp nowait nobody /usr/libexec/fingerd fingerd -s -l

Fingerd 产生的 log 信息预设是写到 /var/log/messages。如果你想要这些信息写入到特定的档案里去, 那么就在 /etc/syslog.conf 加入这一行:

daemon.notice /var/log/fingerd
/* !fingerd anyone? */
$ man 5 syslog.conf

除了 ftp, telnet 和 finger 之外, 你实在不须要在 /etc/inetd.conf 中再多激活任何东西了。通常我都会关掉 talk 及 comsat等我个人不须要的东西。如同我之前讲的,如果你不知到某个 servcie 是干嘛用的, 而且你也不须要它, 那么就关掉它。一些和网络有关而且很有用的 man page 是: inetd, ftpd, telnetd, fingerd, syslogd,comsat, talkd, rshd, rlogind, inetd.conf。并且记得要看 man page 的\"SEE ALSO\"部份, 以获得更多的相关信息。

5.1.1.6 ipfw (IP FrewWall)
IP FireWall 做的是 packet 过滤的工作。没错, 就是只有这样。然而, 你要考虑的事是,你的 kernel 要有支持 ipfw。 通常在我管的机器上, 我都会重编核心使其支持ipfw。大概看起来是这样:

options IPFIREWALL #finger the net
options IPFIREWALL_VERBOSE #log the net
options IPFIREWALL_DEFAULT_TO_ACCEPT

第一行表示最其本的 IP FireWall 支持。第二行让 ipfw 可以把接受或拒绝 packets的纪录 log 起来。第三行非常重要, 让 ipfw 默认值是接受任何地方来的 packets 。如果你不这样做, 默认值拒绝任何地方来的 packets。我个比比较喜欢后者, 但我又认为在我自己的工作站上, 或一个让人登入的工作站, 预设拒绝任何 packets 不是一件太好的事。如果你搞不清楚自己在做啥事, 那就不要用这个选项。

就设定 firewall 而言, 这是不甚正确的。预设任何东西都该被挡掉才是正确的。如果你是要建置一台高安全性的系统, 或一台 firewall 的话,那就千万不要加入这个选项:

options IPFIREWALL_DEFAULT_TO_ACCEPT

记住一件事: 要预设拒绝任接受任何 packets, 然后再加入 rule 来设定你想要 接受那些 packets。查看 /etc/rc.firewall 以得到更多的信息。再一次提醒你, 不要使用这个 option, 除非你只是想要防止 DoS attacks 或暂时把某些 port/network ban掉。

5.1.1.7 log_in_vain
你也可以透过 sysctl 命令, 来改变一些有用的系统变量:

# sysctl -w net.inet.tcp.log_in_vain=1
# sysctl -w net.inet.udp.log_in_vain=1

这会把尝试向你的机器要求你没有的服务的 connections log 起来。例如, 如果你在你的机器没有跑 DNS server, 而又有个人想要向你的机器要求 DNS 服务, 这时候你就会看到Connection attempt to UDP yourIP:53 from otherIP:X
(X 是某个 high port #) 用 \"dmesg\" 命令就可以看到这一行。Dmesg 秀出的是系统的 kernel messagebuffer。

然而, 这个 buffer 的空间是有限的, 所以系统也会把这些讯息写入到/var/log/messages 里面去:

# tail -1 /var/log/messages
Jun 12 19:36:03 ugh /kernel: Connection attempt to UDP yourIP:53 from otherIP:X

5.1.1.8 final notes
理论上呢, 你的系统现在已经比你装好它时更安全些了。你现在可以做一些事来确定你目前的更动:

$ netstat -na | grep LISTEN

这会告诉你那些 service 在那些 port 跑。越少越好 又, 再跑一些其它的 port scanners (strobe, nmap) 来找出你开了那些 port。

而要确要你的 syslogd 已经开始纪下你刚刚想要 log 的事件, 可以这么做:

# cd /var/log
# tail -10 fingerd ftpd messages
在 log 档里面没看到任何东西的话, 记得重新激活 inetd 和 syslogd:
# kill -HUP `cat /var/run/syslog.pig` `cat /var/run/inetd.pid`

5.1.1.9 Filesystem
既然 Unix 把什么东西都当作档案来看待, 好好的保护你的档案系统便是很重要的事。有件事是在你安装操作系统前便要完成的: 必须要计划并设计好你的 partition 该怎么切割。有几个很重要的原因让你要这么做: 一个是你可以 mount 不同的档案系统以赋与不同的选项(下面有几个例子)。别一个是,如果你想要把你的 filesystem export出去, 你须要更加细微的控制。如果你是一个从 转入 FreeBSD 的使用者, 你会发现 是把任何东西都往 root partition \"/\" 塞, 而 FreeBSD 预设便要 \"/\",\"/usr\", 和 \"/var\"。这也使得要使用如 dump 般的工具较容易。且让我们来讨论 security 吧! 有一件事我通常会做的是, 我会把一般 users 可以写入的 partition 分开来割, 而这些 partitons 便可以用 \"nosuid\" 的方式来 mount。从 mount 的 man page 可以知道:让 suid 或 sgid bit 失效。对于像 suidperl 这些公开使用的程序, 设这个选项便没用。

因此你会有个 partition 给一般使用者使用: /home 或 /usr/home。然后你可以另外开个 partion 给 /var/tmp 然后再把你的 /tmp 指到这里:

# rm -rf /tmp
# ln -s /var/tmp /tmp

你可以参考这个例子:

# cat /etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/sd0s1b none swap sw 0 0
/dev/sd0s1a / ufs rw 1 1
/dev/sd0s1g /usr ufs rw 2 2
/dev/sd0s1h /usr/home ufs rw 2 2
/dev/sd0s1f /var ufs rw 2 2
/dev/sd0s1e /var/tmp ufs rw,nosuid 2 2
proc /proc procfs rw 0 0

现在你可以确定一般 users 可以写入的目录不是以 \"-nosuid\" 的方式被 mount, 就是没有可以写入。现在你还要关心的就是 /var/spool/uucppublic\"。

你可以把 \"/var\" 以 \"-nosuid\" 的方式来 mount , 或下这个命令:

# chmod o-w /var/spool/uucppublic

如果你想要找出你所有的可写入目录, 下这个命令:

# find / -perm -0777 -type d -ls

如同 man page 指出的, 具有 suid/sgid 的程序会让你的 nosuid 失效。找出那些程式是 suid 或 sgid 的吧:

# find / -perm -2000 -ls
# find / -perm -4000 -ls

同时你不止可以用 \"-ls\" 而只是知道有那些程序。你可以把不是很有用的程序 \"chmod 000\"。像是 uustat, uucico 等, 如果你从来不碰 uucp 的话。或是 ppp 和 pppd, 如果你绝不会用到他们。又, 你不会去用到打印机的话, 把 lpr lprd 也 chmod 000 吧!也许改天会有个人写个 shell script 来问你那些东西要 chmod 000 掉。

现在你也许想问, 有什么方式可以防止攻击者重新以非 \"-nosuid\" 的方式 mount 你的filesystem ? Well, 没有, 除非你改变你的 securelevel。

5.1.1.10 securelevel
FreeBSD kernel 有个观念叫 securelevel。当还有人在争论这是不是够完美时,这个机制已经够防止大部份的 \"script kiddiez\"。Securelevel 是指你的 kernel 在执行时的安全等级。每一个等级具有不同的保护和检查机制。这些是 init(8) 的 man page:

Kernel 可以以四种不同的安全等级来执行。任何 superuser process 可以提高安全等级,但是只有 init 可以降低它。

这四种等级分别是:
-1 永远不安全模式 – 切换到 level 0 吧!
0 不安全模式 – \"不可更动\"和\"只能附加\"这两个旗标(flag)可以被改变。所有的devices 可以照着它们的读写权限被读写。
1 安全模式 – \"不可更动\"和\"只能附加\" 的旗标不能被取消; mount 上来的档案系统, /dev/mem, 和 /dev/kmem 不能写入。
2 高安全模式 – 和安全模式一样, 又多加了不管硬盘有没有被 mount 起来,除了mount(2) 之外都不能写入。它防止一个档案系统在 umount 的时候被搞乱。而且在这个等级也禁止在 multi-user 时执行 newfs(8)。

如果安全等级最初是 -1, 那么 init 就会保持原状。否则在 single user mode 时,init 会把安全等级调到 0, 而在 multiuser mode 时会以 1 来跑。如果你希望在multiuser模式是以等级 2 在跑, 你可以先进入 single user mode, 编辑 /etc/rc,使用 sysctl 来更动。

若是你的系统只拿来跑 web server 之类的, 你可以放心的将 securelevel调高到2。但若是你要跑 X server, 把你的 securelevel 调至 1 或更高会导致一些问题。因为X server 必须要写入 /dev/mem 和 /dev/kmem, 而 securelevel 1 不允许你这么做。有一个解决的方法是, 在激活 X server 后再调高 securelevel。但我的意见是, 如果你跑 X server 的
话, 你已经有了其它的安全问题须要考量, 而不止是 securelevel。以下这个指令会显示出你目前的 securelevel 设定值。

# sysctl kern.securelevel
如果要提高你的 securelevel:
# sysctl -w kern.securelevel=X
X 可以是 0, 1 或 2。

又在 securelevel 是 1 的话, 你在 \"make world\" 时也会有些问题。因为 \"make install\" 时会在 kernel 上加上 immutable flag:

# ls -lo /kernel
-r-xr-xr-x 1 root wheel schg 1061679 Jun 3001:27 /kernel
\"schg\" flag 会防止你安装新的 kernel:
nfr# id
uid=0(root) gid=0(wheel) groups=0(wheel), 2(kmem)
nfr# sysctl kern.securelevel
kern.securelevel: 2

nfr# rm -rf /kernel
rm: /kernel: Operation not permitted

nfr# mv /kernel /tmp/
mv: rename /kernel to /tmp//kernel: Operation not permitted

如果你在 securelevel 1 或 2, 那么 schg flag 是不能被改变的。

# chflags noschg /kernel
chflags: /kernel: Operation not permitted
值得留意的是, /boot.config 可以改变你开机时的系统设定,要预防有心人篡改你应该这么做:

# touch /boot.config
# chflags schg /boot.config

你可以看看系统预设还有那些执行档是有 schg flag 的。

# ls -lo /sbin | grep schg
-r-x—— 1 bin bin schg 204800 Jul 19 20:38 init
# ls -lo /bin | grep schg
-r-sr-xr-x 1 root bin schg 192512 Jul 19 20:36 rcp

再回过头来谈谈锁定系统这件事吧! 既然刚刚谈到了 immutable flags, 何不试着把整个 /sbin 和 /bin 都设成 schg flag 呢 !? 这会给想 crack你系统的人一点小挫折。(假设你的系统也正以适当的 securelevel 运作中)

# chflags schg /bin/*
# chflags schg /sbin/*

不过 /sbin 可能被改成别的名字,再重新创造一份新的 /sbin ,所以改变 /sbin 与/bin 的 schg flag 是很合理的想法,我们可以依照以下的方式改变 /sbin 和 /bin 的 schg flag:

# chflags schg /bin/*
# chflags schg /sbin/*

这些 schg flag 的档案会让你在 \"make world\" 时有问题。

(\"make installworld\" 也是)

无论如何 ,最好是以 single user 模式来 \"make world\"。有关 \"makr world\" 的相信息, 还有为什么要这么做, 到下面这个网页来看看:

http://www.nothing-going-on.demo … rld/make-world.html

现在你已经适当的锁定你的系统, 也以只跑必要的的 service, 而档案系统也适当的mount 上来, 且也以适合的 kernel securelevel 运作中。

与以上所述的相关 man pages 有: init(8), chflags(1), sysctl(8)。

5.1.1.11 Logging
系统纪录是很重要的。如果你的统被人攻击, 透过它你可以找到一些蛛丝马迹。Unix的标准 log 动作是透过 syslogd(8) 来达成的。它从 /etc/rc 中被激活, 一直执行到系统关机为止。你可以用以下的方式确定你的系统上是否正在执行 syslogd:

$ ps -axu | grep syslogd

Syslogd 会在激活时读取 /etc/syslogd.conf。这个档案很重要, 因为它告诉 syslogd要纪录那些东西, 而这些东西又该放在那里。你也许想看看 syslod 和 syslod.conf的 man pages:

$ man syslogd ; man 5 syslog.conf

既然 Unix 当初就是设计作为网络操作系统, syslogd 可以而且默认值也接受其它系统的纪录。它自己也是可以把纪录透过网络送到其它的计算机去。想当然耳, 它可以纪录下 自己系统发生的每件事 – 而这也正是默认值。因为 syslogd 使用 UDP – 所以资料是可以被伪造的。你至少可以作一件事: 不要让你的 syslogd 接受来自其它计算机的纪录讯息。在 /etc/rc.conf 加个 \"-s\" 就可以了:

syslogd_flags=\"-s\" # Flags to syslogd (if enabled).

如果你有接受特定机器之纪录的必要 (像是你的 router, 或是 web server), 使用\"-a\" 来指定特定的 hosts, domains, 或 subnets。

下次你重新激活你的系统时, syslogd便会拒绝来自其它地方的纪录讯息。如果有人尝试送资料进来, syslogd 将会加以纪录。

如果你不想重新激活你的系统, 那么只要把 syslogd kill -9, 然后再以 root 的身份激活 syslogd 便可以了。记得加上 \"-s\"这个参数。

如果有人尝试攻击你的系统而且失败了, 你的系统纪录便不会被伪造。但如果你的系统己经被攻陷了, 而且 /var/log 整个被干掉了呢 !?还是有方法可以防止的。 其一便是在你的网络系统中再架一台机器拿来纪录整个网络中发生的事, 而且也不要再干其它的事了。除了 UDP port 514 之外, 其它的也都不用再开了。这样子一来你便可以纪录下所有机器 (routers, firewalls, serves, workstations) 发生的所有事。你可以只送敏感的讯息给它, 或者任何你觉得重要的。这台机器可以是老旧 486, 但有颗大大的硬碟。记得要设定好正确的 \"-a\" 选项, 免得搞出没收到纪录的乌龙事。你也可以接台老旧的点阵打印机给它, 以印出敏感的事件(像是失败的登入尝试)。如果你把系统纪录印到纸上, 一位攻击者要清除它是很困难的。还有其它的方法,例如透过 serial port (cuaaN) 或是 parallel port (lpN) 送
出纪录到别台机器上。

每个人都有不同的记录需求。但是有一件事我通常会做的是在 /etc/syslog.conf 加入这一行:
auth.* /var/log/authlog

FreeBSD 出厂时便包含了 newsyslog。这玩意会定时压缩纪录文件并清除掉旧的纪录。

设定档位于 /etc/newsyslog.conf – 请看一下 man page 以得到更多的信息:
% man newsyslog
不像 syslogd, newsyslog 不是一直都在执行的。它是从 crontab 激活的:
% grep newsyslog /etc/crontab
0 * * * * root /usr/sbin/newsyslog
%

你可以修改 /etc/newsyslog.conf 以符合你的需求。我通常会改变它预设的档案模式, 从 664 改成 660 – 因为没有必要让一般的使用者去查看你的系统纪录。你应该这么做:

# cd /var/log
# chmod g-w,o-r * ; chmod a+r wtmp

这会防止一般使用者读取纪录文件, 除非它们在适当的 group (wheel 或之类的)。还有,记得把记录文件的 group 都改成 wheel — 这纯粹只是为了方便: 如果你是在 wheel 这个 group; 你当然是可以 su(1) 到 root 然后读记录文件。但是这么做以后你便可以直接读记录文件了, 岂不方便乎!?你还要在 /etc /newsyslog.conf 中加入 \"root.wheel\":

/var/log/maillog root.wheel 640 7 100 * Z
/var/log/authlog root.wheel 640 7 100 * Z
/var/log/messages root.wheel 640 7 100 * Z

这会在记录文件达到 100K 时将它压缩并加以编号, 将 mode 改成 640, chown成root.wheel, 并将旧的记录文件干掉 – 这就是我们要的。

当然,标准的 Unix 还有其它不同的 syslog 程序可供选择,其中之一是 CORE EDI 的ssyslog (secure syslog). 可以在以下的地方找到:

http://www.core-sdi.com/ENGLISH/CoreLabs/ssyslog/download.html

另外还有 nsyslog (new syslog),这是写 bpfilter 那一伙人写出来的,你可以在 http://cheops.anu.edu.au/~avalon/nsyslog.html 找到这个程序。

不管你选用那一种程序 (标准的 syslog , ssyslog ,或 nsyslog),你应该也去看看一些帮你分析系统 log 的程序,帮你省下去用 grep 查询 log file 的麻烦。

其中之一是 logcheck , 可以在这个地方下载: http://www.psionic.com/abacus/abacus_logcheck.html

另外一个类似的程序叫做 logsurfer , 你可以从这个网页下载: http://www.cert.dfn.de/eng/team/wl/logsurf/

5.1.2 Misc. hints and tips

5.1.2.1 LKM
在正式提供服务的系统上, 也许该关掉 LKM。为什么? 请看:

Phrack Magazine Volume 7, Issue 51 September 01, 1997, article 09

要关掉 LKMs, 在 kernel 设定档中加入这一行:
options NOLKM

5.1.2.2 Portmap
FreeBSD 出厂的默认值会将 portmap 这项功能打开。如果你不需要它的话,把它关掉。如果你没有跑任何需要呼叫 RPC 的程序的话,你就不需要跑这个程序。如果要关掉portmap这个程序,你可以去修改 /etc/rc.conf , 把

portmap_enable=\"YES\" # Run the portmapper service (or NO).
改成
portmap_enable=\"NO\" # Run the portmapper service (or NO).

5.1.2.3 Sendmail
FreeBSD 出厂的默认值也会执行 sendmail 的功能。从很久以前 sendmail 就以不安全且漏洞百出闻名。最近人们努力的将 sendmail 中的错误清除,但是由于 sendmail是一个很肥大的程序,要将所有的错误都抓出来相当的困难。换句话说:如果你不需要它的话,最好把它关掉。如果你真的需要它的话,最好到 sendmail 的网站去看看有没有新的patches 或是 hacks, sendmail 的网站在 http://www.sendmail.org

此外,如果你的 sendmail 版本是 8.8 以后的版本,请设定好你的系统,以防止 spammer利用你的系统去干坏事。设定 anti-spam 的信息可以在 http://www.sendmail.org/antispam.html 下找到。

如果你决定要把 sendmail 关掉的话,只要去修改 /etc/rc.conf (没错,又是它)中的:
sendmail_enable=\"YES\" # Run the sendmail daemon (or NO).
改成
sendmail_enable=\"NO\" # Run the sendmail daemon (or NO).

5.1.2.4 Ports and Packages
在一台高安全性的系统上, 最好不要使用 ports 或 packakges。 你不会真正知道是不是安装 suid 的程序进你的系统 — 而且你不会想再多这些 suid 的东西了, 相信我。尽管你在 pkg_add 时可以使用不同的选项(如 \"-v\" 或 \"-n\"), 最好还是自己来: 抓回它的 source code, 自己 compile, 再手动安装完成。

5.1.2.5 Filesystem quota
如果你的系统是 \"shell\" type server,你可能希望设定使用者的 quota (可用空间)。

如此一来可以保护你的系统免受 Denial of Service 攻击方式的侵扰(不论是有意或是无意的)。在未设定 quota 的系统上使用者可以随意的灌爆你的硬盘。要把 quota这项功能打开,你可以修改 /etc/rc.conf 中的这项设定:

check_quotas=\"NO\" # Check quotas (or NO).
改成
check_quotas=\"YES\" # Check quotas (or NO).

请先看看以下的 man page,这些文件说明如何使用 quota 的各项设定,并且有一些设定的范例: quotaon, edquota, repquota, quota 请确定在 /etc/fstab 中有加入 \"userquota\" , 详见 man 5 fstab。

5.1.2.6 Crontab
如果你使用了 /etc/crontab 的话,这项功能有可能提供入侵者一些额外的信息。
请确定你做过 \"chmod 640 /etc/crontab\"

5.1.2.7 BPF
BPF 是 berkeley packet filter 的缩写,要使用这项功能前你必须修改 kernel,以达成监听网络的目的。像 tcpdump 和 NFR 这些程序都使用 BPF。然而 BSD的监听程序也都透过 BPF 来达成,如果有人拿到你系统的 root 权限的话,在系统上设定 BPF 功能反而帮助他们更容易的监听你的网络。如果没有必要的话,不要设定 kernel 中 BPF的功能。 FreeBSD 出厂的设定值是将这个功能关闭起来的。

5.1.2.8 CVSup, CVS, 等等
如果你是使用 CD-ROM 安装你的系统的话,很有可能当你拿到你的 CD-ROM时,已经发现某些程序有错误存在了。在大部份的情况下(我们希望如此),这些错误与系统安全无关。然而,我建议你将你的系统升级到最新的 -current (或是 -stable,视你的喜好而定) 版本。如此你可以确定你系统上的的是最新版本的系统原始码。

你需要的信息在这边可以找到:
http://www.freebsd.org/handbook/handbook264.html#508

在更新你操作系统的原始码后你必须去 \"make world\",详细的文件在:
http://www.nothing-going-on.demo … rld/make-world.html

5.1.2.9 SSH
使用 ssh 以代替 telnet, ftp, rlogin, rsh 等的重要性, 再怎么强调都是不够的。对于使用慢速线路的人 (dial-up, 56K frame), ssh 有 -C 选项:
-C 将数据压缩后再传出去, 包括了 stdin, stdout, stderr还有透过 X11 还有TCP/IP。压缩的算法同 gzip, 而且可以指定压缩的 level。对于 moden users 和使用慢速线路的人, 这功能是不错的。 但有高速线路的人, 这么搞只会拖慢速度。在主机对连时可以设默认值, 请再参照文件。

这会让你用起来快一点 总之就是用 SSH 就对了啦! 拜托, 拜托, 使用 ssh。 如果你硬是不信邪, 再也没什么安全措施可以帮助你了 !!

5.1.2.10 Related URLs

1) FreeBSD Hardening Project:
http://www.watson.org/fbsd-hardening/
2) FreeBSD ipfw Configuration Page:
http://www.metronet.com/~pgilley/freebsd/ipfw
3) FreeBSD Security advisories:
ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/
4) FreeBSD Security web page:
http://www.freebsd.org/security/security.html
5) Security tools in FreeBSD:
http://www.samag.com/archive/0705/feature.html

5.2 sco 系列

5.2.1 抓好网内主机的管理是网络安全管理的前提

用户名和密码管理永远是系统安全管理中最重要的环节之一,对网络的任何攻击,都不可能没有合法的用户名和密码(后台网络应用程序开后门例外)。但目前绝大部分系统管理员只注重对特权用户的管理,而忽视对普通用户的管理。主要表现在设置用户时图省事方便,胡乱设置用户的权限(id)、组别(group)和文件权限,为非法用户窃取信息和破坏系统留下了空隙。

金融系统UNIX的用户都是最终用户,他们只需在具体的应用系统中工作,完成某些固定的任务,一般情况下不需执行系统命令(shell)。以农业银行全国电子汇兑为例,用户名为dzhd,它在/etc/passwd文件中描述如下:

dzhd:x:200:50: :/usr/dzhd:/bin/sh
它的.profile内容大致如下:
COBSW=+R+N+Q-10
DD_PRINTER=“1p-s”
PATH=/etc:/bin:/usr/binHOME/bin:/usr/dzhd/obj:
MAIL=/usr/spool/mail/logname
umask 007
eval`test -m ansi:ansi -m:?ansi -c -s -Q`
export PATH MAIL COBSW DD_PRINTER
cd usr/dzhd/obj
runx hdg
exit

用户正常登录后,如果按下中断键“delete”,关掉终端电源,或同时键入“Ctrl”“ ”,那么用户将进入shell命令状态。例如他可以在自己的目录不断创建子目录而耗尽系统的I节点号、或用yes>aa创建一个其大无比的垃圾文件而耗尽硬盘空间等导致系统的崩溃、瘫痪;如果文件系统的权限设置不严密,他可运行、窥视甚至修改它;还可通过su等命令窃取更高的权限;还可登录到其它主机上去捣乱……令你防不胜防,危险性可想而知。这一些问
题都与用户设置有关。所以,尽量不要把用户设置成上述形式。如果必须这样,可根据实际需要,看看能否把用户的sh变成受限sh,如rsh等,变成如下形式:

dzhd:x:200:50: :/usr/dzhd/obj:/bin/rsh
或如下形式:
dzhd:x:200:50: :/usr/dzhd:./main
在main(.porfile)首部增加如下一行:
trap’ ‘ 0 1 2 3 5 15

那么上述一切问题都可避免。

此外定期检查你的/etc/passwd文件,看看是否有来历不明的用户和用户的权限;定期修改用户密码,特别是uucp、bin等不常用的用户的密码,以防有人在此开个活动的天窗–一个可自由进出的用户;删除所有睡眠用户等。

5.2.2设置好自己的网络环境是阻止非法访问的有效途径
网上访问的常用工具有telnet、ftp、rlogin、rcp、rcmd等网络操作命令,对它们的使用必须加以限制。最简单的方法是修改/etc/services中相应的服务端口号。但这样做会使网外的一切访问都被拒绝,即使是否法访问也不例外。这种闭关自守的做法不值得提倡,因为这样会使本网和网外隔绝开,也会给自己带来不便。通过对UNIXt系统的分析,我们认为有可能做到有条件限制(允许)网上访问。

5.2.2.1 建立etc/ftpusers文件(不受欢迎的ftp用户表)。

与之相关的命令是ftp。配置如下:
#用户名
dgxt
dzhd

以上都是本机内的一些用户,侵入者使用以上用户名ftp访问本网会被拒之门外。

5.2.2.2 保存.netrc文件
注意保存好.netrc文件(远程注册数据文件)。与之有关的命令是ftp。.netrc包含注册到网络上用ftp作文件转移的远程主机的数据。通常驻留在用户当前目录中,文件权限必须为0600。格式如下:

machine对方主机名login对方主机内用户名password对方用户密码macdef init ftp的操
作命令集。

5.2.2.3 创建匿名ftp
所谓匿名ftp,是指其他主机的用户能以ftp或anonymous用户进行数据收发而不要任何密码。

建立方法如下:

1) 用sysadmsh创建ftp用户,在passwd文件表示为:
ftp:x:210:50: :/usr/ftp:/bin/sh
.profile中的路径为:
PATH=$HOME/binHOME/etc
2) 在/usr/ftp目录:
#创建匿名ftp所用的目录
#mkdir bin etc dev pub shlib
#改变pub以外所有目录权限
#chmod 0555 bin etc dev shlib
#改变pub目录的所有者和同组者
#chown ftp pub
#chgrp ftp pub
#复制匿名ftp所执行文件
#cp/bin/rsh/bin/pwd/bin/1s bin
#改变所需执行文件权限
#chmod 011 bin/*
#查看所需伪设备的情况
#1/dev/socksys
#1/dev/null
#建立所需伪设备的驱动程度
#cd/usr/ftp/dev
#mkond null c 4 2
#mkond socksys c 26 0
#改变伪设备驱动程序的所有者、同组者
#chown ftp ftp/*
#chgrp ftp ftp/*
#复制共享文件
#cp/shlib/ilbe_s shlib
注意不要复制/etc/passwd、/etc/proup到etc下,这样对安全具有潜在的威胁。此外给ftp用户加上密码,不要告诉其他任何人。

5.2.2.4 限制.rhosts用户等价文件(又叫受托用户文件)

与之有关命令有rlogin、rcp、rcmd等。
所谓用户等价,就是用户不用输入密码,即可以相同的用户信息登录到另一台主机中。用户等价的文件名为.rhosts,存放在根下或用户主目录下。它的形式如下:

#主机名 用户名
ash020000 root
ash020001 dgxt

如果用户名为空,是所有用户均等价。

5.2.2.5 限制hosts.equiv主机等价文件,(又叫受托主机文件)
有关的命令为rlogin、rcp、rcmd等。主机等价类似于用户等价,在两台计算机除根目录外的所有区域有效,主机等价文件为hosts.equiv,存放在/etc下,它的形式如下:

#主机名 用户名
ash020000
ash020001

当远程使用ftp访问本系统时,UNIX系统首先验证用户名和密码,无误后查看ftpusers文件,一旦其中包含登录所用用户名则自动拒绝连接,从而达到限制作用。因此我们只要把本机内除匿名ftp以外的所有用户列入ftpusers文件中,即使入者获得本机内正确的用户信息,无法登录系统。需对外发布的信息,放到/usr/ftp/bub下,让远方通过匿名ftp获取。使用匿名ftp,不需密码,不会对本机系统的安全构成威胁,因为它无法改变目录,也就无法获得本机内的其他信息。使用.netrc配置,需注意保密,防止泄露其他相关主机的信息。

使用用户等价和主机等机这类访问,用户可以不用口令而像其他有效用户一样登录到远程系统,远程用户可使用rlogin直接登录而不需密码,还可使用rcp命令向或从本地主机复制文件,也可使用rcmd远程执行本机的命令等。因此主种访问具有严重的不安全性,必须严格控制或在非常可靠的环境下使用。1998年美国发现的著名的“蠕虫”病毒,由一个叫英尔(morris)的年青人编写的,在Internet网上流传开,造成许多UNIX系统的瘫痪,损失达数亿美元,其重要的传播手段之一就是利用了用户等价和主机等价的配置。慎重使用(最好不用)和经常检查上述文件,会有效加强系统安全。

UNIX系统没有直接提供对telnet的控制。但我们知道,/etc/profile是系统默认shell变量文件,所有用户登录时必须首先执行它。如果我们在该文件首部增加如下几条shell命令:

#设置中断变量
trap’ ‘ 0 1 2 3 4 5 15
umask 022
#获取登录终端名
dc=“’who am i |awk‘[prin $2]’`”
#检查是否受限
grep $de /etc default/aaa >dev/null 2>&1
#如果受限
if [$?=“0”]
then
echo“请输入密码:c”
read abc
#获取正确密码
dd=“grep root /etc/edfault/aaa|awk’[pint $2]’`”
#非法用户发出警告信息到主控台
法[“$abc”!=$dd]
then
echo “非法用户!”
echo“有非法用户试图登录!”>tev/tty01
logname>/dev/tty01
#同时记载日记文件
echo“有非法用户试图登录!c”> >/usr/tmp/err
echo $dc> >/usr/tmp/err
logname > >/usr/tmp/err
exit;
fi;
fi

其中/etc/default/aaa是受限终端名的一个文本文件,root后为密码,它的内容如下:

root qwerty
ttyp0
ttyp1
ttyp2
ttyp3
ttypa
ttypb

这样非法用户即例获得了合法的用户名和密码,也无法远程使用。系统管理员定时阅读日记文件,注意控制台信息,就能获得被非法访问的情况,及时采取措施。如果用c语言实现上述过程,把接受爱变成不可显示,效果更佳。

5.2.3 加强对重要资料的保密
它主要包括hosts表、X.25地址、路由、连接调制解调器的电脑号码及所用的通信软件的种类、网内的用户名等,这些资料都应采取一些保密措施,防止随意扩散。如可向电信部门申请通信专用的电话号码不刊登、不供查询等。由于公共的或普通邮电交换设备的介入,信息通过它们后可能被篡改或泄露。

5.2.4 加强对重要网络设备的管理
路由器在网络安全计划中是很重要的一环。现在大多数路由器已具备防火墙的一些功能,如禁止telnet的访问、禁示非法的网段访问等。通过网络路由器进行正确的存取过滤是限制外部访问简单而有效的手段。
有条件的地方还可设置网关机,将本网和其他网隔离,网关机上不存放任何业务数据,删除除系统正常运行所必须的用户外所用的用户,也能增强网络的安全性。

Unix/Linux上的后门技术和防范

对黑客来讲,入侵一个系统只是万里长征的开始,最主要的是长期占有一个肉鸡(傀儡机),所以,后门技术往往非常重要。对于我们来讲,总是处于被动的地位,百密一疏,总有没有做到位的地方,谁都不能保证自己的系统是绝对安全的,所以不能避免我们可能会被入侵。黑客入侵后肯定会留后门,当然,除了那些高手,境界非常高,入侵只是为了测试或者技术挑战,对于一般黑客来讲,入侵之后留个后门是很重要的,我们要防范,当然就要了解常用的后门技术,下面就简单的讲将在 Unix/Linux系统中比较常见的后门技术。

1. 帐号后门
  最普通和原始的后门技术,一般就是在系统中添加一个管理员帐户。

  # echo "heiyeluren:*:0:0::/root:/bin/sh" >;>; /etc/passwd

  # echo "heiyeluren::0:0::0:0::/root:/bin/sh" >;>; /etc/shadow

  给系统增加一个 uid和gid都为0(root)的帐号,无口令。

  FreeBSD的密码是存储在 /etc/master.passwd里面的,那么后面的命令就应该改成:

  # echo "heiyeluren:::::::::" >;>; /etc/master.passwd

  也可以使用程序来实现:

  /* Add super user */

  #include "stdio.h"

  #define PASSWD_PATH "/etc/passwd"

  #define SHADOW_PATH "/etc/master.passwd"

  main()

  {

  FILE *fd;

  fd = fopen(PASSWD_PATH, "a+";

  fprintf(fd, "heiyeluren:*:0:0::/root:/bin/sh\n";

  fclose(fd);

  fd = fopen(SHADOW_PATH, "a+";

  fprintf(fd, "heiyeluren::0:0::0:0::/root:/bin/sh\n";

  fclose(fd);

  }

  # gcc -o adduser adduser.c

  # ./adduser

  这种方法比较傻,一般比较容易发现,特别是系统帐户不多的时候。也有的用户名起的比较迷惑人,比如起个r00t的用户名,uid和gid都是0,这样如果不注意,可能就会被蒙混过关了。

  * 防范方法:

  这种方法虽然比较容易发现,但是我们还是要防范,要多注意观察系统的帐户情况,本来我们系统帐户就不多,检查起来比较方便,另外也要注意那些比较少使用的帐户是不是被更改过,比如默认的帐户有bind,它的shell是 /usr/sbin/nologin,就是不能登陆的,但是黑客入侵后把它改了,比如改为/bin/csh,那么对方就能登陆了,但是你确不知道。所以最好办法是把/etc/passwd另外备份一份,不定期的检查,同时把/etc/passwd和/etc/master.passwd设为只有root才能查看。

2. shell后门
这个比较常用,也比较流行。一般就是把root执行的shell程序通过setuid的形式把shell程序拷贝到其他能够执行的地方,然后只要用小权限用户执行该shell就能够直接获取root权限。

  比如:

  # cp /bin/sh /tmp/.backdoor

  # chown root:root /tmp/.backdoor

  # chmod +s /tmp/.backdoor

  这样只是把sh复制了,如果你喜欢其他shell,比如ksh、csh也可以,具体你看各个不同的操作系统而定。你就可以把那个加了s标记的shell程序放到任何目录,最好是深一点,不容易被人发现的地方,比如/usr/local/share/man之类的目录,然后你使用小权限用户登陆后执行该 shell就可以了,比如我们上面复制的shell,我们只要用小权限用户登陆后执行:

  $ /tmp/.backdoor

  #

  就可以了,当然,如何获得小权限用户,你可以使用暴力破解一些帐户,或者自己创建一个小权限的帐户。

  * 防范方法:

  首先给各个主要目录加上我们上面说的文件指纹校验,知道某个目录下有什么文件,如果多出了可疑文件可以仔细检查。还有使用find命令来查找有没有危险的root suid程序:

  find / -type f (-perm -4000 -o -perm -2000 ) -print

3. Crontab服务后门
  crontab命令就相当于windows下的at命令,定期执行某些任务。对黑客来讲,比如定期建立一个帐户,然后过多久就删除,这样管理员永远看不到系统中有后门,这样是非常保险的……

  * 防范方法:

  cron的服务默认是存储在 /var/spool/crontab/root目录下,定期检查cron服务,看是否有异常的任务在执行,或者如果你不使用cron的话,直接关闭掉它。

4. rhosts后门
  Rhosts文件常常被黑客利用来制作后门,如果系统开了rlogin、rexec等r的服务,因为象rlogin这样的服务是基于rhosts文件里的主机名使用简单的认证方法,所以黑客只要将。rhosts文件设置成"++",那么就允许任何人从任何地方使用该用户名,无须口令登陆513端口的 rlogin服务就行。而且r之类的服务没有日志能力,不容易被发现。

  实现方法:

  # echo "++" >; /usr/heiyeluren/.rhosts

  # rlogin -l heiyeluren localhost

  这样就不需要任何密码,直接输入用户名heiyeluren就登陆到了系统。

  * 防范办法:

  不要使用rlogin等服务,同时也不推荐使用telnet等服务,因为telnetd等守护进程溢出漏洞一堆,而且在数据传输过程中是没有加密的,很容易被嗅探,建议使用ssh等经过安全加密的服务来替代。

5. Login后门
  login程序通常用来对telnet来的用户进行口令验证。 入侵者获取login的原代码并修改使它在比较输入口令与存储口令时先检查后门口令。 如果用户敲入后门口令,它将忽视管理员设置的口令让你长驱直入。

  * 防范方法:

  一般针对这类后门,一般都是使用"string"命令搜索login程序中是否有中是否有密码等字符串来进行检查。如果密码经过加密,那么就对login文件进行指纹记录和MD5值的记录,觉得异常时进行检测。

6. Bind后门
  就是通过常用的网络连接协议 TCP/UDP/ICMP 来建立连接的后门,这个在Windows下可是轰轰烈烈。

  比较普遍的有TCP协议的后门都是写一段程序开一个指定的端口进行监听,然后从客户端进行连接后登陆系统。也有黑客为了隐蔽使用UDP协议来连接。 icmp后门也常见,一般是。有时候可能bind后门跟服务后门结合,黑客通过自己写的bind后门来替换inetd中的服务。

  * 防范方法:

  经常使用netstat命令检查有没有非法的端口打开,最好直接用防火墙屏蔽除了正常访问的端口之外的端口。对于ping后门的话,直接在防火墙上禁止ping服务器

7. 服务后门
  一般是替换或者添加服务来实现后门。比如在 /etc/inetd.conf 中添加或者替换某个服务来运行自己的后门程序,或者在某些服务中加入自己的后门代码。如果是替换服务的话,该服务必须不被使用,而且不容易发现。如果是自己添加的服务,那么必须在/etc/services中设置对应的服务和端口才能使用。

  * 防范方法:

  经常检查服务,最好备份 /etc/inetd.conf 、/etc/services等文件,同时在FreeBSD下也要时常检查 /usr/loca/etc/rc.d 下面的脚本是否是合法的并且是否那些脚本里面有没有启动非法程序。如果是在服务程序中添加自己的代码,那么就要对文件的指纹进行校验,比如md5值看是否匹配。

8. rootkit后门
  rootkit后门一般是替换管理员使用的工具,比如ls、ps、netstat、who等常用文件,把那些程序替换成被黑客加了特殊代码的程序,那样就能达到控制的效果。而且现在已经有很多现成能下载使用的rootkit.

  * 防范方法:

  按照我们前面的方法,给每个文件建立系统指纹档案和md5校验值,如果觉得不对劲的时候查看文件指纹是否匹配,有没有别修改过,就知道是否着了rootkit的道。

9. 内核后门
  通过加载内核模块的方式来加载后门,比较复杂。一般内核后门都是针对操作系统而言的,不同的操作系统内核模块设置编写方法都不一样,一般不通用。内核后门一般无法通过md5校验等来判断,所有基本比较难发现,目前针对内核后门比较多的是Linux和Solaris下。

  * 防范方法:

  FreeBSD下通过我们上面讲的设置内核安全等级来控制加载内核模块。

10. 其他后门
  还有包括。forward等其他各类后门,另外很多后门可能是结合多种技术,比如把rootkit和内核后门结合在一起,实际过程中,黑克是会更难对付的。当然还有许多我们没有发现高手独门秘诀,这需要灵活检查,不过只要勤劳一点,安全会提升很多。