首页
社区
课程
招聘
[旧帖] [转帖] 如何成为一位 hacker 0.00雪花
发表于: 2010-1-17 09:24 1553

[旧帖] [转帖] 如何成为一位 hacker 0.00雪花

2010-1-17 09:24
1553
转自[黑色街角黑客技术大宝库]

如何成为一位 hacker

    这真是一个好问题, 不止是原作者说他被问过很多次, 包括我和许多网络上的朋友们也常有这个困扰. 不过和作者不同的是, 我经常没有一个固定的答案 :p事实上我所能提供也只是自己的经验, 却没有足够的能力来肯定自己的看法是不是正确的. 这份文章应该可以减去大家不少的麻烦 :)

嗯!! 这次自告奋勇当起翻译, 虽然是起于晚上回到住的地方之后很无聊, 可以用来打发时间. 不过我翻了百行之后, 越翻越后悔. 主要是因为面有一些句子实在很难翻译, 这大概是因为我的英文底子不太好的关系吧!! 好不容易, 终于是翻完了. 为让句子更通顺或者是个人误解, 翻译后和原文有些出入, 这方面还请各位大大见谅. :-)

Thinker
--------------------------------------------------------------------------
如何成为一位 hacker

为何有这份文件?

身为 Jargon File 的编辑, 常有一些网络新手发 mail 问我 "如何成为一个厉害的hacker?". 但, 很奇怪的, 似乎没有任何的 FAQs 或 Web documents 说明这么重要的问题, 所以我写了一份我自己的看法.

如果你是以 offline 的方式在看这一份文件的某一个版本, 那么你可以在
"http://www.ccil.org/~esr/faqs/hacker-howto.html" 找到这份文件的目前最新版本.

怎么样才算是一位 Hacker ??

在 Jargon File 有一堆关于 `hacker' 这个名词的定义, 大部份必须是技术上的行家或热衷于解决问题, 克服限制的人. 然而, 如果你想知道如何成为一位 hacker,有两件事是很有关连的.

这可以追溯到几十年前第一台 minicomputer 刚诞生, ARPAnet 实验也刚展开的时代. 那时有一个由程序设计专家和网络名人所组成的, 具有分享特质的文化族群.这种文化的成员创造了 `hacker' 这个名词. 这些 Hacker 建立了 Internet,创造出我们现在使用的 UNIX 操作系统, 他们也使 Usenet 运作起来, 并且让 WorldWide Web 动起来. 如果你是这个文化的一部分, 如果你对这些种种有所供献, 而且这个文化的其它成员也认识你, 并称你为 hacker, 那么你就是一位 hacker.

在精神上, hacker 并不单指(限制于)这种软件 hacker 的文化. 有人也把 hacker的特质发挥在其它领域, 例如: 电子或者音乐方面. 事实上你会发现, 在任何一种科学或艺术的最高境界, 你都可以发现 hacker 的特质. 软件 hacker 们认为,那些类似的精神也都可以称为 "hacker". 有些人还主张 hacker 的通性是独立于任何媒介之上的, 不特别属于任何一种 hacker 所在的环境. 但是, 在这份文件,我们将把重点放在软件 hacker 们所需的技能、态度和发明`hacker' 这个词的分享文化的传统.

在另一个团体, 他们的成员也很大声的称自己为 hacker, 但是他们不是真的 hacker.这些人(大部分是男性青年)专门闯入电脑和入侵电话系统, 真正的 hacker 们称他们为 `cracker', 并且不愿意和他们在一些做任何事. hacker 们认为这些人都是懒惰, 不负责, 并且不够光明正大的, 并且认为能破解安全系统并不能使你成为一位hacker. 但是很不幸的, 很多记者和作家不明究理的使用 `hacker' 这个字来描述cracker 们; 这让真的 hacker 们很忿怒.

基本上, hacker 和 cracker 之间最主要的不同是: hacker 们创造新东西,cracker 们破坏东西.

如果你想要成为一位 hacker, 继续读下去吧. 如果你是想要成为一位 cracker, 那么就去读 alt.2600 newsgroup 并准备在你发现自己并不如想像中那么行时, 给自己一点评价. 所有关于 cracker 的事情就只有这些了.

Hacker 态度

Hacker 们解决了问题并创造新东西, 他们相信自由并自愿的互相帮助. 想要被别人接受成为一位 hacker, 你必须发自内心的表现出这种态度. 为了要很自发的表现出这种态度, 你就必须先完全认同这些态度.

如果你只是把学习 hacker 态度这件事当作一种能在这个文化赢得认同的途径,那么你己经乎略了真正的重点. 由衷的接受这些态度是很这要的, 这能帮助你学习并维持你的动机. 就像那些具创造性的艺术一样, 成为一位大师的最有效方法是学习大师们的精神; 并不只是学习知识和情绪而己.

所以, 如果你想要成为一位 hacker, 请反复的做下面的事情, 直到你完全领会它们:

1. 这世上充满著等著被解决的迷人问题.

作为一个 hacker 是充满快乐的, 但这是一种因为努力得到成果所带来的快乐. 努力的成果则带来动机. 成功的运动家的动机则来自于, 使他们的身体不断进化,并把自己推向物理上的极限所带来的快乐. 类似的情形, 要成为 hacker, 你必须要能从解决问题, 精进技术, 和运用知识的过程中感受到一种悸动.

如果你不是天生就能感受到这种悸动的人, 那么, 为了要成为 hacker, 你必须使自己变成这样的人. 否则, 你会发现你的 hacking energy 就会像性, 金钱, 和社交活动一样, 因为分心而被消磨掉.

(你也必须为你的学习能力建立一种信念直到你完成你的工作 -- 即使你只处理一小部份, 而你也不知道你到底还要学些什么东西才有辨法解决你的问题, 但是你会努力学习, 准备充足, 以应付下一个问题.)

2. 没有任何人必须一再的解决同一个问题.

富创造力的头脑是贵重而有限的资源. 有这么多迷人的新问题在那等著被解决.因此富创造力的头脑不该被浪费的用来重复发明轮子.

身为一位 hacker, 你必须了解到其它 hacker 们的时间也是很宝贵的 -- 所以,分享资讯, 解决问题和提供解决方案给其它 hacker 以解决新的问题, 这些几乎算是道义上的责任.

( 即使 hacker 们所拥有的大多是从其它 hacker 的身上得来的, 但这并不意谓你必需把你创造的作品全部交出来, 你可以卖出足够数量的产品, 以求得温饱, 给付房租和买电脑设备, 这和 hacker 的价值观并不相违背. 使用你的 hacking 技能以供给一个家庭的生活, 甚至是致富, 只要你仍不忘记你是一位 hacker, 那么这些行为并不会产生予盾. )

3. 无聊而单调的工作是有害的.

Hacker 们(有创造力的人也是一样)永远不该做一些无聊而单调并且愚蠢的反复性工作. 因为, 如果这样的事情发生的话, 这表示他们正在做一些不是他们该做的事-- 解决新的问题. 这样的浪费对任何人而言都是一种伤害. 无聊单调的工作不只是无趣而己, 而且是一种有害的物质.

要做为一位 hacker 要能尽可能的自动避免无聊, 对此你必须有相当的认知. 这不只是为了你自己而已, 也是为了所有的人(尤其是其它的 hacker).

(这有一些例外. 有时侯 hacker 们会去做一些被认为无聊或重复性的工作, 当做脑力的训练, 或是为了要学习得某种技能或某种你所没有的特殊经验. 不过这是一种选择, 任何人都不该被强迫面对无聊事. )

4. 自由才好.

hacker 们天性上是反对独裁的. 任何一个给你命令的人就能给你一个独裁式的工作,并且可以给你一些笨的可以的理由, 停止你解决任何吸引著你的问题. 所以任何独裁式的行为都会被挑战, 以免会危害到你和其它的 hacker 们.

(这和为反对而反对是不同的, 小孩子是需要被指导和阻止他们犯错. hacker 也会同意接受某些权威, 照著指示做以较短的时间得到他想要的. 不过那是一种有限且理性的协定; ..... )

专制在监察和保密这些事上是很有效的方法. 这些行使专制的人并不相信自愿性质的合作和资讯分享 -- 他们只相信在他们控制之下的合作关系. 所以, 身为一位 hacker,你必具有一种敌对的天性, 以对抗监察, 秘密和使用外力强迫或迷惑可以信任的人等行为. 你必须以互信做为你行为的基础.

5. 态度并非不等效于能力

要成为一位 hacker, 你必须开始培养这些态度. 但, 如果你只是单独的模仿某一种态度, 这并不能使你成为一位真正的 hacker, 也不会使你成为一位运动冠军或摇滚明星.

因此, 你必须学会猜疑态度和尊敬各种能力. Hacker 们不会想浪费时间在虚华的人的身上, 他们尊敬的是能力 -- 特别是身为 hacker 的能力, 但对于其它方面的能力也是充满敬意. 如果有能力追求一些很少人能弄懂的技术,追求精神上的技巧, 并能集中精神, 那就再好不过了.

如果你尊敬各种的能力, 那么你就会乐于自己发展这些能力 -- 这会使的努力工作和奉献成为一种剌激性的消遣而非一份苦差事. 这对于想要成为 hacker 的人而言, 是很重要的.

一位 Hacker 所需的基本技能

hacker 的精神态度是很重要的, 但技术则更是重要. hacker 的态度虽然是无可取代,但在梦想别的 hacker 开始也叫你 hacker 前, 有些基本的工具和技术是必备的.
随著新科技的发明和旧技术的取代, 这些工具随时间在慢慢的改变. 例如: 以往总是会学会用机器码写程序, 直到最近我们开始使用 HTML. 不过, 在 1996 年末,下面所举的工具是很明显的被需要的:

1. 学习程序设计.

当然, 这是基础的 hacking 技能. 在 1997 年, 理所当然的, 你必须学会 C. 但,如果你只是学一种语言, 那么你不能算是一位 hacker, 了不起只能算是一个programmer. 除此, 你还必须学会学会以独立于任何程序语言之上的概括性观念来思考一件程序设计上的问题. 要成为一位真正的 hacker, 你必须要能在几天之内将manual 内容和你目前己经知道的关连起学会一种新的语言. 也就是说, 你必会学会数个不同的语言.

还了 C 之外, 你至少还要会 LISP 或 Perl (Java 也正在努力的挤上这个名单;译者注: 我很怀疑这份名单说 :p ). 除了几重要的 hacking 常用语言之外,这些语言提供你一些不同的程序设计途径, 并且让你在好的方法中学习.

程序设计是一种复杂的技术, 我没辨法在这提供完整的学习步骤. 但是我能告诉你一些在书本上和课堂上所没有的东西 (有很多, 几乎全部最好的 hacker 们都是自习而来的). (a) 读别人的程序码 和 (b) 写程序, 这两项是不错的方法.

学习写程序就像在学习写一种良好的自然语言, 最好的方法是去看一些专家们所写的东西, 然后写一些你自己的东西, 然后读更多, 再写更多 ... 然后一直持续, 一直到你发展出一种属于自己的风格和特色.

要找到好的程序码来看是很一件很困难的事, 因为, 对菜鸟 hacker 们而言, 适于供他们阅读和努力的大型程序的 source 数量很少. 但这事己有了戏剧性的变化了;现在免费的供应的软件、程序设计工具和操作系统(大都公开提供 source, 而且全都是由 hacker 们写成的)到处可看. 进入下一个主题...

2. 取得一个免费的 UNIX , 并学习使用和维护.

我先假设你己经有一部个人电脑或者是可以使用任何一部 (现在的小孩子真幸福,可如此轻易的拥有 :-)). 取得 hacker 技巧的第一个步骤是取得一份 Linux 或者一份免费的 BSD-Unix, 并将它安装在自己的机器, 并使之顺利的运作.

没错, 在这个世界上除了 Unix 之外, 还有其它的操作系统. 但是他们只提供 bianry, 你不能看到他们的程序码, 你也不能修改他们. 想要在 DOS 或 Windows或 MacOS 开始 hacking, 无疑就是要你绑著枷锁跳舞一样.

除此之外, Unix 是 Internet 上的操作系统. 当你在不懂 Unix 的情况下学习使用Internet 时, 你没辨法在不懂 Unix 的情况下成为 Internet 的 hacker. 因为这个原故, 现在的hacker 文化还是很牢固的以 Unix 为中心绕著. (这并不完全是正确的, 而且有些活在旧时代的hacker 甚至也不喜欢这种情形, 但是 Unix 和Internet 之间的共生共成己经到了牢不可破的地步, 即使是 Microsoft 的大块肌肉也没能在上面留下明显的伤痕.)

因些, 把 Unix 装起来吧! (我自己是喜欢 Linux, 但是还有其它的东东可用.) 学习它, 让它运作起来, 让它陪你努力精进. 用他向整个 Internet 喊话. 看程序码,改程序. 有一天你成为一位高竿的 hacker, 你回头往后看时会发现, 你得到比Microsoft 操作系统所能提供的还要好的程序设计工具(包括 C, Lisp和 Perl).而且得到快乐, 并学到比你想像中的还要多的知识.

关于学习 Unix, 在 Loginataka 有更多的资料.(http://www.ccil.org/~esr/faqs/loginataka.html)

看一下 Linux distribution 的目录或 Linux CD, 并把自己交付给它.

3. 学习使用 World Wide Web 并学会写 HTML.

在 hacker 文化创造出来的东西, 大多在他们的活动范围外被使用著, 如, 在工厂和辨公室或大学被漠漠的使用著. 但 Web 是一个很大的例外, 这个 hacker 眼中的大玩具甚至还被政客们接受, 并巧巧的在改变这个世界. 因此(还有很多好的理由),你必须学习 Web.

并不只是学习使用 browser (这太容易了)而己, 还要学会写 HTML 这个 Web 的标签语言. 如果你不知道如何设计程序, 写 HTML 也可以给一些习惯上的帮助.嗯!! 建立 home page 吧!

不过, 有一个 home page 并没任何特别之处能让你成为一位 hacker. Web 上到处都是 home page, 而且大部份都没什么重点, 没什么内容的烂泥 -- 很好看的烂泥巴,但是看起来都一样, 差不多.
(http://www.ccil.org/~esr/html-hell.html)

为了让你的 page 有其价值, 它必须是有内容的东西 -- 它必须是有趣并且(或者)对其它 hacker 有用处的.

Hacker 文化的状况

就像大多数没有经济活动的文化一样, hackerdom 的运作是建立在名望之上. 当你尝试去解决一个有趣的问题时, 你所做事是否有趣, 你的解决方案是不是真的好用, 这些只有你的技术上的同好或前辈准备好为你做评价.

因此, 当你开始玩起 hacker 的游戏时, 你的主要分数是来自其它 hacker 们对你的技术的看法(这就是为什么只当其它的 hacker 都认为你是 hacker 时, 你才算是一位真正的 hacker). 这个事实被人们认为 hacking 是一种孤独的工作的印象所朦敝了; 也被hacker 文化的禁忌(现在己渐渐的朽坏了, 但依然存在) 和存在人们内心动机的自大或特权之间的冲突所朦敝.

具体的说, hackerdom 就是人类学家所说的「天才文化」.你在其中所得到的地位和名望并不来自于支配其它人, 或是因为长的漂亮, 或因为你有一些别人想要的东西, 而是因为你送出东西. 特别是, 你给送出你的时间,你的创造力和你的技术成果.

下面有五种事, 你会因为做了这些事而爱到 hacker 们尊敬:

1. 写免费的软件.

第一种是写那些其它 hacker 们觉的有趣或好用的程序, 并把 source 公开开放给整个 hacker 文化中的人使用.

hackerdom 最爱尊敬的是写出大而功能强的程序的人, 而且这程序是广为大家需要的,所以大家都在做用这些程序.

2. 帮忙 test 和 debug 免费的软件

hacker 们也尊敬帮忙 debug 免费软件的人. 在这个不是很完美的世界, 你不可避免的必须花掉大部分的软件发展周期在 debug 阶段上. 这就是为什么在任何免费软件发展者的脑子都会告诉你一件事, 好的 beta 测试者(能很很清楚的描述发生的状况,正确的发现问题出处, 可以容忍测试版本的 bug, 并且能进行一些简单的诊断程序)和红宝石一样贵重.

如果你是一只菜鸟, 试著开始去找一个你有兴趣的正在发展中的程序, 并且成为一位好的 beta 测试者. 从帮忙测试开始, 很自然的你开始帮忙 debug, 进而开始帮忙修改程序. 你将在这过程中学习到很多东西, 并,且和以后可以帮助你的人结下因果.

3. 公布有用的资讯.

另一项好事是收集和过滤有用和有趣的资讯, 整理成 Web page 或 FAQ 之类的文件, 让大家能很容易的收得.

几种主要技术 FAQ 的维护者都能得和免费软件的作者几乎一样多的尊敬.

4. 帮忙维持一些简单的工作.

hacker 文化是由一群自愿者维持运作著. 有一些工作很无趣但却必须维持正常运作的, 如: 管理 mailing list, 维护 newsgroup, 维持大的软件供应站台, 推动RFC 和其它技术标准.

做这类的事将会得到很多的尊敬, 因为大家都知道这些工作是很花时间, 但又不像玩弄程序码般有趣.

5. 为 hacker 文化而努力.

最后一项, 你可以为这个文化效劳, 并推广这个文化(例如, 写一份正确的入门手册,教别人如何成为一位 hacker :-)). 在你因为做了前面四件事之一而出名之前, 这不是你该做的事.

正确的说, hacker 文化并没有任何的领导者, 但在这文化有所谓的文化英雄,族群历史学家. 当你在其中混的够久之后, 你也许会成为这之中的一员. 注意:hacker 们并不相信族群, 喧骚自大的长者, 所以成为这样的长者是非常的危险.与其去和别人竞争, 你宁可为自己定位, 给自己一个亲切谱虚的身份.

Hacker 和 Nerd(怪胎) 的关系

成为一位 hacker, 你不需要成为令人讨厌的人(Nerd), 反于社会常态. 然而, 这对你而言却是非常有帮助的, 而且有很多 hacker 也是让人讨厌的人. 当一个社会的浪人有益于让你专心在真正重要的事情上面, 例如: 思考和 hacking.

因此, 有很多 hacker 们接受了 `nerd' 这种称呼, 甚至是使用 `geek'(杂耍演员) 这个字眼, 并引以为傲 -- 这是一种说明他们独主于世俗习惯之外的方法. 在 The GeekPage 可找到更多相关的讨论。
(http://samsara.circus.com/~omni/geek.html)

如果你能够适当的专注于 hacking 这事上面, 并且还保有你的生活, 那很好. 而且现在要做到这样, 比起以前我还是个菜鸟时容易. 主流文化现在也较为 techno-nerd (技术怪胎)所接受. 甚至有越来越多的人认为 hacker 们可以是很好的男朋友, 女朋友,老公和老婆. 在 Girl's Guide to Geek Guys 可找到更多相关的讯息。
(http://www.bunnyhop.com/BH5/geekguys.html)

如果你是因为没有生活而想开始 hacking, 那也没关系, 至少你就没有不能专心的问题了. 也许不久之后你就是一位 hacker 了.

风范要点

再一次的强调, 要成为 hacker 就要了解 hacker 的精神. 如果你并不玩电脑, 那么还是有一些事情可以帮助你. 这些不能成为 hacker 的代替品, 不过有不少的 hacker经常做这些事, 并认为这些事和 hacking 的本质有某种基本的关连.

* 阅读科学小说, 并参加小说的聚会(这是一个遇到 hacker 和原始 hacker们的好方法).
* 学禅, 并且(或者)接触战争的艺术. (钢铁般的纪律似乎很重要.)
* 训练你的耳朵对音乐的分析能力, 试著欣赏某种特殊的音乐, 并好好的玩一些乐器或者唱歌.
* 增加对于俏皮话和文字游戏的认识.
* 加强你的母语写作能力. (有很惊人数量的 hacker, 都是不错的作家. 这包括一位我所知道的最好的 hacker.)

你做越多这些事, 那么你就愈是天生 hacker 的料。

最后, 有一些事千万不要做.

* 不要使用愚蠢而夸张的代号(user ID)或化名.
* 不要加入 Usenet 的战火 (或者任何地方的).
* 不要自称为 `cyberpunk'(电脑捣蛋玩家),也不要浪费任何时间在这么做的人身上.
* 不要 post 或 email 一些充满错字或文法错误的文章.

做了这些事的结果只是为你招来大家的责难和批评. Hacker 们的记忆力都很好, 他们会
一直记住你的所做所为, 你可能要花数年的时间才有辨法让他们重新接受你.

其它的资源

Loginataka 有提到一些关于 Unix hacker 的训练和态度.
(http://www.ccil.org/~esr/faqs/loginataka.html)

我也写了关于 Hackerdom 历史的简介.
(http://www.ccil.org/~esr/faqs/hacker-hist.html)

Peter Seebach 也维护了一份很不错的 Hacker FAQ, 这份文件是专门给不知道
如何和 hacker 们相处的经理人们看的.
(http://www.solon.com/~seebs/faqs/hacker.html)

我也写了一份 paper「Cathedral and the Bazaar」, 上面解释 Linux 文化的运作
方式. 你可以在我写的page 上找的到.
(http://www.ccil.org/~esr/writings/index.html)

常被提出的问题 (FAQ)

Q: 你能教我如何 hack 吗?

自从公开这个 page 以来, 我每周都收到很多人来信问"请告诉我所有关于 hacking的事". 但很不幸的, 我没有这个时间或者是精力去做这件事; 我的 hacking project已经用掉我 110% 的时间了.

就算我愿意, 但是基本上, hacking 是一种必须自习而成的生活态度和技术. 你会发现,当真正 hackers 愿意帮助你的同时,你将得不到他们的尊敬,若你求他们把会的东西都直接给你的话。

先学一点东西吧! 表现出你正在努力尝试, 你有能力独立学习的. 然后再带著你所遇到的难题去和 hacker 见面.

Q: 我要在那才能找的到一位真的 hacker 并和他们交谈?

很好, 不过很确定的, 不会在 IRC. 就我所能看到的, 那除了骗子和 cracker 之外什么也没有. 最好的方法是找到一个在你附近的 Unix 或 Linux 的使用群, 并加入他们,参加他们的聚会 (在 Linux Users' Group page on Sunite 有一份目录).
(http://unc.sunsite.edu/linux/ldp/lugs.html)

Q: 我应该从那一种语言开始学呢?

如果你真的不懂 HTML 的话, 那就从它开始吧. 市面上有很多外表光鲜亮丽的 HTML烂书. 我最喜欢的一本是 HTML: The Definitive Guide.
(http://www.ora.com/catalog/html2/)

如果你已经准备好开始学 programming 了, 我会建议你从 Perl(http://www.perl.com/)或 Python(http://www.python.org/)开始. 而 C 是真的很重要, 不过它也真的很难.

Q: 我要如何开始呢? 在那能拿到免费的 Unix 呢?

我在这 page 内到处都有指向取得 Linux 的地方. 要成为一位hacker, 你必须要有动机并且主动进取还要独立学习. 就从现在开始吧....

原著 Eric S. Raymond esr@snark.thyrsus.com

译者 Thinker.bbs@bbs.yzu.edu.tw

                                    如何追踪黑客

黑白网络

  入侵者的追踪(Intruder Tracing)在区域网路上可能你听过所谓「广播模式」的资料发送方法,此种方法不指定收信站,只要和此网路连结的所有网路设备皆为收信对象。但是这仅仅在区域网路上能够实行,因为区域网路上的机器不多(和Internet比起来 )。如果象是Internet上有数千万的主机,本就不可能实施资料广播(至于IP Multicast算是一种限定式广播Restricted Broadcast,唯有被指定的机器会收到, Internet上其他电脑还是不会收到)。假设Internet上可以实施非限定广播,那随便一个人发出广播讯息,全世界的电脑皆受其影响,岂不世界大乱?因此,任何区域网路内的路由器或是类似网路设备都不会将自己区域网路内的广播讯息转送出去。万一在WAN Port收到广播讯息,也不会转进自己的LAN Port中。而既然网路皆有发信站与收信站,用以标示信息发送者与信息接收者,除非对方使用一些特殊的封包封装方式或是使用防火墙对外连线,那么只要有人和你的主机进行通讯(寄信或是telnet、ftp过来都算) 你就应该会知道对方的位址,如果对方用了防火墙来和你通讯,你最少也能够知道防火墙的位置。也正因为只要有人和你连线,你就能知道对方的位址,那么要不要知道对方位置只是要做不做的问题而已。如果对方是透过一台UNIX主机和你连线,则你更可以透过ident查到是谁和你连线的。在实行TCP/IP通讯协定的电脑上,通常可以用netstat指令来看到目前连线的状况。(各位朋友可以在win95、Novell以及UNIX试试看(注一),在下面的连线状况中,netstat指令是在win95上实行的,以看到目前自己机器(Local Address处)的telnetport有一台主机workstation.variox.int 由远端(Foreign Address处)连线进来并且配到1029号tcp port.而cc unix1主机也以ftpport连到workstation.variox.int去。所有的连线状况看得一清二楚。(如A、B)

  A.在UNIX主机(ccunix1.variox.int)看netstat
  B.另一端在Windows95(workstation.variox.int)看netstat,

  当然,如果你想要把网路连线纪录给记录下来,你可以用cron table定时去跑:

  netstat>>filename,但是UNIX系统早已考虑到这一个需求,因此在系统中有一个专职记录系统事件的Daemon:syslogd,应该有很多朋友都知道在UNIX系统的/var/adm下面有两个系统纪录档案:syslog与messages,一个是一般系统的纪录,一个是核心的纪录。但是这两个档案是从哪边来的,又要如何设定呢?

  系统的纪录基本上都是由syslogd (System Kernel LogDaemon)来产生,而syslogd的控制是由/etc/syslog.conf来做的。syslog.conf以两个栏位来决定要记录哪些东西,以及记录到哪边去。一个最标准的syslog.conf,第一栏写「在什么情况下」以及「什么程度」。然后用TAB键跳下一栏继续写「符合条件以后要做什么」。这个syslog.conf档案的作者很诚实,告诉你只能用TAB来作各栏位之间的分隔(虽然看来好像他也不知道为什么)。第一栏包含了何种情况与程度,中间小数点分隔。另外,星号就代表了某一细项中的所有选项。详细的设定方式如下:

  1.在什么情况:各种不同的情况以下面的字串来决定。

  auth 关于系统安全与使用者认证方面
  cron 关于系统自动排程执行(CronTable)方面
  daemon 关于背景执行程式方面
  kern 关于系统核心方面
  lpr 关于印表机方面
  mail 关于电子邮件方面
  news 关于新闻讨论区方面
  syslog 关于系统纪录本身方面
  user 关于使用者方面
  uucp 关于UNIX互拷(UUCP)方面

  上面是大部份的UNIX系统都会有的情况,而有些UNIX系统可能会再分出不同的项目出来。

  2.什么程度才记录:

  下面是各种不同的系统状况程度,依照轻重缓急排列。
  none 不要记录这一项
  debug 程式或系统本身除错讯息
  info 一般性资讯
  notice 提醒注意性
  err 发生错误
  warning 警告性
  crit 较严重的警告
  alert 再严重一点的警告
  emerg 已经非常严重了

  同样地,各种UNIX系统可能会有不同的程度表示方式。有些系统是不另外区分crit与alert的差别,也有的系统会有更多种类的程度变化。在记录时,syslogd 会自动将你所设定程度以及其上的都一并记录下来。例如你要系统去记录 info等级的事件,则notice、err.warning、crit、alert、emerg等在info等级以上的也会一并被记录下来。把上面所写的1、2项以小数点组合起来就是完整的「要记录哪些东西」的写法。例如mail.info表示关于电子邮件传送系统的一般性讯息。auth.emerg就是关于系统安全方面相当严重的讯息。

lpr.none表示不要记录关于列表机的讯息(通常用在有多个纪录条件时组合使用)。另外有三种特殊的符号可供应用:

  1.星号(*)
  星号代表某一细项中所有项目。例如mail.*表示只要有关mail的,不管什么程度都要记录下来。而*.info会把所有程度为info的事件给记录下来。

  2.等号(=)
  等号表示只记录目前这一等级,其上的等级不要记录。例如刚刚的例子,平常写下info等级时,也会把位于info等级上面的notice、err.warning、crit、alert、emerg等其他等级也记录下来。但若你写=info则就只有记录info这一等级了。

  3.惊叹号(!)
  惊叹号表示不要记录目前这一等级以及其上的等级。

  一般的syslogd都提供下列的管道以供您记录系统发生的什么事:

  1.一般档案
  这是最普遍的方式。你可以指定好档案路径与档案名称,但是必须以目录符号「/」开始,系统才会知道这是一个档案。例如/var/adm/maillog表示要记录到/var/adm下面一个称为maillog的档案。如果之前没有这个档案 ,系统会自动产生一个。

  2.指定的终端机或其他设备
  你也可以将系统纪录写到一个终端机或是设备上。若将系统纪录写到终端机,则目前正在使用该终端机的使 用者就会直接在萤幕上看到系统讯息(例如/dev/console或是/dev/tty1.你可以拿一个萤幕专门来显示系统讯息 )。若将系统纪录写到印表机,则你会有一长条印满系统纪录的纸(例如/dev/lp0)。

  3.指定的使用者
  你也可以在这边列出一串使用者名称,则这些使用者如果正好上线的话,就会在他的终端机上看到系统讯息( 例如root,注意写的时候在使用者名称前面不要再加上其他的字)。

  4.指定的远端主机
  这种写法不将系统讯息记录在连接本地机器上,而记录在其他主机上。有些情况系统碰到的是硬碟错误,或是万一有人把主机推倒,硬碟摔坏了,那你要到哪边去拿系统纪录来看呢?而网路卡只要你不把它折断,应该是比硬碟机耐摔得多了。因此,如果你觉得某些情况下可能纪录没办法存进硬碟里,你可以把系统纪录丢到其他的主机上。如果你要这样做,你可以写下主机名称,然后在主机名称前面加上「@」符号(例如 @ccunix1.variox.int,但被你指定的主机上必须要有syslogd)。

在以上各种纪录方式中,都没有电子邮件这项。因为电子信件要等收件者去收信才看得到, 有些情况可能是很紧急的, 没办法等你去拿信来看(BSD的Manual Page写着「when you got mail,it's already too late...」 :-P)。以上就是syslog各项纪录程度以及纪录方式的写法,各位读者可以依照自己的需求记录下自己所需要的内容。但是这些纪录都是一直堆上去的,除非您将档案自行删掉,否则这些档案就会越来越大。有的人可能会在syslogd.conf里写:*.*/var/log/everything,要是这样的话,当然所有的情况都被你记录下来了。但是如果真的系统出事了,你可能要从好几十MB甚至几百MB的文字中找出到底是哪边出问题,这样可能对你一点帮助都没有。因此,以下两点可以帮助你快速找到重要的纪录内容:  

  1.定期检查纪录
  养成每周(或是更短的时间,如果你有空的话)看一次纪录档的习惯。如果有需要将旧的纪录档备份,可以cploglog.1,cploglog.2...或是cploglog.971013,cploglog.980101...等,将过期的纪录档依照流水号或是日期存起来,未来考察时也比较容易。

  2.只记录有用的东西
  千万不要像前面的例子一样,记录下*.*。然后放在一个档案中。这样的结果会导档案太大,要找资料时根本无法马上找出来。有人在记录网路通讯时,连谁去ping他的主机都记录。除非是系统已经遭到很大的威胁,没事就有人喜欢尝试进入你的系统,否则这种鸡毛蒜皮的小事可以不用记录。可以提升些许系统效率以及降低硬盘使用量(当然也节省你的时间)。地理位置的追踪如何查出入侵者的地理位置?光看IP地址可能看不出来,但是你常看的话,会发现也会发现规律的。在固接式的网路环境中,入侵者一定和网路提供单位有着密切的关系。因为假设是区域网路,那么距离绝对不出几公里。就算是拨接好了,也很少人会花大笔钱去拨外县市甚至国外的拨接伺服器。因此,只要查出线的单位,入侵者必然离连线单位不远。

  拨接式的网路就比较令人头疼了。有许多ISP为了吸引客户,弄了很多什么网络卡。User这边只要买了固定的小时数,不需须另外向ISP那边提出申请,就可以按照卡片上的说明自行拨接上网。这样当然可以吸引客户,但是ISP就根本无从得知是谁在用他们的网路。也就是说,虽然以网络卡提供拨接服务给拨接使用者带来相当大的便利,但却是系统安全的大敌,网路管理员的恶梦。如果入侵你的人是使用网络卡来上网,那……,要从拨号的地点查吗?入侵者可以不要用自己家里的电话上网。来话者电话侦测(Caller ID)各位读者家中有ISDN吗?如果你用过ISDN的Caller ID功能,会发现真是方便极了,对方的号码马上就显示出来给你看。看到女朋友打电话来,马上就接了起来;而杂志社的打来催稿,就打开电话答录机假装不在家…… :-P.但是Caller ID依然有失效的时候。有以下测试,是看CallerID可以显示出哪些号码的(受测机种为Zyxel,终端机使用Windows NT的Hyper Terminal):要显示来话方号码的前提是,对必须是透过数位交换机打到你这边,有些地区目前仍然使用机械式交换机,如果你打电话的交换路径中,有经过这些机械式的交换机,那么依然无法显示出号码来。其他电话还没有做测试。如何靠IP地址或Domain Name找出入侵者位置?虽然电话不一定查得出来,但是至少你会知道他的IP地址。IP地址的使用必须向InterNIC登记,而Domain Name要向当地直属的网路管理中心登记。在Internet上的网路管理中心共有三个层级(单位性质一定为NET):

  1.国际等级
  国际等级只有InterNIC一个,全球各国的NIC以及洲际NIC均由其管理。( http://www.internic.net/)。

  2.洲际等级
  InterNIC并不直接管理整个Internet,其下的网路资源会再做分区。例如台湾、日本、香港等亚太地区国家,由亚太洲际网路管理中心(Asian-PacificNIC,APNIC,位于日本)来管理,并不直接由InterNIC管理 ( http://www.apnic.net/)。

  3.国家等级
  Domain Name后面不挂国码的不是由InterNIC管理就是由洲际的NIC管理,但是有挂国码的由当地国家之NIC管理,惯例是两位国码加上NIC就是该国NIC之名称。例如中国的国码为CN,则中国网路管理中心为CNNIC(http://www.cnnic.net/),但由于InterNIC位于美国,因此美国的DomainName由InterNIC直辖。有一个特别的例外是挂.mil的美国军方网路的资料是由ddn.mil(美国军事防卫网路)来管理,不由InterNIC管理,当您得到某个Domain Name或是IP地址后,可以使用whois来查出资料,语法如下:

  whois -h<whois服务器><查询对象>
例如向whois.internic.net查询hp.com,需输入:
  whois -h whois.internic.nethp.com whois
也可能使用下列语法:
  whois <查询对象>@<whois伺服器>
例如向whois.twnic.net查询ntu.edu.tw需输入:
  whois ntu.edu.tw@whois.twnic.net
目前在Slackware Linux附上的为后者。

Domain Name命名的三种情况

  虽然同样是 Domain Name,可能你会遇到三种命名的不同情况。在许多国家*.edu.*是由NIC以外的单位所管理( 如育部),而属性也不一定是三个字母,甚至没有属性。在判断单位性质时读者宜多加注意,以免找不到资料。
  1.标准国码+三码属性码(或没有国码,仅有属性码)
  普遍使用于欧洲,美洲国家以及部份东南亚国家。如台湾常见*.edu.tw、*.com.tw,美国的*.com、*.edu。

  2.标准国码+二码属性码
  以日本例,公司属性为co,社团属性为or,和三码定义的com、org略有不同。如日本万代公司之Homepage 为www.bandai.co.jp,如果读者要使用公司名称拼凑出完整主机名称时,需注意日本为仅有两码属性码之地区,否则若猜测其为www.bandai.com.jp 就会发生错误(注:在国际通信范例中,无论是无线电通信、国际越洋电 话、乃至于网际网路等,均将台湾与中国大陆划分为两个不同国家。在此将中国大陆与台湾区分,除突显此一 特性外,并无其他涵义,请大家勿需自行揣测其他意义)。  

  3.仅有标准国码,未有任何属性码
  如澳洲的主机均为仅有*.au之主机名称,未有任何其他的com、co、或任何单位属性码后面直接接上单位名称 。由Domain Name查出连线单位资料在Internet上惯例由whois服务来查询连线单位的登记资料,whois本来应该是用来查某人的电话或是其他资 料的(有点像是finger或是现在很流行的寻人服务,像是whowhere、bigfoot之类的,请上www.whowhere.com一 探究竟),但是在NIC方面是用来查出连线单位的电话以及住址,技术联络人等。符合该NIC管理权限的单位资料会存放于该单位的whois主机中,惯例是whois+NIC名称+net。例如亚太地区网路管理中心whois server为whois.apnic.net,台湾网路中心whois server为whois.twnic.net,我过网路中心whois server是whois.cnnic.net。当你知道某台主机的Domain Name以后,可以依照下面顺序查出连线单位的电话住址等资料。

  第一步,先看有没有国码。没有国码的,向whois.internic.net问;有国码的,向whois.国码nic.net问 (ex.whois.twnic.net)。另外,如果你要查美国军事单位的联络明细(假如某天你发现有人利用美国海军的网路来入侵你的电脑)则你需要向nic.ddn.mil查询,方可查到资料。例如查出美国陆军的资料:但FBI等调查机构属政府单位,非军事单位 ,查询时需注意: 由DomainName查出资料, 如您能从nslookup查出某一IP地址之FQDN,则可以直接向当地NIC查出入侵者网路之资料:

  1.由美国入侵的例子:
  由 xxx.aol.com入侵由主机名称发现未有国码,因此直接向InterNIC查询。由此我们可以查到America Online的技术负责人以及电话、传真等资料,把你的系统纪录档准备好,发封传真去告状吧!

  2.由台湾入侵的例子:
  由HopeNet入侵(cded1.hope.com.tw)由于TWNIC目前whois资料库不知怎么的不见了,故请改由 dbms.seed.net.tw查出hope.com.tw之中文名称,再打104询问该公司的电话!现在如果直接由whois.twnic.net 查询会这样:

  只有IP地址的查法

  若某天您发现由168.95.109.222有人入侵,假设您不知道这是哪里的网路,而这个IP地址也没有Domain Name 的话,则须先将IP地址分等级,再向InterNIC查询: (以下作为范例之位址均为虚构,如有雷同,纯属巧合)。 
  1.由15.4.75.2入侵的例子:
  此IP地址是15开头,为一个ClassA网路,故向InterNIC查询15.0:查出此IP地址为惠普公司所有

  2.由140.111.32.53入侵的例子:
  此IP地址为ClassB,需查询两次。先向InterNIC查询140.111.0:查出为台湾教育部所有。再向 whois.twnic.net查询140.111.32.0:

  3.由203.66.35.1入侵的例子
  这是一个ClassCIP,因此必须查询至少二次,一般是三次。顺序为国际->洲际->所属国家。先查203.0:出来一大堆,怎么办?有的情况只好再追ClassB。由于InterNIC将部份ClassC交给洲际管理机构来负责配给,因此有些ClassC的资料会在洲际管理机构,此时先向InterNIC查出所属洲际管理机构(用ClassB问)。问到 203.66为亚太地区洲际网路,于是向whois.apnic.net询问203.66.35.0:查了三次以后,终于查到203.66.35.0 为在一堆资料中查到203.66.35.1,此一IP地址为ForwardnessTechnologyCo.Ltd.所有,电话地址也一并附在上面由以上的查法,可以由任一主机名称或IP地址查到连线者网路单位的资料,如果您发现该网路单位下属主机对您的网路有攻击行为,请检具资料告诉对方的系统管理员(对方不一定接受)。下面是Windows95的hosts档案:当您没有DNS的时候,您可以拿这个来将DomainName<->IP地址的对应工作做好。写法就和UNIX样。Microsoft的这个hosts档案写的是给chicago用的,这是windows95的开发代号,看见没?(看来Microsoft出windows95时太赶,忘了修正这些小东西), 不过各位读者要注意的是, 原先的hosts档案档名是hosts.sam,您要自己将档名改成hosts才能用。

  注:几乎所有使用TCP/IP通讯协定的机器都会有hosts、network等档案。这是所有TCP/IP系统的共通习惯(但只有 Microsoft的软体会有lmhosts来配合Microsoft自己的wins域名解译系统)。如果读者有注意到的话,可以发现 Novell Netware服务器也有一个etc目录,还有hosts等档案!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 433
活跃值: (1870)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
2
MM玩黑最可怕了,那所爆发出来的力量是不可估量滴
2010-1-17 10:40
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
学习了,我能成为Hacker 吗?
2010-1-18 08:43
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
干嘛一定要成为黑客,也可以成为白客,灰客呀
每天都是客,旅客,顾客,游客...
2010-1-18 08:59
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
heike,呵呵,ms很多人觉得很nx,真正的hhacker没多少吧
2010-1-18 09:52
0
游客
登录 | 注册 方可回帖
返回
//