Liunx 架站技术专题  

限制 Linux 对外联机的端口( port number )
------------------------------------------------------------------------------------------------

学习本章之前的必备技巧

什么是端口( port ) /etc/services 安不安全

如何观察端口netstat 删除已建立的联机 nmap

如何关闭或激活一个端口激活或关闭服务 激活或关闭 daemons 的路径

设定开机时激活的方法开机激活的设定 系统必备的服务

安全性: 关闭所有对外开放的 port

------------------------------------------------------------------------------------------------

学习本章之前的必备技巧:


  在这个章节当中,我们要来谈一谈如何关闭与激活一个 port ,这个东西还跟『开机程序』有关,所以您不能不知道开机程序的相关性!此外,由于开关 port 与 daemons 是有『绝对』的相关性存在,所以你就不能不了解 daemons 是什么!?我们还要学习怎样剔除一个已经建立联机的状态,所以『资源管理』就不能不会!另外,我们还要来探讨一下简单的设定,所以 vi 当然就不能少啰!呵呵!那个 BASH 是每次都要提到的啦!所以你就必须要:

· 认识 BASH Shell

· vi

· 开机流程

· 资源管理

· 认识 daemons

· 网络基础

· Linux 常用网络指令介绍

  当然啰!有时间的话,要往下扎根!好好的学一学 Linux 基础文件


------------------------------------------------------------------------------------------------

什么是口( port ):

  在开始这个章节之前,我们先来聊一聊什么是 port 呢?常常在网络上听说『我的主机开了多少的 port ,会不会被入侵呀!?』或者是说『开那个 port 会比较安全?又,我的服务应该对应什么 port 呀!?』呵呵!很神奇吧!怎么一部主机上面有这么多的奇怪的 port 呢?这个 port 有什么作用呢?!

  还记得我们在网络基础里头提到的 TCP/IP 资料吧?对啦!那个 TCP 在传送资料的时候,不是会填有来源与目的之 IP 及 port 吗?在这里你可以这样想,由于每种网络的服务功能都不相同,因此有必要将不同的封包送给不同的服务来处理,所以啰,当你的主机同时开启了 FTP 与 WWW 服务的时候,那么别人送来的资料封包,就会依照 TCP 上面的 port 号码来给 FTP 这个服务或者是 WWW 这个服务来处理,当然就不会搞乱啰!(注:嘿嘿!有些很少接触到网络的朋友,常常会问说:『咦!为什么你的计算机同时有 FTP、WWW、E-Mail 这么多服务,但是人家传资料过来,你的计算机怎么知道如何判断?计算机真的都不会误判吗?!』现在知道为什么了吗?!对啦!就是因为 port 不同嘛!你可以这样想啦,有一天,你要去银行存钱,那个银行就可以想成是『主机』,然后,银行当然不可能只有一种业务,里头就有相当多的窗口,那么你一进大门的时候,在门口的服务人员就会问你说:『嗨!你好呀!你要做些什么事?』你跟他说:『我要存钱呀!』,服务员接着就会告诉你:『喝!那么请前往三号窗口!那边的人员会帮您服务!』这个时候你总该不会往其它的窗口跑吧?! ^_^""这些窗口就可以想成是『 port 』啰!所以啦!每一种服务都有特定的 port 在监听!您无须担心计算机会误判的问题呦!)

  除此之外,还记得我们在 网络基础 那一篇当中稍微提到,如果需要进行网络联机的时候,那个重要的三向交握( Three-Way Handshake )就不能不理解一下,底下我们以 Study Area 里面的解释来进行说明:

· 每一个 TCP 联机都必须由一端(通常为 client )发起请求这个 port 通常是随机选择大于 1024 以上的 port 号来进行!其 TCP 封包会将(且只将) SYN 旗标设定起来!这是整个联机的第一个封包;

· 如果另一端(通常为 Server ) 接受这个请求的话(当然啰,特殊的服务需要以特殊的 port 来进行,例如 FTP 的 port 21 ),则会向请求端送回整个联机的第二个封包!其上除了 SYN 旗标之外同时还将 ACK 旗标也设定起来,并同时时在本机端建立资源以待联机之需;

· 然后,请求端获得服务端第一个响应封包之后,必须再响应对方一个确认封包,此时封包只带 ACK 旗标(事实上﹐后继联机中的所有封包都必须带有 ACK 旗标)﹔

· 只有当服务端收到请求端的确认( ACK )封包(也就是整个联机的第三个封包)之后﹐两端的联机才能正式建立。这就是所谓的 TCP 联机的'三段式交握( Three-Way Handshake )'的原理。



  经过三向交握之后,呵呵!你的 client 端的 port 通常是高于 1024 的随机取得的 port 至于主机端则视当时的服务是开启哪一个 port 而定,例如 WWW 选择 80 而 FTP 则以 21 为正常的联机信道!

· 总共有多少埠口?哪些是保留的 port ?

  我想,你或许会很好奇,ㄟ~那么通常一般的主机会有多少个 port 呢?!正常来说,所有的 port 是由 1 ~ 65535 这么多个啦!好啦,那么我们在 帐号管理 那里面也曾经说过,为了 Linux 系统本身,所以会有些保留给系统使用的 ID 号码,那么在 port 上面有没有这些保留的咚咚呢!?宾果!答对了!就是有保留的 port !一般而言,只有 root 才可以使用 1 ~ 1023 以内的 port ,这些 port 就是特殊的埠口,是保留给系统来使用的!至于一般的使用者则仅能使用大于 1024 以上的 port 来进行网络的联机动作!

· 特殊的 port ? /etc/services ?


  好了,那么你应该又会说,那么这些保留的 port 有什么特殊的功能呢?!首先,这些 port 通常只有 root 才能激活,而目前在 Internet 上面流行的几个服务之封包都有固定使用的埠号,也就是说,如果你要连上某个服务的时候,就必须要使用特殊的埠口才行,例如我们常常听到的 FTP 正常就要使用 port 21 ,而 telnet 就要使用 port 23 啰!还有哪些常常听到的埠号呢?例如 WWW 的 port 80 ,而 Proxy 的 port 3128 等等!好了,那么如果你没有将这些 port 保留起来,万一被系统不小心的随机给他丢给使用者来使用联机,呵呵!那么你的服务不就无法激活啰!?

  另外,还必须要知道一件事情,刚刚提到了那么多的服务与 port ,那么我的 Linux 怎么知道那个 port 对应哪一个服务来显示给我知道呢?例如 Linux 常用网络指令里面提到的 netstat 的功能,使用他之后,竟然可以告诉我那个服务名称!嘿嘿!不要太害怕!那也没有什么了不起的啦!就是在 /etc/services 就可以找到 port 与对应的服务的相关性啰!你可以进去看一看里面的大概内容呢!




  这个 /etc/services 档案可得好好的照顾呀!还有,你不知道的几个主要的 port 对应的服务也可以在里面找到呢!当然啰,万一在这个档案里面没有提到的服务对应的 port ,嘿嘿!那么使用 netstat 自然也就没有办法显示出该服务的名称噜!注意:这个档案有时会被修改的较不安全,有必要的时候,可以将他的属性以 chattr 来修改成不可变动呦!

· 安全不安全?


  那么了解了这些 port 之后,再来你应该还会问到一个问题呀!那就是『我怎么知道哪一个 port 比较安全?』这里可能要先请您了解一下所谓的『 port 』与『 服务 』对于『 安全 』的相关性!真正影响网络的安全的并不是 port 这个东西,而是将 port 激活的那个服务才是重点!举个例子来说好了,你应该偶而会听到『 Wu-ftpd 这个服务不安全,建议大家改用 proftp 』对吧!请注意呦!那个 Wu-ftpd 与 proftp ( 这两个都是套件的名称 )都是使用 port 21 这个埠口!嘿嘿!但是 proftp 就是比 wu-ftp 稍微安全一点!晓得了吗?没错!对于安全真正有危害的是『某些不安全的服务』而不是『开了哪些 port 』才是!基本上,没有必要的话,一些你想不到或者用不到的 port 都把他关掉了吧!毕竟没有开口总比开了口再来防堵要安全的多吧!!

------------------------------------------------------------------------------------------------

如何观察端口: netstat, 删除已建立的联机, nmap,


  好了,我们现在知道这个 port 是什么鬼东西了,再来就是要去『看他到底在干啥?』对吧!没错!再来就是要来了解一下,我们的主机到底是开了多少的 port 呢?如同我们前面说的,你得要先了解一下,我们的『服务』跟『 port 』对应的档案是哪一个?再提醒一次呦!是『 /etc/services 』 啦!好了,那么常见的 port 对应的服务有哪些呢?大概有这些啦!



  当然还不只这些哩,更详细的信息你应该到你的 Linux 主机之下的 /etc/services 这个档案去看仔细!好了,那么接下来就是要来察看我们主机的 port 啰!如何察看呢?底下我们介绍两个最常使用的观测指令:

· netstst : 在本机上面以自己的程序监测自己的 port ,无危险;

· nmap : 在本机上面,以特殊的侦测程序侦测自己,可能会有违法之虞。

  见他的大头王!怎么使用 nmap 会违法?呵呵!别担心,由于 nmap 的功能太强大了,所以很多 cracker ( 怪客,网络上面的闲人 ) 会直接以他来侦测别人的主机,这个时候就可能造成违法啦!只要你使用 nmap 的时候不要去侦测别人的计算机主机,那么就不会有问题啦! ^_^"" 底下我们分别来说一说这两个宝贝吧!

· 使用 netstat 指令

  如前所述,在做为主机的 Linux 系统中,服务项目是越少越好!这样可以避免不必要的入侵管道喔!因此,这个时候请了解一下您的系统当中,有没有哪些服务被开启了呢?要了解自己的系统当中的服务项目,最简便的方法就是使用 netstat 了!这个东西不但简单(每一部 Linux 机器当中预设都会安装的套件喔!),而且功能也是很不错的,例如我们在侦测线上 WWW 使用者的人数时,就很需要这个咚咚啰!这个指令的使用方法在 Linux 常用网络功能指令介绍当中提过了,底下我们仅提供如何使用这个工具的方法啰!



  如上所示,单纯使用 netstat 的时候,仅『列出目前已经接通的服务项目与服务名称』所以你可以看到,由于目前仅有一个 ssh 的联机建立成功,所以就只有显示出一个 ESTABLISHED (联机中的意思)的项目。上面浅黄色的那一行,表示『有一个 ssh 的服务开启信道联机中,是由远程 client 的 192.168.1.11 这个 IP 连接到 192.168.1.2 的主机上面的这个 IP ,而 Client 端联机的信道是以 1391 这个信道连接进入 ssh 的服务中的!』。这里这个 ssh 所显示的服务名称就是在 /etc/services 里面记载的啰!那如果我需要将所有的项目都列出来呢?例如说:有哪些 port 目前正在监听呢?!



  如上所示,加入 -a ( all )就是说将所有在机器上所有的 port 的状态列出的意思,不过,服务的名称已经使用 /etc/services 里面的名称了,而不是使用 port 的数字!如上所示,目前我主机上面的服务共开启了:『 pop3、imap、ftp、ssh、smtp 』等服务(就是在 tcp 封包里头的具有 LISTEN 的那几个咚咚啰!)至于已经建立的服务就只有 ssh 这一个啰!那如果我想要知道 port 的号码呢?呵呵,就使用底下的指令吧!



  如上所示,我接通的服务信道只有 22 这一个,而其它的你可以参照上面的指令输出结果来对照,所以你就可以知道啰:pop3 为 110 而 imap 为 143 呵呵!就是这样啰!因此,透过此一指令,就可以轻易的了解目前主机的运作状况与服务状态啰!当然啰, netstat 的用途不止于此,您可以使用 man netstat 来查阅一番喔!相信对你的主机会有更大的了解呦!

· 使用 netstat 配合 kill 删除已建立的联机:

相信有不少的朋友都会有这个困扰,就是要怎样删除已经建立的联机呢?因为总有些不速之客会连到你的主机来进行一些破坏的工作!或者是你根本不想让对方联机过来!呵呵!还记得 资源管理 里面提到的几个常用的指令吧!?那就是找出那个联机程序的 PID ,然后给他 kill 掉就是了!简单呀!不过,大问题是『我要怎样找出联机的 PID 呀!?』呵呵!由于 PID 的管理与整体的系统资源有关,这个时候,虽然可以使用 netstat 来观察 PID ,不过只有 root 可以观察到联机状态的 PID 号码呦!( 注:还记得资源管理提及的 PID 概念吗?就是说,在 Linux 系统之内,每个『程序』系统都会给予一个号码来管理!这个就是 PID 啰!)



  看到上面那个淡黄色的联机建立的网络状态了吗?嘿嘿!最后面一栏就是显示那个 PID/Program name ,那个 PID ( 上面是 24751 )也就是我们要来砍掉的啦!这个时候,如果要将该联机砍掉时,就直接以 kill 来做吧!



· 这样就能将该联机给他『踢出去』你的主机啦!!

· 使用 nmap 套件:注意安全!

  在本机上面观察 port 最好是使用 netstat 啦!因为他安全又可靠!但是,由于可能有某些 port 会寻找不到,或者不晓得那些 port 是干嘛用的,尤其是 /etc/services 里头没有提到的几个 port 对应的服务!这个时候怎么办?!没关系,不要紧,我们这个时候可以使用那个很流行的『黑客指令』,就是 nmap 这个东西啦!nmap 的套件说明之名称为:『Network exploration tool and security scanner』,顾名思义,这个东西是被系统管理员用来管理系统安全性查核的工具!他的具体描述当中也提到了, nmap 可以经由内部自行定义的几个 port 对应的指纹资料,来查出该 port 的服务为何,所以我们也可以藉此了解我们主机的 port 到底是干嘛用的!如果你是安装 Red Hat 7.x 版本的话,那么这个 nmap 套件应该已经安装妥当了,万一没有这个套件的话,也可以来 这里 下载去安装呦!什么?不知道如何安装!?该死,看一下 RPM 的指令吧!好了,我们谈一谈 nmap 的使用吧!






  请特别留意,这个 nmap 的功能相当的强大,也是因为如此,所以很多刚在练习的黑客会使用这个软件来进行侦测别人的计算机,这个时候请您特别留意,目前很多的人已经都有『特别的方式』来进行登录的工作!例如以 TCP_Wrappers ( /etc/hosts.allow, /etc/hosts.deny ) 的功能来记录曾经侦测过该 port 的主机 IP!这个软件用来『侦测自己机器的安全性』是很不错的一个工具,但是如果用来侦测别人的主机,可是可能会『吃上官司』的!特别留意!!

------------------------------------------------------------------------------------------------

如何关闭或激活一个端口: 激活或关闭服务, 激活或关闭 daemons 的路径,


· 如何激活或关闭服务?

  既然已经知道了有多少个 port 被激活或关闭,那么接着下来当然就是要将一些不安全的服务给他关闭啰!呵呵!那么该如何关闭呢?请注意:『开或关一个 port 的方式是:开启或关闭一个服务即可!』例如你要关闭 port 21 这个较为危险的 ftp 的埠口,那么就是将 wu-ftp 或者是 proftp 关掉就对啦!关掉他自然就连同 port 也关掉啰! ^_^"" 所以说,当你侦测完了 port 之后,接着下来就是找出该 port 的对应的服务,将该服务给关掉,就会把 port 关啦!嗯!我们来试试看关掉一个 25 port 好了!由于 25 port 是由 sendmail 来进行 smtp 的激活的,那么我们就先来激活他:



  那如果要关闭的话,就停止 sendmail 呀!直接以上面的方式关闭呀!这样就好啰!这样你再以 netstat -an 看一下,呵呵! port 25 就被关掉喔!很简单吧!

· 激活或关闭 daemons 的路径与指令:

  如果你还记得 认识服务 那一篇文章的时候,那么应该就会记得我们目前的几个 port 激活的路径预设都放置在:

o /etc/rc.d/init.d

o /etc/xinetd.d

  这两个路径底下,那个 /etc/rc.d/init.d 是以 RPM 来安装套件的时候,一定会存在的目录,这个目录记录了所有的服务的激活之 scripts ,这也界是刚刚为何我会以 /etc/rc.d/init.d/sendmail start 来激活我的 sendmail 服务的原因啰!至于那个 /etc/xinetd.d 目录的下档案,就是挂在 xinetd 这个服务底下的服务套件啦!最常见的有 FTP, Telnet, POP3, IMAP 等等,都是由 xinet 统一统筹来进行整理!所以,当你要激活 telnet 时,就直接到 /etc/xinetd.d 里面去,然后将 telnet 这个档案的 disable = yes 改成 disable = no ,然后『重新激活 xinetd 这个服务!』没错!我没有写错!就是 xinetd !因为我刚刚提过啦,由于 telnet 是由 xinetd 统一统筹的,所以要激活 telnet 自然就是将 xinetd 重新激活即可!

o /etc/rc.d/init.d/xinetd restart

如何!不难吧!简单的很!好了,那么除了直接以文件名称来激活关闭之外,有没有其它较为简易的方式来激活的啦!?当然有!就是使用 service 这个指令说!详细的说明已经都写在 好用的系统工具 里面了,您可得多多的参考参考!例如要重新激活 xinetd ,可以这么写:

o service xinetd restart

------------------------------------------------------------------------------------------------

设定开机时激活的方法:

· 开机激活的设定:


  刚刚提到的都是立刻生效的服务激活或关闭的方法,那么有没有方法可以再开机激活的时候就设定不要激活呢?您还记得在 Linux 开机关机程序 那一篇文章吗?开机的程序在经历了:

1. BIOS

2. MBR

3. Linux Loader

4. Kernel, init ( 取得 run-level ),

5. /etc/rc.d/,

6. /etc/modules.conf,

7. /etc/rc.d/rc[0-6].d,

8. /etc/rc.d/rc.local

  等等程序后,就是开机完毕啦!那个系统就成功的激活啦!而其中激活服务的项目在哪里呢?呵呵!就是在第七步骤,以我为例,通常我都是以文字界面 登入我的系统,文字界面的 run-level 为 3 ,所以这个时候我就可以在 /etc/rc.d/rc3.d 里头找到我的服务的激活项目啦!就是 S 开头的档案!这些相关的概念如果忘记的话,请在前往 开机关机程序 那篇文章去读一读去!那么如果不要激活一些服务的话,很简单呀!就是将该服务的对应档案( 指 S 开头的档案 )删除就可以啦! ^_^""

  但是我要自己一个档案一个档案去删除他吗?!呵呵!当然不需要啦! Red Hat 很细心的写了几支程序来帮你搞定他!那就是:

· ntsysv

· setup

· chkconfig

  这三支程序的使用方式我已经都介绍过了,这里就不再啰唆啰!请前往 好用的系统工具 里头看看吧!

· 系统必备的服务项目:

  请注意呦!不是将『所有的服务都关掉就是安全的!』因为系统还有很多的项目是『一定要激活的!』否则将会反而变的不安全呢!底下列出来一个完全没有对外开放 port 的,但是系统必需要的服务项目,这些项目请『务必』不要关闭了!



  没错!不要怀疑!只要这些就可以啦!这几个服务是必须要激活的!至于其它服务则都先不用激活!例如 sendmail 啦!其它林林总总的资料,都先摆着!我们会在后续的章节当中提到如何激活这些服务的啦!


------------------------------------------------------------------------------------------------

安全性: 关闭所有对外开放的 port

  在你安装了 Linux 之后呢,相信有很多的朋友会开始想要作一些很炫的服务,例如 WWW 或者是 mail 亦或是 FTP 的服务,但是,这些服务都有潜在性的危险喔,很多的骇客就是利用你开启的这些服务来进行网站的破坏!基本上,比较麻烦的是『特洛伊木马』程序这一类的后门程序,以你的网站做为中继站去攻击骇客想要攻击的目标。所以啰,灌完了 Linux 之后,先将一些不必要的程序或服务移除吧!以保障您的网络安全!其中,更重要的则是将所有的对外的 port 都先关起来!有需要的才开启!好了,利用我们刚刚提到的几个方法将你的对外的 port 都关起来吧!



  这样一来,所有的对外窗口将暂时的全部关闭了!好了,准备要来玩架站啰!一个一个的激活我们的 port 吧! ^_^

(来源:鸟哥私房菜)

Linux 架站文件
网络基础架构
局域网络设定
连上 Internet
常用网络指令
网络问题解决
限制联机 port
up2date 升级套件
动态 DNS 技巧
简易 Router
认识网络安全
NAT Server
简易防火墙
Telnet, ssh
NFS Server
DHCP Server
DNS Server
Proxy Server
Mail Server
Web Server
SAMBA Server
旧文件 Red Hat 6.1 (Very Old)
   

站内技术专题搜索


强力搜索

关键字:
全国各地培训机构免费咨询热线:800-830-5807  网站投诉电话:86-755-83441580
常年法律顾问:郑凡律师 本站已申请法律保护,盗版或抄袭本站者将受到严厉的法律制裁,举报盗版本站者属实重酬
《中华人民共和国电信与信息服务业务经营许可证》编号粤ICP备05089709 2004中国商业网站100强
《深圳市软件企业协会》成员 《深圳市软件行业协会》理事单位 《中国互联网行业协会》成员 《广东互联网协会》成员
深圳市拓普思信息科技有限公司  版权所有