第十八周

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

安装数据库,创建用户表。

[root@localhost ~]# yum install mariadb-server
MariaDB [(none)]> create database vsftpd;
MariaDB [vsftpd]> create table users(id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, name CHAR(20) BINARY NOT NULL, password CHAR(50) BINARY NOT NULL);
MariaDB [vsftpd]> insert into users(name, password) value('ftpuser1', password('password'));
MariaDB [vsftpd]> insert into users(name, password) value('ftpuser2', password('password'));
MariaDB [vsftpd]> grant select on vsftpd.* to ftp@'localhost' identified by 'password';     #本地数据库
MariaDB [vsftpd]> grant select on vsftpd.* to ftp@'127.0.0.1' identified by 'password';

安装配置ftp服务。

[root@localhost ~]# yum install vsftpd
[root@localhost ~]# tar xvf pam_mysql-0.7RC1.tar.gz
[root@localhost pam_mysql-0.7RC1]# yum install gcc make gcc-c++ pam-devel mariadb-devel 
[root@localhost pam_mysql-0.7RC1]# ./configure --with-mysql=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/security
[root@localhost pam_mysql-0.7RC1]# make && make install
[root@localhost pam_mysql-0.7RC1]# vim /etc/pam.d/vsftpd.mysql
auth required pam_mysql.so user=ftp passwd=password host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=ftp passwd=password host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
[root@localhost pam_mysql-0.7RC1]# useradd -s /sbin/nologin -d /var/ftproot vuser
[root@localhost pam_mysql-0.7RC1]# chmod 555 /var/ftproot/
[root@localhost pam_mysql-0.7RC1]# mkdir /var/ftproot/{upload,pub}
[root@localhost pam_mysql-0.7RC1]# setfacl -m u:vuser:rwx /var/ftproot/upload
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd.mysql
guest_enable=yes
guest_username=vuser

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

部署nfs服务

[root@localhost ~]# vim /etc/exports
/www 192.168.37.0/24(rw,no_root_squash)
[root@localhost ~]# exportfs -v
/www          	192.168.37.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)

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

[root@localhost ~]# yum install samba
[global]
        workgroup = SAMBA
        security = user                    #默认为账号密码登录验证
[www]
    comment = www
    path = /www
    browseable = yes
    read only = no
[root@localhost ~]# useradd -s /sbin/nologin -M samba
[root@localhost ~]# smbpasswd -a samba
[root@localhost ~]# setfacl -m u:samba:rwx /www/

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

部署rsync服务

[root@localhost media]# 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.37.0/24
[backup]
path = /opt/backup
comment = backup
read only = no
auth users = rsyncuser
secrets file = /etc/rsync.pass
[root@localhost media]# echo "rsyncuser:password" > /etc/rsyncd.pass
[root@localhost media]# chmod 600 /etc/rsync.pass
[root@localhost media]# mkdir /opt/backup
[root@localhost media]# systemctl status rsyncd.service 

安装inotify-tools

[root@localhost ~]# yum install inotify-tools
[root@localhost ~]# echo "password" > /etc/rsync.pass
[root@localhost ~]# chmod 600 /etc/rsync.pass 

编写同步脚本

[root@localhost ~]# vim inotify_rsync.sh
#!/bin/bash
SRC='/www'
DEST='rsyncuser@192.168.37.217::backup'
inotifywait -mrq --timefmt '%F %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 -az --delete --password-file=/etc/rsync.pass $SRC $DEST && echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/changelist.log
done
[root@localhost ~]# chmod +x inotify_rsync.sh
[root@localhost ~]# ./inotify_rsync.sh &

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

[root@localhost ~]# iptables -A INPUT -p tcp --dport 23 -j ACCEPT     #telnet
[root@localhost ~]# iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT    #web
[root@localhost ~]# iptables -A INPUT -p tcp -m multiport --dport 139,445 -j ACCEPT

ftp被动模式

[root@localhost ~]# lsmod | grep nf_conntrack_ipv4
nf_conntrack_ipv4      15053  1 
nf_defrag_ipv4         12729  1 nf_conntrack_ipv4
nf_conntrack          139264  5 nf_nat,nf_nat_ipv4,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_ipv4
[root@localhost ~]# modprobe nf_conntrack_ftp
[root@localhost ~]# vim /etc/sysconfig/iptables-config 
IPTABLES_MODULES="nf_conntrack_ftp"
[root@localhost ~]# iptables -I INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@localhost ~]# iptables -I INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT
[root@localhost ~]# iptables -I OUTPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值