網(wǎng)絡(luò)文件服務(wù)及l(fā)inux防火墻

1次绘、實(shí)現(xiàn)基于MYSQL驗(yàn)證的vsftpd虛擬用戶訪問

  • 實(shí)驗(yàn)環(huán)境
主機(jī) os 軟件 ip
vsftp服務(wù)器 centos7.6 vsftpd pam_mysql 172.16.2.137
mysql服務(wù)器 centos7.6 mariadb-server 172.16.2.138
  • mysql服務(wù)器配置
    安裝啟動(dòng)mysql服務(wù)
[root@node4 ~]# yum install -y mariadb-server
[root@node4 ~]# systemctl start mariadb

創(chuàng)建vsftp所需數(shù)據(jù)庫沫换、表,生成連接mysql用戶

[root@node4 ~]# mysql
# 新建數(shù)據(jù)庫
MariaDB [(none)]> create database vsftpd;
Query OK, 1 row affected (0.00 sec)
# 新建表
MariaDB [(none)]> use vsftpd
Database changed
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.06 sec)
# 表中錄入數(shù)據(jù)(ftp用戶及密碼)
MariaDB [vsftpd]> insert users (name,password) value('ftpuser1',password('centos'));
Query OK, 1 row affected (0.02 sec)

MariaDB [vsftpd]> insert users (name,password) value('ftpuser2',password('magedu'));
Query OK, 1 row affected (0.01 sec)
# 生成連接mysql用戶
MariaDB [vsftpd]> grant select on vsftpd.users to vsftpd@'172.16.2.%' identified by  '123456';
Query OK, 0 rows affected (0.00 sec)
  • ftp服務(wù)端配置
    安裝編譯所需軟件及vsftpd
yum -y groupinstall "Development Tools"
yum -y install mariadb-devel pam-devel vsftpd

編譯安裝pam_mysql

[root@node3 ~]# tar xvf pam_mysql-0.7RC1.tar.gz
[root@node3 ~]# cd pam_mysql-0.7RC1/
[root@node3 pam_mysql-0.7RC1]# ./configure  --with-pam-mods-dir=/lib64/security/
[root@node3 pam_mysql-0.7RC1]# make && make install

準(zhǔn)備ftp目錄

[root@node3 /]# mkdir -p /data/ftproot/upload
[root@node3 /]# mkdir -p /data/ftproot/upload
[root@node3 /]# chmod 555 /data/ftproot //去掉目錄寫權(quán)限
[root@node3 /]# setfacl -m u:vuser:rwx/data/ftproot/upload //針對(duì)vuser設(shè)置權(quán)限

編譯vsftpd配置文件

[root@node3 /]# vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd.mysql  //指定pam認(rèn)證文件
guest_enable=YES
guest_username=vuser  //指定用戶
user_config_dir=/etc/vsftpd/vusers.d/  //指定各用戶配置文件目錄

為不同的ftp用戶單獨(dú)配置各自的權(quán)限

[root@node3 /]# mkdir /etc/vsftpd/vusers.d/  
[root@node3 /]# vim /etc/vsftpd/vusers.d/ftpuser1
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

[root@node3 /]# vim /etc/vsftpd/vusers.d/ftpuser2
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/data/ftproot2

為不同的ftp用戶準(zhǔn)備目錄

[root@node3 /]# mkdir /data/ftproot2
[root@node3 /]# chmod 555 /data/ftproot2
[root@node3 /]# mkdir /data/ftproot2/upload
[root@node3 /]# setfacl -m u:vuser:rwx /data/ftproot2/upload

新建pam認(rèn)證文件

[root@node3 /]# vim /etc/pam.d/vsftpd.mysql
auth required pam_mysql.so user=vsftpd passwd=123456 host=172.16.2.138 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=123456 host=172.16.2.138 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

啟動(dòng)服務(wù)

[root@node3 /]# systemctl start vsftpd
  • 測(cè)試:
    使用客戶端登錄(使用不同用戶,上傳文件)
[root@node4 ~]# ftp 172.16.2.137
Connected to 172.16.2.137 (172.16.2.137).
220 (vsFTPd 3.0.2)
Name (172.16.2.137:root): ftpuser1
331 Please specify the password.
Password:
230 Login successful.
ftp> cd upload
250 Directory successfully changed.
ftp> put anaconda-ks.cfg  
local: anaconda-ks.cfg remote: anaconda-ks.cfg
227 Entering Passive Mode (172,16,2,137,236,176).
150 Ok to send data.
226 Transfer complete.
1357 bytes sent in 0.00815 secs (166.44 Kbytes/sec)
ftp> ls
227 Entering Passive Mode (172,16,2,137,48,202).
150 Here comes the directory listing.
-rw-------    1 1000     1000         1357 Apr 25 15:25 anaconda-ks.cfg
226 Directory send OK.


[root@node4 ~]# ftp 172.16.2.137
Connected to 172.16.2.137 (172.16.2.137).
220 (vsFTPd 3.0.2)
Name (172.16.2.137:root): ftpuser2
331 Please specify the password.
Password:
230 Login successful.

ftp> cd upload
250 Directory successfully changed.
ftp> put anaconda-ks.cfg
local: anaconda-ks.cfg remote: anaconda-ks.cfg
227 Entering Passive Mode (172,16,2,137,83,141).
150 Ok to send data.
226 Transfer complete.
1357 bytes sent in 5.8e-05 secs (23396.55 Kbytes/sec)
ftp> ls
227 Entering Passive Mode (172,16,2,137,230,150).
150 Here comes the directory listing.
-rw-------    1 1000     1000         1357 Apr 25 15:31 anaconda-ks.cfg
226 Directory send OK.

在ftp服務(wù)端查看目錄,可以看到上傳至不同的目錄

[root@node3 pam_mysql-0.7RC1]# tree /data
/data
├── ftproot
│   └── upload
│       └── anaconda-ks.cfg
└── ftproot2
    └── upload
        └── anaconda-ks.cfg

2稚伍、通過NFS實(shí)現(xiàn)服務(wù)器/www共享訪問弯予。

  • 實(shí)驗(yàn)環(huán)境
主機(jī) os 軟件 ip
nfs服務(wù)端 centos7.6 nfs nfs-utils 172.16.2.131
nfs客戶端 centos7.6 - 172.16.2.132
  • nfs服務(wù)端配置
    安裝軟件
[root@node1 /]#yum install -y nfs-utils

新建共享目錄

[root@node1 /]#mkdir www

新建nfs所需用戶和組

[root@node1 /]#groupadd -g 600 nfsuser
[root@node1 /]#useradd -u 600 -g 600 -r nfsuser -s /sbin/nologin

設(shè)置共享目錄權(quán)限

[root@node1 /]# setfacl -m u:nfsuser:rwx /www

編輯nfs配置文件

[root@node1 /]# vim /etc/exports
/www    172.16.2.0/24(rw,all_squash,anonuid=600,anongid=600)  指定以nfsuser用戶共享

重載配置文件

[root@node1 /]# exportfs -r

查看當(dāng)前共享

[root@node1 /]# exportfs -v
/www            172.16.2.0/24(sync,wdelay,hide,no_subtree_check,anonuid=600,anongid=600,sec=sys,rw,root_squash,all_squash)

重啟服務(wù)

[root@node1 /]# systemctl restart nfs
[root@node1 /]# systemctl restart rpcbind
  • nfs客戶端配置
    查看nfs服務(wù)器當(dāng)前共享
[root@node2 ~]# showmount -e 172.16.2.131
Export list for 172.16.2.131:
/www 172.16.2.0/24

掛載共享目錄

[root@node2 /]# mkdir /nfsdir
[root@node2 /]# mount 172.16.2.131:/www /nfsdir
  • 測(cè)試:
    在客戶端新建文件
[root@node2 nfsdir]# touch test1.txt
[root@node2 nfsdir]# ls
test1.txt

在服務(wù)器端查看文件屬性(屬主為nfsuser)

[root@node1 /]# ll /www
總用量 0
-rw-r--r-- 1 nfsuser nfsuser 0 4月  24 23:01 test1.txt

3、配置samba共享个曙,實(shí)現(xiàn)/www目錄共享

  • 實(shí)驗(yàn)環(huán)境
主機(jī) os 軟件 ip
samba服務(wù)端 centos7.6 samba 172.16.2.131
samba客戶端 centos7.6 cifs-utils 172.16.2.132
  • samba服務(wù)端配置

安裝Samba服務(wù)

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

新建Samba用戶

[root@node1 ~]# useradd -s /sbin/nologin  smbuser
[root@node1 ~]# smbpasswd -a smbuser
New SMB password:
Retype new SMB password:

新建共享目錄,并設(shè)置權(quán)限

[root@node1 ~]# mkdir /www
[root@node1 ~]# chmod 777 /www
[root@node1 ~]# touch /www/smb1.txt

編輯samba配置文件

[root@node1 www]# vim /etc/samba/smb.conf
[share]
        path = /www  //設(shè)置共享目錄文件
        write list = smbuser  //配置可寫用戶列表

啟動(dòng)服務(wù)

[root@node1 www]# systemctl restart smb.service  nmb
  • samba客戶端配置

安裝cifs-utils軟件

[root@node2 /]# yum install -y cifs-utils

掛載共享目錄

[root@node2 /]# mkdir /mnt/smb
[root@node2 ~]# mount -o user=smbuser1,password=123456 //172.16.2.131/share /mnt/smb

查看目錄內(nèi)容

[root@node2 ~]# cd /mnt/smb
[root@node2 smb1]# ls
smb1.txt

4锈嫩、使用rsync+inotify實(shí)現(xiàn)/www目錄實(shí)時(shí)同步

實(shí)驗(yàn)環(huán)境

主機(jī) os 軟件 ip
rsync客戶端 centos7.6 rsyncd 172.16.2.131
rsync服務(wù)端 centos7.6 inotify-tools 172.16.2.132
  • rsyncd服務(wù)端配置

配置rsyncd服務(wù)配置文檔

[root@node2 ~]# 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 = 172.16.2.0/24 //指明客戶端地址范圍
[backup]  
path = /backup/  //備份路徑
comment = backup
read only = no //關(guān)閉只讀
auth users = rsyncuser  //同步用戶
secrets file = /etc/rsync.pass //認(rèn)證文件

生成認(rèn)證文件(同步用戶、密碼)

[root@node2 ~]# echo "rsyncuser:123456" > /etc/rsync.pass
[root@node2 ~]# chmod 600 /etc/rsync.pass

新建備份目錄

[root@node2 ~]# mkdir /backup

啟動(dòng)服務(wù)

[root@node2 ~]# systemctl start rsyncd
  • rsync客戶端配置

設(shè)置epel源垦搬,安裝inotify-tools

[root@node1 ~]# yum install inotify-tools

生成認(rèn)證文件(只需密碼)

[root@node1 ~]# echo "123456" > /etc/rsync.pass
[root@node1 ~]# chmod 600 /etc/rsync.pass

測(cè)試同步功能

[root@node1 /]# rsync -avz --password-file=/etc/rsync.pass /www/ rsyncuser@172.16.2.132::backup
sending incremental file list
./
1111
1111111

sent 177 bytes  received 57 bytes  468.00 bytes/sec
total size is 0  speedup is 0.00

編輯實(shí)時(shí)同步腳本

[root@node1 /]# vim  /data/backup.sh
#!/bin/bash
SRC='/www/' DEST='rsyncuser@172.16.2.132::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

運(yùn)行腳本

[root@node1 /]# bash /data/backup.sh
  • 測(cè)試:
    模擬源目錄修改
[root@node1 ~]# touch /www/1233535

修改后立即查看備份目錄修改情況

[root@node2 ~]# ll /backup/
總用量 0
-rw-r--r-- 1 root root 0 4月  26 09:14 1111
-rw-r--r-- 1 root root 0 4月  26 09:16 1111111
-rw-r--r-- 1 root root 0 4月  26 09:21 1233535
-rw-r--r-- 1 root root 0 4月  26 08:45 test

5呼寸、使用iptable實(shí)現(xiàn): 放行telnet, ftp, web服務(wù),放行samba服務(wù),其他端口服務(wù)全部拒絕

加載模塊

[root@node1 netfilter]# vim /etc/sysconfig/iptables-config
IPTABLES_MODULES="nf_conntrack_ftp"
[root@node1 netfilter]# modprobe nf_conntrack_ftp

編輯iptables規(guī)則

[root@node1 netfilter]# iptables -A INPUT -p tcp --dport 23 -j ACCEPT
[root@node1 netfilter]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
[root@node1 netfilter]# iptables -A INPUT -p tcp -m multiport --dport 139,389,445 -j ACCEPT
[root@node1 netfilter]# iptables -A INPUT -p udp -m multiport --dport 137,138 -j ACCEPT
[root@node1 netfilter]# iptables -A INPUT -p tcp  --dport 21 -m state --state NEW -j ACCEPT
[root@node1 netfilter]# iptables -A INPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@node1 netfilter]# iptables -A OUTPUT  -m state --state ESTABLISHED -j ACCEPT
[root@node1 netfilter]# iptables -A INPUT -j DROP
[root@node1 netfilter]# iptables -A OUTPUT -j DROP

查看規(guī)則

[root@node1 netfilter]# iptables -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:23
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 139,389,445
   44  6588 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 137,138
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:21 state NEW
  525 37900 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
   13  2170 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
  134 12748 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state ESTABLISHED
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市猴贰,隨后出現(xiàn)的幾起案子对雪,更是在濱河造成了極大的恐慌舔哪,老刑警劉巖乔外,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件聊记,死亡現(xiàn)場(chǎng)離奇詭異扣泊,居然都是意外死亡题暖,警方通過查閱死者的電腦和手機(jī)邦蜜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門甲脏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拓诸,“玉大人碱鳞,你說我怎么就攤上這事桑李。” “怎么了窿给?”我有些...
    開封第一講書人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵贵白,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我崩泡,道長(zhǎng)禁荒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任角撞,我火速辦了婚禮圈浇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘靴寂。我一直安慰自己磷蜀,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開白布百炬。 她就那樣靜靜地躺著褐隆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪剖踊。 梳的紋絲不亂的頭發(fā)上庶弃,一...
    開封第一講書人閱讀 52,736評(píng)論 1 312
  • 那天衫贬,我揣著相機(jī)與錄音,去河邊找鬼歇攻。 笑死固惯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缴守。 我是一名探鬼主播葬毫,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼屡穗!你這毒婦竟也來了贴捡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤村砂,失蹤者是張志新(化名)和其女友劉穎烂斋,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體础废,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡汛骂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了评腺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帘瞭。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖歇僧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情锋拖,我是刑警寧澤诈悍,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站兽埃,受9級(jí)特大地震影響侥钳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜柄错,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一舷夺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧售貌,春花似錦给猾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至恒削,卻和暖如春池颈,著一層夾襖步出監(jiān)牢的瞬間尾序,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工躯砰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留每币,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓琢歇,卻偏偏與公主長(zhǎng)得像兰怠,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子矿微,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容