1、详细描述一次加密通讯的过程,结合图示最佳。
答:
单向加密解密过程:
发送方:
1)发送方用对称加密的方法提取文件的特征码,用自己的私钥加密这段特征码,并附加在文件后面(还是明文的);
2)用一个对称密钥,借助于对称加密算法把整个文件加密;
3)再用对方的公钥加密对称密钥,附加在文件后面;
接收方:
1)接收方先用自己的私钥解密出对称密钥;(能解密说明的确是用自己的公钥加密的;)
2)把解密出来的密码,借助于解密算法,就能解密出文件数据;
3)得到文件的明文数据和加密的特征码;
4)用发送方的公钥去解密特征码;(能解密说明对方的身份得到认证)
5)再用同样的加密算法计算文件数据的特征码;比较两个特征码是否一样;如果是一样的说明文件的数据完整性得到认证;
2、描述创建私有CA的过程,以及为客户端发来的证书请求进行办法证书。
答:openssl的配置文件:/etc/pki/tls/openssl.cnf
(1)创建所需要的文件:
[root@Server ~]# cd /etc/pki/CA [root@Server CA]# touch index.txt [root@Server CA]# echo 01>serial [root@Server CA]# ll
(2)CA自签证书
[root@Server CA]# (umask 077; openssl genrsa -out private/cakey.pem 2048)
[root@Server CA]# ls -l private/
[root@Server CA]# openssl req -new -x509 -key private/cakey.pem -days 7300 -out cacert.pem
说明:
-new:生成新证书签署请求;
-x509:专用于CA生成自签证书;
-key:生成请求时用到的私有文件;
-days # :证书的有效期限;
-out/PATH/TO/SOMECERTFILE :证书的保存路径;
(3)发证
a)用到证书的主机生成证书请求: [root@Client ~]# mkdir /etc/httpd/ssl [root@Client ~]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048) [root@Client ~]# cd /etc/httpd/ssl/ root@Client ssl]# openssl req -new -key httpd.key -days 365 -out httpd.csr b)把请求文件传递给CA: [root@Client ssl]# scp httpd.csr 10.11.0.240:/tmp/ 3)CA签署证书,并将证书发还给请求者: [root@Server CA]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365 [root@Server CA]# scp /etc/pki/CA/certs/httpd.crt 10.11.0.242:/etc/httpd/ssl/
3、搭建一套DNS服务器,负责解析magedu.com域名(自行设定主机名及IP)
(1)、能够对一些主机名进行正向解析和逆向解析;
(2)、对子域cdn.magedu.com进行子域授权,子域负责解析对应子域中的主机名;
(3)、为了保证DNS服务系统的高可用性,请设计一套方案,并写出详细的实施过程
答:
了解需用到的配置文件存放位置:
服务脚本:/etc/rc.d/init.d/named 主配置文件:/etc/named.conf , /etc/named.rfc1912.zones, /etc/rndc.key(域共享密钥);解析库文件:/var/named/ZONE_NAME.ZONE
(1)配置主DNS服务器,IP:10.11.0.240
1)先安装bind
[root@ilinux~]# yum install -y bind [root@ilinux~]# rpm -q bind bind-9.8.2-0.47.rc1.el6_8.2.x86_64
2)修改主配置文件/etc/named.conf
[root@ilinux~]# cp /etc/named.conf{,.bak} [root@ilinux~]# vim /etc/named.conf options{ listen-on port 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; dnssec-enable no; dnssec-validation no; /* Path to ISC DLV key */ // bindkeys-file"/etc/named.iscdlv.key"; // managed-keys-directory"/var/named/dynamic"; }; logging { channel default_debug{ file"data/named.run"; severitydynamic; }; }; zone "." IN { type hint; file"named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
3)在主配置文件/etc/named.rfc1912.zones中定义区域
[root@ilinux ~]# vim/etc/named.rfc1912.zones #定义正向区域 zone"magedu.com" IN { type master; file "magedu.com.zone"; }; #定义反向区域 zone"0.11.10.in-addr.arpa" IN { type master; file "0.11.10.zone"; };
4)创建区域解析库文件
#正向区域解析库文件 [root@ilinux named]# vim magedu.com.zone $TTL 86400 $ORIGIN magedu.com. @ IN SOA ns1.magedu.com. admin.magedu.com. ( 201601 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H) ; minimum IN NS ns1 IN NS ns2 IN MX 10 mx1 IN MX 20 mx2 ns1 IN A 10.11.0.240 ns2 IN A 10.11.0.243 mx1 IN A 10.11.0.240 mx2 IN A 10.11.0.243 www IN A 10.11.0.240 www IN A 10.11.0.243 web IN CNAME www #反向区域解析库文件 [root@ilinux named]# vim 0.11.10.zone $TTL 86400 $ORIGIN 0.11.10.in-addr.arpa. @ IN SOA ns1.magedu.com. admin.magedu.com. ( 201601 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H) ; minimum IN NS ns1.magedu.com. IN NS ns2.magedu.com. 240 IN PTR ns1.magedu.com. 243 IN PTR ns2.magedu.com. 240 IN PTR xm1.magedu.com. 243 IN PTR xm2.magedu.com. 240 IN PTR www.magedu.com. 243 IN PTR www.magedu.com.
5)检查是否有语法错误
#检查主配置文件 [root@ilinux named]# named-checkconf #检查区域解析库文件 [root@ilinux named]# named-checkzone "magedu.com" magedu.com.zone zone magedu.com/IN: loaded serial 201601 OK [root@ilinux named]# named-checkzone "0.11.10.in-addr.arpa" 0.11.10.zone zone 0.11.10.in-addr.arpa/IN: loaded serial 201601 OK
6)配置后的操作及检查
[root@ilinux named]# chown :named magedu.com.zone [root@ilinux named]# chown :named 0.11.10.zone [root@ilinux named]# service named restart [root@ilinux named]# ps aux | grep named named 27251 0.0 2.3 159808 11716 ? Ssl 19:16 0:00 /usr/sbin/named -unamed root 27261 0.0 0.1 103252 832 pts/0 S+ 19:16 0:00 grep named [root@ilinux named]# ss -tnl State Recv-Q Send-Q LocalAddress:Port PeerAddress:Port LISTEN 0 3 10.11.0.240:53 *:* LISTEN 0 3 127.0.0.1:53 *:* [root@ilinux named]# rndc status #查看服务器的工作状态; version:9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6_8.2 CPUs found: 1 worker threads: 1 number of zones: 21 debug level: 0 xfers running: 0 xfers deferred: 0 soa queries in progress: 0 query logging is OFF recursive clients: 0/0/1000 tcp clients: 0/100 server is up and running
7)区域解析测试
#正向解析 [root@ilinux named]# host -tNS magedu.com 10.11.0.240 [root@ilinux named]# dig -tNS magedu.com @10.11.0.240 [root@ilinux named]# host -tA www.magedu.com 10.11.0.240 [root@ilinux named]# dig -t Aweb.magedu.com @10.11.0.240 #反向解析 [root@ilinux named]# dig -x10.11.0.240 @10.11.0.240
(2)配置从DNS服务器,IP:10.11.0.243
1)先安装bind
[root@ilinux~]# yum install -y bind [root@ilinux~]# rpm -q bind bind-9.8.2-0.47.rc1.el6_8.2.x86_64
2)修改主配置文件/etc/named.conf
修改的内容与主DNS服务器的一样。
3)在主配置文件/etc/named.rfc1912.zones中定义区域
[root@ilinux ~]# vim/etc/named.rfc1912.zones #定义正向区域 zone"magedu.com" IN { type slave; masters { 10.11.0.240; }; file "slaves/magedu.com.zone"; }; #定义反向区域 zone"0.11.10.in-addr.arpa" IN { type slave; masters { 10.11.0.240; }; file "slaves/0.11.10.zone"; };
4)测试添加的区域和区域数据文件是否有错误
[root@ilinux ~]# service named configtest
5)重载named
[root@ilinux named]# rndc reload server reload successful
6)检查区域文件是否同步到从DNS服务器
[root@ilinux ~]# ls /var/named/slaves/ 0.11.10.zone magedu.com.zone 注意: 若发现无法同步,请检查selinux和iptables是否禁用。 # sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # setenforce 0 # service iptables stop或iptables -F
7)测试从DNS服务器解析
[root@ilinux ~]# dig -t A www.magedu.com @10.11.0.243 [root@ilinux ~]# host -t NS magedu.com 10.11.0.240 [root@ilinux ~]# host -t PTR 10.11.0.240 10.11.0.243
(3)配置子域服务器,IP为10.11.0.244
1)新增一台服务器作为子域,IP为10.11.0.244。并安装好bind-9.8.2-0.47.rc1.el6_8.2.x86_64。
2)在主DNS服务器(父域)的区域解析库文件中添加NS和A记录。
[root@ilinux ~]# vim/var/named/magedu.com.zone cdn IN NS ns1.cdn.magedu.com. ns1.cdn IN A 10.11.0.244
3)在子域的配置文件中添加区域
[root@ilinux ~]# vim /etc/named.rfc1912.zones zone"cdn.magedu.com" IN { type master; file "cdn.magedu.com.zone"; }; #配置主域转发 zone"magedu.com" IN { type forward; forward first; forwarders { 10.11.0.240; }; };
4)配置子域服务器的区域文件
正向区域文件: [root@ilinuxnamed]# vim cdn.magedu.com.zone $TTL86400 $ORIGINcdn.magedu.com. @ IN SOA ns1.cdn.magedu.com. admin.cdn.magedu.com.( 201601 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS ns1 ns1 IN A 10.11.0.244 www IN A 10.11.0.244
5)设置属组,检查配置是否正确
[root@ilinuxnamed]# chown :named cdn.magedu.com.zone [root@ilinux~]# named-checkconf [root@ilinux ~]# named-checkzone "cdn.magedu.com" /var/named/cdn.magedu.com.zone zonecdn.magedu.com/IN: loaded serial 201601 OK [root@ilinux~]# service named configtest [root@ilinux~]# rndc reload serverreload successful
6)测试子域解析
[root@ilinux ~]# dig -t NS cdn.magedu.com @10.11.0.244 [root@ilinux ~]# dig -t A www.cdn.magedu.com @10.11.0.244 [root@ilinux ~]# dig -t A ns1.cdn.magedu.com @10.11.0.244
4、请描述一次完整的http请求处理过程;
答:
(1)建立TCP连接
在http工作开始之前,web浏览器首先要通过TCP协议与web服务器建立连接;http是比tcp更高层次的应用层协议,根据规则,只有低层协议建立之后才能进行更高层协议的连接。因此,首先要建立TCP连接,一般TCP连接的端口号是80.
(2)Web浏览器想Web服务器发送请求命令
一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求报文。如:GET /sample/hello.phpHTTP/1.1。
(3)Web浏览器发送请求头部信息
web浏览器给web服务器发送其请求命令之后,还要以头信息的形式向web服务器发送一些信息,然后再发送一空行(通知服务器头信息结束)。
(4)Web服务器响应
客户端想服务器发出请求后,服务器会给客户端会送应答,HTTP/1.1 200 OK,应答的第一部分是协议版本号和响应状态码。
(5)web服务器发送响应头信息
正如客户端会随同请求发送一些关于自身的信息一样,服务器也会随同响应向客户端发送关于它自身的数据及被请求的文档。
(6)Web服务器向浏览器发送数据
Web服务器向浏览器发送头部信息后,它会发送一个空白行来表示头部信息发送结束;接着,它就以ConTent-Type响应头部信息所描述的格式发送客户端所请求的实际数据。
(7)Web服务器关闭TCP连接
一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,但如果浏览器或服务器在其头部信息中加入了这行代码:Connection:keep-alive,TCP连接在发送后仍然保持打开状态;这样,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
5、httpd所支持的处理模型有哪些,他们的分别使用于哪些环境。
答:
httpd所支持的处理模型有prefork,worker,event;
(1)prefork模型:多进程模型,每个进程响应一个请求;一个主进程:负责生成n个子进程,子进程也称为工作进程,每个子进程处理一个用户请求;即便没有用户请求,也会预先生成多个空闲进程,随时等待请求到达;子进程数最大不会超过1024个。
(2)worker模型:多线程模型,每个线程响应一个请求;一个主进程:生成多个子进程,每个子进程负责生成多个线程,每个线程响应一个请求。m进程,n线程:最大的并发响应数是m*n。
(3)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);
答:
安装前提:
[root@magedu~]# yum groupinstall -y "DelopmentTools" "Server Platform Development" [root@magedu~]# yum install -y pcre-devel
(1)编译安装apr-1.5.2
[root@magedu /]# tar xf apr-1.5.2.tar.bz2 [root@magedu /]# cd apr-1.5.2 [root@magedu apr-1.5.2]# ./configure --prefix=/usr/local/apr [root@magedu apr-1.5.2]# make && make install
(2)编译安装apr-util-1.5.4
[root@magedu /]# tar xf apr-util-1.5.4.tar.bz2 [root@magedu /]# cd apr-util-1.5.4 [root@magedu apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr [root@magedu apr-util-1.5.4]# make && make install
(3)编译安装httpd-2.4.23
[root@magedu /]# tar xf httpd-2.4.23.tar.bz2 [root@magedu /]# cd httpd-2.4.23 [root@magedu httpd-2.4.23]# groupadd -r apache [root@magedu httpd-2.4.23]# useradd -r -g apache apache [root@magedu httpd-2.4.23]# ./configure--prefix=/usr/local/apache --sysconf=/etc/httpd24 --enable-so --enable-ssl--enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr--with-apr-util=/usr/local/apr-util/ --enable-modules=most--enable-mpms-shared=all --with-mpm=prefork [root@magedu httpd-2.4.23]# make && make install
#先确保80端口不被其他程序占用,套接字是独占端口的。
[root@ilinux ~]# ss -tnl
#启用apache服务(编译安装的启用方式):
[root@ilinux ~]# /usr/local/apache/bin/apachectl [root@ilinux ~]# ss -tnl State Recv-Q Send-Q LocalAddress:Port Peer Address:Port LISTEN 0 128 :::80 :::*
#将apache的bin目录加入到PATH变量中:
[root@ilinux ~]# vim /etc/profile.d/httpd.sh PATH=/usr/local/apache/bin:$PATH [root@ilinux ~]# . /etc/profile.d/httpd.sh
#启用服务后就可以访问测试页:
(4)添加两个虚拟主机
[root@ilinux ~]# vim /etc/httpd24/extra/httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "/web/vhosts/www1" ServerName www1.stuX.com ErrorLog "/var/log/httpd/www1.err" CustomLog "/var/log/httpd/www1.access" common </VirtualHost> <VirtualHost *:80> DocumentRoot "/web/vhosts/www2" ServerName www2.stuX.com ErrorLog "/var/log/httpd/www2.err" CustomLog "/var/log/httpd/www2.access" common </VirtualHost>
(5)启用虚拟主机,禁用中心主机
[root@ilinux ~]# vim /etc/httpd24/httpd.conf # Virtual hosts Include/etc/httpd24/extra/httpd-vhosts.conf #DocumentRoot"/usr/local/apache/htdocs"
(6)创建所需目录
[root@ilinux ~]# mkdir -pv /web/vhosts/{www1,www2} mkdir: created directory `/web' mkdir: created directory `/web/vhosts' mkdir: created directory `/web/vhosts/www1' mkdir: created directory `/web/vhosts/www2' [root@ilinux ~]# mkdir -pv /var/log/httpd mkdir: created directory `/var/log/httpd'
(7)设置两个虚拟主机目录访问权限
[root@ilinux ~]# vim /etc/httpd24/httpd.conf <Directory"/web/vhosts/www1"> options none allowoverride none Require all granted </Directory> <Directory "/web/vhosts/www2"> options none allowoverride none Require all granted </Directory>
(8)创建网站主页面文件
[root@ilinux ~]# vim /web/vhosts/www1/index.html Page at www1 [root@ilinux ~]# vim /web/vhosts/www2/index.html Page at www2
(9)由于DNS无法解析本地域名,这里用10.11.0.243Linux主机作为客户端来访问,修改它的hosts文件,增加如下一行:
[root@magedu ~]# vim /etc/hosts 10.11.0.240 www1.stuX.com www2.stuX.com Windows客户端访问,需修改C:\Windows\system32\drivers\etc\hosts文件。
(10)用10.11.0.243主机测试访问页面
[root@magedu ~]# curl http://www1.stuX.com Page at www1 [root@magedu ~]# curl http://www2.stuX.com Pate at www2
(11)server-status设置
在www1.stuX.com的虚拟主机配置文件里增加<Location /server-status>内容。
[root@ilinux ~]# vim /etc/httpd24/extra/httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "/web/vhosts/www1" ServerName www1.stuX.com ErrorLog "/var/log/httpd/www1.err" CustomLog "/var/log/httpd/www1.access" common <Location /server-status> SetHandler server-status Orderdeny,allow Allowfrom all Authtype Basic Authname "server-status" AuthUserFile/etc/httpd24/.htpasswd Requirevalid-user </Location> </VirtualHost>
(12)创建用户states和密码,并生成用户密码文件
[root@ilinux httpd24]# htpasswd -c -m /etc/httpd24/.htpasswd status
重启服务后,访问如下:
7、为第6题中的第2个虚拟主机提供https服务,使得用户可以通过https安全的访问此web站点;
(1)要求使用证书认证,证书中要求使用的国家(CN)、州(HA)、城市(ZZ)和组织(MageEdu);
(2)设置部门为Ops,主机名为www2.stuX.com,邮件为admin@stuX.com;
答:
(1)创建所需的文件
[root@ilinux httpd24]# cd /etc/pki/CA/ [root@ilinux CA]# touch index.txt [root@ilinux CA]# echo 01 serial
(2)CA自签证书
[root@ilinux CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048) [root@ilinux CA]# openssl req -new -x509 -key private/cakey.pem -days 7300 -outcacert.pem Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:HA Locality Name (eg, city) [Default City]:ZZ Organization Name (eg, company) [DefaultCompany Ltd]:MageEdu Organizational Unit Name (eg, section)[]:Ops Common Name (eg, your name or your server'shostname) []:www2.stuX.com Email Address []:admin@stuX.com
(3)发证
[root@ilinux CA]# mkdir /etc/httpd24/ssl [root@ilinux CA]# cd /etc/httpd24/ssl [root@ilinux ssl]# (umask 077;openssl genrsa -out httpd.key 2048) [root@ilinux ssl]# openssl req -new -key httpd.key -days 365 -out httpd.csr [root@ilinux ssl]# openssl ca -in httpd.csr -out httpd.crt -days 365
(4)修改httpd.conf配置文件
[root@ilinux ~]# vim /etc/httpd24/httpd.conf LoadModule ssl_module modules/mod_ssl.so #启用ssl模块; LoadModule socache_shmcb_modulemodules/mod_socache_shmcb.so Include /etc/httpd24/extra/httpd-ssl.conf #导入ssl配置文件;
(5)修改ssl模块配置文件
[root@ilinux ~]# vim /etc/httpd24/extra/httpd-ssl.conf <VirtualHost *:443> # General setup for the virtual host DocumentRoot "/web/vhosts/www2" ServerName www2.stuX.com ServerAdmin admin@stuX.com ErrorLog"/var/log/httpd/www2.err" CustomLog"/var/log/httpd/www2.access" common SSLCertificateFile"/etc/httpd24/ssl/httpd.crt" SSLCertificateKeyFile"/etc/httpd24/ssl/httpd.key"
(6)访问测试,如下图:
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网络的主机访问;
答:
(1)先安装samba,samba-client
[root@ilinux ~]# yum install -y samba samba-client
(2)查看samba所需配置文件
[root@ilinux ~]# rpm -ql samba | less /etc/pam.d/samba #配置文件所在目录; /etc/rc.d/init.d/nmb #服务脚本; /etc/rc.d/init.d/smb #服务脚本; /etc/samba/smb.conf #主配置文件;
(3)创建组和用户
#创建系统用户和组 [root@ilinux samba]# groupadd develop [root@ilinux samba]# useradd -G develop gentoo [root@ilinux samba]# useradd -G develop centos [root@ilinux samba]# useradd ubuntu [root@ilinux samba]# echo "gentoo" | passwd --stdin gentoo [root@ilinux samba]# echo "centos" | passwd --stdin centos [root@ilinux samba]# echo "ubuntu" | passwd --stdin ubuntu #创建samba用户 [root@ilinux samba]# smbpasswd -a gentoo [root@ilinux samba]# smbpasswd -a centos [root@ilinux samba]# smbpasswd -a ubuntu
(4)创建samba目录并设置权限
[root@ilinux samba]# mkdir /data [root@ilinuxsamba]# chmod g+w /data/ [root@ilinux samba]# ls -ld /data/ drwxrwxr-x 2 root root 4096 Nov 8 14:39 /data/ [root@ilinux samba]# chown :develop /data/ [root@ilinux samba]# ls -ld /data/ drwxrwxr-x 2 root develop 4096 Nov 8 14:39 /data/
(5)修改主配置文件
[root@ilinux samba]# vim /etc/samba/smb.conf workgroup = magedu hosts allow = 10.11.0. [shared] comment = My Shared Testing. #描述信息; path = /data #设置共享路径; guest ok = no valid users = gentoo,centos,ubuntu #设置可访问的用户; write list = +develop #设置有写入权限的列表; writable = yes
(6)重启服务
[root@ilinux ~]# service smb start
(7)访问共享测试
#有写入权限的访问测试
[root@ilinux ~]# smbclient //10.11.0.240/shared -U gentoo Enter gentoo's password: Domain=[MAGEDU] OS=[Unix] Server=[Samba3.6.23-36.el6_8] smb: \> ls . D 0 Tue Nov 8 14:39:38 2016 .. DR 0 Tue Nov 8 14:39:38 2016 39743 blocks of size 4194304.37209 blocks available smb: \> lcd /etc/ smb: \> put fstab putting file fstab as \fstab (41.4 kb/s)(average 41.4 kb/s) smb: \> ls . D 0 Tue Nov 8 16:44:25 2016 .. DR 0 Tue Nov 8 14:39:38 2016 fstab A 805 Tue Nov 8 16:44:25 2016 39743 blocks of size4194304. 37209 blocks available smb: \>
#无写入权限的访问测试
[root@ilinux ~]# smbclient //10.11.0.240/shared -U ubuntu Enter ubuntu's password: Domain=[MAGEDU] OS=[Unix] Server=[Samba3.6.23-36.el6_8] smb: \> lcd /tmp smb: \> put test.txt NT_STATUS_ACCESS_DENIED opening remote file \test.txt smb: \>
9、搭建一套文件vsftp文件共享服务,共享目录为/ftproot,要求:(描述完整的过程)
1)基于虚拟用户的访问形式;
2)匿名用户只允许下载,不允许上传;
3)禁锢所有的用户于其家目录当中;
4)限制最大并发连接数为200:;
5)匿名用户的最大传输速率512KB/s
6)虚拟用户的账号存储在mysql数据库当中。
7)数据库通过NFS进行共享。
答:
实验环境:
10.11.0.243 nfs
10.11.0.244 mysql+vsftpd
(1)安装nfs-utils于10.11.0.243
[root@c66-moban ~]# yum install -y nfs-utils [root@c66-moban ~]# mkdir /nfs [root@c66-moban ~]# groupadd -g 1001 mysql [root@c66-moban ~]# useradd -u 1001 -g 1001 mysql [root@c66-moban ~]# chown mysql:mysql /nfs
#编辑/etc/exports文件,添加权限 [root@c66-moban ~]# vim /etc/exports /nfs 10.11.0.244(rw, no_root_squash) #启动服务 [root@c66-moban~]# service rpcbind start #CentOS7启动法:systemctl start rpcbind.service Starting rpcbind: [ OK ] [root@c66-moban ~]# service nfs start #CentOS7启动法:systemctl start nfs-server.service Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] Starting RPC idmapd: [ OK ]
(2)安装mysql于10.11.0.244
[root@c66-moban ~]# yum install -y mysql mysql-server mysql-devel [root@c66-moban ~]# mkdir /mydata [root@c66-moban ~]# groupadd -g 1001 mysql [root@c66-moban ~]# useradd -g 1001 -u 1001 -s /sbin/nologin mysql [root@c66-moban ~]# chown mysql:mysql /mydata/ [root@c66-moban ~]# ll -d /mydata/ drwxr-xr-x. 2 mysql mysql 4096 Nov 16 22:17/mydata/ 挂载nfs共享目录 [root@c66-moban ~]# mount 192.168.1.110:/nfs /mydata/ 注意:这里出现了一个错误mount: wrong fs type,bad option, bad superblock on. . . 此时,需安装nfs-utils即可解决。 [root@ilinux ~]# yum install nfs-utils 修改mysql的配置文件,制定datadir的位置为/mydata [root@c66-moban ~]# vim /etc/my.cnf [mysqld] datadir=/mydata socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommendedto prevent assorted security risks symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/mydata/mysqld.pid 初始化mysql [root@c66-moban ~]# mysql_install_db--datadir=/mydata [root@c66-moban ~]# service mysqld start Starting mysqld: [ OK ] 如果无法启动mysqld,那么记得禁用selinux和iptables即可。 [root@c66-moban ~]# setenforce 0 [root@c66-moban ~]# getenforce Permissive [root@c66-moban ~]# service iptables stop
(3)安装vsftpd,pam_mysql于10.11.0.244
[root@c66-moban ~]# yum install -y vsftpd 由于pam_mysql包在epel源中,这里需先添加epel源。 [root@c66-moban~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo [root@c66-moban~]# yum install -y pam_mysql #pam_mysql在epel源中; [root@c66-moban~]# mysql mysql> create database vsftpd; #创建数据库vsftpd; QueryOK, 1 row affected (0.00 sec) #创建数据库用户,添加查询权限 mysql>grant select on vsftpd.* tovsftpd@192.168.1.120 identified by 'magedu'; QueryOK, 0 rows affected (0.00 sec) mysql> grant select on vsftpd.* tovsftpd@127.0.0.1 identified by 'magedu'; QueryOK, 0 rows affected (0.00 sec) mysql> use vsftpd Databasechanged mysql>flush privileges; QueryOK, 0 rows affected (0.01 sec) #在vsftpd数据库中创建表users mysql> create table users (id int AUTO_INCREMENTNOT NULL,name char(20) binary NOT NULL,password char(48) binary NOTNULL,primary key(id)); #插入用户vsftpd1 mysql> insert into users(name,password)values('vsftpd1',password('magedu')); QueryOK, 1 row affected (0.01 sec) mysql> select * from users; +----+---------+-------------------------------------------+ | id | name | password | +----+---------+-------------------------------------------+ | 1| vsftpd1 | *6B8CCC83799A26CD19D7AD9AEEADBCD30D8A8664 | +----+---------+-------------------------------------------+ 1 row in set (0.02 sec) pam_mysql配置 [root@ilinux ~]# vim /etc/pam.d/vsftpd #编辑配置文件,添加如下两行 auth required /lib64/security/pam_mysql.so user=vsftpd passwd=magedu hos t=10.11.0.244 db=vsftpd talbe=usersusercolumn=name passwdcolumn=password crypt=2 account required /lib64/security/pam.mysql.so user=vsftpd passwd=magedu hos t=10.11.0.244 db=vsftpd table=usersusercolumn=name passwdcolumn=password crypt=2 #创建虚拟用户映射的系统用户及对应目录 [root@ilinux ~]# useradd -s /sbin/nologin -d /ftproot vuser [root@ilinux ~]# chmod go+rw /ftproot/ [root@ilinux ~]# vim /etc/vsftpd/vsftpd.conf guest_enable=YES #允许虚拟用户访问; guest_username=vuser #虚拟用户映射为vuser; max_clients=200 #最多同时允许200个客户连接; anonymous_enable=YES #允许匿名用户访问; local_enable=YES anon_upload_enable=NO #禁用anonymous上传的权限; anon_max_rate=512000 #限制anonymous传输速率为512KB/s; anon_mkdir_write_enable=NO #不允许anonymous有创建目录的权限; anon_other_write_enable=NO #不允许anonymous有写入的权限; chroot_local_user=YES #对用户的访问只限制在主目录,不能访问其他目录; user_config_dir=/etc/vsftpd/vusers #虚拟用户配置目录; pam_service_name=vsftpd.mysql #配置虚拟账号权限 [root@ilinux ~]# mkdir /etc/vsftpd/vusers [root@ilinux ~]# vim /etc/vsftpd/vusers/vsftpd1 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES [root@ilinux ~]# yum install -y ftp [root@ilinux ~]# ftp 10.11.0.244 ftp: connect: Connection refused #出现连接被拒绝,执行以下命令解决。 [root@ilinux ~]# vsftpd /etc/vsftpd/vsftpd.conf &
访问测试:
[root@ilinux ~]# ftp 10.11.0.244 Connected to 10.11.0.244 (10.11.0.244). 220 (vsFTPd 2.2.2) Name (10.11.0.244:root):