分享
 
 
 

构建“不公开”的家用网络

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

本文详细描述了我们一直未能引起足够重视的家用网络安全问题,并在文中以作者的家用网络环境为例,讲述了加强家用网络安全性的一些具体方法。

1、简介

很长时间以来,我之所以一直没有对我的家用网络的安全性给予太多的关注,原因包括以下几点:

1)拨号互联网连接对黑客缺乏足够的吸引力。

2)Linux比MS Windows的安全性能要好得多。我使用的Linux发行版本专门针对安全进行了优化。

3)我仿照Linux的HOWTO中的例子采取了一定的安全措施。

这也是许多的普通Linux用户的想法,然而不幸的是,这些措施都是一厢情愿的。为了在以后用上高速互联网连接时仍然能够免受黑客的侵扰,我认为现在就需要花费一定的时间来考虑网络的安全问题,其结果是令人震惊的。

第一件令人震惊的事来自长期被忽略的/var/log/syslog*文件,该文件中包括了一些禁止连接的条目,其中有一条被禁止连接的ftp,但它能够明显地连接成功。看来,拨号用户并没有被黑客遗忘啊!我的家用网络系统的安全性并非是万无一失的,我需要在安全性上再花费一些时间。

2、系统的组成

我有一个由二台机器组成的非常简单的网络:工作站是一台没有配置打印机或调制解调器、运行Win 95的PC,服务器运行的是Debian Linux 2.1(带各种升级软件),它运行有exim(用于本地的电子邮件和向外发送电子邮件。)、qpopper(工作站使用的POP3服务器)和samba(向工作站提供文件共享和打印功能。)等应用软件。服务器上配置有拨号连接(ppp),通过fetchmail收取外界的电子邮件。

该局域网使用192.168.1.0-192.168.1.24之间的IP地址之一,服务器的IP地址是192.168.1.1,工作站的IP地址是192.168.1.2。服务器上的/etc/hosts和工作站上c:\windows\hosts的内容是:

127.0.0.1 localhost

192.168.1.1 heaven.my.home heaven

192.168.1.2 earth.my.home earth

这表明我的局域网使用的域名为my.home,我没有注册这一域名,因此只能在局域网上使用。向外发送的邮件的发件人地址必须进行转换。

3、“不公开”的家用网络

我对安全的概念是拥有一个“不公开”的网络,也即该网络不提供公用的功能,不提供WWW服务,不能使用telnet服务访问它,甚至不能从外界收取任何信息。如果有人试图访问该网络,它也不会作出什么响应。

从概念上来说,不与互联网连接的局域网就是一个“不公开”的网络,也就是说,拨掉调制解调器,就能使你的网络实现“不公开”化。但这并非我所指的“不公开”网络,我希望在这样的网络上能够使用互联网,收发电子邮件、浏览网站、下载文件等服务,只是不想让黑客非法入侵我的网络而已。

Linux通常情况下都不是一个“不公开”的网络。缺省状态下,Linux的安装过程会建立各种网络服务(象telnet、ftp、finger等),只要知道了口令,这些服务可以被任何一个人访问。同样,用微软的Windows组成的家用局域网同样也不是一个“不公开”的网络,如果连接二台运行Win95计算机组成一个网络,并实现文件共享,只要互联网连接开着,全世界的所有人就都可以共享你的计算机上的文件。

可以通过各种技术实现公开网络的安全,例如tcp伪装、内核级的包过滤等,这些技术可以使网络具有一定的“不公开”性,它们就象站在门口的哨兵一样,把非法的访问者挡在了外面,而把我们希望的客人放进来。但我不需要任何人访问我的网络,它是我专用的。

如果服务器可以被外界访问,我们总是会担心有什么配置上的错误会被黑客利用。同时,服务器软件通常也都存在可能被黑客利用的bug。尽管发现bug后,厂商会很快地推出补丁程序,但下一个bug呢?如果不让任何人访问网络不是更安全吗?

如果确实需要开通一些让家庭之外的计算机使用的服务,就必须研究更先进的安全技术,如果仅仅想实现家用网络的“不公开化”,就请继续看下面的内容吧。

4、网络安全吗

为了测试网络系统的安全性,可以使用Secure Design等工具从外部对网络系统进行扫描。当我对我的网络系统扫描后,我再次震惊了!有很多入口可供入侵我的系统:Samba、telnet、打印服务、X、电子邮件服务器、ftp、finger等。我已经采取了一些基本的措施来保证系统的安全性,因此,系统不会受到比较严重的外界入侵(我希望如此!)。但我考虑到,外界知道我有电子邮件服务器,就是系统在安全方面的一个缺陷。因为这些服务是供我在家用网络上使用的,它们与外界无关。

也可以通过运行netstat -pan --inet命令自己对系统进行扫描,在扫描时使用一个较宽的xterm窗口,因为输出中会包括比较长的内容行,在Local Address(本地地址)一列中地址为0.0.0.0的服务可以被外界发现。

5、服务器和客户机

对用户来说,服务器和客户机之间的区别并非是十分明显的。例如,如果想使用ftp服务,可以使用ftp软件与另一台计算机连接。如果只想使用ftp完成这些任务,就只要ftp客户端程序就可以了。如果想让别人从你的计算机上下载文件,或向你的计算机上载文件,那就还需要ftp服务器端软件。这与telnet非常相似,客户端程序供自己使用,服务器端程序是让别人使用的。服务器端和客户端程序是完全不同的,它们有着不同的名子,例如,telnet客户端程序的名字是/usr/bin/telnet,telnet服务器端程序的名字是/usr/sbin/in.telnetd。新手并不总是清楚这中间的区别的。在Linux安装过程中如果系统询问是否安装ftp服务器,用户会考虑自己需要使用ftp功能,就会选择安装。有时系统根本不问你,而自动地安装ftp服务器。

创建不公开网络的途径之一是不安装服务器软件,只安装客户端软件。但如果你的家用网络中连接有多台计算机,这样就会太简单了,也许你需要在网络中使用telnet、电子邮件服务,也就是说,你不能不使用服务器软件

服务器的功能是监听,它们监听这样的信号:我需要你提供服务。这个信号(至少是基于TCP的服务)是一个被称作SYN包的特殊IP数据包,它表明了需要的服务的代号。例如,telnet服务的代号是23,这些数字通常被称作“端口号”。如果in.telnetd软件没有运行,就没有软件监听代号为23的SYN数据包,也就是所谓的“端口23关闭了。”

所谓的“端口”是不存在的,如果服务器进行监听,端口就是打开的,否则就是关闭的。

SYN数据包是如何进入计算机中的呢?在服务器一端,数据包可以通过三种方式进入系统:

1)从工作站过来的数据包通过以太网卡(也被称作eth0接口)进入服务器,发给固定的IP地址192.168.1.1。

2)来自外部世界的通过ppp连接或ppp0接口进入服务器的数据包。这些数据包也有IP地址,但不是固定的。在每个对话中,ISP都会给出一个动态地址,该地址只能在该对话中使用。

3)数据包也可以来自服务器本身,其目标地址就是它本身。这种发送数据包的方式主要用在测试中,数据包的目标地址为IP地址是127.0.0.1的回送接口。名字localhost指的是回送接口,名字heaven的IP地址是192.168.1.1。(这一点很重要:名字和IP地址指的是接口,而非是计算机,尽管在日常使用中这种差别经常被模糊。)

现在的关健是服务器总是监听带有“它们”端口号的所有数据包,而无论它们是如何进入系统的。如果我们希望建立一个不公开的网络,不向外界提供服务,我们必须改变这种情况。

如果所有在Linux上运行的服务器程序都有能够指定它们监听接口的选项,这一切就可以很方便地得到解决了。如果是这样,就可以让所有的服务器程序不要监听ppp连接,也就不再需要任何安全措施了(tcpd、防火墙等)。也许在将来能够实现这一点,但现在还没有几种服务器软件能够做到这一点(包括非常重要的exim和samba都不能。)因此,必须采取一些措施来使网络实现不公开化。

听从“关闭不必要的端口”的建议没有什么危害,也就是说,不要运行你不需要的服务器软件。对于可以进行选择的服务器软件,使它们只能监听内部的接口(eth0,如果有必要,再添加上回送接口)。“超级服务器”inetd(用于唤醒Linux系统上其他不同的服务器软件)应该换成xinetd,它可以只监听内部的接口。为应付其他的困难,需要安装防火墙阻止外界的SYN数据包进入系统,它还可以防止不需要的UDP、ICMP数据包进入系统。要实现更高的安全性能,还需要采取其他的一些安全措施,其中一条是不在网络上使用IP伪装和转发。

6、删除不必要的服务

6.1 不必要的inetd服务

在Linux系统中总有一些服务是由inetd.conf启动的。几乎所有的Linux系统都有一个被称作inetd的超级服务器,它的职责是同时监听许多端口,并在需要时唤醒相应的服务。然而,它也可能唤醒用户所不需要的服务,一些不需要的服务的例子是:

ftp服务器。我不想与外界共享任何文件,而在内部我可以使用Samba和smbfs来传输文件。不安装ftp服务器不会对运行ftp客户端软件与外界交换文件产生任何影响。但大多数的Linux版本都会缺省地安装ftp服务器。

portmapper和与RPC调用有关的东西。portmapper用来实现RPC,如果使用了NFS,则需要它的支持,但我在家用网络上并不使用NFS。因此,所有inetd.conf中与portmapper和与RPC有关的内容都可以注释掉。

finger和ident。在是否使用ident上,各种意见是见仁见智,我删除了它,并没有感觉到受到什么不利的影响。

inetd.conf中的一些服务是只用于测试网络:echo、chargen、discard、daytime、和time,最后二种服务与你的系统时间没有任何关系,它们只是一种告诉别人你的系统时间的服务。一般情况下不需要这些服务和任何用于测试目的的服务。

这些服务都可以通过注释掉/etc/inetd.conf中相应的行(在相应的行前添加#)而关闭,但需要重新启动inetd。

6.2 其他不必要的服务

如果一种服务不是由inetd唤醒的,而是作为一种后台软件独立运行的。除portmapper(作为后台程序运行)之外,有些后台程序是用不着的,没有理由让一个小型的家用网络运行这些程序。你的机器上的/etc/hosts和C:\windows\hosts以及/etc/resolv.conf中的ISP名字服务器的地址都能够使外界查找你的网络的地址。

通过将服务从启动目录中删除,有一条命令可以自动地在启动时不让某种服务开始运行。例如,可以运行下面的命令删除tamagotchi服务器:

update-rc.d -f /etc/init.d/tama remove

7、确保所需要的服务的安全性

尽管已经去除了我们不需要的服务,但还需要使网络对外界是不公开的,有些服务中的配置选项可以保持它是不公开的。

7.1 X

X的设计目标是面向网络的窗口系统,但实际上在大多数的情况下,其网络功能根本就不会被利用,而这就带来了安全方面的风险。可以使用下面的命令行选项启动X系统,从而关闭其中的网络功能:

startx -- -nolisten tcp

运行上述的命令后,Secure Design就不会再报告“X11 is open”的消息了。要使X在每次启动时都以这种方式启动,可以以如下方式为startx在~/.bashrc、/etc/profile或其他较好的位置生成一个别名:

alias startx="startx -- -nolisten tcp"

-nolisten tcp命令应该在一个X11的资源文件中,但我还没有发现是哪一个。alias在任何方式下都有效。为了对上述作法的效果进行测试,运行netstat -pan --inet,在报告的信息中就不会再报告X的有关信息了。当然,如果能够保留X的局域网功能,而拒绝外界的访问是最好的,但我不知道如何作到这一点。

7.2 Samba

在Debian的系统中,Samba的配置文件是/etc/samba/smb.conf(在其他的系统上,Samba的配置文件可能是/etc/smb.conf。)。在安装Samba时,选择让Samba以后台方式运行,因为用inetd启动它有时会出现问题。在/etc/inetd.conf中任何与netbios(Samba会用到它。)相关的内容都必须注解掉。然后在/etc/samba/smb.conf中的[global]小节中添加下面的内容:

bind interfaces only = True

interfaces = 192.168.1.1

在/etc/init.d/samba重新启动后,Samba就只会以后台程序的方式对内部网络进行监听了,对外界而言就“失踪”了。

7.3 Exim

Exim是我的系统上的邮件服务器,也许有的读者的系统上安装的可能是sendmail或postfix,但它们的原理是一样的,即不要让你专用的邮件代理去监听从外界发送来的电子邮件。如果有人发送邮件给你或你的家人,他会发到你在ISP那儿的邮箱里,然后你可以使用邮件客户端软件到在ISP那儿的邮箱中收取邮件。总之一句话,外面的人不能直接给你的网络上发邮件。

Exim有可以只监听本地网络的选项(这一部分在/etc/exim.conf中的MAIN CONFIGURATION小节中。),下面是exim要监听的端口的清单。需要说明的是,只有exim以后台方式运行时才有效,而由inetd启动时是无效的。

1)在/etc/exim.conf中的MAIN CONFIGURATION小节中输入一行:

local_interfaces = 192.168.1.1:127.0.0.1

2)注释掉/etc/inetd.conf文件中的smtp行。

3)在/etc/init.d/exim中注释掉开始处#usually this is disabled and exim runs from /etc/inetd.conf行之

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有