[MEGOLDVA] Apache2 authentikáció

 ( Xterm | 2008. február 10., vasárnap - 20:37 )

Sziasztok!

Azt hiszem megint rossz helyen kerestem eddig, kénytelen vagyok hozzátok fordulni, mert kezd a hajam kihullani :( Itthoni tesztelési célra (Ubuntu-n) feltettem egy apache2-t. Azt akartam elérni, hogy ne legyen piszkálható csak bizonyos gépekről. Gondoltam egy nagyot és merészet és a következő kódrészletet biggyesztettem egy általam alkalmasnak vélt file-be:



AuthName "Nono"
AuthUserFile /etc/apache2/.htpasswd.nesze
AuthType Basic
Require valid-user
Allow from 10.0.0.2
Satisfy Any

Ilyen kódrészletre emlékeztem egy korábbi rendszeren tett kísérleteim után, de ez itt a világon semmi hatással nem járt. Először azt hittem, hogy van valami rész a default konfigban, ami miatt nem jól érvényesül, vagy felül íródik. Aztán a konfigok szerteágazósága is megzavart. Nem akartam sokat, csak egy kis "kérdésfeltevést" az apache által, de tojik a fejemre. Ez az igazi RTFM kérdés, tudom én is, de egyszerűen nem tudom mi a fene bírálhatja felül eme kis pársorosomat...! Cseppet frusztráló érzés, mert eddig egy ilyen konfig jólműködött. Az apache2 configjai viszont megkavarnak cseppet...

A kérdésem a következő: Ubuntu-n egy default apache2-m van. Hol a fenében kéne ennek a pár sornak lenni, hogy történjen is valami rá? :)

Megértő és türelmes válaszotokat várva ;)

--Xterm

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

AllowOverride

t

A .htaccess fájl a következő részt kell tartalmaznia.
AuthUserFile /var/www/.htpasswd
AuthName "Top Secret"
AuthType Basic
require valid-user
A webszerveren abba a könyvtárba tedd be amit védeni szerenél. A htpasswd parancsal tudsz a .htpasswd fájlba új felhasználókat felvenni.
Az apache 1-es verzióinál emlékszem erre a megoldásra, hogy a /etc/apache könyvtárban voltak a konfig fájlok, de ezt megváltoztatták és a webszerverre kell tenni őket.

a probléma az, hogy látszólag minden megvan, de nem veszi figyelembe. pedig már több helyre is bevéstem a fenti konfigrészeket. mintha nem is figyelne rá. megnéztem a .htaccess (mert ott is volt már) jogosultságait is, mert írják a doksik, hogy futtatás is kell rá. szóval tanácstalan vagyok.

--
xterm

Egyrészt kell egy (egyszerűség kedvéért) AllowOverride all, hogy a .htaccess-ből felül tudd definiálni a security beállításokat.

Másrészt, az /etc/apache(2) könyvtárból is megeszi a konfigot, de ott nem mindegy, hova irod, Directory -n belül kell lennie.

Illetve nézd meg hogy a mod_auth modult betölti-e (pl. http://localhost/server-info -val)

Ebből meg kell tudnod csinálni: http://httpd.apache.org/docs/2.0/howto/auth.html

Akkor megeccer: AllowOverride. Ez nem veletlen lett irva, mert a figyelmen kivul hagyas altalaban ennek a sornak koszonheto.

tudom, hogy nem véletlenül lett írva, egyetlen bajom az volt, hogy milyen sorrendben olvassa vajon végig a konfigokat és vajon eme sort lehet-e valahogy debugolni? felteszem van benne valami, ami miatt az én overrideom nem is érvényesül...

--
xterm

Nem erted. Az allowoverride - ha venned a faradsagot megnezni a manualban - arra vonatkozik, hogy az alsobb szinteken figyelembe vegyen-e barmilyen modositast (for example .htaccess)

miből hitted, hogy meg se néztem?? leginkább azért nem értettem, hogy miért nem tudom felülbírálni sehogyse... (az összes manual által írt helyen megnéztem... nem sikerült. gugliztam. nincs releváns találat. kérdeztem. :) )

--
xterm

hm... nem is volt annyira hülye a kérdésem. a google-n van pár kérdés erre vonatkozóan. a megfejtés nem a konfigomban van, hanem abban, hogy sehol nem töltődik be az a modul, amit az apache oldal ír erre. a mod_auth és a mod_access. az egyetlen probléma, hogy nem tudom miből származik ez a két modul... lehet, hogy csak nekem nem triviális, de tudna valaki segíteni ubuntu-n ez miből származik?

azóta találtam fórumtopikokat, ahol meglepve tapasztalják, hogy nincs sehol a mod_auth és a mod_access... ez valamiért meg van szüntetve??? vagy mi? meglehetősen alapnak hinném... ha nem jó, akkor majd használnak mást. de kivenni, mert valakinek kevés?? annak ott a többi auth modell, nem?

ötlet?

--
xterm

közben válaszolok saját magamnak is, mert a kérdés egy részét azóta az újraindult ubuntu fórumon megleltem. most már tudom miért nincs külön modul (valszeg) a mod_auth és a mod_access-re. azért, mert bele van fordítva.

viszont továbbra is kérdés, hogy vajon hol lehet szerintetek még olyan beállítás, amivel befolyásolva van az, hogy a defaultból elérhető weboldalak az ubuntu-s apache2-n miért nem korlátozhatóak le alap autentikációval??! az összes olyan sort megnéztem, ami az /etc/apache2/ könyvtáron belül van minden konfigban. kerestem AllowOverride részt, hátha valamivel felül van bírálva ez, de egyszerűen nem találom.

próbaképpen azt a részt is kipróbáltam, ahol a mediawiki konfigja van (annak külön includolt konfig részlete van és odda is beleírtam a fenti kísérletet, de arra is tojik...).

--
xterm

Azt hiszem át kell fogalmazzam a kérdést, mivel egyik irányban se derült ki ezek szerint, hogy _nem_ az a bajom, hogy miképp is kell ilyet csinálni. a módszer ismert. a probléma az, hogy vajon az apache2, ami pl. ubuntun is van, az vajon honnan konfigolhat ilyet, ha _sehol_ nem találok olyat, mely szerint felülbírálhatatlan az általuk gyártott alap beállítás. ezt támasztja alá sztem az is, hogy még a mediawiki által települt plusz konfigot megeszi, de ha én _oda_ beírok valamit, arra már nem reagál (ha másol nem, ott látnom kéne, hogy mi az oka, hiszen vagy van mediawikim és megy az auth, vagy nincs egyik se.

--
xterm

A sorrend titka a httpd.conf (mas neven apache2.conf) fajlban leledzik. Az include file-ok mondjak meg, hogy a mods-enabled vagy a sites-enabled van elobb includolva. Ezutan a megfelelo include filek kerulnek vegrehajtasra, majd - ha az adott vhost engedelyezi - a .htaccess filek. En a vhost configjaba tennek olyant, hogy 'AllowOverride all' es a .htaccess-t konfigolnam be. De ez a te dontesed.

sztem az én problémám az volt, hogy a sorrendet nem tudtam megfejteni (még mindig nem, pedig már lassan minden sora allowoverride ;) ) és emiatt nem érvényesült az, amit akartam. én spec jobb szerettem azt a konfigot, amikor nem volt szétdobálva a konfig külön állományokra, mappákra. ebben is értem a célt, csak nekem a másik szimpatikusabb volt. könnyebb volt egy ilyen "hibát" korrigálni.

--
xterm

újra nekiveselkedtem a dolgoknak, hátha most majd megoldom a keleti kérdést...

van egy kis kódrész, amit szeretnék érvényesíteni:

Order allow,deny
AuthName "adfg"
AuthUserFile /etc/apache2/.htpasswd-phoenix
AuthType Basic
Require valid-user
Allow from ipcím
Satisfy Any

olvasom a konfigokat. AuthOverRide rész nincs csak all-ra állítva. ez alól kivételek a webes szolgáltatások konfig mappái (mediawiki, szerver konfig és statisztika adatok).

elvileg a konfigok betöltési sorrendje az, hogy elkezdi olvasni az apache2.conf file-t. majd beállítja az alap dolgokat. aztán includeolja sorban külső konfigokat. ezeket egyesével megnéztem, nincs a fentieknek ellent mondó állapot.

van egy sites-available c. rész, itt van egy virtual host rész, aminek a neve az, hogy *. kissé meglepő név, de gondolom ez a default szerver, csak virtual hosttal oldja meg. nekem tök mindegy végülis, csak menjen :D szóval itt is beraktam a fenti soraimat és szépen magasról tojik rá...

szerintetek mi lehet a baj?

--
xterm

Allow from ipcím
Satisfy Any

Ennél a résznél a sorrend számít!, és Deny is kell hozzá.

ugy van,

Deny from all
Allow from ipamirolakarod

köszi srácok, holnap csekkolom. (no igen, elzárt háló, itthonról nem tudom tesztelni...). ha csak ennyit állt a dolog, akkor eme rész felett elsiklottam :s mondjuk kár, hogy nincs valami "szintaktikai csekkoló" amivel egy ilyen hibát (ez nem logikai, hanem szintaktikai hibának tűnik számomra) ki lehet buktatni.

--
xterm

De nem az "apache2ctl configtest" -re gondolsz, ugye?

ejha... ezt benéztem. mea culpa. tényleg van ilyen. :)

--
xterm

?

mit szeretnél kérdezni?

--
xterm

köszönöm szépen a megoldáshoz vezető tippeket!

hogy más is okulhasson az én hibámból, leírom a megoldást:

a probléma az volt, hogy nem volt deny from all párja az allow from all-nak. most már szuperül működik.

--
xterm