鸟哥私房菜 习题答案(服务篇)2

PART II、简易防火措施篇

7章、限制Linux对外联机的端口

1. 如何观察你Linux主机上已经打开了多少端口?

如果仅想单纯了解正在监听中的端口,可以使用netstat -tul,如果还想知道已经建立了多少联机,可以使用netstat -an

2. 如何观察程序?

利用ps -auxtop查看均可。

3. 请问监听的端口与daemon的关系为何?

正在监听中的端口均是由某些服务(daemons)所启动,所以要启动端口就得启用某个服务,要了解某个端口是由哪个daemon启动的,利用netstat -tulp来查阅。

4. 请解释三次握手的原理与包传输的方向。

三次握手为较可靠的包传输的一种确认方式,因此只有TCP包才能具有三次握手。它利用(1ClientServer主动联机时带有的SYN标志;(2Server回应时的SYN/ACK;(3)最终Client确认的ACK标志来确认包的可靠性。更详细的说明请参考第2章。

5. 请问stand alonesuper daemon各是什么?

Linux系统的服务有独立启动(stand alone)及超级服务(super daemon)两种方式。挂在super daemon下的服务可以经由super daemon控管,以加强安全功能,不过由于还要经过super daemon的管理,所以服务的连接速度上会比stand alone慢一点。详细的说明请参考《鸟哥的Linux私房菜——基础学习篇》一书第21章。

6. 请问你的Linux主机(不论是哪个版本)有关daemon 启动与关闭的脚本与文件放置在哪个目录下?

各个daemons的启动与关闭的脚本放置在/etc/rc.d/init.d里,至于super daemon的控管参数文件则在/etc/xinetd.d里!

7. 请将你的Linux主机对外的联机端口全部关闭。

请参考本章的做法,利用ntsysvchkconfig等功能加reboot,或netstat配合kill的方式!

8章、Linux网络套件升级

1. 请依照你的Linux系统进行适合的网络套件升级程序(一步一步写下来),并说明为何选择这样的网络升级程序?

本题请参考本章内容,选择APT或其他Linux版本网站提供的在线升级方式进行你的套件升级。

9章、多IP与路由器的架设

1. 请问如何将你的eth0接口改为192.168.100.2在网域192.168.100.0/25之内的网络参数内容?

因为192.168.100.0/25netmask255.255.255.128,所以可以这样做:ifconfig eth0 192.168.100.2 netmask 255.255.255.128 up。如果尚需其他参数,则需要以文件形式来输入,如vi /etc/sysconfig/network-scripts/ifcfg-eth0,并修改为:
DEVICE=eth0

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.100.2

NETMASK=255.255.255.128

NETWORK=192.168.100.0

BROADCAST=192.168.100.127

2. 请手动设定eth0:1这个虚拟接口,使其为网络参数:192.168.200.2,网域在192.168.200.0/24

ifconfig eth0:1 192.168.200.2 up

3. 如何观察路由表?

使用route -n即可查阅。要注意0.0.0.0那个目标(默认网关)。

4. 如何启动LinuxIP Forward功能?

直接以echo "1" > /proc/sys/net/ipv4/ip_forward即可。

5. 假设你是一个学校的信息管理员,学校内有200计算机,奉上面的旨意,必须将200计算机分为4个子网,请问应该如何布线(请画出示意图)?而这4个子网的网络参数如何选择(请自行选择)?是否需要路由器?如果需要,假设每个路由器仅能有两个网络实体接口,那么该如何布线?(注:不要使用虚拟接口。)

我的布线如下图所示:

每个路由器都有两个接口,且4个路由器的右接口都在同一个网段内!那么Router 1怎么跟Router 2的内部网域进行沟通?利用route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.5.2即可。

6. 万一你的网络有点停顿,发现可能是网络上某个节点出了问题,你应该如何确认是哪一台路由器出了问题?

使用第5章中提到的traceroute指令来查询。

10章、认识网络安全

1. 我老是发现我的系统怪怪的,似乎有点停顿,怀疑可能是CPU 负荷太大,所以要检查一下系统相关的信息。请问,我该以什么指令检查我的系统相关信息?

可以使用topsarfreeps -auxuptimelast等指令查询系统相关信息。

2. 我怀疑我的系统上有过多的具有SUID的文件存在,导致一般用户可以随意取得root权限,请问,我要如何找出这些具有SUID权限的文件?

因为SUID4000这个权限,所以可以这样做:
find / -perm +4000

3. 我由国内一些ftp网站下载了Red Hat公司发布的套件,我想安装它,但又不知道该套件文件是否被修改过!请问我该如何确定这个套件的可用性?

利用最简易的MD5 编码来测试,例如md5sum套件名称,再比对与原始套件发布的MD5 数据是否相同。

4. 良好的密码规划是防备主机的第一要务,请问Linux系统中,密码相关的文件与规则设定在哪些文件里?

密码的设定规则在/etc/login.defs里!密码文件在/etc/shadow内!

5. 简易说明当一台主机被***后,应该如何处理?

找出问题、重新安装、漏洞修补、数据还原!请参考本章最后的修补工作内容。

11章、简易防火墙架设

1.为什么我架设了防火墙,我的主机还是可能中毒?

防火墙不是万灵丹,它还是可能被病毒或***程序所***!此外,如果你的主机本身已经提供了多个网络服务,则当该网络服务的套件有漏洞时,防火墙仍然无法克服该服务的漏洞。因此仍然需要持续进行主机的监视工作!

2. 请说明为何架设了防火墙,我的主机还是可能被***?***的依据可能是什么?

因为防火墙仅抵挡某些不受欢迎的包,如果你开放WWW服务,则要求主机端口80的包可直接进入你的主机,万一WWW套件有漏洞,那么就可能被***了!所以套件的更新很重要。

3. 我们知道核心为2.4Linux使用的防火墙机制为iptables,请问,如何知道我的Linux核心版本?

利用uname -r 可以查到!

4. 请列出iptables 默认的两个table,以及各个table里的链与各个链所代表的意义;

filter为默认的Table,里面默认的链有:
         INPUT:来自外部,想要进入主机的包;
         OUTPUT:来自主机,想要离开主机的包;
         FORWARD:主机内部网域与外部网域的包(不论进出),但该包不会进入主机。
还有nat这个table
         PREROUTING:进行路由之前的包传送过程;
         OUTPUT:离开主机的包传送过程;
         POSTROUTING:经过路由之后才进行的过滤规则。

5. 什么是iptables的默认政策(Policy)?

当包的所有属性都不在防火墙规则中时,这个包能否顺利通过防火墙,则以Policy 作为这个包的最终动作!

6. 假设今天我的Linux仅作为Client之用,并没有对Internet 提供任何服务,那么你的防火墙规划应该如何设定?

既然没有对Internet提供任何服务,那么(1)请将所有的对外端口先关闭(2)防火墙规则中,最重要的是INPUTPolicy 一定要DROP,然后将iptables -A INPUT -m state --state RELATED -j ACCEPT即可。

7. 我要将来自192.168.1.50这个IP来源,只要向我的21~23端口发出请求的包,都将它抵挡,应该如何输入iptables指令?

iptables -A INPUT -p tcp -s 192.168.1.50 --dport 21:23 -j DROP

8. 我要将我自己主机ping的响应功能取消,应该如何输入iptables指令?

因为ping能否响应用的是icmptype 8(请参考第2章内的ICMP相关内容),所以我可以这样做:
iptables -I INPUT -p icmp --icmp-type 8 -j DROP

9. 请说明为何这个指令是错误的iptables -A INPUT -p udp --syn -s 192.168.0.20 -j DROP

只有TCP包才会具有SYN标志,UDP并没有SYN标志,所以上面的指令是错误的!

10. DNS的要求是必需的,那么我该如何设定我的主机可以接受请求DNS的响应呢?

因为DNS的来源是端口53,因此要接受来自端口53的包:
iptables -A INPUT -p udp --sport 53 -j ACCEPT

iptables -A INPUT -p tcp --sport 53 -j ACCEPT

11. 如何取消我的系统上的iptables

先要清除规则,才能将iptables 移除!不过,我们主要将规则清除即可。
iptables -F; iptables -X; iptables -Z

iptables -t nat -F; iptables -t nat -X; iptables -t nat -Z

12. 如何保存当前的防火墙机制,以及如何将上次保存的机制回复到当前系统中?

请利用iptables-saveiptables-restore这两个指令,配合命令重导向即可。

12章、申请合法的主机名称

1. 请简易说明 /etc/hosts的用途。

这个文件早期用于进行主机名称与IP的解析,目前常用在内部网域的名称解析上,可以加快内部网域的反查!

2. 请说明合法授权的主机名称需要做什么?

如果想要合法授权,就需要向上层DNS主机注册,而且还要上层DNS主机管理员愿意将域名的解析权限授权给你。

3. 什么是动态DNS系统?(仅说明Client端)

因为我们的Client拨号时,得到的IP不是固定的,所以无法以DNS系统进行固定IP对应主机名称的工作,此时就需要动态DNS系统。以DNS主机提供的动态更新主机名称对应IP的机制,可以让我们的不同IP对应到同一个主机名称!

4. 如果你使用adsl拨号上网设定服务器,那么该申请哪类主机名称?为什么?

因为我是以ADSL拨号上网,所以IP是不固定的,此时需要申请动态DNS主机的主机名称,例如adsldns.org以及no-ip.org等!

PART III、服务器架设篇

13章、简易TelnetSSH主机设定

1. TelnetSSH都是远程联机服务器,为何我们都推荐使用SSH而避免使用Telnet?原因何在?

因为Telnet除了使用明码传送数据外,本身telnet 就是很容易被***的一个服务器,所以当然比较危险。至于SSH,其实也不是很安全!由中国台湾计算机危机处理小组的文件可以明显发现,openssl + openSSH也是常有漏洞发布!不过,比起telnet来说,确实会安全一些!

2. 请尝试说明SSHServerClient端联机时的包加密机制。

利用key pair实现加密机制:Server提供Public KeyClient端计算Private key,以提供包传送时的加密、解密!

3. 请问SSH的配置文件是哪个?如果我要修改让root无法使用SSH联机进入我的SSH主机,应该如何设定?另外,如果要让badbird这个用户无法登入SSH主机,该如何设定?

SSH配置文件名为sshd_config,通常放置在/etc/ssh/sshd_config内;如果不想让root 登入,可以修改sshd_config内的参数成为PermitRootLogin no,并重新启动SSH来设定!如果要让badbird用户无法登入,同样在sshd_config里面设定为:「DenyUsers badbird」即可!

4. Linux上,默认的TelnetSSH服务器使用的埠口(端口 number)各为多少?

telnetSSH的埠口分别是:2322!请参考/etc/services喔!

5. 如果发现我无法在Client端使用SSH程序登入我的Linux主机,但是Linux主机却一切正常,可能的原因为何?(防火墙、known_hosts……)

无法登入的原因可能有很多,最好先查询 /var/log/messages里的错误信息来判断,当然,还有其他可能原因为:
1.   被防火墙挡住了,请以iptables -L -n来查看,当然也要查看/etc/hosts.deny
2.   可能由于主机重新开机过,public key改变了,请修改你的~/ssh/known_ hosts里面的主机IP
3.   可能由于/etc/ssh/sshd_config里面的设定问题,导致你这个用户无法使用;
4.   /etc/passwd里,你的user不具有可以登入的shell
5.   其他因素(如账号密码过期等等)

6. 既然ssh是比较安全的数据包传送方式,那么就可以在Internet上开放我的Linux主机的SSH服务了吗?请说明你选择的答案的原因。

最好不要对Internet开放你的SSH服务,因为SSH的加密函数库使用的是openssl,一般Linux版本使用的SSHopenssh,这两个套件事实上仍被发布过不少漏洞,因此,最好不要对Internet开放,毕竟SSH对于主机的使用权限是很高的!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章