鸟哥私房菜 习题答案(服务篇)2
如果仅想单纯了解正在监听中的端口,可以使用netstat -tul,如果还想知道已经建立了多少联机,可以使用netstat -an。
利用ps -aux或top查看均可。
正在监听中的端口均是由某些服务(daemons)所启动,所以要启动端口就得启用某个服务,要了解某个端口是由哪个daemon启动的,利用netstat -tulp来查阅。
三次握手为较可靠的包传输的一种确认方式,因此只有TCP包才能具有三次握手。它利用(1)Client对Server主动联机时带有的SYN标志;(2)Server回应时的SYN/ACK;(3)最终Client确认的ACK标志来确认包的可靠性。更详细的说明请参考第2章。
Linux系统的服务有独立启动(stand alone)及超级服务(super daemon)两种方式。挂在super daemon下的服务可以经由super daemon控管,以加强安全功能,不过由于还要经过super daemon的管理,所以服务的连接速度上会比stand alone慢一点。详细的说明请参考《鸟哥的Linux私房菜——基础学习篇》一书第21章。
各个daemons的启动与关闭的脚本放置在/etc/rc.d/init.d里,至于super daemon的控管参数文件则在/etc/xinetd.d里!
请参考本章的做法,利用ntsysv或chkconfig等功能加reboot,或netstat配合kill的方式!
本题请参考本章内容,选择APT或其他Linux版本网站提供的在线升级方式进行你的套件升级。
因为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
ifconfig eth0:1 192.168.200.2 up
使用route -n即可查阅。要注意0.0.0.0那个目标(默认网关)。
直接以echo "1" > /proc/sys/net/ipv4/ip_forward即可。
我的布线如下图所示:
每个路由器都有两个接口,且4个路由器的右接口都在同一个网段内!那么Router 1怎么跟Router 2的内部网域进行沟通?利用route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.5.2即可。
使用第5章中提到的traceroute指令来查询。
可以使用top、sar、free、ps -aux、uptime、last等指令查询系统相关信息。
因为SUID是4000这个权限,所以可以这样做:
find / -perm +4000
利用最简易的MD5 编码来测试,例如md5sum套件名称,再比对与原始套件发布的MD5 数据是否相同。
密码的设定规则在/etc/login.defs里!密码文件在/etc/shadow内!
找出问题、重新安装、漏洞修补、数据还原!请参考本章最后的修补工作内容。
防火墙不是万灵丹,它还是可能被病毒或***程序所***!此外,如果你的主机本身已经提供了多个网络服务,则当该网络服务的套件有漏洞时,防火墙仍然无法克服该服务的漏洞。因此仍然需要持续进行主机的监视工作!
因为防火墙仅抵挡某些不受欢迎的包,如果你开放WWW服务,则要求主机端口80的包可直接进入你的主机,万一WWW套件有漏洞,那么就可能被***了!所以套件的更新很重要。
利用uname -r 可以查到!
filter为默认的Table,里面默认的链有:
• INPUT:来自外部,想要进入主机的包;
• OUTPUT:来自主机,想要离开主机的包;
• FORWARD:主机内部网域与外部网域的包(不论进出),但该包不会进入主机。
还有nat这个table:
• PREROUTING:进行路由之前的包传送过程;
• OUTPUT:离开主机的包传送过程;
• POSTROUTING:经过路由之后才进行的过滤规则。
当包的所有属性都不在防火墙规则中时,这个包能否顺利通过防火墙,则以Policy 作为这个包的最终动作!
既然没有对Internet提供任何服务,那么(1)请将所有的对外端口先关闭(2)防火墙规则中,最重要的是INPUT的Policy 一定要DROP,然后将iptables -A INPUT -m state --state RELATED -j ACCEPT即可。
iptables -A INPUT -p tcp -s 192.168.1.50 --dport 21:23 -j DROP
因为ping能否响应用的是icmp的type 8(请参考第2章内的ICMP相关内容),所以我可以这样做:
iptables -I INPUT -p icmp --icmp-type 8 -j DROP
只有TCP包才会具有SYN标志,UDP并没有SYN标志,所以上面的指令是错误的!
因为DNS的来源是端口53,因此要接受来自端口53的包:
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A INPUT -p tcp --sport 53 -j ACCEPT
先要清除规则,才能将iptables 移除!不过,我们主要将规则清除即可。
iptables -F; iptables -X; iptables -Z
iptables -t nat -F; iptables -t nat -X; iptables -t nat -Z
请利用iptables-save及iptables-restore这两个指令,配合命令重导向即可。
这个文件早期用于进行主机名称与IP的解析,目前常用在内部网域的名称解析上,可以加快内部网域的反查!
如果想要合法授权,就需要向上层DNS主机注册,而且还要上层DNS主机管理员愿意将域名的解析权限授权给你。
因为我们的Client拨号时,得到的IP不是固定的,所以无法以DNS系统进行固定IP对应主机名称的工作,此时就需要动态DNS系统。以DNS主机提供的动态更新主机名称对应IP的机制,可以让我们的不同IP对应到同一个主机名称!
因为我是以ADSL拨号上网,所以IP是不固定的,此时需要申请动态DNS主机的主机名称,例如adsldns.org以及no-ip.org等!
因为Telnet除了使用明码传送数据外,本身telnet 就是很容易被***的一个服务器,所以当然比较危险。至于SSH,其实也不是很安全!由中国台湾计算机危机处理小组的文件可以明显发现,openssl + openSSH也是常有漏洞发布!不过,比起telnet来说,确实会安全一些!
利用key pair实现加密机制:Server提供Public Key给Client端计算Private key,以提供包传送时的加密、解密!
SSH配置文件名为sshd_config,通常放置在/etc/ssh/sshd_config内;如果不想让root 登入,可以修改sshd_config内的参数成为PermitRootLogin no,并重新启动SSH来设定!如果要让badbird用户无法登入,同样在sshd_config里面设定为:「DenyUsers badbird」即可!
telnet与SSH的埠口分别是:23与22!请参考/etc/services喔!
无法登入的原因可能有很多,最好先查询 /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. 其他因素(如账号密码过期等等)
最好不要对Internet开放你的SSH服务,因为SSH的加密函数库使用的是openssl,一般Linux版本使用的SSH是openssh,这两个套件事实上仍被发布过不少漏洞,因此,最好不要对Internet开放,毕竟SSH对于主机的使用权限是很高的!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.