使用MySQL驗證OpenVPN使用者登入訪問

nginx_web發表於2012-06-08

 

 

使用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指令碼之前,我們首先要確定opensslsaslmysql

   

[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

 

    我們看到opensslmysql 都沒有安裝,因此需要首先安裝這些軟體,這裡我們就不再寫出安裝過程了。

 

    執行"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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章