第二天(11月27日)
第二天的主要内容是搭建vsftpd服务器和postfix邮件服务器。
一、vsftpd服务器
1、FTP服务的一些基本概念
(1)FTP连接方式 控制连接:标准端口为21,用于发送FTP命令信息。 数据连接:标准端口为20,用于上传、下载数据。 (2)数据连接的建立类型 主动模式:服务端从20端口主动向客户端发起连接。 被动模式:服务端在指定范围内的某个端口被动等待客户端发起连接。 一般都采用被动模式。主动模式存在安全隐患,客户机很容易发起DdoS***。 (3)FTP传输模式 文本模式:ASCII模式,以文本序列传输数据。 二进制模式:Binary模式,以二进制序列(比特流)传输数据。 ASCII模式一般只用于纯文本文件传输,而Binary模式更适合传输程序、图片等文件。尤其是对于可执行文件,如果把可执行文件以文本模式传输,则下载下来的文件将无法正常使用。 在rhel6中默认采用二进制模式,在rhel6以前的版本中默认采用文本模式,为了提高可靠性,rhel6不再支持文本模式。 (4)FTP用户的类型 匿名用户:anonymous或ftp,这两个其实是同一个用户。 本地用户:帐号名称、密码等信息保存在passwd、shadow文件中。 虚拟用户:使用独立的帐号/密码数据文件。2、配置vsftpd服务
Linux中的ftp服务器程序使用的是vsftpd,名字中的vs是very secure的缩写,所以vsftpd的特点是其安全性和稳定性。其官方站点为:。 vsftpd的主程序:/usr/sbin/vsftpd,服务名:vsftpd。 默认主目录:/var/ftp/ 主配置文件:/etc/vsftpd/vsftpd.conf例1:允许匿名下载,限制用户登录。
配置ftp服务器,允许匿名用户下载。并且禁止192.168.0.0/24之外的客户端访问ftp服务。 操作步骤: 首先安装并启用vsftpd服务: # yum install vsftpd # service vsftpd start 在主目录的pub目录下创建一个测试文件: # touch /var/ftp/pub/test.txt 在配置文件/etc/vsftpd/vsftpd.conf中有这样一行: anonymous_enable=YES 表示允许匿名用户登录。 这样在客户机上就可以用匿名用户(anonymous或ftp)的身份访问服务器。 限制用户访问的功能是通过配置/etc/hosts.deny和/etc/hosts.allow这两个文件来实现的。 首先编辑/etc/hosts.deny文件: # vim /etc/hosts.deny vsftpd:All 在其中增加了一行“vsftpd:All”,表示禁止所有用户访问ftp服务。 然后修改/etc/hosts.allow文件: # vim /etc/hosts.allow vsftpd:192.168.0. “192.168.0.”即代表192.168.0.0/24网段,这里只能采用这种标准格式。 重启vsftpd生效: # service vsftpd restart例题2:配置ftp服务器,允许匿名用户上传
操作步骤: 匿名FTP的默认根目录为“/var/ftp”,这里设置子目录“/var/ftp/pub”用于上传,pub子目录的权限默认为755,属于root用户、root组,因此只需要将属主改为ftp,即可赋予匿名用户写入权限 # chown ftp /var/ftp/pub 修改配置文件/etc/vsftpd/vsftpd.conf,增加以下几行:“anon_upload_enable=YES”表示允许匿名用户上传。
“anon_mkdir_write_enable=YES”表示允许匿名用户创建目录。 “anon_umask=022”是一种反码形式,表示匿名用户创建的目录权限默认为755,文件的权限默认为644。 注意,此时如果执行命令“setenforce 0”将SELinux设为许可状态,即执行“getenforce”命令显示的SELinux状态为“Permissive”,那么匿名用户可以正常的上传。 但如果执行命令“setenforce 1”将SELinux启用,即执行“getenforce”命令显示的SELinux状态为“Enforcing”,那么匿名用户就无法上传。 而无论在生产环境还是在RHCE的考试环境中,SELinux都是必须要启用的。在启用SELinux的情况下要实现匿名上传,就必须修改SELinux的上下文和布尔值。不好意思的是,这里实在是没搞明白SELinux这些设置的含义,只能权且把命令记录下来,留待以后再慢慢理解吧。 修改上传目录的selinux上下文 # chcon -R –t public_content_rw_t /var/ftp/pub 启用selinux的布尔值 # setsebool –P allow_ftpd_anon_write on 修改完了SELinux之后,匿名用户就可以在ftp服务器启用SELinux的情况下实现匿名上传了。例3:修改SELinux的启动模式为enforcing
这是RHCE考试的第一道题目,其实Linux系统中SELinux的启动模式默认就是enforcing,只不过考试时会提前修改成别的模式,然后要考生再修改成enforcing,估计也是红帽为了体现出SELinux的重要性吧。 修改SELinux的启动模式需要修改配置文件:/etc/sysconfig/selinux # vim /etc/sysconfig/selinux SELINUX=enforcing 保存退出。 修改完成后必须要将系统重启生效。二、postfix邮件服务器
postfix是目前在Linux平台中使用最多的邮件服务器。 安装postfix服务(默认已经安装): [root@mail ~]# yum install postfix [root@mail ~]# service postfix restart [root@mail ~]# chkconfig postfix on [root@mail ~]# chkconfig --list postfix postfix 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 postfix的主要配置文件是:/etc/postfix/main.cf例1:用postfix实现本地邮件收发。
在postfix服务启动之后,就已经可以实现本地邮件收发了。下面以root用户的身份为系统中的mike用户发送一封邮件。 [root@server14 ~]# mail mike Subject: mail test 邮件标题 This is a test mail 邮件正文 . 以.结束 EOT 切换到mike用户来接收邮件: [root@server14 ~]# su - mike [mike@server14 ~]$ mail 执行mail命令来接收邮件 Heirloom Mail version 12.4 7/29/08. Type ? for help. "/var/spool/mail/mike": 1 message 1 new >N 1 root Mon Nov 12 07:50 18/615 "mail test" & 1 输入要查看的邮件的编号 Message 1: From Mon Nov 12 07:50:02 2012 Return-Path: <> X-Original-To: mike Delivered-To: Date: Mon, 12 Nov 2012 07:50:02 +0800 To: Subject: mail test User-Agent: Heirloom mailx 12.4 7/29/08 Content-Type: text/plain; charset=us-ascii From: (root) Status: RThis is a test mail
& quit 输入quit命令退出mail模式
操作结束。例2:为网络中的用户发送一封邮件。
经过前面的配置,此时的postfix仅限于本地收发邮件,可以查看一下smtp对应的25端口,只针对本地开放: [root@server14 ~]# netstat -an | grep :25 tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 127.0.0.1:25表示只能针对本地收发。要实现postfix向外发送邮件,需要修改配置文件/etc/postfix/main.cf。 修改第116行,从inet_interfaces = localhost修改成inet_interfaces=all,保存退出。 重启postfix服务: [root@server14 ~]# service postfix restart 再次查看25端口,已经在所有接口上开放: [root@server14 ~]# netstat -an | grep :25 tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 向另一台服务器中的用户发送邮件: [root@server14 ~]# mail Subject: hello This is from mail . EOT 在另外一台名为demo.example.com的服务器上以student用户登录,可以成功接收邮件。例3:设置邮件别名和邮件群发。
配置一个邮箱别名,将发送给admin用户的邮件由本地用户student接收。配置一个群发邮件地址,将发送给的邮件群发给用户、。 操作过程: 设置别名需要修改配置文件/etc/aliases。 vim /etc/aliases admin: student 设置别名(冒号:前面的是别名) xiaoshou: mike,harry 设置群发 保存退出。 设置完成后,需要执行newaliases命令生效。例4:在客户机收发邮件
postfix服务默认只具有smtp功能,即只能发邮件,如果要使客户机能够通过服务器收发邮件,必须在服务器上安装pop3和imap4服务。在RHEL6中提供了一个安全性较好的POP3/IMAP服务器软件Dovecot,首先需要安装该软件。 # yum install dovecot # service dovecot start # chkconfig dovecot on 此时postfix服务器上将会开放110(pop3)、143(imap4)端口。 修改dovecot的配置文件/etc/dovecot/dovecot.conf:最后的那一行如果设为login_trusted_networks = all,表示所有人都可以收邮件。
将devecot服务重启: # service dovecot restart 配置完成。在客户端的收发邮件过程不再叙述。