FreeRADIUS與OpenLDAP--成功篇

相關使用指令

檢查服務的utp
netstat -unpl
netstat -an | grep '*.181'

啟用前測試
radiusd  -X

測試本機帳號,測試後請關閉

radtest  帳號  密碼  localhost  0 系統連線密碼
radtest  steve  testing  localhost  0 testing123

測試某一網段
radtest  ldapUser  ldapPasswd  163.32.X.78  0 testing123

安裝相關程式

yum  install  freeradius*

啟用伺服器的LDAP Client端,請參考另一文件

http://la.shsps.kh.edu.tw/spcase/centos/ldap.html

請先測試本機user,啟用steve來測試(記得測試玩要加回#)

vi  /etc/raddb/user

steve   Cleartext-Password := "testing"
Service-Type = Framed-User,

service radiusd restart

radtest  steve  testing  localhost  0 testing123

正確會顯示 rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=247, length=26

另外,啟用某一網段認證

vi  /etc/raddb/clients.conf

client 163.32.x.0/24 {
     secret = testing123
   shortname = schoolAP
}

client 192.168.5.0/24 {
     secret = testing123
   shortname = schoolAP

編輯freeradius有關ldap的設定檔

vi  /etc/raddb/modules/ldap

server  =  "ldap.do.kh.edu.tw"
identity  =  "cn=Manager,dc=do,dc=kh,dc=edu,dc=tw"
password  =  pswd管理者密碼do
basedn  =  "ou=user,ou=login,dc=do,dc=kh,dc=edu,dc=tw" 

vi  /etc/raddb/sites-enabled/default

authorize {
...
#       files
ldap
...

}

還有

authenticate {
        ...
        Auth-Type LDAP {
        ldap
        }
        ...
}

啟動服務

service radiusd restart


----------------------------------------------------------------

參考資料:

Howtos | Old Freeradius2 Howto | ClearFoundation Documentation 0503閱讀 groupname_attribute

http://sailorcire.homelinux.com/~ceneblock/RADIUS/RADIUS.txt  0503閱讀base_filter

瘋狂帽客's Blog: To implement FreeRADIUS for LDAPs 五個閱讀分類文章

我要成功: FreeRADIUS帳號驗證機制整合(OpenLDAP) 

【FreeBSD】FreeRadius with OpenLDAP @ 有為青年生活札記 :: 痞客邦 PIXNET ::

FreeRADIUS -- Documentation

Centralized Logins Using LDAP and RADIUS 

LDAP+ Centos6.3+使用者修改密碼

使用者更改自己的LDAP及SAMBA密碼

直接參考Knowledge base的教學網站,及有提供修改密碼程式

http://www.nep-hk.com/drupal/?q=node/12

直接安裝後,真的好用,簡單筆記如下:

一、啟用httpd

yum -y install httpd httpd-devel httpd-manual
yum -y install php-5 php-bcmath php-dba php-devel php-gd php-imap php-ldap php-mbstring php-mysql php-ncurses php-odbc php-pdo php-pear php-pgsql php-snmp php-soap php-xml php-xmlrpc mod_ssl

出現缺少下列套件,下載安裝

wget http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm

rpm -ivh epel-release-6-8.noarch.rpm

稍微修改設定

vi /etc/httpd/conf/httpd.conf

DirectoryIndex index.html index.htm index.php index.html.var

LanguagePriority zh-TW en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN

AddDefaultCharset UTF-8

service httpd restart 

二、稍微修改php.ini

vi /etc/php.ini

default_charset = "utf8"
upload_max_filesize = 180M
post_max_size = 80M
memory_limit = 160M

service httpd restart

三、安裝 ldap_samba_password_modifier

cd /var/www/html/

wget  http://www.nep-hk.com/drupal/sites/default/files/ldap_samba_password_modifier.zip

unzip ldap_samba_password_modifier.zip

接著,修改裡面的參數後,就可以線上修改使用者的LDAP密碼囉! 

http://163.32.X.X/ldap_pwd.php

經過測試後,成功了!

LDAP+ Centos6.3安裝筆記

主要參考:IT水電工-哆啦胖虎自己重寫的筆記

居安思危,重新架設一次LDAP伺服器,發現與舊版的路徑略有不同!

service ldap start 變成 service slapd start

另外一個問題,困擾三天,終於找到答案。

小文老師當年寫的user-login.ldif,可以順利導入系統,但比較老舊,人事已非。

我重新寫了一份 user-login.ldif,卻一直導不進去?格式相同,僅有密碼不同。我怕自己眼花,又列印出來比對,明明都相同,卻沒有答案的無解!?

終於,讀懂錯誤訊息,它找不到換行...所以僅能讀一筆資料?

使用notepad,仔細觀察後,發現居然暗藏玄機!哇勒,花三天才想到!!

WIN→CRLF-WIN←UNIX

先轉換成UNIX

再利用【編輯】→【BLANK OPERATION】→【移除行尾空白】

終於順利導入

ldapadd -x -D cn=Manager,dc=server,dc=kh,dc=edu,dc=tw -w  -f /tmp/user-login.ldif

LDAP:SSHD + VSFTPD

之前已經完成LDAP Client端的設定與啟用。

接下來,我們再來將  VSFTPD 及 SSHD 也啟用服務吧!

VSFTPD(啟用FTP功能,好用!)

cp /etc/pam.d/vsftpd  /etc/pam.d/vsftpd.bk

vi /etc/pam.d/vsftpd

auth       include      system-auth
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    required     pam_loginuid.so

 

SSHD(其實,這個功能可以不用啟用,沒事開給使用者,沒有什麼作用...)

cp /etc/pam.d/sshd /etc/pam.d/sshd.bk

vi  /etc/pam.d/sshd

auth       include      system-auth
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    required     pam_loginuid.so

快速安裝CentOS 6及ldap

參考日本達人的分享網站,超讚!

http://www.server-world.info/en/note?os=CentOS_6&p=ldap&f=2

yum -y install openldap-clients nss-pam-ldapd

用光碟片安裝【www】之後,到系統內設定網路

setup

設定網路環境(IP、Mask、Gateway、、)

利用yum安裝lftp

yum -y install lftp

利用lftp連結到教育局,下載安裝檔

lftp ftp.kh.edu.tw

get  /pub/APPL/yum/CentOS6/fix-yum-CentOS6.sh

exit

回到本機,執行更新檔

chmod 755 ./fix-yum-CentOS6.sh

./fix-yum-CentOS6.sh

yum -y update

接下來,安裝所需要的套件,請參考教學網站

http://ha.shsps.kh.edu.tw/web/centos/

安裝LDAP

yum -y install openldap-clients nss-pam-ldapd

vi /etc/openldap/ldap.conf

# add at the last line
# LDAP server's URI
URI ldap://163.32.X.X/

# specify Suffix
BASE dc=kh,dc=edu,dc=tw
TLS_CACERTDIR /etc/openldap/cacerts 

 vi /etc/nslcd.conf

# line 131: specify URI, Suffix
uri ldap://163.32.X.X/
base dc=kh,dc=edu,dc=tw
ssl no
tls_cacertdir /etc/openldap/cacerts

 vi /etc/pam_ldap.conf

# line 17: make it comment
# host 127.0.0.1
# line 20: specify Suffix
base dc=kh,dc=edu,dc=tw

# add at the last line
uri ldap://163.32.X.X/
ssl no
tls_cacertdir /etc/openldap/cacerts
pam_password md5

 vi /etc/pam.d/system-auth

auth        sufficient    pam_ldap.so use_first_pass
account     [default=bad success=ok user_unknown=ignore] pam_ldap.so
password    sufficient    pam_ldap.so use_authtok
session     optional      pam_ldap.so

# add if you need ( create home directory automatically if it's none )
session     optional      pam_mkhomedir.so skel=/etc/skel umask=077

 vi /etc/nsswitch.conf

passwd: files ldap
# line 33: add
shadow: files ldap
# add
group: files ldap
# add
netgroup: ldap
# line 57: change
automount: files ldap

 昨天設定之後,重新開機,居然無法啟動(因為把nsswitch.conf內的files文字給拿掉,導致無法順利開機)

放入光碟片, 進入修復模式,跟著說明步驟,進入系統內

chroot /mnt/sysimage

再編輯 nsswitch,把files文字放回去,完成修復。

vi /etc/nsswitch.conf

完成後

exit

最後

reboot

XOOPS完全整合LDAP--編輯使用者

作者:cosseto

讓XOOPS完全整合LDAP,就是說要可以更改密碼等等資訊到LDAP....。

更改部分如下

edituser.php
最尾端(或適當位置)加入函數宣告
常數部份請參考註冊HACK那篇

function UpdateLDAP($uid,$mail,$pass)
{
    
//die($uid);//
    
$ldap = ldap_connect(LDAP_HOST);
    
ldap_bind($ldap,LDAP_ADMIN_DN,LDAP_ADMIN_PW);
    
//這邊的條件避免誤刪LDAP內容
    
if(!empty($pass)) { $info['userPassword'] = "{md5}".base64_encode(pack("H*",md5($pass))); }
    if(!empty(
$mail)) { $info['mail'] = $mail; }
    
//更新LDAP
    
ldap_modify($ldap,sprintf(LDAP_BASE_DN,$uid),$info) or die(ldap_error($ldap));
    
//關閉連線
    
ldap_unbind($ldap);
    
ldap_close($ldap);
}


然後在

......
$attachsig = !empty($_POST['attachsig']) ? 1 : 0;
        
$edituser->setVar('attachsig', $attachsig);
        
$edituser->setVar('timezone_offset', $_POST['timezone_offset']);
        
$edituser->setVar('uorder', $_POST['uorder']);
        
$edituser->setVar('umode', $_POST['umode']);
        
$edituser->setVar('notify_method', $_POST['notify_method']);
        
$edituser->setVar('notify_mode', $_POST['notify_mode']);
        
$edituser->setVar('bio', xoops_substr($_POST['bio'], 0, 255));
        
$edituser->setVar('user_occ', $_POST['user_occ']);
        
$edituser->setVar('user_intrest', $_POST['user_intrest']);
        
$edituser->setVar('user_mailok', $_POST['user_mailok']);
        if (!empty(
$_POST['usecookie'])) {
            
setcookie($xoopsConfig['usercookie'], $xoopsUser->getVar('uname'), time()+ 31536000);
        } else {
            
setcookie($xoopsConfig['usercookie']);
        }


之後加入下面

//LDAP 更新
    
$uname = $edituser->getvar('uname');
    
UpdateLDAP($uname,$mail,$password);


這樣就完成囉!

XOOPS完全整合LDAP--直接註冊使用者到LDAP

作者:cosseto

讓XOOPS完全整合LDAP,就是說要可以更改密碼等等資訊到LDAP....。

(1)mainfile.php
加入下列定義


[size=medium]//Define LDAP HOST
define('LDAP_HOST', 'IP 或 網址');
define('LDAP_ADMIN_DN', '管理的DN');
define('LDAP_ADMIN_PW', '管理的密碼');
define('LDAP_BASE_DN', 'uid=%s,查詢user的dn');[/size]

寫入使用者的DN那個位置有個注意事項(格式)
uid=%s 是為了要增加使用者留下的位置。dn的屬性皆不可以留空白
其他看需要可能會再增加。

(2)register.php
加入下面的函數定義

[size=medium]
function
NewToLDAP($uname, $email, $pass)
{
    
//LDAP Regist STEP
    
$ldap = ldap_connect(LDAP_HOST) or die('1');
    
$ldap_bind = ldap_bind($ldap, LDAP_ADMIN_DN, LDAP_ADMIN_PW) or die('2');
    
//$uname, $email, $pass, $vpass
    
$info['cn'] = $uname;
    
$info['sn'] = $uname;
    
$info['mail'] = $email;
    
$info['userPassword'] = "{md5}".base64_encode(pack("H*",md5($pass)));
    
//objectClass: posixAccount, objectClass: top, objectClass: inetOrgPerson,
    
$info['objectClass'] = 'posixAccount';
    
$info['objectClass'] = 'top';
    
$info['objectClass'] = 'inetOrgPerson';
    
//To ADD
    
ldap_add($ldap, sprintf(LDAP_BASE_DN,$uname), $info)
        or die(
sprintf("%s(%s)",ldap_error($ldap),ldap_errno($ldap)));
    
//unbine, close
    
ldap_unbind($ldap);
    
ldap_close($ldap);
}
[/
size]


然後在下面區段之前

if ( empty($stop) ) {
        
$member_handler =& xoops_gethandler('member');
        
$newuser =& $member_handler->createUser();
        
$newuser->setVar('user_viewemail',$user_viewemail, true);
        
$newuser->setVar('uname', $uname, true);
        
$newuser->setVar('email', $email, true);


加入

[size=medium]//Add to LDAP
if( empty($stop) ) {
    
NewToLDAP($uname, $email, $pass);
}
[/
size]


以上僅在LDAP裡面登記基本的帳號密碼資料,之後再對細部的項目修改,畢竟主要需要認證的部份就只有帳號密碼而已。

接下來要改
(1)編輯使用者的部份(針對密碼、信箱等等)
(2)管理者編輯使用者部份(針對密碼、信箱等等)

架設LDAP-Centos5.5

安裝套件
yum -y install nss_ldap openldap-clients openldap openldap-servers

修改設定檔

vi /etc/openldap/slapd.conf

database ldbm
suffix "dc=shsps,dc=kh,dc=edu,dc=tw"
rootdn "
cn=Manager,dc=shsps,dc=kh,dc=edu,dc=tw"
rootpw {MD5}112233445566

密碼編碼 {MD5}
slappasswd -h {MD5}

存檔、啟動服務
/etc/init.d/ldap start

測試是否安裝完成
slaptest -v

 匯入根 base.ldif
######################
dn: dc=ha,dc=shsps,dc=kh,dc=edu,dc=tw
objectClass: dcObject
objectClass: organization
dc: fedora
o: fedora.tw
description: fedora ldap
dn: cn=Manager,dc=fedora,dc=tw
objectClass: organizationalRole
cn: Manager
description: Directory Manager
#######################

ldapadd -x -D "cn=Manager,dc=fedora,dc=tw" -W -f base.ldif

接下來建立使用者的ou
people.ldif
##############################
dn: ou=people,dc=fedora,dc=tw
ou: people
objectClass: top
objectClass: organizationalUnit

dn: ou=group,dc=fedora,dc=tw
ou: group
objectClass: top
objectClass: organizationalUnit

##############################

ldapadd -x -D "cn=Manager,dc=fedora,dc=tw" -W -f people.ldif

新增使用者
user.ldif
#############################
dn: uid=user,ou=people,dc=fedora,dc=tw
uid: user
cn: user
objectClass: account
objectClass: top
userPassword: {crypt}$1$uWbkmaNF$Vm4q2sCwnxhj8mgFp2sE.1
loginShell: /bin/bash
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/user
##############################

ldapadd -x -D "cn=Manager,dc=fedora,dc=tw" -W -f user.ldif

這樣就完成了百分90了

接 下來就是設定主機是否要加入ldap的認證
可直接修改設定檔.或是使用setup指令去設定

修改/etc /nsswitch.conf
#######################
passwd: files ldap
shadow: files ldap
group: files ldap
protocols: files ldap
services: files ldap
########################

 

管理軟體

管理軟體http://phpldapadmin.sourceforge.net/wiki/index.php/Download

帳號轉換軟體MigrationTools: http://www.padl.com/OSS/MigrationTools.html

Normal 0 0 2 false false false MicrosoftInternetExplorer4 LDAP Browser:http://download.cnet.com/LDAP-Browser/3000-2085_4-10072421.html

 

參考網站

Steven's Linux Note - Articles http://www.l-penguin.idv.tw/article/ldap-1.htm

Normal 0 0 2 false false false MicrosoftInternetExplorer4

jammytaiwan 的部落格

[筆 記]LDAP服務實做筆記! (一)