使用MySQL驗證OpenVPN使用者登入訪問
使用MySQL資料庫來驗證OpenVPN伺服器登入需要使用pam_mysql模組,因此我們首先要下載並且編譯這個模組,然後在配置,而在OpenVPN伺服器端還要使用一個auth_pam外掛,下面我們來分別實現。
5.4.1 下載pam_mysql模組
模組pam_mysql的官方地址為:http://pam-mysql.sourceforge.net/,如下圖:
下載這個模組:
[root@slave ~]# wget http://cdnetworks-kr-2.dl.sourceforge.net \ > /project/pam-mysql/pam-mysql/0.7RC1/pam_mysql-0.7RC1.tar.gz --2012-01-21 13:20:40-- http://cdnetworks-kr-2.dl.sourceforge.net/project/pam-mysql/pam-mysql/0.7RC1/pam_mysql-0.7RC1.tar.gz Resolving cdnetworks-kr-2.dl.sourceforge.net... 211.39.135.163 Connecting to cdnetworks-kr-2.dl.sourceforge.net|211.39.135.163|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 335240 (327K) [application/x-gzip] Saving to: `pam_mysql-0.7RC1.tar.gz'
100%[====================>] 335,240 94.2K/s in 3.5s
2012-01-21 13:20:46 (94.2 KB/s) - `pam_mysql-0.7RC1.tar.gz' saved [335240/335240] |
5.4.2 安裝pam_mysql模組
[root@slave ~]# tar -zxvf pam_mysql-0.7RC1.tar.gz |
解壓縮後檢視一下INSTALL這個檔案,在執行 "configure" 指令碼時它接受的選項
5.4.3 認識configure選項
在執行"configure" 指令碼之前,我們首先來認識以下它的可配置選項。
選項名稱:--with-pam=[PAM_INSTALLATION_PREFIX]
功 能:指定PAM headers路徑,如果沒有指定,那麼會自動查詢。
選項名稱:--with-pam-mods-dir=[MODULE_DIRECTORY]
功 能:指定安裝pam_mysql.so的位置,也可以忽略這個選項。
選項名稱:--with-mysql=[MYSQL_INSTALLATION_PREFIX]
功 能:該選項用於指定所需要MySQL的頭和庫檔案,如果沒有同該選項指定,那麼configure將會搜尋,它會在以下的順序中搜尋:
. /usr
. /usr/local
. /usr/mysql
. /opt/mysql
選項名稱:--with-openssl=[OPENSSL_INSTALLATION_PREFIX]
功 能:該選項用於指定OpenSSL的標頭檔案和庫檔案,如果使用了該選項但是又沒有明確的指定相應的值,那麼configure將會按照以下的順序查詢:
. /usr
. /usr/local
. /opt/openssl
. /usr/ssl
. /usr/local/ssl
選項名稱:--with-cyrus-sasl=[CYRUS_SASL_INSTALLATION_PREFIX]
--with-cyrus-sasl2=[CYRUS_SASL2_INSTALLATION_PREFIX]
功 能:指定Cyrus SASL頭和庫檔案,MD5會使用。需要注意的是,這兩個選項不能一起指定。如果指定了這個選項,但是有沒有明確的指定值,那麼configure將會按照下面的順序查詢:
. /usr
. /usr/local
. /opt/cyrus-sasl
5.4.4 安裝pam_mysql
在執行configure指令碼之前,我們首先要確定openssl、sasl和mysql,
[root@slave auth-pam]# rpm -qa | grep sasl cyrus-sasl-2.1.22-5.el5_4.3 cyrus-sasl-lib-2.1.22-5.el5_4.3 cyrus-sasl-plain-2.1.22-5.el5_4.3 cyrus-sasl-devel-2.1.22-5.el5_4.3 [root@slave auth-pam]# rpm -qa | grep mysql [root@slave auth-pam]# rpm -qa | grep openssl |
我們看到openssl和mysql 都沒有安裝,因此需要首先安裝這些軟體,這裡我們就不再寫出安裝過程了。
執行"configure" 指令碼:
[root@slave pam_mysql-0.7RC1]# ./configure \ > --with-mysql=/usr/local/mysql/ \ > --with-openssl=/usr/local/openssl-0.9.7a/ |
對於 --with-mysql 和 --with-openssl 具體的安裝位置要根據實際情況而設定,如果在執行configure時出現以下錯誤:
checking if md5.h is derived from Cyrus SASL Version 1... no checking md5.h usability... no checking md5.h presence... no checking for md5.h... no checking if md5.h is Solaris's... no checking for md5.h... (cached) no checking for MD5Data... no |
那麼執行以下連結:
ln -s /usr/include/openssl/md5.h /usr/include/md5.h |
直到出現以下配置:
checking if md5.h is derived from Cyrus SASL Version 1... no checking md5.h usability... yes checking md5.h presence... yes checking for md5.h... yes checking if md5.h is Solaris's... no checking for md5.h... (cached) yes checking for MD5Data... no checking for crypt in -lcrypt... yes checking for crypt... yes |
當然,如果要是不使用MD5加密也就沒必要這麼費事了。
安裝pam_mysql:
[root@slave pam_mysql-0.7RC1]# make [root@slave pam_mysql-0.7RC1]# make install
…… make[1]: Entering directory `/root/pam_mysql-0.7RC1' /bin/sh ./mkinstalldirs /usr/lib/security /bin/sh ./libtool --mode=install /usr/bin/install -c pam_mysql.la /usr/lib/security/pam_mysql.la /usr/bin/install -c .libs/pam_mysql.so /usr/lib/security/pam_mysql.so /usr/bin/install -c .libs/pam_mysql.lai /usr/lib/security/pam_mysql.la PATH="$PATH:/sbin" ldconfig -n /usr/lib/security ---------------------------------------------------------------------- Libraries have been installed in: /usr/lib/security
If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,--rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- ……
|
注意,這個pam_mysql.so模組安裝的位置,找到它再把它拷貝到以下的位置:
[root@slave security]# pwd /lib/security |
當然,如果不將這個pam_mysql.so檔案拷貝到這個目錄下也是可以的,不過需要在以下檔案中使用絕對的路徑。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27043155/viewspace-732231/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Yii2 使用者使用登入元件token驗證元件
- 模擬使用者登入,內含驗證碼驗證和request等操作
- [Laravel 8 使用者認證] Jetstream 之 如何自定義登入驗證Laravel
- 關於登入(使用者名稱,密碼,驗證碼)密碼
- 開啟mysql遠端登入訪問功能MySql
- K8Sdashboard登入問題(chrome無法訪問以及使用使用者名稱和密碼登入)K8SChrome密碼
- cookie之登入使用者憑證Cookie
- 手機直播原始碼,Android Studio使用者登入及驗證原始碼Android
- 訪問使用者中心實現認證
- asp.net mvc中的使用者登入驗證過濾器ASP.NETMVC過濾器
- 登入驗證碼生成kaptcha(輸入驗證碼)APT
- golang 中使用 JWT 實現登入驗證GolangJWT
- JS登入驗證nullJSNull
- AJAX+JAVA使用者登陸註冊驗證Java
- linux下使用yum安裝mysql,以及啟動、登入和遠端訪問LinuxMySql
- 使用FastAPI+SQLAlchemy+Redis+Celery 編寫一個完整的使用者登入驗證APIASTAPISQLRedis
- Go語言WEB框架:使用wego攔截器驗證使用者的登入狀態GoWeb框架
- APPCNA 指紋驗證登入APP
- Laravel- Auth 登入驗證Laravel
- ASP.NET登入驗證ASP.NET
- teams 更改密碼後無法登入,提示使用 Microsoft Authenticator 驗證問題密碼ROS
- nginx配置kibana訪問使用者名稱和密碼認證、及無認證訪問配置Nginx密碼
- mysql使用者本地登入localhost和127.0.0.1區別MySqllocalhost127.0.0.1
- layui使用html+servlet+ajax實現登入驗證UIHTMLServlet
- uniapp 完成兩種方式登入 驗證碼登入 密碼登入APP密碼
- nginx使用者驗證Nginx
- [譯]React中的使用者認證(登入態管理)React
- 【Koa】腳手架登入驗證
- js登入與註冊驗證JS
- Vue學習:實現使用者沒有登陸時,訪問後自動跳轉登入頁面Vue
- SpringMVC(六) 攔截器和使用者登入校驗SpringMVC
- Delphi LDAP物件管理(使用者登入認證、組、組織)LDA物件
- 登入模組 使用者認證 SpringSecurity +Oauth2+JwtSpringGseOAuthJWT
- SpringBoot-shiro登入攔截.使用者認證.整合MybatisSpring BootMyBatis
- app直播原始碼,登入時輸入驗證碼、簡訊驗證身份APP原始碼
- 線上直播系統原始碼,使用者異地登入時對身份進行驗證原始碼
- SpringBoot+vue 前後端的分離專案筆記 [二] 使用者登入驗證Spring BootVue後端筆記
- Laravel-admin 登入新增驗證碼Laravel
- vue登入註冊,帶token驗證Vue