[content too large, truncated for display]
建立一个安全Linux服务器
要建立一个安全Linux服务器就首先要了解Linux环境下和网络服务相关的配置文件的含义及如何进行安全的配置。在Linux系统中,TCP/IP网络是通过若干个文本文件进行配置的,也许你需要编辑这些文件来完成联网工作,但是这些配置文件大都可以通过配置命令linuxconf (其中网络部分的配置可以通过netconf命令来实现)。下面介绍基本的 TCP/IP网络配置文件。
* /etc/conf.modules文件
该配置文件定义了各种需要在启动时加载的模块的参数信息。这里主要着重讨论关于网卡的配置。在使用Linux做网关的情况下,Linux服务器至少需要配置两块网卡。为了减少启动时可能出现的问题,Linux内核不会自动检测多个网卡。对于没有将网卡的驱动编译到内核而是作为模块动态载入的系统若需要安装多块网卡,应该在“conf.modules”文件中进行相应的配置。
若设备驱动被编译为模块(内核的模块):对于PCI设备,模块将自动检测到所有已经安装到系统上的设备;对于ISA卡,则需要向模块提供IO地址,以使模块知道在何处寻找该卡,这些信息在“/etc/conf.modules”中提供。
例如,我们有两块ISA总线的3c509卡,一个IO地址是0x300,另一个是0x320。编辑“conf.modules”文件如下:
alias eth0 3c509
alias eth1 3c509
options 3c509 io=0x300,0x320
这是说明3c509的驱动程序应当分别以eth0或eth1的名称被加载(alias eth0,eth1),并且它们应该以参数io=0x300,0x320被装载,来通知驱动程序到哪里去寻找网卡,其中0x是不可缺少的。
对于PCI卡,仅仅需要alias命令来使ethN和适当的驱动模块名关联,PCI卡的IO地址将会被自动的检测到。对于PCI卡,编辑“conf.modules”文件如下:
alias eth0 3c905
alias eth1 3c905
若驱动已经被编译进了内核:系统启动时的PCI检测程序将会自动找到所有相关的网卡。ISA卡一般也能够被自动检测到,但是在某些情况下,ISA卡仍然需要做下面的配置工作:
在“/etc/lilo.conf”中增加配置信息,其方法是通过LILO程序将启动参数信息传递给内核。对于ISA卡,编辑“lilo.conf”文件,增加如下内容:
append=" ether="0,0,eth0 ether="0,0,eth1"
注:先不要在“lilo.conf”中加入启动参数,测试一下你的ISA卡,若失败再使用启动参数。
如果用传递启动参数的方法,eth0和eth1将按照启动时被发现的顺序来设置。
* /etc/HOSTNAME文件:
该文件包含了系统的主机名称,包括完全的域名,如:
deep.openarch.com
*/etc/sysconfig/network-scripts/ifcfg-ethN文件:
在RedHat中,系统网络设备的配置文件保存在“/etc/sysconfig/network-scripts”目录下,ifcfg-eth0包含第一块网卡的配置信息,ifcfg-eth1包含第二块网卡的配置信息。
下面是“/etc/sysconfig/network-scripts/ifcfg-eth0”文件的示例:
DEVICE=eth0
IPADDR=208.164.186.1
NETMASK=255.255.255.0
NETWORK=208.164.186.0
BROADCAST=208.164.186.255
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
若希望手工修改网络地址或在新的接口上增加新的网络界面,可以通过修改对应的文件(ifcfg-ethN)或创建新的文件来实现。
DEVICE=name name表示物理设备的名字
IPADDR=addr addr表示赋给该卡的IP地址
NETMASK=mask mask表示网络掩码
NETWORK=addr addr表示网络地址
BROADCAST=addr addr表示广播地址
ONBOOT=yes/no 启动时是否激活该卡
none:无须启动协议
bootp:使用bootp协议
dhcp:使用dhcp协议
USERCTL=yes/no 是否允许非root用户控制该设备
*/etc/resolv.conf文件:
该文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件,示例如下:
search openarch.com
nameserver 208.164.186.1
nameserver 208.164.186.2
“search domainname.com”表示当提供了一个不包括完全域名的主机名时,在该主机名后添加domainname.com的后缀;“nameserver”表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的。
*/etc/host.conf文件:
该文件指定如何解析主机名。Linux通过解析器库来获得主机名对应的IP地址。下面是一个“/etc/host.conf”的示例:
order bind,hosts
multi on
ospoof on
“order bind,hosts”指定主机名查询顺序,这里规定先使用DNS来解析域名,然后再查询“/etc/hosts”文件(也可以相反)。
“multi on”指定是否“/etc/hosts”文件中指定的主机可以有多个地址,拥有多个IP地址的主机一般称为多穴主机。
“nospoof on”指不允许对该服务器进行IP地址欺骗。IP欺骗是一种攻击系统安全的手段,通过把IP地址伪装成别的计算机,来取得其它计算机的信任。
*/etc/sysconfig/network文件
该文件用来指定服务器上的网络配置信息,下面是一个示例:
NETWORK=yes
RORWARD_IPV4=yes
HOSTNAME=deep.openarch.com
GAREWAY=0.0.0.0
GATEWAYDEV=
NETWORK=yes/no 网络是否被配置;
FORWARD_IPV4=yes/no 是否开启IP转发功能
HOSTNAME=hostname hostname表示服务器的主机名
GAREWAY=gw-ip gw-ip表示网络网关的IP地址
GAREWAYDEV=gw-dev gw-dw表示网关的设备名,如:etho等
注意:为了和老的软件相兼容,“/etc/HOSTNAME”文件应该用和HOSTNAME=hostname相同的主机名。
*/etc/hosts文件
当机器启动时,在可以查询DNS以前,机器需要查询一些主机名到IP地址的匹配。这些匹配信息存放在/etc/hosts文件中。在没有域名服务器情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的IP地址。
下面是一个“/etc/hosts”文件的示例:
IP Address Hostname Alias
127.0.0.1 Localhost Gate.openarch.com
208.164.186.1 gate.openarch.com Gate
………… ………… ………
最左边一列是主机IP信息,中间一列是主机名。任何后面的列都是该主机的别名。一旦配置完机器的网络配置文件,应该重新启动网络以使修改生效。使用下面的命令来重新启动网络:/etc/rc.d/init.d/network restart
* /etc/inetd.conf文件
众所周知,作为服务器来说,服务端口开放越多,系统安全稳定性越难以保证。所以提供特定服务的服务器应该尽可能开放提供服务必不可少的端口,而将与服务器服务无关的服务关闭,比如:一台作为www和ftp服务器的机器,应该只开放80 和25端口,而将其他无关的服务如:finger auth等服务关掉,以减少系统漏洞。
而inetd,也叫作“超级服务器”,就是监视一些网络请求的守护进程,其根据网络请求来调用相应的服务进程来处理连接请求。inetd.conf则是inetd的配置文件。inetd.conf文件告诉inetd监听哪些网络端口,为每个端口启动哪个服务。在任何的网络环境中使用Linux系统,第一件要做的事就是了解一下服务器到底要提供哪些服务。不需要的那些服务应该被禁止掉,最好卸载掉,这样黑客就少了一些攻击系统的机会。查看“/etc/inetd.conf”文件,了解一下inetd提供哪些服务。用加上注释的方法(在一行的开头加上#号),禁止任何不需要的服务,再给inetd进程发一个SIGHUP信号。
第一步:把文件的许可权限改成600。
[root@deep]# chmod 600 /etc/inetd.conf
第二步:确信文件的所有者是root。
[root@deep]# stat /etc/inetd.conf
第三步:编辑“inetd.conf”文件(vi /etc/inetd.conf),禁止所有不需要的服务,如:ftp、 telnet、 shell、 login、 exec、talk、ntalk、 imap、 pop-2、pop-3、finger、auth,等等。如果你觉得某些服务有用,可以不禁止这些服务。但是,把这些服务禁止掉,系统受攻击的可能性就会小很多。改变后的“inetd.conf”文件的内容如下面所示:
# To re-read this file after changes, just do a 'killall -HUP inetd'
#
#echo stream tcp nowait root internal
#echo dgram udp wait root internal
#discard stream tcp nowait root internal
#discard dgram udp wait root internal
#daytime stream tcp nowait root internal
#daytime dgram udp wait root internal
#chargen stream tcp nowait root internal
#chargen dgram udp wait root internal
#time stream tcp nowait root internal
#time dgram udp wait root internal
#
# These are standard services.
#
#ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
#telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
#
# Shell, login, exec, comsat and talk are BSD protocols.
#
#shell stream tcp nowait root /usr/sbin/tcpd in.rshd
#login stream tcp nowait root /usr/sbin/tcpd in.rlogind
#exec stream tcp nowait root /usr/sbin/tcpd in.rexecd
#comsat dgram udp wait root /usr/sbin/tcpd in.comsat
#talk dgram udp wait root /usr/sbin/tcpd in.talkd
#ntalk dgram udp wait root /usr/sbin/tcpd in.ntalkd
#dtalk stream tcp wait nobody /usr/sbin/tcpd in.dtalkd
#
# Pop and imap mail services et al
#
#pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d
#pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d
#imap stream tcp nowait root /usr/sbin/tcpd imapd
#
# The Internet UUCP service.
#
#uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/lib/uucp/uucico -l
#
# Tftp service is provided primarily for booting. Most sites
# run this only on machines acting as "boot servers." Do not uncomment
# this unless you *need* it.
#
#tftp dgram udp wait root /usr/sbin/tcpd in.tftpd
#bootps dgram udp wait root /usr/sbin/tcpd bootpd
#
# Finger, systat and netstat give out user information which may be
# valuable to potential "system crackers." Many sites choose to disable
# some or all of these services to improve security.
#
#finger stream tcp nowait root /usr/sbin/tcpd in.fingerd
#cfinger stream tcp nowait root /usr/sbin/tcpd in.cfingerd
#systat stream tcp nowait guest /usr/sbin/tcpd /bin/ps -auwwx
#netstat stream tcp nowait guest /usr/sbin/tcpd /bin/netstat -f inet
#
# Authentication
#
#auth stream tcp nowait nobody /usr/sbin/in.identd in.identd -l -e -o
#
# End of inetd.conf
注意:改变了“inetd.conf”文件之后,别忘了给inetd进程发一个SIGHUP信号(killall 每HUP inetd)。
[root@deep /root]# killall -HUP inetd
第四步:
为了保证“inetd.conf”文件的安全,可以用chattr命令把它设成不可改变。把文件设成不可改变的只要用下面的命令:
[root@deep]# chattr +i /etc/inetd.conf
这样可以避免“inetd.conf”文件的任何改变(意外或是别的原因)。一个有“i”属性的文件是不能被改动的:不能删除或重命名,不能创建这个文件的链接,不能往这个文件里写数据。只有系统管理员才能设置和清除这个属性。如果要改变inetd.conf文件,你必须先清除这个不允许改变的标志:
[root@deep]# chattr -i /etc/inetd.conf
但是对于诸如sendmail,named,www等服务,由于它们不像finger,telnet等服务,在请求到来时由inet守护进程启动相应的进程提供服务,而是在系统启动时,作为守护进程运行的。而对于redhat linux,提供了一个linuxconfig命令,可以通过它在图形界面下交互式地设置是否在启动时运行相关服务。也可以通过命令来设置是否启动时启动某个服务,如: [root@deep]# chkconfig 每level 35 named off
具体命令可以参考man chkconfig的说明。
* /etc/hosts.allow /etc/hosts.allow
但是对于telnet、ftp等服务,如果将其一同关闭,那么对于管理员需要远程管理时,将非常不方便。Linux提供另外一种更为灵活和有效的方法来实现对服务请求用户的限制,从而可以在保证安全性的基础上,使可信任用户使用各种服务。Linux提供了一个叫TCP wrapper的程序。在大多数发布版本中该程序往往是缺省地被安装。利用TCP wrapper你可以限制访问前面提到的某些服务。而且TCP wrapper的记录文件记录了所有的企图访问你的系统的行为。通过last命令查看该程序的log,管理员可以获知谁曾经或者企图连接你的系统。
在/etc目录下,有两个文件:hosts.deny hosts.allow 通过配置这两个文件,你可以指定哪些机器可以使用这些服务,哪些不可以使用这些服务。
当服务请求到达服务器时,TCP wrapper就按照下列顺序查询这两个文件,直到遇到一个匹配为止:
1. 当在/etc/hosts.allow里面有一项与请求服务的主机地址项匹配,那么就允许该主机获取该服务
2. 否则,如果在/etc/hosts.deny里面有一项与请求服务的主机地址项匹配,就禁止该主机使用该项服务。
3. 如果相应的配置文件不存在,访问控制软件就认为是一个空文件,所以可以通过删除或者移走配置文件实现对清除所有设置。在文件中,空白行或者以#开头的行被忽略,你可以通过在行前加 # 实现注释功能。
配置这两个文件是通过一种简单的访问控制语言来实现的,访问控制语句的基本格式为:
程序名列表:主机名/IP地址列表。
程序名列表指定一个或者多个提供相应服务的程序的名字,名字之间用逗号或者空格分割,可以在inetd.conf文件里查看提供相应服务的程序名:如上面的文件示例中,telent所在行的最后一项就是所需的程序名:in.telnetd。
主机名/IP地址列表指定允许或者禁止使用该服务的一个或者多个主机的标识,主机名之间用逗号或空格分隔。程序名和主机地址都可以使用通配符,实现方便的指定多项服务和多个主机。
Linux提供了下面灵活的方式指定进程或者主机列表:
1. 一个以"."起始的域名串,如 .amms.ac.cn 那么
www.amms.ac.cn就和这一项匹配
2. 以"."结尾的IP串如 202.37.152. 那么IP地址包括202.37.152. 的主机都与这一项匹配。
3. 格式为n.n.n.n/m.m.m.m表示网络/掩码,如果请求服务的主机的IP地址与掩码的位与的结果等于n.n.n.n 那么该主机与该项匹配。
4. ALL表示匹配所有可能性
5. EXPECT表示除去后面所定义的主机。如:list_1 EXCEPT list_2 表示list_1主机列表中除去List_2所列出的主机
6. LOCAL表示匹配所有主机名中不包含"."的主机
上面的几种方式只是Linux提供的方式中的几种,但是对于我们的一般应用来说是足够了。我们通过举几个例子来说明这个问题:
例一:我们只希望允许同一个局域网的机器使用服务器的ftp功能,而禁止广域网上面的ftp服务请求,本地局域网由 202.39.154. 、202.39.153. 和202.39.152. 三个网段组成。
在hosts.deny文件中,我们定义禁止所有机器请求所有服务:
ALL:ALL
在hosts.allow文件中,我们定义只允许局域网访问ftp功能:
in.ftpd -l 每a: 202.39.154 202.39.153. 202.39.152.
这样,当非局域网的机器请求ftp服务时,就会被拒绝。而局域网的机器可以使用ftp服务。此外,应该定期检查/var/log目录下的纪录文件,发现对系统安全有威胁的登录事件。last命令可以有效的查看系统登录事件,发现问题所在。
最后tcpdchk是检查TCP_WAPPERS配置的程序。它检查TCP_WAPPERS的配置,并报告它可以发现的问题或潜在的问题。在所有的配置都完成了之后,请运行tcpdchk程序:
[root@deep]# tcpdchk
* /etc/services”文件
端口号和标准服务之间的对应关系在RFC 1700 “Assigned Numbers”中有详细的定义。“/etc/services”文件使得服务器和客户端的程序能够把服务的名字转成端口号,这张表在每一台主机上都存在,其文件名是“/etc/services”。只有“root”用户才有权限修改这个文件,而且在通常情况下这个文件是没有必要修改的,因为这个文件中已经包含了常用的服务所对应的端口号。为了提高安全性,我们可以给这个文件加上保护以避免没有经过授权的删除和改变。为了保护这个文件可以用下面的命令:
[root@deep]# chattr +i /etc/services
* /etc/securetty文件
“/etc/securetty”文件允许你规定“root”用户可以从那个TTY设备登录。登录程序(通常是“/bin/login”)需要读取“/etc/securetty”文件。它的格式是:列出来的tty设备都是允许登录的,注释掉或是在这个文件中不存在的都是不允许 oot登录的。
注释掉(在这一行的开头加上#号)所有你想不让root登录的tty设备。
编辑securetty文件(vi /etc/securetty)象下面一样,注释掉一些行:
tty1
#tty2
#tty3
#tty4
#tty5
#tty6
#tty7
#tty8
* 使Control-Alt-Delete关机键无效
把“/etc/inittab”文件中的一行注释掉可以禁止用Control-Alt-Delete关闭计算机。如果服务器不是放在一个安全的地方,这非常重要。
编辑inittab文件(vi /etc/inittab)把这一行:
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
改为:
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
用下面的命令使改变生效:
[root@deep]# /sbin/init q
* 改变“/etc/rc.d/init.d/”目录下的脚本文件的访问许可
/etc/rc.d/init.d/下的脚本主要包含了启动服务的脚本程序。一般用户没有什么必要知道脚本文件的内容。所以应该改变这些脚本文件的权限。
[root@deep]# chmod -R 700 /etc/rc.d/init.d/*
这样只有root可以读、写和执行这个目录下的脚本。
* /etc/rc.d/rc.local文件
在默认情况下,当登录装有Linux系统的计算机时,系统会告诉你Linux发行版的名字、版本号、内核版本和服务器名称。这泄露了太多的系统信息。最好只显示一个“Login:”的提示信息。
第一步
编辑“/ect/rc.d/rc.local”文件,在下面这些行的前面加上“#”:
--
# This will overwrite /etc/issue at every boot. So, make any changes you
# want to make to /etc/issue here or you will lose them when you reboot.
#echo "" > /etc/issue
#echo "$R" >> /etc/issue
#echo "Kernel $(uname -r) on $a $(uname -m)" >> /etc/issue
#
#cp -f /etc/issue /etc/issue.net
#echo >> /etc/issue
--
第二步
删除“/etc”目录下的“issue.net”和“issue”文件:
[root@deep]# rm -f /etc/issue
[root@deep]# rm -f /etc/issue.net
注意:“/etc/issue.net”文件是用户从网络登录计算机时(例如:telnet 、SSH),看到的登录提示。同样在“”目录下还有一个“issue”文件,是用户从本地登录时看到的提示。这 两个文件都是文本文件,可以根据需要改变。但是,如果想删掉这两个文件,必须向上面介绍的那样把 “/etc/rc.d/rc.local”脚本中的那些行注释掉,否则每次重新启动的时候,系统又会重新创建这两个文件。
忘记在哪里取得的,躺在电脑好一段时间了.
分享给大家.....
Linux系统各档、目录介绍
一、简介:
Linux作业系统中,以档来表示所有的逻辑实体与非逻辑实体。逻辑实体系指档与目录; 非逻辑实体则泛指硬碟、终端机、印表机等。
一般而言,Linux档案名称的组成除由连续字母、标点符号、数位等构成外,中间不能有空白字元、路径名称符号 / 或 # * % & {} [] ……..等与Shell有关的特殊字元。
Linux档系统中,结构上以root file system 位元最上位也最为重要,所谓root file system乃于开机时将root partition挂载在 / 的目录,若无法mount / 则开机时无法进入Linux系统中此时仅能remount / 的目录。该目录下有/etc、/dev、/boot、/home、/lib、/lost+found、/mnt、/opt、/proc、/root、/bin、/sbin、/tmp、/var、/usr等重要目录,以下兹分别介绍之。
二、目录与档简介
1./etc:本目录下存放着许多系统所需的重要设定与管理文件,有一些为纯档名,有些是以.conf的型态出现另亦有一些自成单一目录:当然亦有些设定档并非放在/etc目录下,例如使用者家目录之.bashrc、.bash_profile等文件;通常祇要更动过/etc目录下之设定档内容必须重新启动设定档使设定生效,且一般亦无须重开机。以下谨胪列主要档如后:
(1) HOSTNAME
本档内容仅记载主机+网功能变数名称称,在系统提示符号下输入hostname可以显示HOSTNAME之档内容。如:
www.webrj.com、
www.webrj.net、
www.e0797.com、
www.ok138.com等。
(2) XF86Config
本档内容为X Window System的主要设定档,Caldera的版本放在/etc目录下,RedHat版本则放在/etc/X11目录下,有关显示卡、滑鼠、键盘均可在此加以设定。
(3) aliases
本档内容用来设定邮件别名及邮件清单可以让特定的位址转寄给不同的使用者或群组;编辑完/etc/aliases后须下newaliases指令使之生效,对于由远端寄送至local端的邮件具有备份功能,为mail server重要的设定档之一。
(4) amd.conf
本档为一常驻服务程式(daemon),全名为automatically mount file system,Caldera的版本称为am.d;是一个能自动mount和umount cdrom和floppy的档系统。
(5) at.deny
本档为对能否使用at指令的使用者加以限制, at 是一个非常有用的工具,可以让使用者指定在特定时刻执行某个程式或指令,通常只执行一次。如果你想定时定期的执行某项工作,应该使用cron工具而非at。
(6) crontab
本档可让系统定时执行排程工作为系统管理上极为重要之档,Cron是一个常驻程式 (daemon),在开机时启动cron的daemon时,它会自动去检查/var/spool/cron 目录下面看看是否有任何cron档。每一个user的可以去设定自己所要排定执行的工作。在这一个目录底下,每一个user会有一个属于他loginid名称的cron档,crond会自动将这些user的cron档载入至记忆体中,并定期去执行每个user的cron档。另外,crond也会去读取 /etc/crontab 的内容。
这是属于系统的cron工作设定档,主要系统会定期去执行 /etc/cron.d/ 目录下面四个cron.daily、cron.hourly、cron.weekly、cron.monthly目录下(RedHat版本则集中放在/etc目录下)的命令。
(7) dhcpd.conf
本档为DHCP Server的设定档,可烤贝/usr/doc/dhcp-serial number目录下的dhcpd.conf.sample至/etc目录下,该档内容一般有记载着subnet、netmask、routers、domain-name、default-lease-time、max-lease-time及 IP range;亦可一并指派固定IP给特定主机。
(8) dosemu.conf
本档为Dos模拟器的设定档可以在Linux上仿真Dos环境,用Dos 指令。
(9) dumpdate
dump指令可对Linux ext2档系统进行检查备份(例如dumpe2fs /etc 对/etc目录作备份),dumpdate则是存放dump指令的执行日期。
(10) exports
本档为NFS(Network File System)设定档,NFS主要是运用在UNIX 系统上,用来使UNIX系统能够在几部电脑间做档的分享。其功能类似windows的网路磁碟机,可以mount的方式,分享其他linux或UNIX主机的目录或档。exports档内则分别记载着分享目录、分享物件及许可权等专案。
(11) fdprm
本档为软碟机参数表,含有各大小格式磁区磁轨等资料。
(12) fstab
本档包含了开机时需载入的档系统,每一行都表示一个档系统,各栏位分别有特定的装置或远端的档系统、挂载点、载入的档型态、挂载选项、dump设定及fsck设定。此档可供Linux于开机时载入到系统上,并于关机时卸载。
(13) ftp*
以ftp开头的档如ftpaccess(主要设定档)、ftpconversions(档的相关压缩规定)、ftpgroups、ftphosts、ftpusers(分别为ftp群组、主机、使用者拒绝存取设定)等均为ftp server相关的设定档。
(14) group 本档为群组的资料档,可以使每个使用者均拥有自己的群组;一般而言新的使用者建立后的的同时会产生相同于使用者名称的群组名称(RedHat Distribution)(Caldera Distribution 则会随adduser 或useradd 指令的不同而会纳入users群组或相同于使用者名称的群组名称);在GNOME环境中可用LinuxConf设定,在KDE环境中可用User Manger加以设定之。
(15) host*
在/etc目录下以host开头的档有host.conf、hosts、hosts.allow、host.deny等目录,兹分述如下:
host.conf
本档设定网路搜寻顺序系依hosts或DNS之先后顺序定之;同时亦可一并设定是否将多重IP指定给一台主机与否。
hosts
本档设定主机的IP及网功能变数名称称,利用此档可加速特定主机的搜寻速度无须借助DNS之功能,早期未有DNS前即是依赖hosts档作名称查寻。
hosts.allow
本档记载着允许那些主机联机到你的主机,在系统安全上为Tcpwrapper机制的存取控制档。通常是维护主机安全或作测试用。
hosts.deny
本档记载着拒绝那些主机联机到你的主机,在系统安全上为Tcpwrapper机制的存取控制档。通常是维护主机安全或作测试用。一般而言,常与hosts.allow档原则上先deny ALL 再设定allow,被allow同意的存取便不会再被deny否决。
(16) httpd
本目录下置放有conf目录、log 及module等档其中尤以conf目录下的httpd.conf(主要设定档) 、access.conf(网页目录及资料来源路径档)、srm.conf(设定apache的存取控制档),目前Apache 1.3.9以后版本已整合成httpd.conf加以设定即可;/etc/httpd为Apache Server重要目录所在。
(17) inetd.conf
通常当系统启动时,有部份的service是并没有在开机时被启动的,以节省系统资源。他们是利用inetd( internet daemon)--来监控网路服务的要求,再启动适当的daemon。inetd 是用来监控各种service的daemon,依不同的port提供不同的监控。/etc/inetd.conf即为其设定档,并由tcpd来提供监控。例如将telnet加上#,系统便不提供telnet的服务。
本档最常与Tcpwrapper机制的存取控制档hosts.allow及 hosts.denyx配负责网路安全的监控;举ftp为例,当inetd接收到使用ftp的请求时,便会启动tcpd,tcpd先纪录这项ftp的请求,然后检查hosts.allow、host.deny这二个存取设定控制档,如果同意存取,就会启动。另外,Tcpwapper只能影响inetd启动,并且在inetd.conf里面经过编辑,由tcpd呼叫的服务,所以并不能为其他服务提供安全保障(如sendmail、NFS等)。管理者可以看log档知道系统是否有被别人侵入。
(18) inittab
一般Linux系统启动时,LILO 执行后载入kernel,kernel启动后呼init program(/sbin/init)启动系统必备程式,init为parent process(呼叫后fork 许多child process),接着便检视/etc/inittab,视/etc/inittab以runlevel? 启动再执行/etc/rc.d/rc.?d/下所有s开头之shell script,直到完成(ex.s10network ; s40cron)是以inittab档乃在规范使用者要以那一种runlevel登入Linux系统,我们亦可直接在系统提示符号下输入init 或 telinit 后加上欲登入之第几层runlevel,例如init 3 或telinit 5,即可进入该环境模式。
(19) isapnp.gone
本档包含ISA介面卡所使用的资源,可用来设定硬体所需的记忆体、I/O Base、IRQ及DMA。
(20) issue(net)
本档是记载使用者在登入本机时所出现的一段文字讯息,例如“Red Hat Linux release 6.2 (Zoot) + CLE V0.9P1 (Yami) Kernel 2.2.17-4CLE on an i586”而issue.net则用于远端登入时之文字讯息显示之用。issue档可加以修改成你需要出现的内容, 但需同时将/etc/rc.d/rc.local档中“echo “” > /etc/issue至echo >> /etc/issue”等几行加上批注起来,始能生效。
(21) ldso.conf
本档存放了系统中共用函式库(shared libraries)的路径;Linux提供了两种形式函式库:shared及static,而Unix只提供shared libraries。当程式被编译时,程式便会去连结该程式所需用到的函式库。有时候程式为了便于侦错,或是为了某些考量,我们不希望程式去使用共用函式库,而是把会用到的程式库全部连结进程式的执行档,让程式本身拥有一份函式库中函式的副本,这种方式称为静态连结程式(static linked),而依赖共用函式库所建立的程式称动态连结程式(Dynamically Linked)。系统安装了library后,必须告诉程式library放置于何处,使用共用函式库的好处是免除不同的程式里重复使用静态函数库(static libraries),与其在每个呼叫这些函式的程式里都储存一份copy,不如把函式库集中在系统的档里,让执行的程式都可以读到这个程式。
当编辑完ldso.conf档增加新的函式库或新安装某个套件之后(可能会安装某个新的共用函式库),后须下ldconfig -v,使之生效。
(22) lilo.conf
lilo即linux loader,本文件lilo.conf内容可以分为两部分: Global及per-image,负责指定开机时所使用的kernel及开机时所要读取的lilo是放在哪一个装置,另亦有设定多重开机功能,使多个作业系统并存;如果对本档进行修改,须下lilo –v –v –v 的指令重改设定由于lilo并非为一Daemon,仅为一内部程式,通常须重开机后设定始能生效。
(23) mediaprm
本档用来定义磁碟机位于Linux下的代号ex. /dev/fd0、/dev/cdrom
(24) modules.conf
本档为模组的主要设定档,在Red Hat 版本之名称命名为conf.modules ,Modules一般来说大部分为一些装置、网路、档系统等的驱动程式,传统上,驱动程式是核心的一部份,因为几乎所有的核心都需要藉由成为核心码的一部份来取得使用硬体的能力,至于模组化程式则是一种可载入之式驱动程式(Loadable
device driver),在系统执行时是直接由载入记忆体或从记忆体卸载;而使用module的方式,可以不用重新建立kernel,同时也可以节省时间及记忆体空间。
(25) motd
本档为系统显示与user的提示讯息提示的时机则在user login并输入帐号及密码后出现之讯息,例如:“Last login: Mon Dec 18 10:19:15 on tty1”。
(26) mtab
本档记载着已挂载(mount)的档系统,当你下mount指令时所显现之内容与mtab内容常相一致。
(27) ntp.conf
NTP全名为Network Time Protocol(网路对时协定),系client端针对NTP Server作同步化对时所使用之协定,为达到NTP同步化获致正确而可信赖时间。ntp.conf则为主要设定档提供模式的选择和使用的servers设定。
(28) pam.d
PAM(Pluggable Authentication Modules)即可插拔的认证模组;当login时,必需提供username和password,然后系统根据所给予的username和password来验证可否login,确认使用者身份,PAM允许设置多种认证方式,不须再重新编译核心要进行认证的程式。使用PAM,可编辑配置档动态的去读取配置模组,然后再去执行验证;pam.d目录下则放置与PAM相关的档。
(29) passwd
每一位使用者皆有使用者名称供以辨识身份,亦必须一并设定密码在/etc/passwd档中可以root身份来加入新的使用者,通常user输入username及密码,系统会先将输入之密码加密成13位元码,再与 / etc / passwd作一比对,无误与否。至于实际的密码则放在/etc/shadow档中。
(30) protocols
通讯协定号码是IP资料段表头中的一个位元组,藉以显示出资料应该传给IP层以上的何种协议;至于协定号码则规范在本档中,protocols内容是一个对照表,包含协定名称及协定号码和批注等栏项,利用协定号码与协定名称的对照便可知使用何种协定。
(31) rc.d
本目录下以etc/rc.d/rc0.d ~ /etc/rc.d/rc6.d里的档代表各种不同runlevel所启动的daemon尤为重要,K代表kill,S代表start。在渠等目录下的档通常为一连结档link至/etc/rc.d/init.d 里的daemon以供启动。/etc/inittab档乃在规范使用者要以那一种runlevel登入Linux系统,至于本档案则视以runlevel? 登入,代表启动rc?.d目录下依序启动各连结档的shell script(/etc/rc.d/init.d 里的daemon)。
(32) resolv.conf
BIND的伺服端透过daemon(/etc/rc.d/init.d/named)来执行;BIND的用户端则透过resolver,它是一个程式函式库组成,会发出名称查询,而由/etc/resolv.conf设定之(即将nameserver加入该文件中),例如echo “
nameserver 172.17.0.10” >> /etc/resolv.conf 或者手动vi编辑之。
(33) rpc
rpc全名为remote procedure call即远端程式呼叫,通常系指local 端程式对位于远端系统中的程式进行呼叫,俟其完成任务并将该任务传回给local端;/etc/rpc档记忆体rpc程式号码资料库,含有使用者可识别之替代rpc程式号码的名称基本格式则含有rpc程式的server名称、rpc程式号码、别名等记载栏项。
(34) samba.d/smb.conf:
Samba(Server Message Block protocol)使用来将linux system与windows system透过网路上的芳邻作沟通整合之用,而/etc/samba.d/smb.conf 则为samba的重要设定档,该档中主要分global与share defini tions二大项;/etc/samba.d/ smbpasswd则是samba password的设定档。
(35) securetty
本档定义了root可login的terminal,一般而言预设为tty1至tty8,root只能从定义中的terminal登入。
(36) sendmail.cf
本文件为mail server的重要设定档,sendmial是一种MTA,目前在unix或linux上使用相当广泛,由柏克莱大学大学生所写的程式,功能强大,但sendmail.cf内容由巨集指令写成较为艰涩难懂,因此一般除伪装名称、主机的别名、收信的主机位置名称等少数专案由sendmail.cf档直接于其中设定外,一般而言,均另用m4产生sendmail.cf的巨集定义档,RedHat版本名称为/etc/sendmail.mc ,OpenLinux版本则放在/usr/share/sendmail/cf/cf/gerneric-col2.2.mc;此外/etc/aliases、/etc/access、/etc/mail/relay-domains亦为sendmail的相关设定档。
(37) services
一般而言Linux或Unix的作业系统port号码常定义在/etc/services档中由port号码可辨示出application process(应用程式列程)即网路服务例如ftp、telnet;在services档中256以下port号码保留给常用的网路服务,256到1024的port号码则由特定的Linux服务使用,另不同的Transport Layer(传输层)可以共用相同的port号码;port号码必须与协议号码共同x配始能将资料导引到正确的网路服务。
(38) shadow
Shadow passwording将密码移到另一个档,本档即属密码档而与/etc/passwdx配;许可权上则较为严格,一般而言,仅有root有读写(Caldera distribution)或读(RedHat distribution)的权利。
(39) skel
本目录下之档内容例如:.bash_logout、.bash_profile、.bashrc、.kde、.kderc、.netscape、.screenrc、Destop等即是用来在建立一新的使用者时在/home/目录下的使用者名称目录的内容即烤贝至skel此目录下之档内容。
(40) sysconfig/network-sccripts/ifcfg-eth?
本档为网路卡的设定档内容有设备名称、IP位址、遮罩、广播地址、网段、开机启动设定等项目。
(41) wgetrc
wget乃使用来将World wide web上之档取回之工具指令,wgetrc档则是wget初始化的档其中有quota、mail header、重传档的预设次数、firewall及proxy的相关设定。
(42) z*
以下z开头的档均为zshell相关的设定档zlogin系指z shell的登入设定;zlogout系指z shell的注销设定;zprofile系指z shell的使用者设定;zshenv系指z shell的使用环境设定;zshrc系指z shell的资源档设定。
2./dev:
本目录中存放了device file(装置档),使用者可以经由核心用来存取系统中之硬体设备,当使用装置档时 核心会辨识出I/O Request传递到相对应装置的驱动程式以便完成特定的动作;每个装置在/dev目录下均有一个相对应的项目;另/dev目录下尚有一些专案是没有的装置这通常是安装系统时所建立的,它不一定对应到实体的硬体装置;此外亦有一些虚拟的装置,不对应到任何实体装置,例如俗称黑洞装置的/dev/null,任何写入该档的请求均会被执行但被写入的资料均会如进入黑洞般的消失无踪。
在/dev目录下第一栏的档型态会发现常存有既非directory亦非file而是“b”或”c”,”b”指block device file(区块装置档),”c”指character device(字元装置档);区块装置(例如硬碟)通常是外接装置,资料的读写都是以整个区块的形式进行读写,字元装置(例如序列埠),资料的读写都是以一个byte来进行读写。
(1) /dev/fd*
fd0、fd1--------等指第几个软碟支援的装置驱动介面,fd0表示第一个fd1表示第二个。
(2) /dev/hd
系指IDE硬碟的装置驱动介面,在/dev/lilo.conf设定中boot=/dev/hda即指整颗硬碟,/dev/hda1则指硬碟中的第一个partition。
(3) /dev/sd
系指SCSI磁片的装置驱动介面。
(4) /dev/console
系指系统的操作控制台乃实际连接到Linux作业系统的荧幕。
(5) /dev/tty
系指提供使用者不同的terminal操作控制台的装置驱动介面,并有virtual console的功能切换上可使用ctrl+alt+F1~F6。
(6) /dev/ttyS?
ttyS系指序列埠介面ttyS0即为COM1,ttyS1即为COM2
3./boot:
本目录下放置有系统启动的相关档例如initrd.img、vmlinuz、System.map,均为重要的档,是以本目录不可任意删除。
initrd.img为系统启动时最先载入的档。
Vmlinuz即为kernel的image文件。
System.map包括了kernel的功能及位置。top、ps指令会去读此档来显示系统目前的资讯状态。因此System.map必须对应到相同的kernel,不然会显示错误的资讯。
4./home:
一般而言,使用者的家目录就($HOME)是放在/home这个目录下,而以使用者名称作为/home目录下各个目录的名称例如使用者col的家目录路径即为/home/col目录下当使用者col login时,其所在的目录即为/home/col,此外ftp站台目录(ftp)及web站台目录(httpd)亦置于/home目录下。
5./lib:
许多系统启动时所需要用到重要的共用函式库shared libraries均放于此,包含最重要的GNU C library在内,凡档名为library.so.version的共用函式库,通常放在/lib目录下。
/usr/lib/:
本目录与/lib目录不同的是/lib乃系统启动时所需要用到重要的共用函式库而/usr/lib乃关于应用软体常置放函式库之处;例如放置一些其他应用程式(如Netscape、X server)等的share libraries。其中,最重要的函式库为libc或glibc (glibc 2.x便是libc 6.x版本,标准C语言函式库)。几乎所有程式都会用到libc或glibc,因为这两个程式提供了对于Linux kernel的标准介面。又档名为library.a的静态函式库,通常亦放在/usr/lib目录下。
6./lost+found:
一般重启或关闭system,可下sync;sync.避免有些message会留在硬碟之cache上,此时dirty bit为1,当再开机时,system会去检查每一个dirtybit是否为0,如果为1则会执行fsck。作fsck时,常会问要否删除dirtybit,如选yes时,会把inode集中放在lost+foundR用file 指令去查寻,不重要再行删除即可(inode number)。简单言之,本目录乃记录硬碟上的partition于资料流失时作fsck寻找回来的遗失文件片段。
7./mnt:
本目录为系统内定的mount point(挂载点),预设则有/nnt/cdrom和/mnt/floppy,使用自动的挂载程式例如KDE桌面上的cdrom与floppy或者GNOME的Drive Mount Applet,均会自动地把光碟机和软碟机挂载至这二个目录。如果要挂载入额外的档系统,一般而言我们都会将/mnt目录当作挂载点,然后在该目录下建立任一目录名称作为挂载目录;家目录把同一颗硬碟上的另一个Window 2000作业系统mount到本机Linux作业系统上则可用此法。
8./proc:
本目录为一个虚拟的档系统,其功能乃在统一档与行程,它不占用任何硬碟空间,因为该目录下的档均放置于记忆体内;每当你存取/proc档系统时kernel会拦截你的存取动作撷取相关资讯再动态的产生目录与档内容。
本目录下主要有二大形态的档;其一是以PID数位为档案名,/proc会记录系统每个行程,有助于系统的管理于与除错;其二乃kernel所搜集到的系统使用的硬体资讯例如/proc/ioports、/proc/dma、/proc/meminfo、/proc/interrupts均属之。
9./root:
本目录为系统管理者 root的家目录。
10./bin:
bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等。
/usr/bin:
主要放置一些应用软体工具的必备执行档例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、newaliases、nslookup passwd、quota、smb*、wget等。
/sbin:
主要放置一些系统管理的必备程式例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、runlevel、shutdown等。
/usr/sbin:
放置一些网路管理的必备程式例如:dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等。
11./tmp:
本目录乃供全体使用者暂时放档的目录,有时某些应用程式执行中产生的暂存档案亦会暂放至此目录;然而系统预设本目录许可权为可读、写、执行但无法删除之1777(drwxrwxrwt)亦即多加上save program text on swap device即t 的许可权;以避免有人任意删除他人存放于/tmp目录的档。
12./var:
Linux作业系统经常需要变动的或暂存的资料常放在固定的目录而后系统新产生的资料都会在这