Apache 整合 Acitve Directory 達成 one single signon Apache 整合 Acitve Directory 達成 one single signon

文章發佈於 : 2008-04-30 13:03:56 | 文章分類 : 裝機紀錄
阿維的公司使用AD進行使用者驗證,因此在使用者操作的便利性考量前提下.如何讓使用者不需要重覆輸入帳號與密碼,而直接抓取使用者已經登入AD的帳號資訊,已經變成系統開發必須要考量的項目之一 (至少阿維自己是這樣認為啦 @@)

.NET整合AD的資訊已經有大大實做成功並且實際運用於目前的系統上.由於都是微軟家族的產品,因此整合上比較容易.
但是目前公司存在有Apache+PHP+MySQL on Windows的架構,因此如何讓這樣的架構也可以快速的抓取使用者AD資訊是阿維今天要介紹的項目.

[版本需求]
1. Apache 2.x 以上
2. PHP和MySQL都沒有特殊的版本要求,不過阿維還是建議安裝PHP 5.x和MySQL 4.1.x以上的版本

[安裝過程]
1. 將mod_auth_sspi.so (下載位址)放到path_to_apache/modules這個目錄下面
2. 在httpd.conf裡面加上下面兩段
  (1) LoadModule sspi_auth_module modules/mod_auth_sspi.so
  (2)在需要進行驗證的目錄設定加上下面的內容,並且將AllowOverride開啟
      AuthName "A Protected Place"
      AuthType SSPI
      SSPIDomain tpe.compalcomm.com
      SSPIAuth On
      SSPIAuthoritative On
      SSPIOfferBasic On
      require valid-user
         
    修改後應該會像這樣
    <Directory "D:/Develop/htdocs">
     Options Indexes FollowSymLinks
     AllowOverride All

     Order allow,deny
     Allow from all

     AuthName "A Protected Place"
     AuthType SSPI
     SSPIDomain tpe.compalcomm.com
     SSPIAuth On
     SSPIAuthoritative On
     SSPIOfferBasic On
     require valid-user
    </Directory>
3. 重新啟動Apache

[如何抓取使用者登入AD的帳號]
程式只有一行,真的只有一行.
$_SERVER["REMOTE_USER"] 就只需要這行就可以抓到使用者登入AD的帳號.
後面要怎麼達成one single signon,阿維相信各位程式高手都知道該怎麼做了,阿維就不獻醜了.

[如何抓取使用者在AD中的其他資訊]
阿維之前有找到一個adLDAP.php的class,只需要確定ldap_binding正常,
然後將剛剛抓到的使用者AD帳號傳進去,AD裡面所有的資訊全部都可以抓出來.
adLDAP http://adldap.sourceforge.net/

閱讀全文 | 回 應(2)

阿維的黑手日誌 - 安裝ClamAV  阿維的黑手日誌 - 安裝ClamAV

文章發佈於 : 2007-05-31 23:16:03 | 文章分類 : 裝機紀錄
標籤 :
阿維公司在大陸有一台主機是阿維負責管理,上面有阿維公司在大陸所有分公司每天要使用的系統.
前天有使用者反應,登入系統之後,PC上面安裝的防毒軟體會跳出警告訊息.
而這台主機上面因為阿維偷懶加上相信Linux要中毒不太容易,所以就沒有安裝防毒軟體.
不過因為使用者有提出這樣的問題,為了解決使用者心中的疑惑.
於是阿維就著手安裝防毒軟體.

以下是阿維的操作歷程
透過urpmi進行安裝
1. [root@localhost init.d]# urpmi clamav
2. [root@localhost init.d]# urpmi clamd
3. 安裝完畢之後啟動 clamav : [root@localhost init.d]# clamd start
4. 更新病毒碼 : [root@localhost init.d]# freshclam

結果顯示
ClamAV update process started at Wed May 30 20:10:51 2007
WARNING: Your ClamAV installation is OUTDATED!
居然過期了....
查了一下ClamAV官方網站,阿維透過urpmi安裝的版本是0.87,最新版是0.90.2
台灣的mirror站,版本實在是太舊了,於是阿維就透過easy urpmi去找國外的mirror站

移除台灣的來源
[root@localhost init.d]# urpmi.removemedia -a
removing medium "main"
found 0 headers in cache
removing 0 obsolete headers in cache
wrote config file [/etc/urpmi/urpmi.cfg]

換上美國的mirror站
[root@localhost init.d]#  urpmi.addmedia main ftp://mirrors.usc.edu/pub/linux/distributions/mandrakelinux/devel/2006.0/i586/media/main with media_info/hdlist.cz

[root@localhost init.d]#  urpmi.addmedia contrib ftp://mirrors.usc.edu/pub/linux/distributions/mandrakelinux/devel/2006.0/i586/media/contrib with media_info/hdlist.cz

然後移除舊的Clamav
urpme clamav-db這個指令之後,會把clamd,clamav也一併移除掉

再次透過urpmi進行安裝
[root@localhost init.d]# urpmi clamav
To satisfy dependencies, the following 3 packages are going to be installed (10 MB):
clamav-0.90-0.1.20060mdk.i586
clamav-db-0.90-0.1.20060mdk.i586
libclamav1-0.90-0.1.20060mdk.i586
Is this OK? (Y/n)
還是一樣是舊版的.

看來還是下載Source Code回來自己Complie吧
阿維最後放棄使用urpmi來安裝了,於是又回到最古老的方法,下載Source Code回來安裝.
以下是操作的步驟

檢查一下自己的kernel是否符合要求
[root@localhost init.d]#  uname -r

建立群組和使用者
因為剛剛已經有使用過urpmi進行過安裝,所以現在系統裡面會有clamav群組clamav這個使用者
如果沒有的話下面是建立的方法
[root@localhost init.d]# groupadd -g 40 clamav
[root@localhost init.d]# useradd -c "CLAMAV Owner" -g clamav

開始進行Complie 
[root@localhost init.d]#  ./configure --prefix=/usr/local/clamav --libexecdir=/usr/local/sbin --disable-clamuko --with-usr=clamav --with-group=clamav ( 全部打在同一行上)
Disable Clamuko的原因
Clamuko settings
WARNING: This is experimental software. It is very likely it will hang up your system!!!
make
make install

建立相關目錄與設定權限
mkdir /usr/local/clamav/run
mkdir /usr/local/clamav/db
chown -R clamav:clamav /usr/local/clamav

修改clamd.conf 和 freshclam.conf 設定檔 : 藍色字是阿維修改過的
vi /usr/local/clamav/etc/clamd.conf
Line  8 : Example -> #Example
Line 14 : #LogFile /tmp/clamd.log -> LogFile /var/log/clamav/clamd.log
Line 30 : LogFileMaxSize 2M -> LogFileMaxSize 0
Line 65 : #DatabaseDirectory /var/lib/clamav -> DatabaseDirectory /usr/local/clamav/db
Line 72 : LocalSocket /tmp/clamd -> LocalSocket /usr/local/clamav/run/clamav.sock
Line 145 : #User clamav -> User clamav

  vi /usr/local/clamav/etc/freshclam.conf : 藍色字是阿維修改過的
Line 8 : Example -> #Example
Line 13 : #DatabaseDirectory /var/lib/clamav -> DatabaseDirectory /usr/local/clamav/db
Line 34 : #PidFile /var/run/freshclam.pid -> PidFile /usr/local/clamav/run/freshclam.pid
Line 95 : #NotifyClamd /path/to/clamd.conf -> NotifyClamd /usr/local/clamav/etc/clamd.conf

接著執行
啟動 clamav : [root@localhost init.d]# clamd start
更新病毒碼 : [root@localhost init.d]# freshclam
耶~~順利更新病毒碼囉

開始進行掃毒
[root@localhost init.d]# clamscan -l /data/virus_scan/scan_logs/scan.log -r /www ( 全部打在同一行上)
-l /data/virus_scan/scan_logs/scan.log : 阿維指定掃毒的log存放位置與檔案名稱
-r /www : 掃描的目錄
--move=/data/virus_scan/infect_files/ : 如果檔案受到感染,將檔案移動到這個目錄

寫進排程 : crontab -e
## Clamav batch
* 6,12,18,00 * * * clamav /usr/local/clamav/bin/freshclam ## 六個小時檢查一次更新
* 00 * * 6 clamav /usr/local/clamav/bin/clamscan -l /data/virus_scan/scan_logs/scan.log -r /www --move=/data/virus_scan/infect_files/ ## 每個星期六凌晨12點進行掃毒

阿維今天到公司之後,更新病毒碼又出現. WARNING: Your ClamAV installation is OUTDATED!
是超級無言的啦!! 所以就將舊版的ClamAV砍掉,下載最新版本0.90.3,
接著又重複了以上的步驟一次,ClamAV難道不能夠提供引擎在更新的時候也一併更新嗎?
老是要這樣砍掉,然後再重新安裝一次,是很累人的耶.



閱讀全文 | 回 應(5)

使用urpmi將sendmail換成POSTFIX 使用urpmi將sendmail換成POSTFIX

文章發佈於 : 2007-02-14 10:49:52 | 文章分類 : 裝機紀錄
標籤 :
背景
阿維原本在大陸的主機是沒有安裝sendmail的,
因為原本的功能需求並不需要,所以阿維也乾脆連PORT 25都一併關掉.
後來公司的大陸企業網站也架在這台主機上後,
負責企業網站的那組人需要寄發郵件的功能.
於是阿維就將PORT 25打開,並且讓他們使用PEAR MAIL的方式去寄信.
可是今天他們跟我反應說,功能無法正常執行.
阿維自己測試了一下,的確每次寄信的response都很久.
於是就想說乾脆重新編譯PHP,將sendmail的功能也編進去.
可是重新編譯完PHP之後,response緩慢的情形一樣沒有改善.
再和阿凱討論之後,決定使用POSTFIX取代sendmail
主機的Linux版本 : Mandriva Linux release 2006.0 (Official) for i586

設定urpmi
首先我們必須先將安裝過程中的urpmi先清除掉,這樣我們使用urpmi的時候,他才不會去找CDROM
指令 urpmi.removemedia -a

到 Easy Urpmi找出離你最近的主機做更新
Easy Urpmi
基本上只需要做main的部份.
主機的話就選離你最近的,因為列表中沒有大陸的主機,
所以阿維就選台灣,想說應該不會太慢.
選擇完之後它會顯示更新的網址.
阿維得到的結果是
指令 urpmi.addmedia main ftp://mdk.linux.org.tw/pub/mandrakelinux/official/2006.0/i586/media/main
with media_info/hdlist.cz

輸入這段結果後,系統會進行更新.
阿維昨天在更新的時候,速度還蠻快的,平均在200K~203K,只花兩分半鐘就做完更新了

安裝POSTFIX
指令 urpmi postfix
因為阿維一開始有安裝sendmail,因此在安裝postfix的時候,他會問要不要移除sendmail.
為了讓系統乾淨一點,所以當然是選擇移除sendmail.
安裝的時候會出現syslog的錯誤,
阿維在安裝完嘗試將syslog restart可是一樣會有問題.
不過在最後重起POSTFIX的時候,POSTFIX是可以正常運作的.
所以阿維就也先不去理會它了
指令 postfix restart

測試
阿維在啟動POSTFIX之後,將原本執行很慢的PEAR MAIL和使用PHP MAIL function的程式又重新跑了一次.
效能果然好很多,程式很快就有response,而且信件也都正常寄達

系統操作歷程
[root@localhost etc]# urpmi.removemedia -a
removing medium "Installation Free CD1 (cdrom1)"
removing medium "Installation Free CD2 (cdrom2)"
removing medium "updates"
removing medium "main"
removing medium "contrib"
found 0 headers in cache
removing 0 obsolete headers in cache
wrote config file 
[/etc/urpmi/urpmi.cfg]
[
root@localhost etc]# urpmi.addmedia main ftp://mdk.linux.org.tw/pub/mandrakelinux/official/2006.0/i586/media/main with media_info/hdlist.cz
added medium main
wrote config file 
[/etc/urpmi/urpmi.cfg]
computing md5sum of existing source hdlist (or synthesis)
retrieving source hdlist (or synthesisof "main"...
    
ftp://mdk.linux.org.tw/pub/mandrakelinux/official/2006.0/i586/media/main/media_info/hdlist.cz
found probed hdlist (or synthesis) as media_info/hdlist.cz
...retrieving done
examining hdlist file 
[/var/cache/urpmi/partial/hdlist.main.cz]
examining pubkey file of "main"...
performing second pass to compute dependencies

examining hdlist file 
[/var/lib/urpmi/hdlist.main.cz]
built hdlist synthesis file for medium "main"
found 0 headers in cache
removing 0 obsolete headers in cache
wrote config file 
[/etc/urpmi/urpmi.cfg]
[
root@localhost etc]# urpmi postfix
The following packages have to be removed for others to be upgraded:
sendmail-8.13.4-6mdk.i586 (due to conflicts with postfix) (y/Ny

    ftp
://mdk.linux.org.tw/pub/mandrakelinux/official/2006.0/i586/media/main/postfix-2.2.5-7mdk.i586.rpm
installing postfix-2.2.5-7mdk.i586.rpm from /var/cache/urpmi/rpms
removing sendmail
-8.13.4-6mdk.i586
Preparing
...                     #############################################
      
1/1postfix               #############################################
Shutting down kernel logger: [  OK  ]
Shutting down system logger: [  OK  ]
Starting system logger: /etc/init.d/syslogline 4125192 Terminated    $*[FAILED]
Starting kernel logger: [  OK  ]

[
root@localhost etc]# /etc/rc.d/init.d/syslog restart
Shutting down kernel logger:                                    [  OK  ]
Shutting down system logger:                                    [  OK  ]
Starting system logger: /etc/rc.d/init.d/syslogline 4125568 Terminated     $*[FAILED]
Starting kernel logger:                                         [  OK  ]

[
root@localhost etc]# rc.d/init.d/postfix restart
Shutting down postfix:                                          [  OK  ]
Starting postfix:                                               [  OK  ]
[
root@localhost etc]



閱讀全文 | 回 應(0)

PHP 升級到5.2.1完成 PHP 升級到5.2.1完成

文章發佈於 : 2007-02-13 18:44:55 | 文章分類 : 裝機紀錄
標籤 :
因為今天有同事需要PHP有sendmail的功能,
加上PHP剛好釋出了5.2.1的版本.
因此阿維今天下班的時候就順便增加sendmail功能和升級PHP.
以往的phpinfo都會帶出 ./configure .... 這後面一長串的資訊.
安裝PHP 5.2.1之後變成只會顯示Apache和MySQL的編譯資訊.

或許是阿維已經太習慣手動編譯這些東西了,
原本想説可能要花兩三個小時才能完成,
沒想到29分鐘就完成了PHP和eAccelerator的編譯以及設定.
終於不用很晚才能下班回家了.

閱讀全文 | 回 應(0)

自建Vista啟動伺服器?一步一步教你做KMS 自建Vista啟動伺服器?一步一步教你做KMS

文章發佈於 : 2007-01-29 13:42:39 | 文章分類 : 裝機紀錄
標籤 :
剛剛在網絡人生看到這篇文章 自建激活服务器?一步一步教你做KMS

覺得這真是一個好方法.
Server 和 Client 是一種互相依賴的機制.
Server 需要 Client 透過它來啟動,第一次的時候需要25台Client.
Client 需要依賴 Server 來啟動.
這樣或許架設啟動伺服器才會比較有動力一點 (當然是說非法的地下啟動伺服器...呵呵呵)

看看那天如果有閒情逸致的時候,
阿維再來實驗架設KMS好了.

閱讀全文 | 回 應(0)

修復 NTLDR is missing 的問題 修復 NTLDR is missing 的問題

文章發佈於 : 2006-11-21 10:59:26 | 文章分類 : 裝機紀錄
標籤 :
從修復 Windows 2000 啟動的環境開始。您可以啟動修復主控台(Recovery Console) 來做修復:
1. 插入 Windows 2000 CD-ROM 並啟動 Windows 2000 至修復主控台 (Recovery console)。
2. 輸入您所安裝的 Windows 作業系統,如您只有一個作業系統,請輸入 1 後按下 Enter 。
3. 輸入 Administrator 的密碼後按下 Enter 。
3. 輸入 map 然後按下 Enter 。請記下您含有 Windows 2000 安裝光碟的光碟機代號。
4. 輸入下列指令然後在每一列後按下 Enter 。而 是您在步驟3所看到的光碟機代號。

copy :\i386\ntldr c:\
copy :\i386\ntdetect.com c:\

5. 如果系統提示您是否要覆蓋此檔案,輸入 Y 然後按下 Enter 。
6. 輸入下列指令然後在每一列後按下 Enter: type c:\boot.ini


閱讀全文 | 回 應(0)

backlinks Back Links