linux練習題十八

目錄

 

一、實現基於MYSQL驗證的vsftpd虛擬用戶訪問

二、通過NFS實現服務器/www共享訪問。

三、配置samba共享,實現/www目錄共享

四、使用rsync+inotify實現/www目錄實時同步

五、使用iptable實現: 放行telnet, ftp, web服務,放行samba服務,其他端口服務全部拒絕


一、實現基於MYSQL驗證的vsftpd虛擬用戶訪問

兩臺主機,一臺FTP服務器,一臺數據庫服務器
FTP服務器:192.168.44.7
數據庫服務器:192.168.44.17
一、安裝所需要包和包組:
#在數據庫服務器上安裝包:
• Centos7:在數據庫服務器上安裝
yum –y install mariadb-server
systemctl start mariadb.service
systemctl enable mariadb
#在FTP服務器上安裝vsftpd和pam_mysql包
• centos7:無對應rpm包,需手動編譯安裝
yum -y groupinstall "Development Tools"
yum -y install mariadb-devel pam-devel vsftpd gcc gcc-c++
tar xvf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1/
./configure --with-pam-mods-dir=/lib64/security --with-mysql=/usr --with-pam=/usr
make && make install

二、在數據庫服務器上創建虛擬用戶賬號
• 1.建立存儲虛擬用戶數據庫和連接的數據庫用戶
mysql> CREATE DATABASE vsftpd;
mysql> SHOW DATABASES;
#ftp服務和mysql不在同一主機:
mysql> GRANT SELECT ON vsftpd.* TO vsftpd@'192.168.44.%' IDENTIFIED BY 'centos';
• 2.準備相關表
mysql> USE vsftpd;
Mysql> SHOW TABLES;
mysql> CREATE TABLE users (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
name CHAR(50) BINARY NOT NULL,
password CHAR(48) BINARY NOT NULL
);
#注:BINARY表示數據區分大小寫
mysql>DESC users;
#測試連接
mysql -uvsftpd -h 192.168.44.17 -pcentos
mysql> SHOW DATABASES;
• 3.添加虛擬用戶
#根據需要添加所需要的用戶,爲了安全應該使用PASSWORD函數加密其密碼後存儲
mysql> DESC users;
mysql> INSERT INTO users(name,password) values('user1',password('centos'));
mysql> INSERT INTO users(name,password) values('user2',password('centos'));
mysql> SELECT * FROM users;

三、在FTP服務器上配置vsftpd服務
#1.在FTP服務器上建立pam認證所需文件
vi /etc/pam.d/vsftpd.mysql 添加如下兩行
auth required pam_mysql.so user=vsftpd passwd=magedu host=192.168.44.17 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=magedu host=192.168.44.17 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
#注意:參考README文檔,選擇正確的加密方式
#crypt是加密方式, 0表示不加密, 1表示crypt(3)加密, 2表示使用mysql
#password()函數加密, 3表示md5加密, 4表示sha1加密
配置字段說明:
• auth 表示認證
• account 驗證賬號密碼正常使用
• required 表示認證要通過
• pam_mysql.so模塊是默認的相對路徑,是相對/lib64/security/路徑而言,也可以寫絕對路徑;後面爲給此模塊傳遞的參數
• user=vsftpd爲登錄mysql的用戶
• passwd=magedu 登錄mysql的的密碼
• host=mysqlserver mysql服務器的主機名或ip地址
• db=vsftpd 指定連接msyql的數據庫名稱
• table=users 指定連接數據庫中的表名
• usercolumn=name 當做用戶名的字段
• passwdcolumn=password 當做用戶名字段的密碼
• crypt=2 密碼的加密方式爲mysql password()函數加密
#2.建立相應用戶和修改vsftpd配置文件,使其適應mysql認證
#建立虛擬用戶映射的系統用戶及對應的目錄
useradd -s /sbin/nologin -d /var/ftproot vuser
chmod 555 /var/ftproot centos7 需除去ftp根目錄的寫權限
mkdir /var/ftproot/{upload,pub}
setfacl -m u:vuser:rwx /var/ftproot/upload
#確保/etc/vsftpd/vsftpd.conf中已經啓用了以下選項
anonymous_enable=YES
#添加下面兩項
guest_enable=YES
guest_username=vuser
#修改下面一項,原系統用戶無法登錄
pam_service_name=vsftpd.mysql

四、啓動vsftpd服務
systemctl start vsftpd
systemctl enable vsftpd
查看端口開啓情況
netstat -tnlp |grep :21

五、測試:利用FTP客戶端工具,以虛擬用戶登錄驗證結果
• tail /var/log/secure

六、在FTP服務器上配置虛擬用戶具有不同的訪問權限
    vsftpd可以在配置文件目錄中爲每個用戶提供單獨的配置文件以定義其ftp服務訪問權限,每個虛擬用戶的配置文件名同虛擬用戶的用戶名。配置文件目錄可以是任意未使用目錄,只需要在vsftpd.conf指定其路徑及名稱即可
• 1、配置vsftpd爲虛擬用戶使用配置文件目錄
vim /etc/vsftpd/vsftpd.conf
添加如下選項
user_config_dir=/etc/vsftpd/vusers_config
• 2、創建所需要目錄,併爲虛擬用戶提供配置文件
mkdir /etc/vsftpd/vusers_config/
cd /etc/vsftpd/vusers_config/
touch wang mage
• 3、配置虛擬用戶的訪問權限
虛擬用戶對vsftpd服務的訪問權限是通過匿名用戶的相關指令進行的。如要讓用戶wang具有上傳文件的權限,可修改/etc/vsftpd/vusers_config/wang文件,在裏面添加如下選項並設置爲YES即可,只讀則設爲NO
注意:需確保對應的映射用戶對於文件系統有寫權限
anon_upload_enable={YES|NO}
anon_mkdir_write_enable={YES|NO}
anon_other_write_enable={YES|NO}
local_root=/ftproot 登錄目錄改變至指定的目錄

 

 

 

二、通過NFS實現服務器/www共享訪問。

NFS服務器:

#啓動服務
systemctl start nfs-server
systemctl enable nfs-server
mkdir /www
chown nfsnobody.nfsnobody /www
#定義導出目錄
vi /etc/exports
/www 192.168.44.0/24(rw,all_squash)
#重讀配置文件
exportfs –r

客戶端配置:

實現持久掛載:

mkdir /mnt/nfsshare
vim /etc/fstab
192.168.44.7:/www /mnt/nfsshare    nfs    rw,nosuid,fg,hard,intr    0 0
mount -a

 持久掛載如下圖:

實現自動掛載:

#父目錄
vim /etc/auto.master
/-   /etc/auto.test    注:/-表示絕對路徑
#子目錄
vim /etc/auto.test
/mnt/nfsshare    -fstype=nfs,rw    192.168.44.7:/www
#重啓autofs服務
systemctl restart autofs.service

自動掛載如下圖:

 

 

 

三、配置samba共享,實現/www目錄共享

1、在samba服務器上安裝samba包
yum -y install samba
2、創建samba用戶和組
groupadd -r admins
useradd -s /sbin/nologin -G admins yan
smbpasswd -a yan
3、創建samba共享目錄,並設置SElinux
mkdir -pv /testdir/smbshare/www
chgrp admins /testdir/smbshare/www    #注意每級目錄都需要有admins用戶組權限
chmod 2775 /testdir/smbshare/www
semanage fcontext -a -t samba_share_t '/testdir/smbshare/www(/.*)?'
restorecon -vvFR /testdir/smbshare/www
4、 samba服務器配置
vim /etc/samba/smb.conf
security = user
passdb backend = tdbsam
[share1]
path = /testdir/smbshare/www
writeable = no
write list = @admins
#啓動服務
systemctl start smb nmb
systemctl enable smb nmb
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload
5、 samba客戶端訪問
#安裝包
yum -y install cifs-utils
#查看共享列表
smbclient -L 192.168.44.7 -U yan%centos
#訪問共享目錄
smbclient //192.168.44.7/share1 -U yan%centos
#手動臨時掛載
mkdir /mnt/yan
mount -o user=yan,password=centos //192.168.44.7/share1 /mnt/yan

實現持久掛載

#添加掛載配置
vim /etc/fstab    #注:如果是centos6掛載centos7的共享目錄需要加上sec=ntlmssp選項
//192.168.44.7/share1    /mnt/yan    cifs    credentials=/etc/smb.txt    0 0
#創建鑑權文件
vim /etc/smb.txt
username=yan
password=centos
#安全設置
chmod 600 /etc/smb.txt
#加載配置
mount -a

 

實現自動掛載

#添加autofs主配置
vim /etc/auto.master
/-    /etc/auto.test
#添加子配置
vim /etc/auto.test    #注:如果是centos6掛載centos7的共享目錄需要加上sec=ntlmssp選項
/mnt/yan    -fstype=cifs,credentials=/etc/smb.txt    ://192.168.44.7/share1
#重啓autofs服務
systemctl restart autofs.service

 

 

 

四、使用rsync+inotify實現/www目錄實時同步

場景:客戶端/www目錄下文件實時同步至服務端/backup目錄下

 

服務端設置:

配置 rsync 服務器端的配置文件
vi /etc/rsyncd.conf
#以root用戶、root組的身份運行進程
uid = root
gid = root
#不允許切根
use chroot = no
#最大連接數,0不限制
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
#反向解析,ip地址反向解析成名稱
reverse lookup = no
#客戶端允許的ip列表
hosts allow = 192.168.44.0/24
#同步目錄設置
[backup]
path = /backup/
#描述
comment = backup
#可寫
read only = no
auth users = rsyncuser
secrets file = /etc/rsync.pass

#服務器端生成驗證文件

echo "rsyncuser:centos" > /etc/rsync.pass

chmod 600 /etc/rsync.pass

#服務器端準備目錄

mkdir /backup

#服務器端啓動rsync服務

rsync --daemon #可加入/etc/rc.d/rc.local實現開機啓動

systemctl start rsyncd #CentOS 7

 

客戶端設置

#安裝inotify工具
yum install -y inotify-tools
#客戶端配置密碼文件
echo "centos" > /etc/rsync.pass
chmod 600 /etc/rsync.pass
#客戶端測試同步數據
rsync -avz --password-file=/etc/rsync.pass /www/ [email protected]::backup
把本機的/data目錄自動同步到遠程服務器的backup定義的同步目錄裏面

注意:不加/是同步整個目錄,加/只是同步裏面的文件。

客戶端創建inotify_rsync.sh腳本

#!/bin/bash
SRC='/www/'
DEST='rsyncuser@rsync服務器IP::backup'
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">>/var/log/changelist.log
done

同步測試:

客戶端運行腳本:

chmod +x inotify_rsync.sh

./inotify_rsync.sh

服務器端監控同步狀態:

watch -n1 ls -l /backup/

 

 

 

五、使用iptable實現: 放行telnet, ftp, web服務,放行samba服務,其他端口服務全部拒絕

ftp tcp:20、21

telnet tcp:23

web tcp:80、443

samba udp:137、138    

            tcp:139、445

iptables -A INPUT -p tcp -m multiport --dports  80,443,20,21,23,139,445  -j ACCEPT
iptables -A INPUT -p udp -m multiport --dports 137,138 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
#永久保存策略
yum install iptables-services
iptables-save > /etc/sysconfig/iptables
systemctl enable iptables.service

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章