360 likes | 546 Views
了解 Linux 系统服务. xsb00245@phys.nankai.edu.cn. Daemon. 本文的结构. 守护进程以及工作原理 超级服务器 inetd 以及配置 D.O.S. 与进程崩溃 网络文件系统 Web 服务系统 FTP 服务系统 E - mail 服务系统 其他服务举例. 守护进程. Linux 系统上提供的网络服务都是由运行于后台的守护进程来执行。 一个系统一般在后台同时存在好几个守护进程。 由于此类进程对前台的用户来说是透明的,不加干预情况下不会自动停止,有如系统服务的守护天使一般,称为守护进程。. 守护进程工作原理.
E N D
了解Linux系统服务 xsb00245@phys.nankai.edu.cn
本文的结构 • 守护进程以及工作原理 • 超级服务器inetd以及配置 • D.O.S.与进程崩溃 • 网络文件系统 • Web服务系统 • FTP服务系统 • E-mail服务系统 • 其他服务举例
守护进程 • Linux系统上提供的网络服务都是由运行于后台的守护进程来执行。 • 一个系统一般在后台同时存在好几个守护进程。 • 由于此类进程对前台的用户来说是透明的,不加干预情况下不会自动停止,有如系统服务的守护天使一般,称为守护进程。
守护进程工作原理 • 客户/服务器网络模型的网络程序连接方式是通过TCP端口之间连接实现的。服务器侦听(Listen)某个端口等待客户连接。连接成功后客户机和服务器才开始通信。 • 守护程序的工作就是打开一个端口,并在该端口上等待连接请求。如果接受到客户端的连接请求,它就创建一个子进程来接受该连接。而父进程继续侦听端口。 • 常见网络应用端口: • ftp-data: 20/ tcp|udp ftp: 21/ tcp|udp • ssh: 22/ tcp|udp telnet: 23/ tcp|udp
网络守护进程程序inetd ——超级服务器 • 几乎所有的类Unix系统都运行一个超级服务器,它为许多服务创建套接字(socket),并用select系统调用同时监听所有端口。当远程系统连接服务器时,超级服务器接受请求,并调用该端口的服务程序。 • 常用超级服务器有inetd(Internet Daemon),该程序在系统启动时被激活,并读取配置文件:/etc/inetd.conf。 • inetd除了调用系统其他服务外,还处理一些内部服务(Internal Services),包括chargen(产生字符串)和daytime(返回系统日期时间)等。 • inetd提供的具体服务由/etc/services指出。
/etc/services #-------------------------------------------------------------- # Network Services, Internet Style #-------------------------------------------------------------- daytime 13/tcp daytime 13/udp qotd 17/tcp chargen 19/tcp chargen 19/udp ftp-data 20/tcp ftp-data 20/udp ftp 21/tcp ftp 21/udp ssh 22/tcp ssh 22/udp nameserver 42/tcp
inetd接到服务请求后,将根据/etc/inetd.conf文件 • 调用服务程序。该文件行形式如下: • services type protocol wait user server cmdline • services是服务名称,通过/etc/services文件限定。 • type为套接字,对tcp服务为stream,对udp为dgram。 • protocol为协议,通过/etc/protocol限定。 • wait字段可以为wait或者nowait,wait只能用于dgram。 • user 为登陆用户。 • server 给出执行服务器程序的路径名。 • cmdline 传给服务器程序的命令行。
#/etc/inetd.conf echo stream tcp nowait root internal echo 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 # #Standard Services bellow # ftp stream tcp nowait root in.ftpd -l -a #ftp stream tcp nowait root wu.ftpd -l -I –a telnet stream tcp nowait root in. telnetd TIP:如果想终止某项服务,在服务前加“#”。
Inetd的缺点 • 如对服务量大的HTTP和FTP服务用 inetd • 启动将影响其他服务的运行和对请求服务的响应。 • 系统服务也可以独立启动,如在/etc/rc.d/rc.local文件中加入服务器命令。
Dos • Linux服务最经常遇到的问题: Dos(Deny of Services) • 守护进程受到不正常连接而不能提供正常服务的现象称为拒绝服务,Dos。如一个socket程序以发非常快的速度不断连接系统的telnet端口,inetd将处于安全性考虑停止该服务十分钟。 • 另外一类Dos跟服务客户端连接数量有关,如 HTTP服务访问量超过服务器所支持,httpd将拒绝服务。 • 引起Dos的因素很多,以inetd服务为例,避免日常Dos的维护文件有/etc/hosts.allow跟 /etc/hosts.deny。
#/etc/hosts.deny ALL: localhost ALL: .edu.cn ALL: 166.111. ALL: 211.26. ALL: 162.105. ALL: 202.113. ALL: 202.96. In.telnetd: 127. In.ftp: 202.115. ALL: 202.116 #End OF host.deny /etc/hosts.allow的文件格式跟hosts.deny一样,hosts.allow先 与hosts.deny检查。 两文件所指服务由inetd文件指定。
进程崩溃 • 进程崩溃由程序异常或者系统环境引起,如内存过于紧张时守护进程无法运行导致整个系统崩溃。此种情况最好的解决办法是什么?? • 对于单独的服务进程,可以将启动进程的命令方式写入/etc/inittab文件,当进程异常退出的时候,操作系统会自动重新启动进程。
网络文件系统 • 网络文件系统是计算机间共享信息的一种发式,只是使用者感觉不到自己在操作远程不同系统上的文件。只要有两个,即NFS与samba。 • NFS(Network File System),该系统由Sun Microsystem公司研发,它能使不同操作系统,不同体系结构的计算机之间共享系统文件。 • NFS两个重要概念:放置被其他计算机安装的文件系统的计算机称为服务器,安装其他计算机文件系统的计算机即为客户端。服务器的文件系统被其他计算机安装,又称为文件系统输出。
NFS如何工作 XDP RPC RPC数据传送模式 • NFS建立在XDR/RPC协议上 • XDP: eXternal Data Representation(外部数据表示) • RPC: Remote Procedure Calls(远端进程呼叫) • XDR把计算机数据转化成独立与计算机的外部标准格式。客户端发送RPC包给服务器请求服务。
NFS的守护进程 • inetd如前面所述。 • portmap的主要功能是将TCP/IP的端口号转换成RPC的程序进程号。 • nfsd依据用户端对文件系统的需求启动文件系统请求守护进程(file system request daemon)来应答客户端请求。 • mountd程序启动后,它会读取/etc/xtab文件,查看客户端正在安装本服务器的那个文件夹,并为其提供安装路径。 • 该进程可以用showmount命令查看。
安装网络文件系统 • 手工安装命令: mount [-t nfs] [-o specific-options] 文件系统 安装点 例:mount -t nfe –o timeo=40,rw senlocal:/home /home • 系统启动时自动安装: 在/etc/fstab文件中添加如下格式命令: 服务器文件系统 安装点 文件系统类型 选项 例如: senlocal:/home /home nfs timeo=40,rw
samba与windows系统共享资源 • 安装完samba后,在ined.conf文件内添加以下命令行: netbios-ssn stream tcp nowait root /usr/sbin/smbd netbios-ns dgram udp wait root /usr/sbin/nmbd • 在/etc/rc.d/ 目录下建立rc.samba文件: #rc.samba: Start the samba server if [ -x /usr/sbin/smbd –a –x /usr/sbin/nmbd ];then echo “Starting samba……” /usr/sbin/smbd –D /usr/sbin/nmbd –D fi #End of file • samba 的配置文件是:/etc/smb.conf .
使用Apache建立Web站点 • Apache原来意思为 A patchy Server,意思是对原先一个Wed服务器程序NCSA httpd做出的修补。现在Apache已经成为Internet上面使用最为广泛的Wed服务器程序。 • Apache的开发由世界各地的志愿者组成,他们被称为Apache group,现在应发展为Apache Software Foundation.
Apache 源代码的安装 tar –xzvf apache-1.3.11.tar.gz #cd apache-1.3.11 #./configure //编译前准备,生成makefile #make #make install • Apache 的默认安装路径为/usr/local/apache,可以在编译前准备时修改默认安装路径: ./configure --prefix=/www
Apache 的基本配置 • Apache的配置文件放在其安装目录的子目录conf/ 下,对于redhat一般在/etc/httpd/conf,而slackware则是/var/local/apache/conf . • Apache的配置文件一般有三个:http.conf、srm.conf、和access.conf。1.3.x以后的版本将配置信息都写入http.conf,保留srm.conf和access.conf,但是不写入信息。 • #http.conf 文件范本 ServerType standalone ServerRoot “/usr/local/apache” Port 80 User nobody Group nogroup
ServerAdmin admin@senlocal.phys.nankai.edu.cn ServerName senlocal.phys.nankai.edu.cn DocumentRoot “/usr/local/apache/htdocs” <Directory /> Options None AllowOverride None //make the .htaccess have no permit Order deny,allow Deny from all </Directory> <Directory “/usr/local/apache/htdocs”> Options FollowSymlinks MultiViews AllowOverride None Order allow,deny Allow from all </Directory> DirectoryIndex index.html index.htm //error ID. 403 #End of file----------
启动与停止Apache • 如果Apache随系统一起安装,启动时Apache将一起启动,脚本文件各个系统不同,redhat是/etc/rc.d/init.d/http.init,Slackware是/etc/rd.d/rc.httpd. • Apache的可执行文件名字为httpd,自行安装时一般放在安装目录下的bin或者sbin子目录,如/www/bin、/usr/local/Apache/bin等。要手工启动Apache,可与运行命令: • #/www/bin/httpd • 正常启动时可看到: • /www/bin/apachectl start: httpd started • 可以用Kill -9 强制停止Apache,先用ps –A|grep “http”查看所有http进程,找到为root用户所运行的httpd的进程ID,然后杀死进程。
FTP服务器 • FTP:File Transfer Protocol(文件传输协议) • 客户端向服务器发出连接请求时,首先请求服务器的FTP控制端口21,并告知服务器自己的端口号,服务器使用自己的文件传输端口20跟用户提供的端口建立连接。 • 授权访问与匿名访问 • 服务器一般分不同权限赋予不同用户,每个用户可以拥有不同的权限与密码。 • 匿名用户权限最小,一般只有read权限和/incoming目录的write权限。
FTP服务软件wu-ftpd • 简介:wu-ftpd是Wuarchive-ftpd的简称,目前Internet上最为流行的一个FTP服务程序,最初由美国Washington大学的Bryan D. O’Connor为Unix系统开发的,现在由其维护小组WU-FTP Development Group 继续开发维护。 • 特征: • 遵守GPL协议,源代码公开; • 支持平台丰富,包括绝大部分Unix和类Unix平台; • 由世界各地开发者协同维护和更新; • 非商业,历史悠久。 • 源代码获得: ftp://ftp.wu-ftpd.org/pub/wu-ftpd/ • 各个linux发布版本都有套件.
wu-ftpd的配置 #/etc/ftpaccess 范本 class all real,guest,anonymous, * //classify the user limit all 10 Any /etc/msgs/msg.dead readme README* login readme README* cwd= * message /welcome.msg login message .message cwd= * compress yes all tar yea all log commands real log transfers anonymous,real inbound,outbound anonymous-root /home/ftp shutdown /etc/shutmsg email root@senlocal.localhost
如果wu-ftpd守护进程由inetd进程来调用,则要在inetd.conf文件添加以下命令行:如果wu-ftpd守护进程由inetd进程来调用,则要在inetd.conf文件添加以下命令行: ftpstream tcp nowait root /usr/sbin/tcpd wu.ftpd –l –a //假设wu-ftpd安装在/usr/sbin目录下。参数“-l”表示每次客户端连接的信息都记录在syslog文件,参数“-a”表示wu-ftpd启动时读取/etc/ftpaccess配置文件,因为缺省情况下,wu-ftpd是不读取ftpaccess文件的。所以要特别加入。其他参数可用man ftpd读取。 • 基本配置完后,可以测试自己的ftp: #ftp senlocal 10.*.*.* FTP server(version wu-2.6.0(3) Sat May 8 10:05:04)ready Name(localhost:sen): 311 password reqired for sen: 230 User sen logged in. Romote system type is UNIX Using binary mode to transfer files
wu-ftpd附带工具简介: • ftpshut: 停止ftp服务。 • ftprestart: 重开ftp服务。 • ckconfig: 程序查漏。 • ftpcount: 显示登录人数。 • ftpwho: 显示所有用户当前状态。
架设电子邮件服务器 • 邮件在internet上的存储与转发是通过邮件传输代理(MTA:Mail Transfer Agent)来完成。比较有名的MTA有 sendmail与qmail等。 • 架设前准备: • 域名: • 例如物理院邮件服务器域名:phys.nankai.edu.cn • 服务器邮件要求: • 邮件服务器的帐户越多,系统负载越重,邮件服务器 • 一般要求大内存,大硬盘,大带宽,而对CPU没有特别要求。
通用邮件服务器sendmail • sendmail是Unix世界最为重要的MTA,同时也是最强大,配置最复杂的MTA。 O’ Reilly and Associates 出版的权威著作《sendmail》有1000页左右 流行说法:只有完全编辑过sendmail.cf文件的人才是一个真正的Unix系统管理员 • sendmail的主页是:http://www.sendmail.org 可以在该站下到最新的sendmail。 #tar –xzvf sendmail-8.9.3.tgz #cd sendmail-8.9.3/src #sh Build //sendmail 自带的编译工具,不必使用make #sh Build install 默认情况下,sendmail安装在/usr/sbin/ 目录下,自动生成的sendmail.cf 在/etc/sendmail.cf
M4工具生成sendmail.cf • 先进入sendmail-8.9.3./cf/cf/ 目录建立m4的配置文件,假设取名为linux.mc,在该文件中加入如下配置信息: #---- m4 config file ---------- OSTYPE(mklinux) FEATURE(nouucp) FEATURE(use_cw_file) define(‘STATUS_FILE’, ‘/etc/sendmail.st’) MAILER(local) MAILER(smtp) #---- End Of File -------------- #m4 ../m4/cf.m4 linux.mc > sendmail.cf #cp /etc/sendmail.cf > /etc/sendmail.cf.bak && cp sendmail.cf /etc
M4配置文件参数说明 • OSTYPE:指定系统类型。Sendmail为各种系统提供缺省的m4文件, linux系统的配置文件为linux.m4 • FEATURE:指定sendmail各个特性,如 • FEATURE(nouucp)指不支持uucp形式的邮件地址; • FEATURE(use_cw_file)表示在/etc/sendmail.cw文件中读取本机域名; • FEAYURE(local_promail)表示sendmail作为本机邮件传递程序。 • MAILER:指定支持的邮件传递服务类型,如 • MAILER(local)表示支持本机邮件投递; • MAILER(smtp)表示支持用SMTP协议投递邮件。 • defile:定义一些宏变量,如 • defile(‘STATUS_FILE’, ‘/etc/sendmail.st’)指定/etc/sendmail.st 作为sendmail的状态记录文件。该命令定义的宏变量可以用undefile撤销。
其他网络服务简介——防火墙 功能: • 所有交通网内外的数据包,都要通过它; • 只有符合防火墙上的系统本身不能受到影响。 • 防火墙一般由两部分组成:网关器和过滤器。过滤器是工作于网络层的一段程序,负责分析过滤流经防火墙的数据包。 • 网关器工作于传输层和应用层,决定数据包的传输方向。 • 系统管理员在防火墙主机上第一包过滤策略,防火墙将依照该策略工作。过滤策略一般包括:源IP地址,目的IP地址,源TCP/IP端口,目的TCP/IP端口,防火墙也是依据各个数据包的以上信息工作的。
其他网络服务简介——透明网关 • 工作原理与防火墙相似,配置透明网关的网关器需要一个合法IP,子网内用虚拟IP。所有流经透明网关的数据包将被改写信息头,内外交通数据包不被过滤掉。 • 可以选择ipchains制作 linux的防火前或者网关。
其他网络服务简介——代理服务器——共享IP • 代理服务器: • 包过滤器有选择的传送某一特定服务器,防火墙可以用软件实现HTTP和FTP这样服务的的代理访问。 • 一般用Squid。 • 共享IP • 网关器的内部网络配置成内部虚拟IP(192.168.1.X),网关器绑定一个配置成合法IP,可以共享外部网络。
谢谢收看 2004.5 PHYS SCHOOL of NKU sen@bbs.nankai.edu.cn