最近更新日期:2003/09/20
PART I 、搭建服务器前进修篇:
第一章、搭建服务器之前所需的技能分析 基本的技能需要有: 由于配备相同,所以排除硬体的问题,不过,考虑到 IDE 排线与 partition 的代号,以及 /etc/fstab 的对应,所以应该是由于 IDE 插槽放置错误所致(Linux 系统下,每个 IDE 插槽对应的 partition 名称皆不相同喔!)。此外,上次不正常关机也可能造成硬碟损害而无法开机成功! 在 /etc/default/useradd 这个文件里面会规范使用者的预设家目录以及预设家目录的内容,一般来说,使用者预设家目录在 /home ,至于家目录内的文件则复制来源在 /etc/skel 里面。 Quota 目前仅能针对整个 partition 进行限额配置,如果该特定目录是一个 partition 那就可以进行 quota 设定,否则无法针对特定目录!此外, Quota 除了特定目录以及需要 ext2, ext3 等磁碟格式才支援之外,也需要核心的支援喔! 如果是执行档可以使用 which command 来搜寻,如果是文件,就必须要使用 locate vbird.document 或 whereis vbird.document 或 find / -name vbird.document 。如果要找到一天内更动过的文件,可以使用 find 配合参数,如:‘ find / -ctime 1’。 由于附档名是 .tar.gz 或者是 .tgz 的文件,所以可以认定该文件为一个 Tarball 的文件。至于档名的配置方面,httpd 为套件名称,2.0.52 则通常为该套件的版本名称了!那如何安装?由于该文件为 httpd 这个套件,且格式为 Tarball ,所以您必须要: 如前面几个题目所说的,因为是原始码,所以还需要编译程序来将该原始码编译成为可以在您的 Linux 系统上面跑的 binary 文件,在 Linux 上头预设的编译程序就是 gcc 这个编译器(compiler)。如果您在安装 Linux 的时候,使用 Linux Installer 预设的套件选择,那通常会没有安装 gcc 以及 make 等套件,此时,请拿出您的原版光碟,以 mount 指令挂载后,使用 RPM 将一个一个相关的套件安装即可(过程会蛮复杂的!)^_^ 如果要捉出程序(process)的话,可以使用 ps -aux 或者是直接输入 top 来查询 process 的 ID (PID),找到 PID 号码后,再以 kill -9 PID 来删除该程序即可。 无法编辑某个文件,可以先使用 file 这个指令来查询一下该文件的格式,例如想察看 /etc/shadow 的格式,可以下达:‘file /etc/shadow’,如果是文字档,却还是无法编辑,那么最可能发生的原因就是‘权限’的问题了。可以使用 ls -l filename 察看文件权限,再以 chmod 或 chown 来修订该文件的权限。此外,该文件也可能含有隐藏属性,可以使用 lsattr filename 查阅,再以 chattr 来修订隐藏属性。 在 Linux 系统下,使用者与群组其实都是以‘ID(数字)’的格式来设定的,所以使用者与群组其实都是 UID 或 GID (User ID 与 Group ID),Linux 对于文件权限也都是使用 UID/GID 来分辨。不过人类习惯使用文字来记忆,所以才会有 /etc/passwd 与 /etc/group 来转译 ID 与 User 及 Group 之间,这也才会发生为何在 Internet 上面捉下来的 Tarball 解开之后,往往会有文件拥有人与群组为数字的型态,因为您 Linux 系统上面的 /etc/passwd 与 /etc/group 没有相关的对应文字说。至于 UID 的等级主要有两种,分别是超级管理员(root),其 UID 为 0,其他非为 0 的 UID 基本上身份是相同的!不过 Linux 通常会将小于 500 的 UID 保留给系统使用。 放置在 /etc/passwd 与 /etc/shadow 当中。当然还有 /etc/login.defs 喔! 能力需求相当高,如了(1)作业系统的基础知识(不论是 Linux/Unix/MAC/MS);(2)网络基础的知识;(3)个别 Internet Services 的运作知识之外,还需要(4)身心保持在备战状态,以及(5)具有相当高程度的道德感、责任感与使命感。 如果是 stand alone 的服务,可以经由 /etc/rc.d/init.d/* 里面的文件,如 /etc/rc.d/init.d/syslog start; 如果是 Super daemon 的服务,就必须(1)先到 /etc/xinetd.d 或者是 /etc/inetd.conf 修改相关文件或参数;(2)以 /etc/rc.d/init.d/xinetd restart 来启动。 因为 cron 是一个 stand alone 的服务,所以可以使用 /etc/rc.d/init.d/cron stop 来关闭;如果还是无法正常关闭,可以使用 ps -aux | grep cron 捉出该程序的 PID ,然后以 kill -9 PID 来关闭。 可以直接在 /etc/rc.d/rc[run-level].d 里面加入 S 开头的文件,不过,更简单的作法是直接将该程序写入 /etc/rc.d/rc.local ,不过,请注意该程序必须要具有可执行的权限,且 rc.local 也必须要是可执行喔! 第二章、简易网络基础架构 OSI 网络七层协定主要又分为两大部分,网络层与使用者应用层两部份。至于每一层的相关功能请参考本章节的表一所示。 由于电子讯号的基本单位为 bits ,所以一般 ISP 提供的传输速度单位均为 bits/second ,并非我们常用的文件计数单位 Bytes ! 在网络媒体上面,资料要传输时,必须知道下一个节点的位址才能顺利传送,这个节点的位址如网络卡的硬体位址就是 MAC 了。硬体位址是在网络卡出厂时就已经焊死在上面了(某些笔记型电脑的 MAC 则可以经由特殊软件修改),而软件位址,则是我们常说的 IP ,这两个并不相同喔!其中,MAC 与 IP 互相的对应则是以 ARP Table 来进行转译的! 物理广播主要与网络媒体有关,在同一个网络媒体上面同一时间仅能有一台主机来使用这个网络共享媒体,而要判断目前有没有其他主机在使用这个网络媒体时,就是利用Physical Broadcast 咯! 至于逻辑广播呢?呵呵!就是在查询到底网络上面有没有我们这部主机想要连接的相关协定或者同一网络内的其他主机了!他则主要与 MAC, ARP 以及软件位址(通称的 IP)有关啦! 当两部主机同时在一个网络媒体上面进行资料传输时,两个资料封包就会发生碰撞的情况,这就是封包碰撞了。在网络媒体流量很高、网络媒体的连线长度过长都会容易发生资料封包碰撞的情况。 ARP Tables 主要在对应 IP 与 MAC ,当主机要将资料封包送出到下个节点时,必须要知道下个节点的 MAC 才能传送,而如果不知道 MAC 时,就得需要使用逻辑广播来查询 IP 与 MAC 的对应才行。不过,当您的主机内部的 ARP table 已经记录了 IP 对应的 MAC 之后,那么该资料封包则可以立即传送到下个节点去,而不需要再次的进行逻辑广播了。要知道目前的 arp table 内有多少纪录,可以使用 ‘ arp -a ’来查询。 Netmask 可以有效的增加网络的效率,这是因为 Netmask 可以定义出一个网络的大小,那么 broadcast 的时间就可以降低很多!一般来说,我们如果要将一个大网络再细分为小网络,也需要藉由 Netmask 来进行 subnet 的切割。 因为共有 28 个 bits 是不可动的,所以 Netmask 位址的最后一个数字为 11110000,也就是 (128+64+32+16=240) ,所以: Network:192.168.0.0 Netmask:255.255.255.240 Broadcast:192.168.0.15 IP:由 192.168.0.1 ~ 192.168.0.14 共 14 个可用 IP 喔! 因为是 29 个 bits 不可动,所以最后一个 Netmask 的位址为: 11111000 也就是 (128+64+32+16+8=248),所以: Network:192.168.0.128 Netmask:255.255.255.248 Broadcast:192.168.0.135 IP:由 192.168.0.129 ~ 192.168.0.134 共 6 个可用的 IP 喔! 既然要分为四个网络,也就是还需要藉助 Netmask 的两个 bits (2的2次方为4啊!),所以 Netmask 会变成 255.255.255.192 ,每个子网络会有 256/4=64 个 IP ,而必须要扣除 Network 与 Broadcast ,所以每个子网络会有 62 个可用 IP 喔!因此,四个子网络的表示方法为: 192.168.100.0/26, 192.168.100.64/26, 192.168.100.128/26, 192.168.100.192/26。 路由资讯的观察可以下达 route 来直接察看!或者是下达 route -n 亦可! SYN 代表该封包为该系列连线的第一个封包,亦即是主动连线的意思; ACK 则代表该封包为确认封包,亦即是回应封包! 使用 TCP 封包才会有三向交握。TCP 封包的三向交握是一个确认封包正确性的重要步骤,通过 SYN, SYN/ACK, ACK 三个封包的确认无误后,才能够建立连线。至于 UDP 封包则没有三向交握喔! 第三章、区域网络架构简介 因为只有 20 个员工,事实上,人员并不多,所以并不需要在内部加设 router 来隔开不同的网络。不过,由于想要管理员工的上网功能,因此最好以第三章图三的架构,以一台主机内含两块网络卡隔开 Intranet 与 Internet 两个网段,便于管理;至于对外连线的频宽方面,如果 Linux 主机需要进行网络服务的功能,那么最好能够有 512/512 的频宽,因为可能会有 Client 端下载的问题,至于如果单纯的仅下载时(公司没有额外的网络服务),可以考虑使用 T1/384 之类的频宽,比较省钱;而在内部网络设定上,如同本章节使用的网络 192.168.0.0/24 来设定即可,如果公司内部尚有移动装置(NoteBook),则可以在 Linux 上加装 DHCP (参考十六章)服务器。 如果私有网络内的流量较大,那么网络媒体需要选择 Switch 而不要使用 Hub !另外,整体包括网络线也都需要使用能够负载 10/100 Mbps 的流量才好。 第四章、连上 Internet 网络卡能不能被捉到可以使用‘ dmesg|grep eth ’来判断,有没有驱动则可以使用 lsmod 看看模组有没有载入核心!最后,以 ifconfig eth0 192.168.0.10 测试看看!
ONBOOT=yes BOOTPROTO=static IPADDR=192.168.100.100 NETMASK=255.255.255.0 NETWORK=192.168.100.0 BROADCAST=192.168.100.255 Linux 主机名称在 /etc/sysconfig/network 这个文件里面的‘HOSTNAME=主机名称’来设定,先以 vi 来修改,改完后可以使用 /etc/rc.d/init.d/network restart 或者直接 reboot 启动主机名称! 以主机名称寻找 IP 的方法, /etc/resolv.conf 内填写 DNS 主机名称,至于 /etc/hosts 则直接填写主机名称对应的 IP 即可! 因为拨接是使用 PPP (点对点)协定,所以拨接成功后会多出一个 ppp0 的介面,此外,系统原本即有 eth0 及 lo 这两个介面,所以共有三个介面。 请爱用 rp-pppoe ,官方网站: http://www.roaringpenguin.com/pppoe/ 因为拨接成功了,表示物理对外连线没有问题,那么可能的问题应该是发生在 Gateway 上面了!确认的方法请使用 route -n 查阅路由资讯,然后修订 /etc/sysconfig/network-scripts/ifcfg-eth0 吧!
第五章、Linux 常用网络指令介绍 以手动的方法为:‘route add -net 192.l68.100.0 netmask 255.255.255.0 dev eth0’即可! 使用 traceroute 寻找到底那个环节出问题:‘traceroute tw.yahoo.com’即可! 以 root 的身份进行‘netstat -anp |more’查出该连线的 PID,然后以‘ kill -9 PID ’踢掉该连线。 方法很多,可以利用 host green.ev.ncku.edu.tw 或 dig green.ev.ncku.edu.tw 或 nslookup green.ev.ncku.edu.tw 等方法找出! 请利用‘ping -c 3 -M do -s MTU yourIP ’找出您的 IP 的 MTU 数值。 要浏览可以使用 lynx ,至于要下载则使用 wget 这个软件。如果想要在终端机上面看到中文,还可以安装 JCMME 。 利用 telnet bbs.sayya.org 即可连接上,同样的,要看到中文,还是得安装 JCMME 。 PART II、主机的简易防火措施篇
第七章、限制 Linux 对外连线的端口 如果仅想单纯了解正在 LISTEN 当中的端口,可以使用‘netstat -tul’,如果还想知道有多少连线已经建立,可以使用‘netstat -an’来察看。 利用‘ps -aux’,或者是 top 来察看均可。 正在 LISTEN 当中的端口均是由某些服务(daemons)所启动的,所以要启动端口就得启用某个服务,要了解某个端口是由那个 daemon 所启动的,就利用 netstat -tulp 来查阅。 三向交握为较为可靠的封包传输的一种确认方式,因此只有 TCP 封包才能具有三向交握。他利用(1) client 对 Server 主动连线时带有的 SYN 标志,(2)Server 回应时的 SYN/ACK 及(3)最终 Client 确认的 ACK 标志来确认封包的可靠性。更详细说明请参考第二章 TCP 与三向交握。 Linux 系统的服务有独立启动(stand alone)及超级服务员(super daemon)两种启动的方式。挂在 super daemon 底下的服务可以经由 super daemon 的管理,以加强一些安全功能,不过由于还要经过 super daemon 的管理,所以服务的连接速度上会比 stand alone 慢一点。详细的说明请参考‘鸟哥的 Linux 私房菜 -- 基础学习篇’第二十一章‘认识系统服务’内的相关说明吧! 各个 daemons 的启动与关闭的 scripts 是放置在 /etc/rc.d/init.d 里面,至于 super daemon 的管理参数文件则在 /etc/xinetd.d 里面! 请参考本章节的作法!利用 ntsysv 或者 chkconfig 等功能加上 reboot ,或者 netstat 配合 kill 的方式! 第八章、Linux 网络套件升级 这题请参考本章节的内容,选择 APT 或者是其他 Linux distributions 网站提供的线上升级方式来进行您的套件升级。 第九章、多 IP 与 Router 的搭建 因为 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,并修改为:
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 那个目标(default gateway)。 直接以‘echo "1" > /proc/sys/net/ipv4/ip_forward ’即可! 我的布线如同下图所示: 每个 Router 都具有两个介面,且四个 Router 的右边介面都在同一个网段内!那么 Router 1 怎么跟 Router 2 的内部网络进行沟通?利用:‘route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.5.2’即可! 使用第五章Linux 常用网络指令当中提到的 traceroute 来查询! 第十章、认识网络安全 可以使用 top, sar, free, ps -aux, uptime, last 等功能去查询系统的相关资讯喔! 因为 SUID 是 4000 这个权限的模样,所以我可以这样做: find / -perm +4000 利用最简易的 MD5 编码来测试一下,例如‘ md5sum 套件名称’,再比对与原始套件释出的 MD5 数据是否相同!? 密码的设定规则在 /etc/login.defs 里面!至于密码文件在 /etc/shadow 内! 找出问题、重新安装、漏洞修补、资料还原!请参考本章最后面的‘修补工 0240network-secure-1.php#repaire 作’内容! 第十一章、简易 Firewall 搭建 防火墙不是万灵丹,他还是可能被病毒或者是木马程序所入侵的!此外,如果您的主机本身就已经提供了多个网络服务,则当该网络服务的套件有漏洞时,防火墙仍然无法克服该服务的漏洞的!因此仍然需要持续的进行主机的监视工作! 因为防火墙仅是抵挡某些不受欢迎的封包,如果您有开放 WWW 的服务时,则要求您主机 port 80 的封包将可直接进入您的主机,万一 WWW 套件有漏洞时,那么就可能被入侵了!所以套件的更新很重要! 利用 uname -r 可以查得! filter 为预设的 Table,里头预设的链有: 当封包的所有属性都不在防火墙的规则当中时,那么这个封包能否顺利的通过防火墙,则以 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 (请参考第二章 网络基础 内的 ICMP 相关内容),所以我可以这样做: iptables -I INPUT -p icmp --icmp-type 8 -j DROP 因为只有 TCP 封包才会具有 SYN 的标志, UDP 并没有 SYN 的标志啊!所以上面的指令是错误的! 因为 DNS 的来源是 port 53 ,因此要接受来自 port 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 等等! PART III、各类服务器搭建篇:
第十三章、简易 Telnet 与 SSH 主机设定 因为 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 里面的错误讯息来判断,当然,还有其他可能的原因为: 最好不要对 Internet 开放您的 SSH 服务,因为 SSH 的加密函式库使用的是 openssl ,一般 Linux distribution 使用的 SSH 则是 openssh ,这两个套件事实上仍有不少的漏洞被发布过,因此,最好不要对 Internet 开放,毕竟 SSH 对于主机的使用权限是很高的! 第十四章、简易 NAT 服务器 NAT 主机的最大用途在于‘封包伪装’,可以做为内部 Client 主机对外的连线之用(类似 IP 分享器),当然,也可以做为区域内主机 (DMZ) 的设定!至于其运作原理则主要以 iptables 的过滤机制有关,利用 iptables 来将通过的封包进行 Source IP 或 destination IP 的伪装! 两边的 LAN 并没有互相物理连接,此外,微型电脑为本来的 Linux 主机,而新增一台 Linux 主机则是‘服务器’那一台! 第十五章、简易 NFS 服务器设定 主要的设定档为 /etc/exports 而至于其设定的内容项目在每一行当中则为: 要查阅 /var/lib/nfs/xtab 这个文件才行! 透过使用 exportfs ,可以加上 -a 或者是 -rv 这两个参数来重新挂载!如 exportfs -rv 那自然就是 mount 啦!还有卸载是 umount 喔! 可以在 /etc/exports 当中的参数项目,设定‘ root_squash ’来控制压缩 root 的身份喔! 可能由于您挂载进来的 NFS Server 的 partition 当中具有 SUID 的文件属性,而您不小心使用了该执行档,因此就可能会发生系统被破坏的问题了! 可以将挂载进来的 NFS 目录的 SUID 功能取消!例如: mount -t nfs -o nosuid,ro server:/directory /your/directory 第十六章、简易 DHCP 服务器设定 DHCP 主机的主要用途就是在于自动分配网络参数给 Client 端的电脑,以降低网络当中可能发生的 IP 冲突问题,以及减少网管人员到处检查错误的伤脑筋! 主要的两种分配模式分别为 Dynamic IP 与 Static IP , Static IP 透过 MAC 的比对,至于 Dynamic IP 则是直接取用网络中尚未被使用到的 IP 来进行 Client 端的分配。 DHCP 主要利用网络卡的硬体位址,亦即俗称的‘网络卡卡号’,也就是 MAC 来进行 Client 端的比对的,至于主动取得 Client 端的方式,可以透过 ping 以及 arp 来获得。 这个文件主要记录了 Client 端连上 Server 端的纪录资料,他会被 DHCP 主机用来判定与 Client 端的租约行为喔! 就是最重要的 /var/log/messages 这个文件啦(预设状况下!) 第十七章、简易 DNS 服务器设定 最主要的功能其实在于 Hostname 对应 IP 的查询,可以让我们人类以电脑主机名称连上 Internet ,而不必背诵 IP 哩! 在 Unix Like 系统当中,使用 BIND 这个套件做为 DNS 的搭建,至于 daemon 则是使用 named 这个 daemon ! 这个文件的‘格式’为‘ <IP> <主机名称> <主机别名(aliase)>’,而,这个文件里面放置了至少一行,也就是: 127.0.0.1 localhost localhost.localdomain 另外,也可以将经常连接的主机 IP 与 HOSTNAME 的对应给他写进来! DNS 主机主要分为: master, slave 与 cache-only 三种类型!在 master 当中,master 主机里面即有设定 DNS 资料文件,例如在 /var/named 里面的正反解文件。至于 slave 的 DNS 主机则主要在进行 master 主机的资料备份,同时也提供 Internet 上面的查询功能。使用 master/slave 的最大优点在于“单点维护”的能力!利用修改 master 即可让 slave 的资料同时更新,减少人力的浪费。至于 cache-only 仅进行快取的纪录,本身并无资料库文件! 正解档在设定 hostname 对应到 IP 的纪录,主要的纪录有 A, NS, SOA, MX, CNAME 等等; 反解档主要设定 IP 对应到 Hostname 的纪录,主要的纪录为 SOA, NS 与 PTR 等。 内部回圈则是 localhost 与 127.0.0.1 的对应啦! 这个文件主要是由 rs.internic.net 所下载下来的,主要记录了 root (.) 这个 zone 的 IP !可以让我们的 DNS Server 在找不到资料库时,可以到这个 root 去查询资料! /etc/nsswitch.conf :可以用来设定查询主机名称的顺序!例如先查询 /etc/hosts 再查询 DNS 系统; /etc/hosts :最早的名称解析器; /etc/resolv.conf:这就是 DNS 系统的 resolver (解析器)了。 nslookup :可以用来收集一台主机的相关资讯; dig:可以用来收集详细的主机资讯; whois :可以用来收集详尽的 DNS 主机资讯。 host 则较为简单喔! 在 /var/log/messages 当中。 第十八章、简易 WWW 服务器设定 这个名词代表了 Linux + Apache + MySQL + PHP 这个 WWW 服务器的组成! Apache 的设定档档名为 httpd.conf ,不过,由于 httpd.conf 内容参数可以使用‘ include "额外设定档名"’,所以也可能具有其他的额外设定档喔! 设定主网页的参数为:DocumentRoot 喔!后面接的是主网页放置的‘目录’! 其实不论是 RPM 还是 Tarball 都是使用 apachectl 这个文件来启动 apache 的,不过 RPM 已经将该文件整合到 /etc/rc.d/init.d/httpd 里面去而已! 这是正常的,主要由 httpd.conf 里面设定的底下两个参数: 同样察看 httpd.conf 里面的 User 与 Group 这两个设定值! 这是由于在 httpd.conf 里面,针对该目录的设定参数‘ Options ’当中,设定了 Indexes 这个设定值,导致当找不到主页时(通常是 index.html),就会将该目录下的所有文件秀出来!解决的方法就是拿到 Options 里面的 Indexes 设定值即可! 可以用来取代 httpd.conf 里面的设定参数!创造属于使用者自己的 Apache 风格! 第十九章、简易 SAMBA 服务器设定 使用的档名为 smb.conf ,通常会放置在 /etc/samba/smb.conf 里面,不过,最好可以使用 rpm -qc packagename 来查询! 当我们修改完 smb.conf 之后,记得要以 testparm 来进行 samba 的确认! 利用 smbclient 即可:‘smbclient -L NetBiosName -U username ’! 在 Linux 系统上面,将 Windows 的网络上的芳邻,或者是 Linux 的 SAMBA 所提供分享的资源挂载到自己的系统下! 由于 Samba 使用者的资讯必须要存在于 /etc/passwd 里面,既然无法新增,应该先确认 badbird 这个使用者已经存在于 Linux 系统当中了!如果还是无法新增,则需要查阅 smb.conf 的设定,看看是否 /etc/samba/smbpasswd 这个密码文件不存在?! 第二十章、简易 Mail Server 搭建 -- Sendmail 设定 MX recode 可以可以让 mail server 经由 MX 以及 A ( address ) 这个记录来进行 mail gateway 与 mail route 的功能!能够达到的作用相当的多! Sendmail 的设定档为 sendmail.cf ,这个文件通常放置在 /etc/sendmail.cf 或者 /etc/mail/sendmail.cf !您可以手动的编辑这个文件,不过不建议如此,取得代之的,可以使用 m4 这个程序来进行 macro 的动作,进一步的完成 sendmail.cf 的修改!至于使用 m4 时,需要先建立 m4 scripts ,再以 m4 转换才能形成 sendmail.cf 喔! Mailling list 就是将使用者寄给一个帐号邮件时,该帐号会主动的将该邮件传送到所有的用户去!有点类似目前的电子报!在 sendmail 底下,我们可以透过 aliases (需配合 newaliases) 以及 ~/.forward 来达成喔! 使用 mailq 即可知道目前邮件伫列的内容,而邮件伫列虽然可以透过 sendmail.cf 来修改,不过,预设情况下,都是以 /var/spool/mqueue 为邮件伫列目录。 可以修改 /etc/mail/local-host-names 来达成! 所谓的 Open Relay 就是,不论发信端来自何处,您的 Open Relay 的主机均可以帮发信端将信件发送出去,这个称为 Open Relay 。如果您的 mail server 具有 open relay 的情况,那么很容易遭受到垃圾邮件的填充,不但造成网络频宽的耗损,也容易让您的主机被列入黑名单当中! 第二十一章、简易 Mail Server 搭建 -- Postfix 设定 一般而言, SASL 1.5 适用于 postfix 1.xx 版本,至于 SASL 2.x 版则适用于 postfix 2.xx 版。由于 SASL 2.x 主要使用 saslauthd 这个 daemon 来做为身份认证的方式,而 SASL 1.5 则使用的是 pam 与 pwcheck 这两个机制,两个版本的认证机制并不相同。所以使用 Postfix 来设定 SMTP 的身份认证时,请务必记得版本的差异! 需要在 main.cf 里面修改的变数主要有: 利用 postconf -n 可以察看‘目前 main.cf 里面设定的参数’,而如果要看所有的参数,则直接使用 postconf 即可! 启用的方式可以在 main.cf 里面启用这个设定值: header_checks = regexp:/完整路径/档名 body_checks = regexp:/完整路径/档名 至于文件内容可以这样做:(注:因为要查阅的是标头,所以需要 header_checks 后面所接的档名呐!) /^Subject.*your\ account/ REJECT 第二十二章、简易 FTP Server 搭建 -- Wu FTP 设定 需建立两种连线,分别是 command 与 data transfer 的连线,就是命令通道与资料传输通道。一般来说,就是 port 21(ftp) 与 port 20(ftp-data)。 主动式连线的时候, command 连线是由 client 端主动连接到主机端,但是 ftp-data 则是由主机端主动的连线到 client 端。至于被动式连线的时候,则不论 command 还是 ftp-data 的连线,主机端都是 Listen 客户端的要求的! 有很多的方法,在设定上面有这些方法: 是在 /etc/services 里面规范的,此外,正规的 ports 在 command 是 21 而 data 是 20 。 /etc/ftpaccess log transfer 可以将使用者进行资料传输的时候,将传输的文件大小、内容等等记录到 /var/log/xferlog 里面去! 我们知道 FTP 有主动与被动连线两种方式,如果 FTP 主机允许被动连线,那么 Client 端连线时,主机端将会随机取大于 1024 的 port 来进行 data transfer ,为了避免随机取 port 的问题,所以 passive ports 可以指定固定的几个小范围的 ports ,比较安全。 /etc/ftpusers!(其实是利用 pam 模组来达成的功能!) 资料的传输有 ASCII 与 Binary 两种方式,在进行 ascii 传送方式时,被传送的文件将会以文字模式来进行传送的行为,因此,文件的属性会被修改过,可能造成执行档最后却无法执行等的问题!一般来说,ASCII 通常仅用在文字文件与一些原始码文件的传送。 第二十三章、简易 FTP Server 搭建 -- Pro FTPD 因为无法使用 telnet/SSH ,这表示他可能不具有正常的 shell ,因此您可以将该使用者在 /etc/passwd 里面,最后一个 shell 参数改成 /bin/false ,然后在 proftpd.conf 里面设定‘RequireValidShell off’即可! 这是由于 proftpd 预设使用 GMT 时间,因此,您必须要重新设定 proftpd ,使得时间使用 localtime 才成!修改 proftpd.conf 里面的参数成为:‘TimesGMT off’ 最先应该查询是否被防火墙挡住了(同时观察 Server/Client 端); 克服防火墙问题后,再查询 FTP port 是否有启动; 再检阅 /var/log/messages 里面的错误讯息, 最后据以修订 proftpd.conf 的设定参数! 第二十五章、简易 Proxy Server 搭建 这不但由于 Proxy 可以透过上层 Proxy 达到分流的功能,使得网络传输更具效率之外,还由于 Proxy 会将资料快取(cache)在自己的硬碟内,以方便下次的查询,因此对于区域网络的浏览速度是有帮助的! 最主要还是在于找出问题,所以需要由 suqid 的登录档查询起,当然,硬碟的优劣以及 squid 所取得 PID 的 owner 与 group 都是需要注意的! Proxy 服务器的功能在于代理来自 client 的上网需求,并向目地端主机送出 client 端的要求,以协助 client 端取得所需要的浏览网页。此外,并可将网页资料进行 cache 的功能。 由于 Proxy 服务器通常搭建之后,会让网络仅有一个 Proxy 主机的出口,亦即单点对外的服务器,可以强化网络的管理! 第二十六章、简易 Network Information Service, NIS Server 搭建 当您有多部具有相同帐号的 Linux 主机时,即可利用 NIS 所提供的服务,来利用一台 NIS 主机掌控所有的 linux 主机的登入时所需查阅的帐号与密码验证。流程如下: NIS master/client 的特色为: 因为 NIS 是 RPC Server 的一种,所以必须要启动 portmap 这个 daemon 才行! 网络名称可以直接手动下达‘ nisdomainname bird ’也可以写入 /etc/sysconfig/network 里面‘NISDOMAIN=bird’; IP 与 主机名称 需要写入在 /etc/hosts 里面。 该文件的功能很多,在 DNS 方面,可以用来决定正、反解的顺序,至于密码则可以用来判断何者为先!如果需要先查本机再查 NIS 的密码时,需要的参数: passwd: files nis nisplus shadow: files nis nisplus /usr/lib/yp/ypinit -m network/netmask:192.168.1.0/255.255.255.0 NIS server : 192.168.1.100 (hostname: server.nis.test ) NIS cient: 192.168.1.200 (hostname: client1.nis.test ) NIS domain name: nis.test 利用上面的参数来设定 NIS 架构,请一步一步的写下你的设定。 请自行参考本章节内容设定! 请参考:http://www.linux-nis.org/nis-howto/HOWTO/index.html 第二十七章、简易 NTP 服务器设定 由于地球是圆的,所以同一时间点上,在地球共可分为 24 个时区,其中,我们以欧洲的格林威治时间为一个对照的依据,这个即是 GMT 时间。台湾时间比 GMT 时间快了 8 小时。至于 UTC 时间则是由原子钟所计算的时间,这个时间是相当的准确的,主要仍以格林威治时间为时区! 所有的时区文件放置于:/usr/share/zoneinfo 底下!至于系统时区的设定档则在 /etc/sysconfig/clock 与 /etc/localtime 喔! 将 /usr/share/zoneinfo/Asia/Taipei 这个文件复制成为 /etc/localtime 即可! 在 /etc/ntp.conf 这个文件当中,至于上层 time server 的设定参数为 server 啊!那个 driftfile 则是用来做为‘时间差额’的计算的!该参数后面接的是一个完整路径的档名,该文件里面的数值单位为百万分之一(ppm)。 可以用来追踪上层 time server 的连线时间与目前时间! 必须利用 hwclock 这个程序来写入,利用 hwclock -w 写入 BIOS 。 最简单的方法即是使用‘ ntpdate time.servers.ip; hwclock -w ’即可! 2003/0919:完成到 Part II (简易主机防火措施篇) 的习题咯! 2003/09/20:完成了 Part III 的习题咯!真开心!大家作作看吧! |
|||