您好,登錄后才能下訂單哦!
下面講講關于mysql中實現vsftp虛擬用戶及iptables用法,文字的奧妙在于貼近主題相關。所以,閑話就不談了,我們直接看下文吧,相信看完mysql中實現vsftp虛擬用戶及iptables用法這篇文章你一定會有所受益。
1.首先安裝環境
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
建立虛擬用戶映射的系統用戶及對應的目錄
mkdir /ftproot useradd -s /sbin/nologin -d ftproot vuser 創建測試目錄 mkdir /ftproot/{pub,upload} cd /ftproot chown vuser:vuser upload
修改vsftpd的配置文件,使其適應mysql認證
vim /etc/vsftpd/vsftpd.conf 修改pam_service_name選項的值如下所示 pam_service_name=vsftpd.mysql 添加以下兩行: guest_enable=YES guest_username=vuser
配置虛擬用戶具有不同的訪問權限
創建所需目錄,并為虛擬用戶提供配置文件
mkdir /etc/vsftpd/vusers_conf cd /etc/vsftpd/vusers_conf
配置虛擬用戶具有不同的訪問權限:
vim tom 寫入如下內容
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 創建sql中的數據
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表——過濾數據包 Nat表——用于網絡地址轉換(IP、端口) Mangle表——修改數據包的服務類型、TTL、并且可以配置路由實現QOS Raw表——決定數據包是否被狀態跟蹤機制處理 INPUT鏈——進來的數據包應用此規則鏈中的策略 OUTPUT鏈——外出的數據包應用此規則鏈中的策略 FORWARD鏈——轉發數據包時應用此規則鏈中的策略 PREROUTING鏈——對數據包作路由選擇前應用此鏈中的規則(所有的數據包進來的時侯都先由這個鏈處理) POSTROUTING鏈——對數據包作路由選擇后應用此鏈中的規則(所有的數據包出去的時侯都先由這個鏈處理 #清空iptables規則 [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 #設置云服務器輸入和輸出默認策略為DROP [root@localhost ~]# iptables -P INPUT DROP [root@localhost ~]# iptables -P OUTPUT DROP
(1)多端口匹配
#接收流經22和80端口的報文,即可以正常使用ssh和httpd服務 [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 #當數據報文中出現"gaain"就不發送 [root@localhost ~]# iptables -I OUTPUT -s 192.168.186.131 -m string --algo kmp --string "gaain" -j REJECT
(4)時間匹配
#開放同步時間服務端口 [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 #添加規則 #指定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)并發連接限制
[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 #給指定云服務器和客戶端開放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并發連接數據庫不能超過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)速率匹配(報文的發包速率限制)
#每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)報文狀態匹配
報文的五種狀態:
NEW: 新連接請求; ESTABLISHED:已建立的連接; INVALID:無法識別的連接; RELATED:相關聯的連接,當前連接是一個新請求,但附屬于某個已存在的連接; 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、舉例實現iptables之SNAT源地址修改及DNAT目標地址修改和PNAT端口修改等應用
一、SNAT源地址修改
在路由器后(POSTROUTING)將內網的ip地址修改為外網網卡的ip地址
#iptables -t nat -I POSTROUTING -o 外網網卡 -s 內網網段 -j SNAT --to-source 外網ip地址 #適用于外網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)將來自外網訪問網關公網ip及對應端口的目的ip及端口修改為內部云服務器的ip及端口
#iptables -t nat -I PREROUTING -i 外網網卡 -d 外網ip tcp --dport 發布的端口 -j DNAT --to-destination 內網服務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 內網ip -p 服務 --doprt 發布的端口 -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中實現vsftp虛擬用戶及iptables用法相關內容,大家還有什么不明白的地方嗎?或者想要了解更多相關,可以繼續關注我們的行業資訊板塊。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。