其实,配置apache使用ldap验证的例子,之前的PLA和LAM就是典型案例了,只不过这次想单独的配置apache和ldap的整合,另外一点就是windows上搭建LAMP的话,一般都会使用比如xampp之类的集成软件,一键安装统一管理Apache/MySQL/PHP,虽然Linux上我们一般不会采用类似的方法(构建LAMP也有各种各样的方法),但是phpmyadmin也是一个管理MySQL简单快捷的选择,所以就在此配置一下。

1、准备工作

/etc/init.d/iptablesstopiptables-L-nsetenforce0getenforceecho"192.168.49.134phpmyadmin">>/etc/hosts

2、安装并配置Apache

yum-yinstallhttpd/etc/init.d/httpdstart

这时,一般apache启动会有如下提示:

Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.49.134 for ServerName

可以通过sed添加ServerName,然后重启httpd服务来解决。

sed-i'/#ServerName/aServerName192.168.49.134:80'/etc/httpd/conf/httpd.conf/etc/init.d/httpdrestartchkconfighttpdon

3、安装并配置MySQL

yum-yinstallmysqlmysql-servermv/etc/my.cnf/etc/my.cnf.bak$(date+%F)cp/usr/share/mysql/my-medium.cnf/etc/my.cnf/etc/init.d/mysqldstartchkconfigmysqldonmysql_secure_installation#使用mysql_secure_installation脚本来给MySQL的root用户设置密码,也可以进行其他设置/etc/init.d/mysqldrestartmysql-uroot-p123456#测试MySQLroot账户登录

4、安装并配置PHP

yum-yinstallphpphp-mysqlphp-gdlibjpeg*php-imapphp-ldapphp-odbcphp-pearphp-xmlphp-xmlrpcphp-mbstringphp-mcryptphp-bcmathphp-mhashlibmcrypt#这里把php以及其他和MySQL相关的模块一并安装了[root@phpmyadmin~]#php--versionPHP5.3.3(cli)(built:Aug11201620:33:53)Copyright(c)1997-2010ThePHPGroupZendEnginev2.3.0,Copyright(c)1998-2010ZendTechnologies#查看PHP版本[root@phpmyadmin~]#mysql-VmysqlVer14.14Distrib5.1.73,forredhat-linux-gnu(x86_64)usingreadline5.1#查看MySQL版本

5、下载phpmyadmin并配置目录权限

wgethttps://files.phpmyadmin.net/phpMyAdmin/4.0.10.17/phpMyAdmin-4.0.10.17-all-languages.zip--no-check-certificatecpphpMyAdmin-4.0.10.17-all-languages.zip/var/www/html/cd/var/www/html/unzipphpMyAdmin-4.0.10.17-all-languages.zipmvphpMyAdmin-4.0.10.17-all-languagesphpmyadminchown-Rapache:apachephpmyadmin

6、浏览器测试phpmyadmin

浏览器中输入http://192.168.49.134/phpmyadmin/,出现phpmyadmin的登录界面,如下所示:

输入MySQL的root账号密码,执行。

登录成功,可以看到MySQL中的数据库、表、用户等信息,同时这里也显示出了服务器的相关信息。由于只是测试phpmyadmin的安装配置,并未对这些信息进行隐藏或者修改等配置,当然如果是生产环境,apache和MySQL都需要进行更详细的配置,这里就不多做说明了。

7、安装apahce的ldap模块mod_authz_ldap

yum-yinstallmod_authz_ldap

8、配置apache通过ldap进行认证

cp /etc/httpd/conf.d/authz_ldap.conf /etc/httpd/conf.d/authz_ldap.conf.bak$(date +%F)

先检查一下/etc/httpd/conf.d/authz_ldap.conf文件的内容

[root@phpmyadmin ~]# egrep -v "#|^$" /etc/httpd/conf.d/authz_ldap.conf

LoadModule authz_ldap_module modules/mod_authz_ldap.so

<IfModule mod_authz_ldap.c>

</IfModule>

然后编辑该文件,在<IfModule mod_authz_ldap.c>语句下面添加如下内容:

<Directory /var/www/html/phpmyadmin> #这里定义那个目录需要使用ldap模块认证

AuthzLDAPMethod ldap

AuthzLDAPServer 192.168.49.138

AuthzLDAPUserBase ou=People,dc=contoso,dc=com

AuthzLDAPUserKey uid

AuthzLDAPUserScope base


AuthType Basic

AuthName "Test ldap auth"

require valid-user


</Directory>

[root@phpmyadmin ~]# diff /etc/httpd/conf.d/authz_ldap.conf.bak2016-09-13 /etc/httpd/conf.d/authz_ldap.conf

9a10,23

> <Directory /var/www/html/phpmyadmin>

> AuthzLDAPMethod ldap

>

> AuthzLDAPServer 192.168.49.138

> AuthzLDAPUserBase ou=People,dc=contoso,dc=com

> AuthzLDAPUserKey uid

> AuthzLDAPUserScope base

>

> AuthType Basic

> AuthName "Test ldap auth"

> require valid-user

>

> </Directory>

>

/etc/init.d/httpd restart

#最后重启httpd服务

9、测试apache使用ldap认证

打开浏览器,输入phpmyadmin的地址,发现这次并没有显示登陆界面,而是要求进行身份验证,输入ldap中的用户名和密码,登录。

成功登录之后,才显示phpmyadmin的登录界面,这里就可以使用MySQL的root用户登录了。注意,本文是配置apache使用ldap进行登录,并不是MySQL使用ldap登录,所以这里还是要输入MySQL的用户名密码登录,而使用ldap用户名密码验证的只是浏览器打开连接时的身份认证,如果无法通过身份验证就无法登录MySQL,即使知道root密码也没有办法,这也算是一种phpmyadmin管理MySQL加固的方案吧。