QL.túra

Kulturális smörgåsbord Esterházytól Wass Albertig, a gumicsizmától az iPad-ig, a Teletabiktól Sexpírig, a makrofágtól a mikrokontrollerig, miazmás...

Címkék

2000 (20) 2001 (6) 2002 (16) 2003 (164) 2004 (61) 2005 (40) 2006 (31) 2007 (28) 2008 (33) 2009 (175) 2010 (188) 2011 (201) 2012 (86) 2013 (40) 2014 (36) 2015 (26) 2016 (10) adáshiba (91) android (1) animáció (93) cygwin (3) film (410) gezarol (13) hájtek (159) hangoskönyv (32) ipad (17) klip (12) könyv (191) linux (29) színház (169) vers (17) windows (37) zene (111) Címkefelhő

+jegyzések

Most ...

... múlok .osan

bmi_tiny.png


... hallgatom
Szabó Magda: Régimódi történet
https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSqTmZEqlCRFgojyt52Q2n_qiMTyVlt-zJu-DpbNKVY6OQbBh4u


... olvasom
Alexander Steele (szerk.): Kezdő írók kézikönyve


... (Kik ezek? Kik ezek az embek? Kik ezek?)
profile for TrueY on Stack Exchange, a network of free, community-driven Q&A sites
free counters

[Hájtek] Apache2 szerver ntlm authentikációval cygwin alatt

2013.05.07. 11:00 | TrueY | 13 komment

Címkék: windows 2012 hájtek cygwin

Huh! Ez nagy menet volt! Nagy nehezen sikerült összelőnöm az egészet! Íme a hányattatásaim stációinak tömör összefoglalója. Előre elárulom, hogy a végén "heppiend lesz és elnyeri majd szerelmét" (Fonográf : Álomszép regény).

Alap probléma: W7 gépen cygwin van és szeretnék egy apache szervert felhúzni rajta, ami ntlm-mel authentikál a domain-hoz, hogy ne kelljen külön jelszavak gyűjtögetésével bíbelődni. Firefox a cél böngésző.

Először is ott a dilemma, hogy apache, vagy apache2. Persze az apache2 lenne a jobb (színesebb, szagosabb, modernebb), de esetemben az határozta meg, hogy melyiket használom, hogy melyik alá tudom behákolni az ntlm authentikációt. Mindkét nyomon elindultam. Végül is az apache2 nyert...

Megpróbáltam a mod_auth_sspi modult is feltenni, de az csak a windows-os apache-hoz van. Bár megvan a forráskódja, de csak Visual Studioval fordítható. Nem kezdtem el áttenni gcc alá.

Induláshoz tegyük fel a szükséges cygwin csomagokat:

  • apache2 (2.2.22-2)
  • apache2-devel (2.2.22-2)
  • git-svn (1.7.9-1)
  • libapr1 (1.4.6-1)
  • libapr1-devel (1.4.6-1)
  • libaprautil1 (1.4.1-1)
  • libaprautil1-devel (1.4.1-1)
  • openldap (2.3.43-3)
  • patch (2.5.8-9)

Ha ez megvan, akkor kell töltenünk a mod_ntlm csomagot.

svn co https://modntlm.svn.sourceforge.net/svnroot/modntlm/trunk

Ez létrehoz a trunk alá egy mod_ntlm és egy mod_ntlm2 könyvtárat. Menjünk be ez utóbbiba. A trunk/.svn, trunk/mod_ntlm le is törölhető. Nem lesz szükségünk rájuk.

Másoljuk be az alábbi file-t (mondjuk) mod_ntlm2_cygwin.patch néven a /tmp könyvtárba. Vigyázzunk, a képernyőn egyes sorok meg lehetnem törve, így értelemszerűen próbáljuk az eltört sorokat visszahúzni. Bocs, de a patch file-t nem rakom ki a blog.hu szerverre, mert úgy is meg akarják szüntetni ezt a lehetőséget. Próbáljunk kisebb betűket használni, ha nagyon nem megy másként.

diff -ru ../trunk/mod_ntlm2/Makefile ./Makefile
--- ../trunk/mod_ntlm2/Makefile 2012-04-21 11:18:37.284092400 +0200
+++ ./Makefile  2012-04-21 11:24:49.456094100 +0200
@@ -5,7 +5,8 @@
 ## $Id: Makefile 44 2006-12-08 01:18:18Z mbaltaks $
 
 #   the used tools
-APXS=apxs
+#APXS=apxs
+APXS=/usr/sbin/apxs2
 APACHECTL=apachectl
 
 #   the default target
diff -ru ../trunk/mod_ntlm2/mod_ntlm.c ./mod_ntlm.c
--- ../trunk/mod_ntlm2/mod_ntlm.c       2012-04-21 11:18:37.282092400 +0200
+++ ./mod_ntlm.c        2012-04-21 11:28:36.390785300 +0200
@@ -254,7 +254,9 @@
     crec->ntlm_domain = "DOMAIN";
     crec->ntlm_grpfile = NULL; /* rit, group file added */
        crec->ntlm_lockfile = "/tmp/ntlm.lck";
+#if APR_HAS_THREADS
        apr_thread_mutex_create(&crec->ntlm_mutex, APR_THREAD_MUTEX_DEFAULT, p);
+#endif
 
     return crec;
 }
@@ -769,7 +771,9 @@
     /* If this is the first request with this connection, then create
      * a ntlm_connection entry for it. It will be cleaned up when the
      * connection is dropped */
+#if APR_HAS_THREADS
        apr_thread_mutex_lock(crec->ntlm_mutex);
+#endif
        ntlm_connection = get_ntlm_connection(r->connection);
     if (ntlm_connection == NULL) {
         ntlm_connection = apr_pcalloc(r->connection->pool, sizeof(ntlm_connection_rec));
@@ -780,7 +784,9 @@
         log(r, APLOG_INFO, "NTLMXX-Creating new ntlm_connection: %s", key);
                apr_pool_userdata_set(ntlm_connection, key, NULL, r->connection->pool);
     }
+#if APR_HAS_THREADS
        apr_thread_mutex_unlock(crec->ntlm_mutex);
+#endif
     if ((ntlmssp = get_ntlm_header(r, crec)) == NULL) {
         note_ntlm_auth_failure(r);
         log(r, APLOG_NOERRNO | APLOG_ERR, "missing/corrupt NTLM header");
diff -ru ../trunk/mod_ntlm2/mod_ntlm.h ./mod_ntlm.h
--- ../trunk/mod_ntlm2/mod_ntlm.h       2012-04-21 11:18:37.166092400 +0200
+++ ./mod_ntlm.h        2012-04-21 11:27:39.933140100 +0200
@@ -42,7 +42,9 @@
     char *ntlm_backup;
     char *ntlm_grpfile;
        char *ntlm_lockfile;
+#if APR_HAS_THREADS
        apr_thread_mutex_t *ntlm_mutex;  /* Protect ntlm_connection variable   */
+#endif
 } ntlm_config_rec;
 
 typedef struct ntlm_connection_struct {
diff -ru ../trunk/mod_ntlm2/ntlmssp.inc.c ./ntlmssp.inc.c
--- ../trunk/mod_ntlm2/ntlmssp.inc.c    2012-04-21 11:18:37.280092400 +0200
+++ ./ntlmssp.inc.c     2012-04-21 11:28:00.343180900 +0200
@@ -304,7 +304,7 @@
                return 16;
            else {
                /* Win9x client leave username in uppercase...fix it: */
-               while (*username!=(unsigned char)NULL) {
+               while (*username!=0) {
                        c=tolower((int)*username);
                        *username=(unsigned char)c;
                        username++;
A mod_ntlm2 könyvtárban adjuk ki:

patch </tmp/mod_ntlm2_cygwin.patch4 filet patch-el meg. Most már készen állunk a fordításra.

makeEz egyetlen warning-ot produkál:
"mod_ntlm.c:66:13: warning: conflicting types for built-in function 'log'"
Nem volt kedvem megkeresni, hogy mivel konfliktál. Nem is értem a built-in function-t. Ez mi lehet?

Ne próbálkozzunk a make install, vagy make test-tel, mert a mod_ntlm.so file el van bújtatva. Kézzel dolgozzunk innentől!

cp .libs/mod_ntlm.so .libs/mod_ntlm.la /usr/lib/apache2Most jön az apache2 config file megpatkolása, de előtte egy kis környezet ismereti óra. Adjuk ki az alábbi parancsot:

echo -e "$USERDOMAIN\n$LOGONSERVER"

Ez kell az NTLM authetikáció beállításához. Az első érték lesz a "NTLMDomain", a második a bevezető "\\" nélkül a "NTLMServer". Most akkor rávethetjük magunkat a config file-ra:

vim /etc/apache2/httpd.confKeressük meg a LoadModule sorok legvégét és adjuk hozzá a mi modulunkat:

LoadModule ntlm_module lib/apache2/mod_ntlm.soMost akkor hozzá kell adni a saját cgi-bin könyvtárunkat is. Az NTLM részbe beírtam a forráskódból származó megjegyzéseket is. Hátha valakinek mondanak valamit. Ismét vigyázzunk a sortörésekre!

<Directory "/srv/www/htdocs/my_dir/cgi-bin">
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews

    Options +ExecCGI

    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #AllowOverride None

    # Controls who can get stuff from this server.
    Order allow,deny
    Allow from all

    AuthName NTAuth
    AuthType NTLM
    #set to 'on' to activate NTLM authentication here
    NTLMAuth on
    #text file containing (NT) group names and member user IDs
    #AuthNTGroups /valahol/group
    #set to 'on' to allow Basic authentication too
    #NTLMBasicAuth on
    #realm to use for Basic authentication
    #NTLMBasicRealm
    #set to 'off' to allow access control to be passed along to lower
    #modules if the UserID is not known to this module
    NTLMAuthoritative on
    #set to the domain you want users authenticated against for cleartext
    #authentication - if not specified, the local machine, then all trusted
    #domains are checked
    NTLMDomain <echo első sora>
    #set to the NT server to contact to authenticate users
    NTLMServer <echo második sora "\\" nélkül>
    #set to the alternate NT server to contact to authenticate users
    #NTLMBackup <backup domain controller>
    #set to the lock file that is used to prevent simutaneous contacts to DC
    NTLMLockFile /var/run/apache2/ntlm.lock
    Require valid-user
    #Require user user1 user2
</Directory>
Kitartás, már nagyon közel járunk! Most el kellene indítani a szerverünket. Ha simán nekiállunk, akkor egy rusnya hibaüzenetet kapunk ("/usr/sbin/apachectl2: line 78:  5864 Bad system call         $HTTPD -k $ARGV"). A cygserver szervizt is fel kell éleszteni előtte.

/usr/sbin/cygserver.exe &
/usr/sbin/apachectl2 start

A ps kiadása után egy cygserver és jópár httpd2 programot kell látnunk futni. A futás közbeni kéréseket és hibákat a /var/log/apache2 könyvtárban tárolja az access_log és error_log file-okban. Ha egyszerre szeretnénk nézni, akkor ajánlom a [Hájtek] Két file listázása egyszerre Linuxon cikket.

A működéshez a firefox-ot is meg kell hákolni egy picikét. Nyissunk egy új ablakot és írjuk be azt, hogy "about:config". Szűrjünk rá arra, hogy "network.automatic-ntlm-auth.trusted-uris". Ide beírhatjuk vesszővel elválasztva azokat a szervereket, amiket ntlm authentikálni szeretnénk. Mivel a cygwin a firefox-os gépen fut, ezért én a "http://localhost"-ot írtam be. De ez még nem elég. Nem működött és ez eléggé idegesítő. Rászűrtem arra, hogy ntlm és találtam egy másik tulajdonságot is: "network.auth.force-generic-ntlm". Ezt beállítottam true-ra és láss csodát, működik!

Nem állítom, hogy betonbiztos! Menet közben egy csomó hibát dob és néha újra kéri a jelszót is. De demózási célra teljesen megfelel! Ha egy picit biztosabban működő megoldás kell, akkor indíthatjuk kézzel a /usr/sbin/httpd2-t -X opvióval. Ekkor csak 1 szálon fog kiszolgálni. 

Authetikáljunk minden nap!

A bejegyzés trackback címe:

https://qltura.blog.hu/api/trackback/id/tr734464479

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Ebből egy szót sem értek, viszont nagyon tetszik. Különösen megakadtam mikor "Nem kezdtem el áttenni gcc alá." Hát miért nem, amikor én mindig alátenném, sőt, hétfőként még az alá is, de néha felről le is, kivéve ha hány éves a kapitány? Vagy linuxosok már belről ki, de kanyarban bedőlők?

A következő bejegyzés nem lehetne inkább milf kategória? ; )
Vagy csak én preferálom a magas kultúrát? :)))))
@NYJetsTD: "Hát miért nem". A Microsoft fordító egészen más függvényeket használ, mint a unix/linux rendszereken elterjedt gcc. Ezért piszok sok munka lehet a függvényhívások átpakolgatása. Egy Linux-os forrás fordítása cygwin alatt többnyire nulla, vagy kevés munkával munkával megoldható.

MILF-ekkel csak nagyon ritkát. Pedig voltak bögyös macák is, de azokra persze nem ugrottál rá. Toll a füledbe! Egyébként, ha követted az eseményeket, akkor most könyv következik. Egészen pontosan hangos verzió. :)
@TrueY: Azért nem ugrottam, mert ravaszul zenei köntösbe csomagoltad...
Hogy követem-e az eseményeket? Hiszen én vagyok a TrueY médiabirodalom fő előfizetője!!! Már rég kijárt volna nekem valami nívós (és persze drága, nagyon, nagyon drága) ajándék, plusz Ql.túrás bögre, kulcstartó, baseball sapka és hűtőmágnes....

"Toll a füledbe!" Ja, igen, toll is... :)
@NYJetsTD:
Becsulom a kitartasodat.
A humorerzekedet pedig nagggyon irigylem. :o)))

TrueY pedig egy pelgakepem marad. Orulok. hogy megismertem.
@Attilajukkaja: "Becsulom a kitartasodat"

Naná, hiszen te elmentél a qltúrából másfél év nyaralásra, én meg befoglaltam a helyed... Törtető vagyok, az új nevem VV NYJetsTD....

"A humorerzekedet pedig nagggyon irigylem. :o)))" A szépségem és a szerénységem után ez az amire még büszke vagyok. Na meg az ingetrl...intelgetán..itlengencá...meg szóval arra is....

"TrueY pedig egy pelgakepem marad."

Nekem is ő a pelgakepem....
@NYJetsTD: "Ja, igen, toll is..."
Nodea füledbe! ;)

@Attilajukkaja: "TrueY pedig egy pelgakepem marad."
Egyébként éppen most alapítom az "E.N.Sz." nevű pártot, azaz "Ezekre Nem Szavazok" pártot. A választásokon tuti a 2/3! ;)

@Both:

"Nekem is ő a pelgakepem.... "
Na ja. És lámlenge is vagyok! ;)
@TrueY: Lámlenge, nemon ost emon....
De ki az a both???

"Egyébként éppen most alapítom az "E.N.Sz." nevű pártot, azaz "Ezekre Nem Szavazok" pártot. A választásokon tuti a 2/3! ;)"

Mivel a legtöbb szavazatot korrupt, demagóg, 80 IQ alattiakat megszólítani tudó pártok kapják, így nagy bajban leszel... ez a blog már túl nagy kihívás... úgyhogy ha nyerni szeretnél, a következő blogbejegyzésekkel kezdheted:

Májkrémes darab a Vígszinházban,
Való Világ hangoskönyvben,
Csubidázom az NTLM authetikációt,
Hogyan tartsunk otthon Hello Kittyt,
Rezsicsökkentő rezsósfőzés,
Disznótoros android játékok,
Házibuli Attilával - a kultúra piramisa,
BKV- Az ejrópaji júnión kívül is van bérlet,
Talpal olvasó kölyköd voltam,
Minden trafikos tarthasson traffipaxot is,
Lorenz megfigyelései My Little Pony-ról,
A párttal a lével egy az utunk...

Éljen az E.N.SZ!

@Attilajukkaja: Kivetettél rám 98%-os különadót?
@TrueY:
"""Ezekre Nem Szavazok" pártot. A választásokon tuti a 2/3.
Ram szamithatsz!!! Es hozok meg 19 embert! :o/

"És lámlenge is vagyok!"
:o)))
Nem pont a lamlengedre gondoltam (igaz, az is irigylesremelto!), hanem a rendezettsegedre, a polihisztor erdeklodesedre, a jo ertelembe vett kiszamithatosagodra, az iroi tehetsegedre. Arra, amit a szakmamban is sokra tartok: hogy utanamesz a dolgoknak. Ez utobbit igen nagyra becsulom barkiben. Szakmatol fuggetlenul.
Te raadasul veszed a faradtsagot, hogy a gondolataidat masokkal is megoszd.
Ez jo dolog. Talan....
En nem tudnam ezt csinalni. Keptelen lennek ra!
@NYJetsTD: A "@Both" ti ketten, együtt. Gondoltam veszed az akadályt, de nem. Van egy verő hibád! ;)

"Mivel a legtöbb szavazatot korrupt, demagóg,"
Jó, ebben igazad van. Én arra építek, hogy ha a delikvencs bemegy a szavazólappal a fülkébe és az egyik oszlop fölött aztat skubizza, hogy "Ezekre nem szavazok", akkor oda húzza az X-et! ;)

"Lorenz megfigyelései My Little Pony-ról"
Honnan tudtad, hogy lesz MLP-s posztom is? De tényleg!

@Attilajukkaja: Nem kell a személyi kultusz! Én majd fényezem magam! :) Egyébként meg tudtommal én vagyok a század utolsó polisztirolja. :) Viszont "iroi tehetsegedre", ami sajnos nincs. Még a novelláim sem igazán jók. Valahogy döcögősek, karcosak. Egyszer próbáltam regényt is írni, de én csak lineárisan tudok írni, vágás nélkül, ami hosszabb távon unalmas. Egy novellában még elmegy.
@TrueY: "A "@Both" ti ketten, együtt. Gondoltam veszed az akadályt, de nem. Van egy verő hibád! ;)"

Gondoltam veszed az akadályt, de nem.
Tudom mi hiányzott. Ez: : )

Honnan tudtad, hogy lesz MLP-s posztom is? De tényleg!
Durvul a blog, durvul.... Utána meg csak úgy hessegetheted a tinicsajokat innen... Akkor írom a címem....
@NYJetsTD: Ide csak mazochisták járnak!

"Akkor írom a címem"
Nem kell, tudom!
@TrueY: Ja, akkor viszont felteszek egy kávét, a sört te hozod...
süti beállítások módosítása