其实,配置apache使用ldap验证的例子,之前的PLA和LAM就是典型案例了,只不过这次想单独的配置apache和ldap的整合,另外一点就是windows上搭建LAMP的话,一般都会使用比如xampp之类的集成软件,一键安装统一管理Apache/MySQL/PHP,虽然Linux上我们一般不会采用类似的方法(构建LAMP也有各种各样的方法),但是phpmyadmin也是一个管理MySQL简单快捷的选择,所以就在此配置一下。
1、准备工作
1
2
3
4
5
|
/etc/init
.d
/iptables
stop
iptables -L -n
setenforce 0
getenforce
echo
"192.168.49.134 phpmyadmin"
>>
/etc/hosts
|
2、安装并配置Apache
1
2
|
yum -y
install
httpd
/etc/init
.d
/httpd
start
|
这时,一般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服务来解决。
1
2
3
|
sed
-i
'/#ServerName/aServerName 192.168.49.134:80'
/etc/httpd/conf/httpd
.conf
/etc/init
.d
/httpd
restart
chkconfig httpd on
|
3、安装并配置MySQL
1
2
3
4
5
6
7
8
9
10
|
yum -y
install
mysql mysql-server
mv
/etc/my
.cnf
/etc/my
.cnf.bak$(
date
+%F)
cp
/usr/share/mysql/my-medium
.cnf
/etc/my
.cnf
/etc/init
.d
/mysqld
start
chkconfig mysqld on
mysql_secure_installation
#使用mysql_secure_installation脚本来给MySQL的root用户设置密码,也可以进行其他设置
/etc/init
.d
/mysqld
restart
mysql -uroot -p123456
#测试MySQL root账户登录
|
4、安装并配置PHP
1
2
3
4
5
6
7
8
9
10
|
yum -y
install
php php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt
#这里把php以及其他和MySQL相关的模块一并安装了
[root@phpmyadmin ~]
# php --version
PHP 5.3.3 (cli) (built: Aug 11 2016 20:33:53)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
#查看PHP版本
[root@phpmyadmin ~]
# mysql -V
mysql Ver 14.14 Distrib 5.1.73,
for
redhat-linux-gnu (x86_64) using readline 5.1
#查看MySQL版本
|
5、下载phpmyadmin并配置目录权限
1
2
3
4
5
6
|
wget https:
//files
.phpmyadmin.net
/phpMyAdmin/4
.0.10.17
/phpMyAdmin-4
.0.10.17-all-languages.zip --no-check-certificate
cp
phpMyAdmin-4.0.10.17-all-languages.zip
/var/www/html/
cd
/var/www/html/
unzip phpMyAdmin-4.0.10.17-all-languages.zip
mv
phpMyAdmin-4.0.10.17-all-languages phpmyadmin
chown
-R apache:apache phpmyadmin
|
6、浏览器测试phpmyadmin
浏览器中输入http://192.168.49.134/phpmyadmin/,出现phpmyadmin的登录界面,如下所示:
输入MySQL的root账号密码,执行。
登录成功,可以看到MySQL中的数据库、表、用户等信息,同时这里也显示出了服务器的相关信息。由于只是测试phpmyadmin的安装配置,并未对这些信息进行隐藏或者修改等配置,当然如果是生产环境,apache和MySQL都需要进行更详细的配置,这里就不多做说明了。
7、安装apahce的ldap模块mod_authz_ldap
1
|
yum -y
install
mod_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加固的方案吧。
本文转自 jerry1111111 51CTO博客,原文链接:http://blog.51cto.com/jerry12356/1852711,如需转载请自行联系原作者