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

PART II、简易防火措施篇

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

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

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

2. 如何观察程序?

利用 ps -aux top 查看均可。

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

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

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

三次握手为较可靠的包传输的一种确认方式,因此只有 TCP 包才能具有三次握手。它利用( 1 Client Server 主动联机时带有的 SYN 标志;( 2 Server 回应时的 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主机对外的联机端口全部关闭。

请参考本章的做法,利用 ntsysv chkconfig 等功能加 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/25 netmask 255.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 负荷太大,所以要检查一下系统相关的信息。请问,我该以什么指令检查我的系统相关信息?

可以使用 top sar free ps -aux uptime last 等指令查询系统相关信息。

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

因为 SUID 4000 这个权限,所以可以这样做:
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 )防火墙规则中,最重要的是 INPUT Policy 一定要 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 能否响应用的是 icmp type 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-save iptables-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 Key Client 端计算 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)各为多少?

telnet SSH 的埠口分别是: 23 22 !请参考 /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 版本使用的 SSH openssh ,这两个套件事实上仍被发布过不少漏洞,因此,最好不要对 Internet 开放,毕竟 SSH 对于主机的使用权限是很高的!

你可能感兴趣的:(linux,防火墙,答案,习题,鸟公私房菜)