第二十三周作业

Posted dcdc5999

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二十三周作业相关的知识,希望对你有一定的参考价值。

1、实现基于mysql验证的vsftpd虚拟用户访问

mysql服务器
1.安装mariadb-server
[root@zuoye1 ~]# yum install -y mariadb-server
[root@zuoye1 ~]# systemctl start mariadb
2.在数据库上建立验证用数据库和表
[root@zuoye1 ~]# mysql
MariaDB [(none)]> create database vsftpd;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> use vsftpd
Database changed
MariaDB [vsftpd]> create table user(id int auto_increment not null primary key, name char(30) binary not null,password char(40) binary not null);
Query OK, 0 rows affected (0.30 sec)
添加用户
MariaDB [vsftpd]> insert into user(name,password) values(\'ftp_zhao\',password(\'123456\'));
MariaDB [vsftpd]> insert into user(name,password) values(\'ftp_qian\',password(\'123456\'));
创建数据库用户
 MariaDB [vsftpd]> GRANT SELECT ON vsftpd.* TO vsftpd@\'10.0.0.%\' IDENTIFIED BY \'123456\';
 MariaDB [vsftpd]> FLUSH PRIVILEGES;
VSFTPD服务器 
 3.安装vsftpd和pam_mysql
 [root@zuoye2 ~]# yum install -y vsftpd
 [root@zuoye2 ~]# yum -y install vsftpd gcc gcc-c++ make mariadb-devel pam-devel
[root@zuoye2 ~]# wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz
[root@zuoye2 ~]# tar xvf pam_mysql-0.7RC1.tar.gz
[root@zuoye2 ~]# cd pam_mysql-0.7RC1
[root@zuoye2 pam_mysql-0.7RC1]#./configure --with-pam-mods-dir=/lib64/security
[root@zuoye2 pam_mysql-0.7RC1]# make install 
4.编辑文件
[root@zuoye2 pam_mysql-0.7RC1]# cat /etc/pam.d/vsftpd.mysql
auth required pam_mysql.so user=vsftpd passwd=123456 host=10.0.0.100 db=vsftpd 
table=user usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=123456 host=10.0.0.100
db=vsftpd table=user usercolumn=name passwdcolumn=password crypt=2
5.建立相应用户和vsftpd配置文件
[root@zuoye2 pam_mysql-0.7RC1]# useradd -s /sbin/nologin -d /data/ftp -r vuser
[root@zuoye2 pam_mysql-0.7RC1]# mkdir -pv /data/ftp/upload
[root@zuoye2 pam_mysql-0.7RC1]# setfacl -m u:vuser:rwx /data/ftp/upload
[root@zuoye2 pam_mysql-0.7RC1]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd.mysql
user_config_dir=/etc/vsftpd/conf.d/ 
[root@zuoye2 pam_mysql-0.7RC1]# systemctl start vsftpd
6.配置不同用户的不同权限
[root@zuoye2 ~]# mkdir /etc/vsftpd/conf.d
[root@zuoye2 ~]# cat /etc/vsftpd/conf.d/ftp_zhao
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/data/ftp

2、通过NFS实现服务器/www共享访问。

NFSserver
1.创建用户和目录
[root@zuoye1 ~]# mkdir /www
[root@zuoye1 ~]# chmod -R 777  /www
[root@zuoye1 ~]# yum -y install nfs-utils
[root@zuoye1 ~]# cat /etc/exports
/www   *(rw)
[root@zuoye1 ~]# exportfs -r 
[root@zuoye1 ~]# systemctl start nfs

NFSclient
[root@zuoye2 home]# mkdir /www
[root@zuoye2 home]# yum -y install nfs-utils
[root@zuoye2 home]# mount 10.0.0.100:/www /www

3、配置samba共享,实现/www目录共享

服务器端
安装软件
[root@zuoye1 ~]# yum install -y samba
创建用户和组
[root@zuoye1 ~]# groupadd -r samgroup
[root@zuoye1 ~]# useradd -s /sbin/nologin -G samgroup sam
[root@zuoye1 ~]# smbpasswd -a sam
创建目录
[root@zuoye1 ~]# mkdir /www
[root@zuoye1 ~]# chgrp samgroup /www
[root@zuoye1 ~]# chmod 2775 /www
[root@zuoye1 ~]# ls /www
s1

服务器配置
[root@zuoye1 ~]# cat /etc/samba/smb.conf
[share]
path = /www
write list =@samgroup
[root@zuoye1 ~]# systemctl start smb nmb
客户端
安装软件
[root@zuoye2 ~]# yum install -y cifs-utils
创建目录
[root@zuoye2 ~]# mkdir /www
[root@zuoye2 ~]# mount -o username=sam //10.0.0.100/share /www
测试
[root@zuoye2 ~]# ls /www
s1
[root@zuoye2 ~]# touch /www/s2
[root@zuoye2 ~]# ls -l /www
total 0
-rw-r--r-- 1 1001 995 0 Sep  8 09:06 s1
-rw-r--r-- 1 1001 995 0 Sep  8 09:07 s2
[root@zuoye1 ~]# ls -ltr /www
total 0
-rw-r--r--. 1 sam samgroup 0 Sep  8 09:06 s1
-rw-r--r--. 1 sam samgroup 0 Sep  8 09:07 s2

4、使用rsync+inotify实现/www目录实时同步

服务器端
安装软件
添加源
[root@zuoye1 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@zuoye1 ~]# yum install -y rsync
[root@zuoye1 ~]# yum install -y inotify-tools
配置文件
[root@zuoye1 ~]# cat /etc/rsyncd.conf 
 uid = root
 gid = root
max connections = 0
ignore errors
exclude = lost+found/
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
reverse lookup = no
hosts allow = 10.0.0.0/24
[www]
path = /www
comment = backip dir 
read only = no 
auth users = rsyncuser
secrets file = /etc/rsync.pas
生成验证文件
[root@zuoye1 ~]# echo "rsyncuser:123456" > /etc/rsync.pas
[root@zuoye1 ~]# chmod 600 /etc/rsync.pas
[root@zuoye1 ~]# systemctl start rsyncd
客户端
配置验证文件
[root@zuoye2 ~]# echo "123456" > /etc/rsync.pas
[root@zuoye2 ~]# chmod 600 /etc/rsync.pas
[root@zuoye2 ~]# yum install -y rsync
[root@zuoye2 ~]# rsync rsync://10.0.0.100
www             backip dir
测试
[root@zuoye2 ~]# rsync -avz --delete --password-file=/etc/rsync.pas /www/ rsyncuser@10.0.0.100::www 
sending incremental file list
./

sent 51 bytes  received 19 bytes  140.00 bytes/sec
total size is 0  speedup is 0.00
在客户端上创建脚本实现实时同步,将客户端的/www目录实时同步到服务器的/www目录下
[root@zuoye2 www]# cat /root/rsync.sh 
#!/bin/bash
SRC=\'/www/\'   
DEST=\'rsyncuser@10.0.0.100::www\'
rpm -q rsync &> /dev/null || yum -y install rsync
inotifywait  -mrq  --exclude=".*\\.swp" --timefmt \'%Y-%m-%d %H:%M:%S\' --format \'%T %w %f\' -e create,delete,moved_to,close_write,attrib ${SRC} |while read DATE TIME DIR FILE;do
        FILEPATH=${DIR}${FILE}
       rsync -avz --delete  --password-file=/etc/rsync.pas $SRC $DEST && echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/changelist.log
done

5、使用iptable实现: 放行telnet, ftp, web服务,放行samba服务,其他端口服务全部拒绝

[root@zuoye1 ~]#iptables -A INPUT  -p tcp -m multiport --dports 20,21,22,23,80,139,445 -j ACCEPT
[root@zuoye1 ~]#iptables -A INPUT  -p udp -m multiport --dports 137,138 -j ACCEPT
[root@zuoye1 ~]#iptables -A INPUT    -j REJECT
[root@zuoye1 ~]# iptables -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  280 14996 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 20,21,23,80,139,445
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 137,138
   27  3150 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

以上是关于第二十三周作业的主要内容,如果未能解决你的问题,请参考以下文章

-考研第二十三周总结-

第二十三周微职位elk日志系统

第三周第二次作业

第三周作业

1903021130-杨建-Java第三周作业-eclipse软件下编写代码并运行

解题报告——-2018级2016第二学期第三周作业