一、實現(xiàn)基于MYSQL驗證的vsftpd虛擬用戶訪問
1、安裝vsftpd甫贯、pam_mysql包
yum install -y vsftpd
# 由于centos7沒有pam_mysql的包所以需要編譯安裝
wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz
tar -xzvf pam_mysql-0.7RC1.tar.gz
# 安裝相關(guān)依賴包
yum -y groupinstall Development tools mariadb-devel pam-devel
# 進入pam安裝文件夾進行編譯安裝
./configure --with-pam-mods-dir=/lib64/security
make && make install
2、 配置數(shù)據(jù)庫
mysql -uroot -p
Enter password:
# 創(chuàng)建一個為ftpdbde 數(shù)據(jù)庫
mysql> create database vsftpd;
# 創(chuàng)建一個為ftp 用戶對vsftpd數(shù)據(jù)庫有最大權(quán)限
mysql> grant all on ftpdb.* to 'ftp'@'%' identified by 'ftp';
# 創(chuàng)建表
mysql> create table ftpusers(id int unsigned auto_increment primary key,name char(50),password char(48));
# 建立用戶ftp1 與 ftp2用戶
mysql> insert into ftpusers(name,password) values('ftp1',password('123456')),('ftp2',password('123456'));
mysql> flush privileges;
3看蚜、配置ftp服務(wù)器配置
# 配置pam的配置文件
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
# 添加下面兩項
guest_enable=YES
guest_username=ftpuser
# 修改下面一項叫搁,原系統(tǒng)用戶無法登錄
pam_service_name=vsftpd # 改成以下配置
pam_service_name=vsftpd.mysql
# 保存退出
# 防火墻開啟21端口允許訪問
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --reload
# 重啟vsftpd服務(wù)
systemctl restart vsftpd
systemctl enable vsftpd
4、測試ftp能否正常連接即可
二、通過NFS實現(xiàn)服務(wù)器/www共享訪問
# 服務(wù)端10.50.6.23安裝nfs-utils rpcbind組件
yum install -y nfs-utils rpcbind
# 啟動rpc服務(wù)以及設(shè)置開機自啟動
systemctl start rpcbind
systemctl enable rpcbind
# 啟動nfs服務(wù)設(shè)置開機自啟動
systemctl start nfs-server
systemctl enable nfs-server
# 配置防火墻放行nfs服務(wù)
firewall-cmd --permanent --add-service=nfs
firewall-cmd --reload
# 創(chuàng)建共享目錄渴逻,在/etc/exports配置文件中編輯配置即可
mkdir /www
vim /etc/exportfs
/www 10.0.0.0/8(rw,sync,fsid=0)
# 保存退出
# 客戶端10.50.6.22測試機器
yum install rpcbind
systemctl enable rpcbind.service
systemctl restart rpcbind.service
mount -v -t nfs 10.50.6.23:/www /mnt
df -h 驗證一下即可
三疾党、配置samba共享,實現(xiàn)/www目錄共享
# 服務(wù)端10.50.6.23安裝samba服務(wù)
yum install -y samba
# 服務(wù)器端創(chuàng)建samba認證用戶
groupadd samba
useradd samba -g samba -s /sbin/nologin -d /dev/null
smbpasswd -a samba
# 輸入兩遍自定義的密碼惨奕,我這里用用戶名samba作為密碼
# 編輯配置文件雪位,配置共享目錄/www
vim /etc/samba/smb.conf
# 文件結(jié)尾添加以下內(nèi)容
[www]
comment = www
path = /www
valid user = samba
writable = yes
browseable = yes
create mode = 0755
directory mode = 0755
# 保存退出
# 使用Windows電腦或者mac電腦連接samba服務(wù)器做測試即可
四、使用rsync+inotify實現(xiàn)/www目錄實時同步
# centos7 默認自帶rsync梨撞,修改服務(wù)端(10.50.6.23)配置文件
vim /etc/rsnycd.conf
uid = root
gid = root
use chroot = no # 如果上面的uid不是root用戶啟動雹洗,則更改為yes,如果是root則更改為弄
max connections = 4
pid file = /var/run/rsyncd.pid
exclude = lost+found/
log file = /var/log/rsyncd.log
log format = %t %a %m %f %b
transfer logging = yes
timeout = 900
ignore nonreadable = yes
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
hosts allow = 10.50.6.22 # 允許傳輸數(shù)據(jù)的ip 網(wǎng)段也可以卧波,生產(chǎn)建議精確到ip
[wwwroot] # 定義同步時的名稱
path = /www # 需要同步的路徑
comment = wwwroot # 與同步名稱相同
ignore errors
read only = no # 是否允許client上傳文件到server时肿,設(shè)置成yes 則client的數(shù)據(jù)無法推送到server上
write only =no # 是否允許client從server上拉取數(shù),設(shè)置成yes則client無法從server上拉取數(shù)據(jù)
list = no
auth userrs = rsync # 同步數(shù)據(jù)時用到的用戶港粱,非系統(tǒng)用戶螃成,不用創(chuàng)建
secrets file = /etc/rsyncd.passwd # 保存密碼和用戶名的文件,根據(jù)自己的需求進行生成查坪,路徑可以自定義
# 保存退出
# 創(chuàng)建用戶名密碼文件
vim /etc/rsyncd.passwd
rsync:rsync123
# 保存退出
# 設(shè)置密碼文件的權(quán)限寸宏,否則會報錯
chmod 600 /etc/rsyncd.passwd
# 啟動服務(wù)并加入到開機自啟動
systemctl rstart rsyncd
systemctl enable rsyncd
客戶端測試
# 創(chuàng)建用于存放server端密碼的文件不需要用戶名
vim /etc/rsyncd.passwd
rsync123
# 保存退出
# 創(chuàng)建存儲同步文件的文件夾
mkdir /www
# 運行同步server端文件命令
rsync -avzp --delete rsync@10.50.6.23::wwwroot /www --password-file=/etc/rsyncd.passwd
# 在/www文件夾創(chuàng)建一個文件,反之client同步到server
rsync -avzp /www rsync@10.50.6.23::wwwroot --password-file=/etc/rsyncd.passwd
注意:客戶端同步到server端切記文件夾/www與/www/是有區(qū)別的
/www 表示將整個文件夾同步到服務(wù)端的/www下面會單獨生成一個文件夾
/www/ 表示將客戶端的/www文件夾下面的文件同步到服務(wù)端的/www下面
參數(shù)說明
--delete
# 表示在同步時偿曙,server端/opt/ldx目錄中不論是刪除击吱,添加,修改遥昧,都會同步到client
# 如果不加該參數(shù),則只會同步server端新添加和修改的數(shù)據(jù)朵纷,server端刪除掉的數(shù)據(jù)炭臭,client端不會刪除
# 依然存在,該選項按個人需求選擇
/data
# 本地同步的路徑
--password-file=/root/rsyncd.passwd
# 本地存放密碼的文件
安裝inotify
# 首先在客戶端安裝
yum install inotify-tools -y
# 當要監(jiān)控的目錄袍辞、文件數(shù)量較多或者變化較頻繁時鞋仍,建議加大內(nèi)核的三個參數(shù)的值
vim /etc/sysctl.conf
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
# 保存退出
sysctl -p # 生效內(nèi)核配置
編輯監(jiān)聽腳本
#!/bin/bash
host=10.50.6.23
src=/www/
des=wwwroot
password=/etc/rsyncd.passwd
user=rsync
inotifywait=/usr/bin/inotifywait
${inotifywait} -mrq --timefmt '%Y%m%d %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib ${src} | while read files
do
rsync -avzP ${src} --timeout=100 --password-file=${password} ${user}@${host}::${des}
echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
done
# 保存退出
將腳本添加到開機自啟動
chmod +x /opt/inotify_monitor.sh
echo "nohup bash /opt/inotify_monitor.sh" >> /etc/rc.d/rc.local
以上腳本只能用于客戶端文件發(fā)生變更同步到服務(wù)端,無法做到服務(wù)端文件變更自動同步搅吁,需要在客戶端將rsync的服務(wù)搭建起來威创,服務(wù)端再搭建一套inotify環(huán)境即可進行雙向同步
五、使用iptable實現(xiàn): 放行telnet, ftp, web服務(wù),放行samba服務(wù),其他端口服務(wù)全部拒絕
iptables -A INPUT -p tcp -m multiport --dports 21,22,23,80,139,445 -j ACCEPT
iptables -I INPUT 2 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -j DROP