您好,登錄后才能下訂單哦!
下面講講關(guān)于mysql中實現(xiàn)vsftp虛擬用戶及iptables用法,文字的奧妙在于貼近主題相關(guān)。所以,閑話就不談了,我們直接看下文吧,相信看完mysql中實現(xiàn)vsftp虛擬用戶及iptables用法這篇文章你一定會有所受益。
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
隨便上傳一個文件
登陸jerry,上傳失敗
四表五鏈概念
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è)資訊板塊。
免責聲明:本站發(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)容。