第十八周作业

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

主机:两台,一台为FTP服务器,一台为MySQL服务器

(1)配置MySQL服务,并创建相应库与表,并创建授权用户

[root@mysql ~]# yum install -y mariadb-server  #安装数据库服务

[root@mysql ~]# systemctl start mariadb

[root@mysql ~]# mysql

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 2

Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database vsftpd;  #创建库

Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> use vsftpd;

MariaDB [vsftpd]> CREATE TABLE users (  #创建用户表,用于保存用户信息

    -> id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,

    -> name CHAR(50) BINARY NOT NULL,

    -> password CHAR(48) BINARY NOT NULL);

Query OK, 0 rows affected (0.02 sec)

MariaDB [vsftpd]> insert into users (name,password) value('ftpuser1',password('centos'));  #添加FTP用户

Query OK, 1 row affected (0.00 sec)

MariaDB [vsftpd]> insert into users (name,password) value('ftpuser2',password('linux'));  #添加FTP用户

Query OK, 1 row affected (0.01 sec)

MariaDB [vsftpd]> grant select on vsftpd.* to vsftpd@'192.168.27.%' identified by 'centos';  #创建授权用户

Query OK, 0 rows affected (0.00 sec)

(2)在FTP服务器上安装FTP服务,并编译安装pam_mysql模块

[root@ftpserver ~]# yum install -y vsftpd #安装FTP服务

[root@ftpserver ~]# ll pam_mysql-0.7RC1.tar.gz    #准备pam_mysql安装包

-rw-r--r-- 1 root root 335240 Jan  9  2006 pam_mysql-0.7RC1.tar.gz

[root@ftpserver ~]# tar -xf pam_mysql-0.7RC1.tar.gz

[root@ftpserver ~]# cd pam_mysql-0.7RC1/

[root@ftpserver ~]# yum install -y gcc gcc-c++ pam-devel mariadb-devel    #先安装相关依赖包

[root@ftpserver pam_mysql-0.7RC1]# ./configure --with-pam-mods-dir=/lib64/security/    #编译安装pam_mysql模块

[root@ftpserver pam_mysql-0.7RC1]# make && make install

(3)创建pam认证文件

im /etc/pam.d/vsftpd.mysql

auth required pam_mysql.so user=vsftpd passwd=centos host=192.168.17.37 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

account required pam_mysql.so user=vsftpd passwd=centos host=192.168.17.37 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

(4)创建FTP虚拟用户与共享目录,并修改 /etc/vsftpd/vsftpd.conf

[root@ftpserver ~]# useradd -d /data/ftproot -s /sbin/nologin vuser #创建虚拟用户

[root@ftpserver ~]# chmod 555 /data/ftproot    #设置FTP目录权限

[root@ftpserver ~]# mkdir /data/ftproot/upload    #创建FTP上传目录

[root@ftpserver ~]# setfacl -m u:vuser:rwx /data/ftproot/upload    #设置上传目录权限

[root@ftpserver ~]# vim /etc/vsftpd/vsftpd.conf

pam_service_name=vsftpd.mysql    #修改此项

#添加以下三项

guest_enable=YES

guest_username=vuser

user_config_dir=/etc/vsftpd/vusers.d/    #独立用户配置目录

(5)启动FTP服务,用数据库中的用户测试

[root@ftpserver ftproot]# systemctl start vsftpd

[root@ftpserver ftproot]# ftp 192.168.17.27

Connected to 192.168.17.27 (192.168.17.27).

(vsFTPd 3.0.2)

Name (192.168.17.27:root): ftpuser1

Please specify the password.

Password:

Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ls

Entering Passive Mode (192,168,17,27,164,138).

Here comes the directory listing.

drwxrwxr-x    2 0        0              6 Mar 09 08:57 upload

Directory send OK

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

主机:两台,一台为NFS服务器,一台为客户端

(1)配置NFS服务器

[root@NFSserver ~]# mkdir /www #新建挂载目录

[root@NFSserver ~]# vim /etc/exports

/www 192.168.17.0/24(rw,root_squash)    #配置挂载目录

[root@NFSserver ~]# systemctl start nfs-server    #启动NFS服务

[root@NFSserver ~]# exportfs -v    #查看本机的NFS共享

/www              192.168.17.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)

[root@NFSserver ~]# touch /www/f1.txt  #创建一个文件

(2)客户端挂载NFS目录

[root@Client ~]# showmount -e 192.168.17.27 #查看主机的共享信息

Export list for 192.168.17.27:

/www 192.168.17.0/24

#开始手动挂载

[root@Client ~]# mount -o rw,nosuid,fg,hard,intr 192.168.17.27:/www /data/

[root@Client ~]# cd /data

[root@Client data]# ls -l  #可以挂载中的文件

total 0

-rw-r--r-- 1 root root 0 Mar  9 17:48 f1.txt

#如要实现开机挂载,则在 /etc/fstab 文件中添加一行

192.168.17.27:/www  /data  nfs  defaults  0  0

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

主机:一台服务器端(192.168.17.27),一台客户端(192.168.17.37);软件:samba (服务器端),cifs-utils (客户端)

(1)服务器端安装安装samba包

[root@server~]# yum install-y samba

(2)创建samba用户和组,并创建samba共享目录

[root@server ~]# groupadd -r smbgroup #新建smbgroup组

[root@server ~]# useradd -s /sbin/nologin -G smbgroup smbuser1  #新建smbuser1用户,并加入smbgroup组中 

[root@server ~]# id smbuser1

uid=1001(smbuser1) gid=1001(smbuser1) groups=1001(smbuser1),981(smbgroup)

[root@server ~]# smbpasswd -a smbuser1    #添加samba用户

New SMB password:    #密码 centos

Retype new SMB password:

Added user smbuser1.

[root@server ~]# useradd -s /sbin/nologin smbuser2

[root@server ~]# smbpasswd -a smbuser2

New SMB password:    #密码 linux

Retype new SMB password:

Added user smbuser2.

[root@server ~]# mkdir /www    #新建共享目录

[root@server ~]# chgrp smbgroup /www    #修改目录所属组

[root@server ~]# chmod 2775 /www

[root@server ~]# ls -ld /www

drwxr-xr-x 2 root smbgroup 6 Mar  9 19:05 /www

(3)修改samba配置文件 /etc/samba/smb.conf

[root@server ~]# vim /etc/samba/smb.conf

#在结尾处添加以下自定义设置

[smbshare]

        path = /www

        writeable = no

        write list = @smbgroup    #writeable = no时只有smbgroup组的用户才有写权限

(4)启动samba服务

[root@server~]# systemctl start smb nmb

(5)客户端安装cifs-utils包,并挂载

[root@client ~]# yum install -y cifs-utils

[root@client ~]# mkdir /data/smbuser1    #创建挂载目录

[root@client ~]# mkdir /data/smbuser2    #创建挂载目录

#手动挂载,smbuser1 用户

[root@client ~]# mount -o username=smbuser1,password=centos //192.168.17.27/smbshare /data/smbuser1

#手动挂载,smbuser2 用户,使用隐藏密码的方式

[root@client ~]# mount -o username=smbuser2 //192.168.17.27/smbshare /data/smbuser2

Password for smbuser2@//192.168.2.27/smbshare:  *****

(6)在客户端上测试,根据上面配置,smbuser1是有写权限的,smbuser2没有写权限

[root@client ~]# cd /data/smbuser1

[root@client smbuser1]# touch f1.txt    #smbuser1可以新建文件

[root@client smbuser1]# cd /data/smbuser2

[root@client smbuser2]# touch f2.txt    #smbuser2不可以新建文件

touch: cannot touch ‘f2.txt’: Permission denied

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

主机:一台服务器端(192.168.17.27),一台客户端(192.168.17.37)

(1)服务器端安装inotify-tools软件包和 rsync包

[root@server~]# yum install-y inotify-tools rsync

(2)服务器端生成验证文件

[root@server ~]# echo "rsyncuser:centos" > /etc/rsync.pass

[root@server ~]# chmod 600 /etc/rsync.pass

(3)服务器端准备要备份的目录

[root@server~]# mkdir/data

(4) 服务器端修改rsync的配置文件

[root@server ~]# vim /etc/rsyncd.conf

uid = root

gid = root

use chroot = no

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 = 192.168.17.0/24

[backup]

path = /data/

comment = backup

read only = no

auth users = rsyncuser

secrets file = /etc/rsync.pass

(5)服务器端启动rsync服务

[root@server~]# systemctl start rsyncd

(6)客户端配置密码文件 

[root@client ~]# echo "centos" > /etc/rsync.pass

[root@client ~]# chmod 600 /etc/rsync.pass

(7)客户端测试同步数据 rsync -avz --password-file=/etc/rsync.pass /data/ rsyncuser@rsync服务器IP::/data

[root@client ~]# cd /data

[root@client data]# touch f1.txt    #在客户端目录新建一个文件

[root@client data]# ll

total 0

-rw-r--r-- 1 root root 0 Mar  9 20:03 f1.txt

[root@server ~]# ll /data/    #此时服务器端备份目录还没有文件

total 0

[root@client data]# rsync -avz --password-file=/etc/rsync.pass /data/ rsyncuser@192.168.17.27::backup    #使用rsync进行同步

sending incremental file list

./

f1.txt

sent 104 bytes  received 38 bytes  284.00 bytes/sec

total size is 0  speedup is 0.00

#返回服务器端查看

[root@server ~]# ll /data/    #文件已同步过来

total 0

-rw-r--r-- 1 root root 0 Mar  9 20:03 f1.txt

(8)上面的同步是一次性的,要实现实时同步,可用脚本实现,后台运行即可,脚本如下

[root@client ~]# cat inotify_rsync.sh

#!/bin/bash

SRC='/data/'  #本地文件夹

DEST='rsyncuser@192.168.17.27::backup'    # rsyncuser@rsync服务器IP::backup'

LOG='/var/log/changelist.log'  #日志输出

inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w %f' -e create,delete,moved_to,close_write,attrib ${SRC} | while read DATE TIME DIR FILE;do

  FILEPATH=${DIR}${FILE}

  rsync -az --delete --password-file=/etc/rsync.pass $SRC $DEST && echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> ${LOG}

done

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

[root@server ~]# iptables -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT

[root@server ~]# iptables -A OUTPUT -p tcp -m state --state NEW,ESTABLISHED -j ACCEPT

[root@server ~]# iptables -A INPUT -p tcp -m multiport --dports 20:23,80,139,445 -m state --state NEW -j ACCEPT

[root@server ~]# iptables -A INPUT -p udp -m multiport --dports 137,138 -m state --state NEW -j ACCEPT

[root@server ~]# iptables -A INPUT -j DROP

[root@server ~]# iptables -A OUTPUT -j DROP

[root@server ~]# iptables -vnL

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target    prot opt in    out    source              destination       

63260 ACCEPT    tcp  --  *      *      0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED

    0 ACCEPT    tcp  --  *      *      0.0.0.0/0            0.0.0.0/0            multiport dports 20:23,80,139,445 state NEW

  702 ACCEPT    udp  --  *      *      0.0.0.0/0            0.0.0.0/0            multiport dports 137,138 state NEW

7085 DROP      all  --  *      *      0.0.0.0/0            0.0.0.0/0         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target    prot opt in    out    source              destination       

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target    prot opt in    out    source              destination       

36508 ACCEPT    tcp  --  *      *      0.0.0.0/0            0.0.0.0/0            state NEW,ESTABLISHED

    0 DROP      all  --  *      *      0.0.0.0/0            0.0.0.0/0

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343