apache+svn+ladp认证
今日收到上司邮件,下一步公司要做整合,估计以后公司所有环境都需要整改,对我这个菜鸟来说感觉压力好大,因为初次接触linux system。 但我一直都在努力。。。。。come on
下一步我们会更改那些登录命名带有@ecvision.com的,我们目前所做的动作是为了将来用AD登录做准备。
所以你搭好一个AD的环境,自己测试一下登录有无问题,
AD目前需要做的地方:
1. PC和现在域一样绑定能登录
2. 绑定SVN能登录
3. 绑定JIRA能登录,设定好JIRA的安全组等等
4. 从AD导出用户到你目前AD(为以后迁移域做准备)
5. 还有是一些基本的安全策略的测试,例如:不能安装软件,不能更改电脑名,不能修改网络连接等基本的安全控制.
废话不多说,开始实践。
CentOS 6.6 X64 + Subersion1.8.13+apache 2.4.6
#yum upgrade
#yum -y install openssl perl perl* pcre wget zlib tree gcc gcc-c++ make libtool pcre-devel lrzsz zlib-devel openssl-devel neon openldap-devel
Install the Apr
#tar zvxf apr-1.5.2.tar.gz
#cd apr-1.5.2
#./configure --prefix=/usr/local/apr
#make
#make install
Install the Apr-util
#tar zvxf apr-util-1.5.4.tar.gz
#cd apr-util-1.5.4
#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
#Make
#make install
#Verify: # /usr/local/apr-util/bin/apu-1-config --version
Install the pcre
#tar zvxf pcre-8.35.tar.gz
#cd pcre-8.35
#./configure --prefix=/usr/local/pcre
#make
#make install
Install the sqlite
#tar zvxf sqlite-autoconf-3080500.tar.gz
#cd sqlite-autoconf-3080500
#./config
#make
#make install
install the dap
tar zvxf dap-3.9.tar.gz
cd dap-3.9.tar.gz
./configure
install apache
#tar zvxf httpd-2.4.6.tar.gz
#cp -rf ./apr-1.5.2 ./httpd-2.4.6/srclib/apr
#cp -rf ./apr-util-1.5.4 ./httpd-2.4.6/srclib/apr-util
需要apr和apr-utils并解压到 ./srclib/ 目录下, 再进行编译。
#cd httpd-2.4.6
#./configure --prefix=/usr/local/apache --enable-ldap=shared --enable-authnz-ldap=sahred --with-included-apr --with-ldap --with-apr --with-apr-util --enable-dav --enable-dav-fs --enable-dav-lock --enable-rewrite=shared --enable-ssl=shared --enable-deflate=shared --enable-authn-dbm=shared --enable-authn-anon=shared --enable-auth-basic=shared --with-mpm=prefork --enable-cache --enable-file-cache --enable-mem-cache --enable-disk-cache --enable-mods-shared=all
下一步我们会更改那些登录命名带有@ecvision.com的,我们目前所做的动作是为了将来用AD登录做准备。
所以你搭好一个AD的环境,自己测试一下登录有无问题,
AD目前需要做的地方:
1. PC和现在域一样绑定能登录
2. 绑定SVN能登录
3. 绑定JIRA能登录,设定好JIRA的安全组等等
4. 从AD导出用户到你目前AD(为以后迁移域做准备)
5. 还有是一些基本的安全策略的测试,例如:不能安装软件,不能更改电脑名,不能修改网络连接等基本的安全控制.
废话不多说,开始实践。
CentOS 6.6 X64 + Subersion1.8.13+apache 2.4.6
#yum upgrade
#yum -y install openssl perl perl* pcre wget zlib tree gcc gcc-c++ make libtool pcre-devel lrzsz zlib-devel openssl-devel neon openldap-devel
Install the Apr
#tar zvxf apr-1.5.2.tar.gz
#cd apr-1.5.2
#./configure --prefix=/usr/local/apr
#make
#make install
Install the Apr-util
#tar zvxf apr-util-1.5.4.tar.gz
#cd apr-util-1.5.4
#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
#Make
#make install
#Verify: # /usr/local/apr-util/bin/apu-1-config --version
Install the pcre
#tar zvxf pcre-8.35.tar.gz
#cd pcre-8.35
#./configure --prefix=/usr/local/pcre
#make
#make install
Install the sqlite
#tar zvxf sqlite-autoconf-3080500.tar.gz
#cd sqlite-autoconf-3080500
#./config
#make
#make install
install the dap
tar zvxf dap-3.9.tar.gz
cd dap-3.9.tar.gz
./configure
install apache
#tar zvxf httpd-2.4.6.tar.gz
#cp -rf ./apr-1.5.2 ./httpd-2.4.6/srclib/apr
#cp -rf ./apr-util-1.5.4 ./httpd-2.4.6/srclib/apr-util
需要apr和apr-utils并解压到 ./srclib/ 目录下, 再进行编译。
#cd httpd-2.4.6
#./configure --prefix=/usr/local/apache --enable-ldap=shared --enable-authnz-ldap=sahred --with-included-apr --with-ldap --with-apr --with-apr-util --enable-dav --enable-dav-fs --enable-dav-lock --enable-rewrite=shared --enable-ssl=shared --enable-deflate=shared --enable-authn-dbm=shared --enable-authn-anon=shared --enable-auth-basic=shared --with-mpm=prefork --enable-cache --enable-file-cache --enable-mem-cache --enable-disk-cache --enable-mods-shared=all
./configure --prefix=/usr/local/apache --enable-ldap --enable-authnz-ldap --with-included-apr --with-ldap --with-apr --with-apr-util --enable-so --enable-dav --enable-rewrite --enable-ssl --enable-deflate=shared --enable-authn-dbm --enable-authn-anon --enable-auth-basic --with-mpm=prefork --enable-cache --enable-file-cache --enable-mem-cache --enable-disk-cache
( --enable-mods-shared=all :这里参数是添加常用模块,上列编译是编译指定模块,如果把这个参数加上不知行不行,还未测试!!!!!!!! )
#make
#make install
install PHP
yum install libjpeg libjpeg-devel libpng libpng-devel openssl openssl-devel curl curl-devel libxml2 libxml2-devel -y
#make
#make install
install subversion
#tar zvxf subversion-1.8.13.tar.gz
#cd subversion-1.8.10
#
./configure --prefix=/usr/local/subversion --with-apxs=/usr/local/apache/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-zlib=/usr/local/zlib --with-sqlite=/usr/local/sqlite
#make
#make install
#cd ~
#vim .bash_profile
#PATH=$PATH:$HOME/bin:/usr/local/subversion/bin
#source .bash_profile #让.bash_profile及时生效
SVN 单独使用
[root@Test ~]# svnadmin create --pre-1.6-compatible /svn/repos 这里一定要加--pre-1.6-compatible 要不然会报错,但是好像不影响使用。
配置版本库下面的/svn/repos/conf/svnserve.conf文件。
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183303000-1410985229.png)
灰色部分是改动的
然后配置passwd 以及 authz 文件
vim passwd
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183303812-133720856.png)
vim authz
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183303000-1410985229.png)
灰色部分是改动的
然后配置passwd 以及 authz 文件
vim passwd
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183303812-133720856.png)
vim authz
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183304781-949435028.png)
然后配置防火墙,由于我是测试我直接把防火墙关了
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183305718-1659163990.png)
service iptables stop 停止Iptables服务
chkconfig iptables off 禁止开机启动
vim /etc/sysconfig/selinux
把 SELINUX=enforcing 改为:SELINUX=disabled
然后重启下reboot
启动svn :
svnserve -d -r /svn/repos
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183306843-385239204.png)
查看端口是否启用:lsof -i tcp:3690
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183307625-1781883512.png)
然后客户端测试:
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183308328-1913378979.png)
说明配置成功了, 输入账户看下
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183309265-1190611320.png)
失败:配置文件没配好,再继续找原因
再次配置svnserve.conf文件,指定权限和账户文件具体路径
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183311687-1611391969.png)
还是不行,再继续找原因。查看权限配置文件:authz
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183312453-1869585048.png)
结果可以了:
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183313250-723619362.png)
SVN+Apache
#rpm -e --nodeps httpd
#mv /etc/httpd /etc/httd.org
#ln -s /usr/local/apache /etc/httpd
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183314015-1259471641.png)
重命名/etc/httpd文件夹,这是安装下来的默认文件,不用它,建立一个httpd一样的软连接到这里
#rmdir /etc/httpd/logs
#mkdir /var/log/httpd
#mkdir /var/log/httpd
#ln -s /var/log/httpd /etc/httpd/logs
这里是将apache默认日志文件删除,在/var/log/目录下建立一个httpd日志文件。然后建立一个软连接到原本httpd目录下。
这里只是个人习惯问题,可改可不改。
重启却报错了.折腾了好几个小时也没有解决, 直到下班回家在家里重新做,结果又是这个问题. 我发现安装完httpd后 /etc/rc.d/init.d/httpd 有一个启动脚本文件.可是httpd安装目录下的启动脚本文件却不是这个. 而是:/usr/local/apache/bin/apachectl 这个文件. 于是我删除了init.d下面的httpd.然后建立apache/bin/apachectl软连接到 /init.d/httpd目录下.
然后vim httpd
然后vim httpd
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183314687-486230147.png)
#rm /etc/rc.d/init.d/httpd
#cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd
#chkconfig --add httpd
#chkconfig httpd on
重启服务: service httpd restart . 哈哈OK. 现在可以下一步了.
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183316234-773380773.png)
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183317015-415126120.png)
启用mod_dav.so 模块
cp /usr/local/subversion/libexec/mod_* /usr/local/apache/modules/
LoadModule authz_svn_module modules/mod_authz_svn.so
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183317703-1571114114.png)
这里用户和组改成apche , 因为往后如果要用到其他模块需要apche用户,所以早点改了.
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183318984-882020052.png)
然后重启httpd那个提示的原因就是这里: 我们把这里改成本地IP地址, 加不加端口都可以
然后重启httpd
然后在/svn/目录下建立一个conf目录,然后建立两个文件
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183319703-1198476136.png)
然后建立用户
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183320453-912333483.png)
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183321234-160226177.png)
vim authz
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183322062-815197435.png)
给SVN库配置Apache权限
chown -R apche:apche /svn/repo/svntest
chmod -R 777 /svn/repo/svntest
然后编辑 httpd.conf 添加一下SVN配置
<
Location
/svn>
DAV svn
SVNParentPath /usr/svn
AuthType Basic
AuthName "Subversion repository"
#密码存储文件
AuthUserFile /usr/svn/auth.conf
Require valid-user
#用户访问目录的权限文件
AuthzSVNAccessFile /usr/svn/access.conf
</
Location
>
service httpd restart
测试客户端
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183322656-46458793.png)
这里已连接上,测试权限配置文件是否OK?输入帐号密码看看。。。。。。。
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183323593-984211185.png)
同样OK , 说明对了。
备注一下:如果SVN采用httpd的访问访问的话, SVN本身配置文件就没用了,等于作废了。 所以只要配置httpd.conf文件即可。
接下来是测试 SVN+APACHE+AD验证 也就是apche的LDAP模块功能。如果httpd是rmp安装, 我发现没有这个模块。就算是编译如果没有
编译这个模块,也不会有。 所以编译的时候注意。
SVN+APACHE+AD验证 (LDAP)
首先我的环境是:AD: Windows server 2008 172.17.16.74 域名:szardc1.arsz.com
SVN: CentOS 6.6 X64 172.17.16.73
要先让SVN能通过域名访问AD 就要先配置一下DNS, 因为域名是通过internet访问的, 但如果是在内网的话,可以通过DNS解析访问
vim /etc/resolv.conf
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183324390-1436954593.png)
添加以下内容
nameserver 202.96.134.133
nameserver 172.17.16.74
domain szardc1.arsz.com
然后测试是OK的。通了
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183325078-1639088298.png)
vim httdp.conf
启动这些模快
配置LDAP脚本
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183325734-1607189128.png)
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183329593-1287214582.png)
配置ldap模块验证:
<Location /svn/>
DAV svn
#SVN版本库路径
SVNParentPath /svn/repo
SVNListParentPath On
#权限控制文件路径
AuthzSVNAccessFile /svn/conf/authz
#AuthzLDAPAuthoritative off
AuthType Basic
AuthName "subversionserver"
#认证方式
AuthBasicProvider ldap
#绑定域用户 CN:userID ou :域组 DC :域名 下个三个DC:指的域名是:szardc1.arsz.com
AuthLDAPBindDN "CN=svn1,OU=ecvision,DC=szardc1,DC=arsz,DC=com"
#用户密码AuthLDAPBindPassword "mrtanqun"
#连接域
AuthLDAPURL "ldap://172.17.16.74:389/DC=szardc1,DC=arsz,DC=com?sAMAccountName?sub?(objectClass=*)"
#要求全部都要验证
Require valid-user
</Location>
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183330437-1184232898.png)
#service httpd restart 重启Httpd
如果要采用 LDAP 验证的话, 上面HTTPD验证就不需要了, 注释掉那些配置
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183331250-1237254283.png)
接下来测试客户端:
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183331875-1911231355.png)
![](https://images2015.cnblogs.com/blog/791121/201608/791121-20160817183332375-609949345.png)
OK。上面文件a是我用SVN2用户创建的。 我现在登录是SVN3。
差不多就是这样了.
其他的还得去摸索, 环境终于搭好了. 想骂人了. NND.. 哈哈
注意细节:
启用http.conf中的 mod_dav.so 模块
cp /usr/local/subversion/libexec/mod_* /usr/local/apache/modules/
配置ldap模块验证:
<Location /svn/>
DAV svn
#SVN版本库路径
SVNParentPath /svn/repo
SVNListParentPath On
#权限控制文件路径
AuthzSVNAccessFile /svn/conf/authz
#AuthzLDAPAuthoritative off
AuthType Basic
AuthName "subversionserver"
#认证方式
AuthBasicProvider ldap
#绑定域用户 CN:userID ou :域组 DC :域名 下个三个DC:指的域名是:szardc1.arsz.com
AuthLDAPBindDN "CN=svn1,OU=ecvision,DC=szardc1,DC=arsz,DC=com"
#用户密码
AuthLDAPBindPassword "mrtanqun"
#连接域
AuthLDAPURL "ldap://172.17.16.74:389/DC=szardc1,DC=arsz,DC=com?sAMAccountName?sub?(objectClass=*)"
#要求全部都要验证
Require valid-user
</Location>
authz权限配置文件
[groups]
admin = sammytan,nitchellli
[test:/]
* = rw
@admin = rw
Growing old is mandatory, growing up is optional .