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

时间:2021-12-27 03:32:03

本周作业内容:


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

一次加密通讯的过程:

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

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

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


Alice用私钥解密对称密钥。

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

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

如图所示:

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

单向加密:只能加密,不能解密,提取数据指纹(特征码),来保证数据的完整性,单向加密的协议有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 serialV171021154656Z01unknown/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. (20160921011H5M7D1D )IN      NS      ns1IN      NS      ns2IN      MX 10   mx1IN      MX 20   mx2ns1     IN      A       192.168.137.32ns2     IN      A       192.168.137.33mx1     IN      A       192.168.137.32mx2     IN      A       192.168.137.33www     IN      A       192.168.137.32www     IN      A       192.168.137.33ftp     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. (20160921011H5M7D1D )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.33www.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.32ns2.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.32ns2.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.zoneszone "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.33www.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.32ns2.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.zoneliu     IN      NS      ns1.liu.magedu.com.ns1.liu IN      A       192.168.137.30同样方式安装bind配置主配置文件在区域配置文件末行添加:[root@liu ~]# vim /etc/named.rfc1912.zoneszone "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. (20160922012H5M7D12H )IN      NS      ns.liu.magedu.com.IN      MX 10   mx1.liu.magedu.com.IN      A       192.168.137.30ns      IN      A       192.168.137.30mx1     IN      A       192.168.137.30www     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*nevent:事件驱动模型,每个线程响应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.comwww1.site[root@liu www2]# curl www2.stuX.comwww2.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.comErrorLog "/var/log/httpd/www1.err"CustomLog "/var/log/httpd/www1.access" common<Directory "/web/vhosts/www1/"> AllowOverride NoneOptions NoneRequire all granted</Directory><Location /server-status>SetHandler server-statusAuthType BasicAuthName "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 输入账号密码即可查看服务器的状态。

如图:

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


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.confLoadModule 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 hostDocumentRoot "/web/vhosts/www2/"ServerName www2.stuX.comServerAdmin you@example.comErrorLog "/var/log/httpd/www2.err"CustomLog "/var/log/httpd/www2.access" commonSSLCertificateFile "/usr/local/apache/ssl/http.crt"SSLCertificateKeyFile "/usr/local/apache/ssl/http.key"

重启或reload 

# service httpd24 restart

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

如图:

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


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 gentooNew SMB password:Retype new SMB password:Added user gentoo.[root@node2 ~]# smbpasswd -a centosNew SMB password:Retype new SMB password:Added user centos.[root@node2 ~]# smbpasswd -a ubantuNew 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 = MAGEDUhosts 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访问共享存储:

如图所示:

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


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 �Cg 306 mysql[root@node1 ~]# useradd �Cg 306 �Cu 306 �Cs /sbin/nologin �CM 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 startnode2: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 �Cg 306 mysql[root@node2 ~]# useradd �Cg 306 �Cu 306 �Cs /sbin/nologin �CM 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个数乘以2thread_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 vsftpdmysql> 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=YESlocal_enable=YESwrite_enable=YESanon_upload_enable=NOanon_mkdir_write_enable=NOchroot_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