第二天(11月27日)
第二天的主要内容是搭建vsftpd服务器和postfix邮件服务器。
RHCE认证培训+考试七天实录 系列文章 http://www.linuxidc.com/search.aspx?where=nkey&keyword=15815
一、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的特点是其安全性和稳定性。其官方站点为:http://vsftpd.beasts.org/。
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 root@server14.localdomain Mon Nov 12 07:50:02 2012
Return-Path: <root@server14.localdomain>
X-Original-To: mike
Delivered-To: mike@server14.localdomain
Date: Mon, 12 Nov 2012 07:50:02 +0800
To: mike@server14.localdomain
Subject: mail test
User-Agent: Heirloom mailx 12.4 7/29/08
Content-Type: text/plain; charset=us-ascii
From: root@server14.localdomain (root)
Status: R
This is a test mail
& quit 输入quit命令退出mail模式
操作结束。
例2:为网络中的用户student@demo.example.com发送一封邮件。
经过前面的配置,此时的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 student@demo.example.com
Subject: hello
This is from root@server14.example.com mail
.
EOT
在另外一台名为demo.example.com的服务器上以student用户登录,可以成功接收邮件。
例3:设置邮件别名和邮件群发。
配置一个邮箱别名,将发送给admin用户的邮件由本地用户student接收。配置一个群发邮件地址,将发送给xiaoshou@server14.example.com的邮件群发给用户mike@server14.example.com、harry@server14.example.com。
操作过程:
设置别名需要修改配置文件/etc/aliases。
vim /etc/aliases
admin: student 设置别名(冒号:前面的是别名)
xiaoshou: mike,harry 设置群发
保存退出。
设置完成后,需要执行newaliases命令生效。
例4:在客户机收发邮件
postfix服务默认只具有smtp功能,即只能发邮件,如果要使客户机能够通过服务器收发邮件,必须在服务器上安装pop3和imap4服务。在RHEL6中提供了一个安全性较好的POP3/IMAP服务器软件Dovecot,首先需要安装该软件。 http://www.linuxidc.com
# 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
配置完成。在客户端的收发邮件过程不再叙述。