首页 > 代码库 > 马哥2016全新Linux+Python高端运维班-Linux服务 DNS,httpd,加密通讯,vsftp,NFS,samba服务练习

马哥2016全新Linux+Python高端运维班-Linux服务 DNS,httpd,加密通讯,vsftp,NFS,samba服务练习

本周作业内容:


1、详细描述一次加密通讯的过程,结合图示最佳。

一次加密通讯的过程:

首先Bob用单向加密的方法提取数据的特征码,用自己的私钥加密这段特征码,并附加到数据的后面。

Bob用对称加密算法把数据及特征码整个进行加密。

Bob用接收方的公钥加密对称密钥并附加到数据后面。


Alice用私钥解密对称密钥。

Alice用对称密钥解密出数据及加密的特征码。

Alice用发送方的公钥解密特征码,并用相同的算法算出数据的特征码,比较两个特征码是否一致,若一致即可获得Bob的数据。

如图所示:

技术分享

单向加密:只能加密,不能解密,提取数据指纹(特征码),来保证数据的完整性,单向加密的协议有MD5,SHA等


非对称加密:公钥和私钥成对出现,私钥必须本机器保存,用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然,数字签名是私钥加密特征码,实现对称秘钥交换


对称加密:加密和解密使用同样的秘钥,实现数据加密,产生对称秘钥。


2、描述创建私有CA的过程,以及为客户端发来的证书请求进行颁发证书。


(1) 创建所需要的文件

cd /etc/pki/CA
# touch index.txt
# echo 01 > serial
# 
# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)##生成私钥

(2) CA自签证书

# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem
-new: 生成新证书签署请求;
-x509: 专用于CA生成自签证书;
-key: 生成请求时用到的私钥文件;
-days n:证书的有效期限;
-out /PATH/TO/SOMECERTFILE: 证书的保存路径;

(3) 发证

(a) 用到证书的主机生成证书请求;

# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
# openssl req -new -key /etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr

(b) 把请求文件传输给CA;

scp ./httpd.csr root@192.168.137.30:/etc/pki/CA/certs/

(c) CA签署证书,并将证书发还给请求者;

# openssl ca -in /etc/pki/CA/certs/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
# cat index.txt serial
V171021154656Z01unknown/C=CN/ST=Beijing/O=Magedu/OU=ops/CN=www.magedu.com/emailAddress=webadmin@magedu.com

(d) ls /etc/pki/CA/certs ##到CA服务器上可以看到证书的httpd.crt

scp ./httpd.crt root@192.168.137.32:/etc/httpd/ssl/
ls /etc/httpd/ssl ##到服务端/etc/httpd/ssl目录下查看证书。


3、搭建一套DNS服务器,负责解析magedu.com域名(自行设定主机名及IP)


(1)、能够对一些主机名进行正向解析和逆向解析;


(2)、对子域cdn.magedu.com进行子域授权,子域负责解析对应子域中的主机名;


(3)、为了保证DNS服务系统的高可用性,请设计一套方案,并写出详细的实施过程


使用node2(192.168.137.32)主机配置正向反向解析

[root@node2 ~]# yum -y install bind
  常用的配置文件有:
  /etc/named.conf#主配置文件
  /etc/named.rfc1912.zones#区域配置文件
  /etc/rc.d/init.d/named#启动脚本
  /var/named#存放区域解析文件
  
[root@node2 ~]# vim /etc/named.conf 
options {
listen-on port 53 { any; }; ##表示监听本地IP的53端口,允许所用地址访问本地53端口;这行也可以注释掉,等同于any。
//listen-on-v6 port 53 { ::1; };
directory       "/var/named"; ##区域解析文件路径
dump-file       "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
//      allow-query     { any; }; ##允许所有地址查询,也可注释掉。
recursion yes;
##是否递归,如果是no那么这台DNS服务器将不会递归解析,yes或注释掉不写,表是允许,默认是允许的
//      dnssec-enable yes;
//      dnssec-validation yes;
/* Path to ISC DLV key */
//      bindkeys-file "/etc/named.iscdlv.key";
//      managed-keys-directory "/var/named/dynamic";
};
include "/etc/named.rfc1912.zones"; ##表示加载区域配置文件。

正向与反向区域配置

[root@node2 ~]# vim /etc/named.rfc1912.zones
文件末行添加:
zone "magedu.com" IN{
 type master;
 file "magedu.com.zone";
};
zone "137.168.192.in-addr.arpa" IN {
 type master;
 file "137.168.192.zone";
};


新建正向解析的zone文件

[root@node2 ~]# vim /var/named/magedu.com.zone
$TTL    86400
$ORIGIN     magedu.com.
@       IN      SOA     ns1.magedu.com. admin.magedu.com. (
2016092101
1H
5M
7D
1D )
IN      NS      ns1
IN      NS      ns2
IN      MX 10   mx1
IN      MX 20   mx2
ns1     IN      A       192.168.137.32
ns2     IN      A       192.168.137.33
mx1     IN      A       192.168.137.32
mx2     IN      A       192.168.137.33
www     IN      A       192.168.137.32
www     IN      A       192.168.137.33
ftp     IN      CNAME   www


新建反向解析zone文件

[root@node2 ~]# vim /var/named/137.168.192.zone
$TTL    86400
$ORIGIN     137.168.192.in-addr.arpa.
@       IN      SOA     ns1.magedu.com.     admin.magedu.com. (
2016092101
1H
5M
7D
1D )
IN      NS      ns1.magedu.com.
IN      NS      ns2.magedu.com.
32      IN      PTR     ns1.magedu.com.
33      IN      PTR     ns2.magedu.com.
34      IN      PTR     mx1.magedu.com.
35      IN      PTR     mx2.magedu.com.
32      IN      PTR     www.magedu.com.
33      IN      PTR     www.magedu.com.


检查语法错误,重启DNS服务

[root@node2 ~]# named-checkconf ##检查配置文件
[root@node2 ~]# named-checkzone "magedu.com" /var/named/magedu.com.zone ##检查区域解析文件
[root@node2 ~]# named-checkzone "137.168.192.in-addr.arpa." /var/named/137.168.192.zone
[root@node2 ~]# service named restart

正向解析测试:

[root@node2 ~]# dig -t A www.magedu.com @192.168.137.32 ##@192.168.137.32表示通过32这台主机解析,-t:指明type,A表示A记录。
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -t A www.magedu.com @192.168.137.32
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58146
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.magedu.com.INA
;; ANSWER SECTION: ##应答段
www.magedu.com.86400INA192.168.137.33
www.magedu.com.86400INA192.168.137.32
;; AUTHORITY SECTION: ##权威段
magedu.com.86400INNSns2.magedu.com.
magedu.com.86400INNSns1.magedu.com.
;; ADDITIONAL SECTION:
ns1.magedu.com.86400INA192.168.137.32
ns2.magedu.com.86400INA192.168.137.33
;; Query time: 0 msec
;; SERVER: 192.168.137.32#53(192.168.137.32) ##DNS服务器,以及解析的客户端。
;; WHEN: Sat Sep 24 11:34:14 2016
;; MSG SIZE  rcvd: 132


反向解析测试:

[root@node2 ~]# dig -x 192.168.137.32 @192.168.137.32 ##-x:表示反向解析
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -x 192.168.137.32 @192.168.137.32
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52944
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;32.137.168.192.in-addr.arpa.INPTR
;; ANSWER SECTION:
32.137.168.192.in-addr.arpa. 86400 INPTRwww.magedu.com.
32.137.168.192.in-addr.arpa. 86400 INPTRns1.magedu.com.
;; AUTHORITY SECTION:
137.168.192.in-addr.arpa. 86400INNSns1.magedu.com.
137.168.192.in-addr.arpa. 86400INNSns2.magedu.com.
;; ADDITIONAL SECTION:
ns1.magedu.com.86400INA192.168.137.32
ns2.magedu.com.86400INA192.168.137.33
;; Query time: 0 msec
;; SERVER: 192.168.137.32#53(192.168.137.32)
;; WHEN: Sat Sep 24 11:41:13 2016
;; MSG SIZE  rcvd: 155

主从同步:

##从DNS服务器主配置和node2(192.168.137.33)相同
[root@node3 ~]# vim /etc/named.rfc1912.zones
zone "magedu.com" IN {
 type slave;
 masters { 192.168.137.32; }; ##指定主DNS服务器为32(node2)
 file "slaves/magedu.com.zone";
 allow-transfer { none; };
};
zone "137.168.192.in-addr.arpa" IN {
 type slave;
 masters { 192.168.137.32; };
 file "slaves/137.168.192.zone";
 allow-transfer { none; };
};

重启或reload 从DNS服务器

[root@node3 ~]# service named reload | restart
服务启动后,会在/var/named/slaves/自动添加magedu.com.zone和137.168.192.zone文件
[root@node3 ~]# ls /var/named/slaves/
137.168.192.zone  magedu.com.zone

测试从DNS服务器

[root@node3 ~]# dig -t A www.magedu.com @192.168.137.33
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -t A www.magedu.com @192.168.137.33
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8634
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.magedu.com.INA
;; ANSWER SECTION:
www.magedu.com.86400INA192.168.137.33
www.magedu.com.86400INA192.168.137.32
;; AUTHORITY SECTION:
magedu.com.86400INNSns2.magedu.com.
magedu.com.86400INNSns1.magedu.com.
;; ADDITIONAL SECTION:
ns1.magedu.com.86400INA192.168.137.32
ns2.magedu.com.86400INA192.168.137.33
;; Query time: 0 msec
;; SERVER: 192.168.137.33#53(192.168.137.33)
;; WHEN: Mon Oct 24 22:49:53 2016
;; MSG SIZE  rcvd: 132


子域授权

##重新配置一台主机:liu,IP:192.168.137.30
在父域区域解析文件中添加
[root@node2 ~]# vim /var/named/magedu.com.zone
liu     IN      NS      ns1.liu.magedu.com.
ns1.liu IN      A       192.168.137.30
同样方式安装bind配置主配置文件
在区域配置文件末行添加:
[root@liu ~]# vim /etc/named.rfc1912.zones
zone "liu.magedu.com" IN {
type master;
file "liu.magedu.com.zone";
};
zone "magedu.com" IN {
type forward;
forward only; ##区域转发
forwarders { 192.168.137.32; }; ##尽转发32这台主机
};

新建区域解析库文件:

[root@liu ~]# vim /var/named/liu.magedu.com.zone
$TTL    86400
@       IN      SOA     ns.liu.magedu.com.  admin.liu.magedu.com. (
2016092201
2H
5M
7D
12H )
IN      NS      ns.liu.magedu.com.
IN      MX 10   mx1.liu.magedu.com.
IN      A       192.168.137.30
ns      IN      A       192.168.137.30
mx1     IN      A       192.168.137.30
www     IN      A       192.168.137.30

测试子域授权:

##子域测试
[root@liu ~]# dig @192.168.137.30 www.liu.magedu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> @192.168.137.30 www.liu.magedu.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20681
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.liu.magedu.com.INA
;; ANSWER SECTION:
www.liu.magedu.com.86400INA192.168.137.30
;; AUTHORITY SECTION:
liu.magedu.com.86400INNSns.liu.magedu.com.
;; ADDITIONAL SECTION:
ns.liu.magedu.com.86400INA192.168.137.30
;; Query time: 30 msec
;; SERVER: 192.168.137.30#53(192.168.137.30)
;; WHEN: Sat Oct 22 09:26:43 2016
;; MSG SIZE  rcvd: 85

父域测试:

[root@node2 ~]# dig -t www.magedu.com @192.168.137.30
;; Warning, ignoring invalid type www.magedu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -t www.magedu.com @192.168.137.30
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63122
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;.INNS
;; ANSWER SECTION:
.511320INNSd.root-servers.net.
.511320INNSl.root-servers.net.
.511320INNSg.root-servers.net.
.511320INNSk.root-servers.net.
.511320INNSh.root-servers.net.
.511320INNSf.root-servers.net.
.511320INNSi.root-servers.net.
.511320INNSb.root-servers.net.
.511320INNSc.root-servers.net.
.511320INNSj.root-servers.net.
.511320INNSe.root-servers.net.
.511320INNSa.root-servers.net.
.511320INNSm.root-servers.net.
;; Query time: 1 msec
;; SERVER: 192.168.137.30#53(192.168.137.30)
;; WHEN: Sat Sep 24 12:18:09 2016
;; MSG SIZE  rcvd: 228


4、请描述一次完整的http请求处理过程;


  1)客户端和服务器端建立连接。服务器接收或者拒绝请求。

  2)服务器端接收客户端请求。接收来自于网络的请求报文中对某资源的一次请求。对请求的处理响应,可分为单进程(启动一个进程处理请求,一次只处理一个)和多进程(并行启动多个进程,每个进程处理一个请求)。

  3)服务器端处理客户端请求。对请求报文进行解析,并获取请求的资源和请求方法等相关信息。

  4)服务器访问资源。web服务器负责向请求者提供对方请求的静态资源,或动态运行后生成的资源。

  5)服务器构建响应报文。

  6)服务器发送响应报文

  7)服务器端记录日志


5、httpd所支持的处理模型有哪些,他们的分别使用于哪些环境。

MPM:Multipath Processing Modules##多路处理模块
prefork:多进程模型,每个进程响应一个请求;
一个主进程:负责生成n个子进程,子进程也称为工作进程,每个子进程处理一个用户请求;即便没有用户请求,也会预先生成多个空闲进程,随时等待请求到达;最大不会超过1024个;使用于对系统要求稳定请求不是很高的环境。
worker:多线程模型,每个线程响应一个请求;
一个主进程:生成多个子进程,每个子进程负责生个多个线程,每个线程响应一个请求;工人的模式,支持多线程和多进程,用于海量请求相应的环境。
m进程,n线程:m*n
event:事件驱动模型,每个线程响应n个请求;
一个主进程:生成m个子进程,每个进程直接n个请求;
m*n


6、建立httpd服务器(基于编译的方式进行),要求:


提供两个基于名称的虚拟主机:


(a)www1.stuX.com,页面文件目录为/web/vhosts/www1;错误日志为/var/log/httpd/www1.err,访问日志为/var/log/httpd/www1.access;


(b)www2.stuX.com,页面文件目录为/web/vhosts/www2;错误日志为/var/log/httpd/www2.err,访问日志为/var/log/httpd/www2.access;


(c)为两个虚拟主机建立各自的主页文件index.html,内容分别为其对应的主机名;


(d)通过www1.stuX.com/server-status输出httpd工作状态相关信息,且只允许提供帐号密码才能访问(status:status);


基于编译的方式搭建LAMP环境

可见本人博客:

http://ljohn.blog.51cto.com/11932290/1863283


配置基于名称的虚拟主机

首先禁用中心主机

# vim /etc/httpd24/httpd.conf
#DocumentRoot "/usr/local/apache/htdocs"
Include /etc/httpd24/extra/httpd-vhosts.conf ##启用网页压缩这个模块。


配置虚拟主机

# vim /etc/httpd24/extra/httpd-vhosts.conf 
<VirtualHost 192.168.137.30:80>
 ServerName www1.stuX.com
 DocumentRoot "/web/vhosts/www1"
 ErrorLog "/var/log/httpd/www1.err"
 CustomLog "/var/log/httpd/www1.access" common
</VirtualHost>
<Directory "/web/vhosts/www1">
 Options none
 Require all granted
</Directory>
<VirtualHost 192.168.137.30:80>
 DocumentRoot "/web/vhosts/www2"
 ServerName www2.stuX.com
 ErrorLog "/var/log/httpd/www2.err"
 CustomLog "/var/log/httpd/www2.access" common
</VirtualHost>

创建所需要的文件:

# mkdir -p /web/vhost/{www1,www2} && echo "www1.site" > /web/vhost/www1/index.html && echo "www2.site"  /web/vhost/www2/index.html
#service httpd24 restart

测试:

[root@liu www2]# curl www1.stuX.com
www1.site
[root@liu www2]# curl www2.stuX.com
www2.site


修改第一个虚拟主机

[root@liu ~]# htpasswd -m -c /usr/local/apache/.htpasswd admin ##创建口令admin/admin
[root@liu ~]# vim /etc/httpd24/extra/httpd-vhosts.conf  ##修改www1的配置
<VirtualHost 192.168.137.30:80>
DocumentRoot "/web/vhosts/www1/"
ServerName www1.stuX.com
ErrorLog "/var/log/httpd/www1.err"
CustomLog "/var/log/httpd/www1.access" common
<Directory "/web/vhosts/www1/">
 AllowOverride None
Options None
Require all granted
</Directory>
<Location /server-status>
SetHandler server-status
AuthType Basic
AuthName "Only for Admin"
AuthUserFile "/usr/local/apache/.htpasswd" ##密码存放位置
Require valid-user
</Location>
</VirtualHost>

测试:

[root@liu ~]# curl www1.stuX.com/server-status
或者打开浏览器输入:www1.stuX.com/server-status 输入账号密码即可查看服务器的状态。

如图:

技术分享


7、为第6题中的第2个虚拟主机提供https服务,使得用户可以通过https安全的访问此web站点;


(1)要求使用证书认证,证书中要求使用的国家(CN)、州(HA)、城市(ZZ)和组织(MageEdu);


(2)设置部门为Ops,主机名为www2.stuX.com,邮件为admin@stuX.com;


自建CA

[root@liu CA]# cd /etc/pki/CA/
[root@liu CA]# touch index.txt serial
[root@liu CA]# echo 01 > serial
[root@liu CA]# (umask 007; openssl genrsa -out ./private/cakey.pem 1024)
[root@liu CA]# openssl req -new -x509 -key ./private/cakey.pem  -days 7300 -out ./cacert.pem ##自签证书


httpd生成私钥,创建证书签署请求,然后由CA签署

[root@liu CA]# mkdir -pv /usr/local/apache/ssl
[root@liu CA]# (umask 077; openssl genrsa -out /usr/local/apache/ssl/http.key 1024) ##创建私钥
[root@liu CA]# openssl req -new -key /usr/local/apache/ssl/http.key -out /usr/local/apache/ssl/http.csr 
[root@liu CA]# openssl ca -in /usr/local/apache/ssl/http.csr -out /usr/local/apache/ssl/http.crt -days 3600 ##CA颁发证书


配置文件修改

修改httpd.conf:
# vim /etc/httpd24/httpd.conf
LoadModule ssl_module modules/mod_ssl.so ##开启ssl模块,默认是注释掉的
Include /etc/httpd24/extra/httpd-ssl.conf ##导入ssl配置文件,默认是注释掉的。
修改ssl模块配置文件 
# vim /etc/httpd24/extra/httpd-ssl.conf
<VirtualHost *:443>
#   General setup for the virtual host
DocumentRoot "/web/vhosts/www2/"
ServerName www2.stuX.com
ServerAdmin you@example.com
ErrorLog "/var/log/httpd/www2.err"
CustomLog "/var/log/httpd/www2.access" common
SSLCertificateFile "/usr/local/apache/ssl/http.crt"
SSLCertificateKeyFile "/usr/local/apache/ssl/http.key"

重启或reload 

# service httpd24 restart

浏览器访问:https://www2.stuX.com

如图:

技术分享


8、建立samba共享,共享目录为/data,要求:(描述完整的过程)


1)共享名为shared,工作组为magedu;


2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名;


3)添加samba用户gentoo,centos和ubuntu,密码均为“mageedu”;


4)此samba共享shared仅允许develop组具有写权限,其他用户只能以只读方式访问;


5)此samba共享服务仅允许来自于172.16.0.0/16网络的主机访问;


安装samba

[root@node2 ~]# yum install -y samba samba-client
[root@node2 ~]# rpm -ql samba | less
/etc/pam.d/samba #配置文件所在目录
/etc/rc.d/init.d/nmb 
/etc/rc.d/init.d/smb #服务脚本,nmb和smb
/etc/samba/smb.conf ##主配置文件

创建组,用户及samba用户:

[root@node2 ~]# useradd -G develop gentoo
[root@node2 ~]# useradd -G develop centos
[root@node2 ~]# useradd ubantu
[root@node2 ~]# echo ‘gentoo‘ | passwd --stdin gentoo
更改用户 gentoo 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@node2 ~]# echo ‘centos‘ | passwd --stdin centos
更改用户 centos 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@node2 ~]# echo ‘ubantu‘ | passwd --stdin ubantu
更改用户 ubantu 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@node2 ~]# smbpasswd -a gentoo
New SMB password:
Retype new SMB password:
Added user gentoo.
[root@node2 ~]# smbpasswd -a centos
New SMB password:
Retype new SMB password:
Added user centos.
[root@node2 ~]# smbpasswd -a ubantu
New SMB password:
Retype new SMB password:
Added user ubantu.

创建samba目录并赋权

[root@node2 ~]# mkdir /data
[root@node2 ~]# ls -ld /data/
drwxr-xr-x. 2 root root 4096 10月 27 12:00 /data/
[root@node2 ~]# chmod g+w /data/
[root@node2 ~]# ls -ld /data/
drwxrwxr-x. 2 root root 4096 10月 27 12:00 /data/
[root@node2 ~]# chown :develop /data/
[root@node2 ~]# ls -ld /data/
drwxrwxr-x. 2 root develop 4096 10月 27 12:00 /data/

修改主配置文件:

# vim /etc/samba/smb.conf
[global]
workgroup = MAGEDU
hosts allow = 192.168.
[shared]
        comment = My Shared Testing..
        path = /data
        guest ok = yes
        valid users = gentoo,centos,ubantu
        write list = @develop
        writable = yes

启动samba服务:

[root@node2 ~]# service nmb start;service smb start
启动 NMB 服务:                                            [确定]
启动 SMB 服务:                                            [确定]


客户端测试:

[root@node2 ~]# smbclient -L 192.168.137.30 -U gentoo ##获取samba共享信息

Enter gentoo‘s password: 

Domain=[MAGEDU] OS=[Unix] Server=[Samba 3.6.9-164.el6]


Sharename       Type      Comment

---------       ----      -------

shared          Disk      My Shared Testing..

IPC$            IPC       IPC Service (Samba Server Version 3.6.9-164.el6)

gentoo          Disk      Home Directories

Domain=[MAGEDU] OS=[Unix] Server=[Samba 3.6.9-164.el6]


Server               Comment

---------            -------

NODE2                Samba Server Version 3.6.9-164.el6


Workgroup            Master

---------            -------

MAGEDU               NODE2

[root@node2 ~]# smbclient //192.168.137.30/shared -U centos ##通过smbclient访问共享存储。

Enter centos‘s password: 

Domain=[MAGEDU] OS=[Unix] Server=[Samba 3.6.9-164.el6]

smb: \> 

Windows访问共享存储:

如图所示:

技术分享


9、搭建一套文件vsftp文件共享服务,共享目录为/ftproot,要求:(描述完整的过程)


1)基于虚拟用户的访问形式;


2)匿名用户只允许下载,不允许上传;


3)禁锢所有的用户于其家目录当中;


4)限制最大并发连接数为200:;


5)匿名用户的最大传输速率512KB/s


6)虚拟用户的账号存储在mysql数据库当中。


7)数据库通过NFS进行共享。



部署前准工作

两台机器:
node1:192.168.137.31
在这服务器上安装nfs服务,设置共享目录:nfsahre,为数据库提供共享目录。
[root@node1 ~]# yum -y install nfs-utils
[root@node1 ~]# mkdir /nfshare
创建mysql用户,设置 /nfshare 的所属主,所属组为mysql
[root@node1 ~]# groupadd –g 306 mysql
[root@node1 ~]# useradd –g 306 –u 306 –s /sbin/nologin –M mysql
[root@node1 ~]# chown -R mysql.mysql /nfshare
配置nfs的配置文件vim /etc/exports 
/nfshare        192.168.137.32/255.255.255.0(no_root_squash,rw)
启动nfs:service nfs start
node2:192.168.137.30
在这台机器上安装mysql,创建目录/mydata 用来挂载nfs共享目录。
[root@node2 ~]# mkdir /mydata
挂载nfs共享目录:
[root@node2 ~]# vim /etc/fstab
添加:192.168.137.31:/nfshare /mydata                 nfs     defaults        0 0
[root@node2 ~]# mount -a


创建mysql用户,设置/mydata 所属主,及所属组。

[root@node2 ~]# groupadd –g 306 mysql
[root@node2 ~]# useradd –g 306 –u 306 –s /sbin/nologin –M mysql
[root@node2 ~]# chown -R mysql:mysql /mydata


安装数据库,vsftpd,pam_mysql

# yum -y vsftpd pam_mysql ##pam_mysql要安装epelyum源
[root@node2 ~]# ls /lib/security/pam_mysql.so 
/lib/security/pam_mysql.so ##查看lib中是否有这个pam_mysql.so 库文件
编译安装mysql数据库
下载mysql-5.5的二进制的源码包。
# tar xf mysql-5.5.33-linux2.6-i686.tar.gz -C /usr/local
# cd /usr/local/
# ln -sv mysql-5.5.33-linux2.6-i686  mysql
# cd mysql 
# chown -R mysql:mysql  .
# scripts/mysql_install_db --user=mysql --datadir=/mydata/data
# chown -R root  .
为mysql提供主配置文件:
# cd /usr/local/mysql
# cp support-files/my-large.cnf  /etc/my.cnf
# mkdir -pv /mydata/data
并修改此文件中thread_concurrency的值为你的CPU个数乘以2
thread_concurrency = 2
指定mysql数据文件的存放位置:
datadir = /mydata/data
为mysql提供sysv服务脚本:
# cd /usr/local/mysql
# cp support-files/mysql.server  /etc/rc.d/init.d/mysqld
# chmod +x /etc/rc.d/init.d/mysqld
添加至服务列表:
# chkconfig --add mysqld
启动数据库:service mysqld start


配置数据库,和vsftpd

创建数据库:vsftpd,用户:vsftp 表名:users 并插入两条(虚拟用户)数据
mysql> create database vsftpd;
mysql> grant select on vsftpd.* to vsftp@192.168.137.30 identified by ‘magedu‘;
mysql> use vsftpd
mysql> create table users (id int AUTO_INCREMENT NOT NULL,name char(20) binary NOT NULL,password char(48) binary NOT NULL,primary key(id));
mysql> insert into users(name,password) values(‘magedu1‘,password(‘magedu‘)),(‘magedu2‘,password(‘magedu‘));
mysql> select * from users;
mysql> flush privileges;


配置vsftp

1.建立pam认证所需文件
#vi /etc/pam.d/vsftpd.mysql
添加如下两行
auth required /lib/security/pam_mysql.so user=vsftp passwd=magedu host=192.168.137.30 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 ##用于用户认证
account required /lib/security/pam_mysql.so user=vsftp passwd=magedu host=192.168.137.30 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 ##用于检查用户时效性
2.修改vsftpd的配置文件,使其适应mysql认证
建立虚拟用户映射的系统用户及对应的目录
[root@node2 ~]# useradd -s /sbin/nologin -d /var/ftproot vuser
[root@node2 ~]# chmod go+rx /var/ftproot/
请确保/etc/vsftpd.conf中已经启用了以下选项
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES ##禁锢所有本地用户于家目录下
pam_service_name=vsftpd.mysql ##认证文件
max_clients=200 ##并发连接数
anon_max_rate=524288 ##单位是字节每秒,512KB/s 512*1024

启动vsftpd,并测试

service vsftpd start
到node1上安装ftp客户端工具
# yum install -y ftp lftp
# ftp 192.168.137.30
验证magedu1,magedu2两个用户



本文出自 “Ljohn” 博客,请务必保留此出处http://ljohn.blog.51cto.com/11932290/1866905

马哥2016全新Linux+Python高端运维班-Linux服务 DNS,httpd,加密通讯,vsftp,NFS,samba服务练习