溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

mysql中實現(xiàn)vsftp虛擬用戶及iptables用法

發(fā)布時間:2020-05-19 16:31:54 來源:網(wǎng)絡(luò) 閱讀:236 作者:三月 欄目:系統(tǒng)運維

下面講講關(guān)于mysql中實現(xiàn)vsftp虛擬用戶及iptables用法,文字的奧妙在于貼近主題相關(guān)。所以,閑話就不談了,我們直接看下文吧,相信看完mysql中實現(xiàn)vsftp虛擬用戶及iptables用法這篇文章你一定會有所受益。

vsftp基于mysql創(chuàng)建虛擬用戶

1.首先安裝環(huán)境

yum groupinstall -y "Development Tools" "Server PlatformDevelopment"

yum install -y pam-devel mariadb-devel mariadb-server vsftpd lftp ftp
下載最新的pam-mysql
http://pam-mysql.sourceforge.net/
編譯安裝pam-mysql
tar xf  pam_mysql-0.7RC1.tar.gz

cd  pam_mysql-0.7RC1

./configure --with-pam=/usr --with-mysql=/usr --with-pam-mods-dir=/usr/lib64/security

make

make install

2  配置vsftp

建立pam認證所需文件

vim /etc/pam.d/vsftpd.mysql

添加如下兩行
auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=centos host=127.0.0.1 db=vsftpd table=user usercolumn=name passwdcolumn=password crypt=2

account required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=centos host=127.0.0.1 db=vsftpd table=user usercolumn=name passwdcolumn=password crypt=2

建立虛擬用戶映射的系統(tǒng)用戶及對應(yīng)的目錄

 mkdir /ftproot

 useradd -s /sbin/nologin -d ftproot vuser

創(chuàng)建測試目錄

 mkdir /ftproot/{pub,upload}
 cd /ftproot
 chown vuser:vuser upload

修改vsftpd的配置文件,使其適應(yīng)mysql認證

vim /etc/vsftpd/vsftpd.conf

修改pam_service_name選項的值如下所示

pam_service_name=vsftpd.mysql

添加以下兩行:

guest_enable=YES

guest_username=vuser

配置虛擬用戶具有不同的訪問權(quán)限
創(chuàng)建所需目錄,并為虛擬用戶提供配置文件

mkdir /etc/vsftpd/vusers_conf

cd /etc/vsftpd/vusers_conf

配置虛擬用戶具有不同的訪問權(quán)限:

vim tom 寫入如下內(nèi)容

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

vim jerry

anon_upload_enable=NO

anon_mkdir_write_enable=NO

anon_other_write_enable=NO

3     創(chuàng)建sql中的數(shù)據(jù)

MariaDB [(none)]> CREATEDATABASE vsftpd;
MariaDB [(none)]>use vsftpd;
MariaDB [vsftpd]> create table user(name char(30),password char(50));
MariaDB [vsftpd]> INSERT INTO vsftpd.user(name,password) VALUES ('tom',PASSWORD('lxq')),('jerry',PASSWORD('lxq'));
MariaDB [(none)]>create user vsftpd@localhost identified by 'centos'
MariaDB [(none)]>grant all privileges on vsftp.user to vsftpd@localhost identified by 'centos';
MariaDB [(none)]>FLUSHPRIVILEGES;

4測試
登陸tom

mysql中實現(xiàn)vsftp虛擬用戶及iptables用法

隨便上傳一個文件
mysql中實現(xiàn)vsftp虛擬用戶及iptables用法

登陸jerry,上傳失敗mysql中實現(xiàn)vsftp虛擬用戶及iptables用法

詳述iptables五鏈

四表五鏈概念

filter表——過濾數(shù)據(jù)包
Nat表——用于網(wǎng)絡(luò)地址轉(zhuǎn)換(IP、端口)
Mangle表——修改數(shù)據(jù)包的服務(wù)類型、TTL、并且可以配置路由實現(xiàn)QOS
Raw表——決定數(shù)據(jù)包是否被狀態(tài)跟蹤機制處理

INPUT鏈——進來的數(shù)據(jù)包應(yīng)用此規(guī)則鏈中的策略
OUTPUT鏈——外出的數(shù)據(jù)包應(yīng)用此規(guī)則鏈中的策略
FORWARD鏈——轉(zhuǎn)發(fā)數(shù)據(jù)包時應(yīng)用此規(guī)則鏈中的策略
PREROUTING鏈——對數(shù)據(jù)包作路由選擇前應(yīng)用此鏈中的規(guī)則(所有的數(shù)據(jù)包進來的時侯都先由這個鏈處理)
POSTROUTING鏈——對數(shù)據(jù)包作路由選擇后應(yīng)用此鏈中的規(guī)則(所有的數(shù)據(jù)包出去的時侯都先由這個鏈處理
        #清空iptables規(guī)則
[root@localhost ~]# iptables -F
[root@localhost ~]# iptables -vnL
Chain INPUT (policy ACCEPT 6 packets, 348 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 5 packets, 380 bytes)
 pkts bytes target     prot opt in     out     source               destination

#安裝所需軟件
[root@localhost ~]#  yum -y install httpd telnet-server samba tftp-server vsftpd mariadb-server

#設(shè)置云服務(wù)器輸入和輸出默認策略為DROP
[root@localhost ~]# iptables -P INPUT DROP
[root@localhost ~]# iptables -P OUTPUT DROP

(1)多端口匹配

#接收流經(jīng)22和80端口的報文,即可以正常使用ssh和httpd服務(wù)
[root@localhost ~]# iptables -I INPUT  -d 192.168.186.131 -p tcp -m multiport --dports 22,80 -j ACCEPT  
[root@localhost ~]# iptables -I OUTPUT  -s 192.168.186.131 -p tcp -m multiport --sports 22,80 -j ACCEPT 

(2)連接追蹤

#允許指定范圍的ip地址連接23端口
[root@localhost ~]# iptables -I INPUT 3 -d 192.168.186.131 -p tcp --dport 23 -m iprange --src-range 192.168.186.130-192.168.186.135 -j ACCEPT
[root@localhost ~]# iptables -I OUTPUT 3 -s 192.168.186.131 -p tcp --sport 23 -m iprange --dst-range 192.168.186.130-192.168.186.135 -j ACCEPT

(3)字符串匹配

#將默認策略改回ACCEPT
[root@localhost ~]# iptables -P INPUT ACCEPT
[root@localhost ~]# iptables -P OUTPUT ACCEPT

#當數(shù)據(jù)報文中出現(xiàn)"gaain"就不發(fā)送
[root@localhost ~]# iptables -I OUTPUT -s 192.168.186.131 -m string --algo kmp --string "gaain" -j REJECT 

(4)時間匹配

#開放同步時間服務(wù)端口
[root@localhost ~]# iptables -I OUTPUT -s 192.168.186.131 -p udp -m multiport --dports 123,323 -j ACCEPT
[root@localhost ~]# iptables -I INPUT -d 192.168.186.131 -p udp -m multiport --sports 123,323 -j ACCEPT

#添加規(guī)則
#指定ip在每天16點~23點可以連接23端口
[root@localhost ~]# iptables -I INPUT -d 192.168.186.131 -p tcp --dport 23 -m iprange --src-range 192.168.186.130-192.168.186.135 -m time --timestart 12:00:00 --timestop 23:00:00  -j ACCEPT
[root@localhost ~]# iptables -I OUTPUT -s 192.168.186.131 -p tcp --sport 23 -m iprange --dst-range 192.168.186.130-192.168.186.135 -m time --timestart 12:00:00 --timestop 23:00:00  -j ACCEPT

(5)并發(fā)連接限制

[root@localhost ~]# systemctl start mariadb.service
[root@localhost ~]# mysql
MariaDB [(none)]> CREATE USER 'test'@'192.168.186.%' IDENTIFIED BY '123';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

[root@localhost ~]# vim /etc/my.cnf.d/server.cnf 
[mysqld]
skip_name_resolve=ON

[root@localhost ~]# systemctl restart mariadb.service

#給指定云服務(wù)器和客戶端開放3306端口
[root@localhost ~]# iptables -I INPUT -s 192.168.186.0/24 -d 192.168.186.131 -p tcp --dport 3306 -j ACCEPT
[root@localhost ~]# iptables -I OUTPUT -d 192.168.186.0/24 -s 192.168.1186.131 -p tcp --sport 3306 -j ACCEPT

#限制流入報文,同一IP并發(fā)連接數(shù)據(jù)庫不能超過2
[root@localhost ~]# iptables -R INPUT 1 -s 192.168.10.0/24 -d 192.168.10.10 -p tcp --dport 3306 -m connlimit --connlimit-upto 2 -j ACCEPT

(6)速率匹配(報文的發(fā)包速率限制)

#每3秒處理一個請求(可用其他主機使用ping測試)
[root@localhost ~]# iptables -I INPUT  -d 192.168.186.131 -p icmp --icmp-type 8 -m limit --limit-burst 5 --limit 20/minute -j ACCEPT
[root@localhost ~]# iptables -I OUTPUT  -s 192.168.186.131 -p icmp --icmp-type 0 -j ACCEPT

(7)報文狀態(tài)匹配

報文的五種狀態(tài):

NEW: 新連接請求;
ESTABLISHED:已建立的連接;
INVALID:無法識別的連接;
RELATED:相關(guān)聯(lián)的連接,當前連接是一個新請求,但附屬于某個已存在的連接;
UNTRACKED:未追蹤的連接;

#允許NEW請求
[root@localhost ~]# iptables -I INPUT -d 192.168.186.131 -p tcp -m multiport --dports 22:23,80,139,445,3306 -m state --state NEW -j ACCEPT

#允許ESTABLISHED請求
[root@localhost ~]# iptables -I INPUT -d 192.168.186.131 -m state --state ESTABLISHED -j ACCEPT

#允許ESTABLISHED請求
[root@localhost ~]# iptables -I OUTPUT -s 192.168.186.131 -m state --state ESTABLISHED -j ACCEPT

3、舉例實現(xiàn)iptables之SNAT源地址修改及DNAT目標地址修改和PNAT端口修改等應(yīng)用                                                  
一、SNAT源地址修改

在路由器后(POSTROUTING)將內(nèi)網(wǎng)的ip地址修改為外網(wǎng)網(wǎng)卡的ip地址

#iptables -t nat -I POSTROUTING -o 外網(wǎng)網(wǎng)卡 -s 內(nèi)網(wǎng)網(wǎng)段 -j SNAT --to-source 外網(wǎng)ip地址  #適用于外網(wǎng)ip地址固定場景
[root@localhost g513452987]# iptables -t nat -A POSTROUTING -s 172.16.0.0/16 -o ens32 -j SNAT --to-source 10.23.15.57

二、DNAT目標地址修改

在路由前(PREROUTING)將來自外網(wǎng)訪問網(wǎng)關(guān)公網(wǎng)ip及對應(yīng)端口的目的ip及端口修改為內(nèi)部云服務(wù)器的ip及端口

#iptables -t nat -I PREROUTING -i 外網(wǎng)網(wǎng)卡 -d 外網(wǎng)ip tcp --dport 發(fā)布的端口 -j DNAT --to-destination 內(nèi)網(wǎng)服務(wù)ip:端口
[root@localhost g513452987]# iptables -t nat A PREROUING -d 172.16.0.254 -p tcp --dport 80 -j DNAT --to-destination 10.23.12.235

三、PNAT端口修改

REDIRECT:端口映射

iptables -A PREROUTING -t nat -d 內(nèi)網(wǎng)ip -p 服務(wù) --doprt 發(fā)布的端口 -j REDIRECT --to-ports 映射的端口

[root@localhost g513452987]# iptables -A PREROUTING -t nat -d 10.23.12.235 -p tcp --dport 80 -j REDIRECT --to-ports8080   #80端口映射到8080端口

對于以上mysql中實現(xiàn)vsftp虛擬用戶及iptables用法相關(guān)內(nèi)容,大家還有什么不明白的地方嗎?或者想要了解更多相關(guān),可以繼續(xù)關(guān)注我們的行業(yè)資訊板塊。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI