使用MySQL验证Open***用户登录访问
一、預覽
? ? 要查看下面的配置,請預覽查看我的上一篇Open***用戶名密碼配置的博文
? ? 查看上一篇博文請點擊
二、安裝部署
環境準備
#關閉SELinux #setenforce?0 開啟路由轉發 sysctl?-w?net.ipv4.ip_forward=1 #添加策略 iptables?-t?nat?-A?POSTROUTING?-s?10.8.0.0/24?-o?eth0?-j?MASQUERADE1、安裝數據庫
? ? 按照上篇文章部署好Open***之后,我們首先安裝一下MySQL數據庫。
yum?install?mysql-server?-y2、創建mysql表
? ? 我們需要兩個表,一個是用于存儲Open***用戶的表,另一個就是記錄Open***用戶登錄的表,在用戶表我們設計了三個字段,第一列是Name,及***用戶的名稱,第二列是password,即用戶的密碼,第三列是設定用戶是否可以登陸***。
mysql>?create?database?open***; mysql>?use?open***; #創建用戶表 mysql>?create?table?***user?(name?????????char?(100)?not?null,password?????char?(255)?default?null,active???????int?(10)?not?null?default?1,primary?key??(name)); Query?OK,?0?rows?affected?(0.06?sec) mysql>?desc?***user; +----------+-----------+------+-----+---------+-------+ |?Field????|?Type??????|?Null?|?Key?|?Default?|?Extra?| +----------+-----------+------+-----+---------+-------+ |?name?????|?char(100)?|?NO???|?PRI?|?NULL????|???????| |?password?|?char(255)?|?YES??|?????|?NULL????|???????| |?active???|?int(10)???|?NO???|?????|?1???????|???????| +----------+-----------+------+-----+---------+-------+ 3?rows?in?set?(0.00?sec)? ? 創建***用戶登錄表,以及插入一條用戶賬號密碼。
#創建登錄表 mysql>?create?table?logtable?(msg?????char?(254),user????char?(100),pid?????char?(100),host????char?(100),rhost???char?(100),time????char?(100)); Query?OK,?0?rows?affected?(0.06?sec) mysql>?desc?logtable; +-------+-----------+------+-----+---------+-------+ |?Field?|?Type??????|?Null?|?Key?|?Default?|?Extra?| +-------+-----------+------+-----+---------+-------+ |?msg???|?char(254)?|?YES??|?????|?NULL????|???????| |?user??|?char(100)?|?YES??|?????|?NULL????|???????| |?pid???|?char(100)?|?YES??|?????|?NULL????|???????| |?host??|?char(100)?|?YES??|?????|?NULL????|???????| |?rhost?|?char(100)?|?YES??|?????|?NULL????|???????| |?time??|?char(100)?|?YES??|?????|?NULL????|???????| +-------+-----------+------+-----+---------+-------+ 6?rows?in?set?(0.00?sec) #插入一條用戶數據 mysql>?insert?into?***user?(name,password)?values?('test1',password('test1')); mysql>?grant?all?on?open***.*?to?***@'localhost'?identified?by?'***'; mysql>?flush?privileges;3、安裝pam_mysql模塊
? ? 使用MySQL數據庫來驗證Open***服務器登陸需要使用pam_mysql模塊,因此我們需要安裝這個模塊,直接使用yum安裝即可。
yum?install?pam_mysql?-y4、配置pam_mysql模塊
? ? 下面的一些參數都是從文檔里面摘抄出來的,文檔是我們安裝pam_mysql帶來的,按照我們目前的辦理來看,文檔的路徑是/usr/share/doc/pam_mysql-0.7/README。
#?vim /etc/pam.d/open***
auth?sufficient?pam_mysql.so?user=***?passwd=***?host=localhost?db=open***?table=***user?usercolumn=name?passwdcolumn=password?[where=***user.active=1]?sqllog=0?crypt=2?sqllog=true?logtable=logtable?logmsgcolumn=msg?logusercolumn=user?logpidcolumn=pid?loghostcolumn=host?logrhostcolumn=rhost?logtimecolumn=time account?required?pam_mysql.so?user=***?passwd=***?host=localhost?db=open***?table=***user?usercolumn=name?passwdcolumn=password?[where=***user.active=1]?sqllog=0?crypt=2?sqllog=true?logtable=logtable?logmsgcolumn=msg?logusercolumn=user?logpidcolumn=pid?loghostcolumn=host?logrhostcolumn=rhost?logtimecolumn=time? ? 使用testsaslauthd驗證登錄情況,如果出現下面的情況,說明我們的配置是正確的。
5、安裝Open***服務器auth-pam插件
? ? 本來我們rpm包安裝的Open***里面是帶有我們需要的模塊open***-auth-pam.so,但是我試過了,有問題,認證無法通過,因為2.1以上的Open***的open***-auth-pam.so都會出現驗證錯誤的問題,這里需要我們重新編譯一個低版本的,我這里用2.0.7的,我附近里面有,編譯依賴pam_devel包。
yum?install?pam_devel?-y wget?http://pkgs.fedoraproject.org/repo/pkgs/open***/open***-2.0.7.tar.gz/93528233f1f6d02fc18e2c00f82e0aca/open***-2.0.7.tar.gz? tar?xf?open***-2.0.7.tar.gz? cd?open***-2.0.7/plugin/auth-pam/ make? ? 把模塊拷貝到Open***的配置目錄下
cp?open***-auth-pam.so?/etc/open***/6、Open***服務端配置文件 ? ?
? ? 配置好之后我們要使用這個模塊,加到服務器端的配置文件最后,最后的配置文件是:
# cat?/etc/open***/server.conf?
port?1194 proto?tcp dev?tun ca?/usr/share/doc/open***-2.3.7/sample/sample-keys/ca.crt cert?/usr/share/doc/open***-2.3.7/sample/sample-keys/server.crt key?/usr/share/doc/open***-2.3.7/sample/sample-keys/server.key dh?/usr/share/doc/open***-2.3.7/sample/sample-keys/dh2048.pem server?10.8.0.0?255.255.255.0 ifconfig-pool-persist?ipp.txt push?"route?10.0.0.0?255.255.255.0" push?"redirect-gateway?def1?bypass-dhcp" push?"dhcp-option?DNS?114.114.114.114" topology?subnet client-to-client duplicate-cn keepalive?10?120 comp-lzo persist-key persist-tun status?/var/log/open***/open***-status.log log-append?/var/log/open***/open***.log verb?3 script-security?3?system plugin?/etc/open***/open***-auth-pam.so?open*** client-cert-not-required username-as-common-name7、客戶端配置文件
? ? 這里以windows客戶端為例。
client dev?tun proto?tcp remote?211.152.x.x?1194 nobind user?nobody group?nobody persist-key persist-tun ca?ca.crt ;cert?client.crt ;key?client.key comp-lzo verb?3 auth-user-pass?????????????#客戶端使用賬號密碼登錄 reneg-sec?360000三、啟動測試
1、客戶端登陸
2、查看日志
? ? 登錄成功之后我們查看服務器的日志,日志如下,里面有連接的過程信息。
# more /var/log/open***/open***.log
3、查看***用戶登錄表
? ? 可見登錄成功,每登錄成功一次記錄三條信息,如果嫌里面記錄的信息過多,可以修改/etc/pam.d/open***來設定里面的信息。
4、禁用某個用戶登錄
? ? 我們只要把用戶表里面的對應用戶的active改為0,用戶就無法登錄,我們這里禁用test1的登錄。
mysql>?update?***user?set?active?=?'0'?where?name?=?'test1';總結
以上是生活随笔為你收集整理的使用MySQL验证Open***用户登录访问的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle逻辑空间管理
- 下一篇: linux cmake编译源码,linu