Apache .htaccess fileban hozzáférés engedélyezése
2008-05-28T09:36:46+02:00
2008-05-31T21:26:26+02:00
2022-07-19T01:40:29+02:00
novácska
próbálgatok itthon egy .htacces fájlt létrehozni, amiben domain név alapján tudnám kiszűrni a nemkívánatos ip-ről feljelentkező usereket.

Ehhez ezt a leírást vettem alapúl:
A hasznos .htaccess fájl. Ebből erre a kódra következtettem:

order deny,allow allow from 111.111.111.111 allow from azennevem.dynalias.com deny from all

Ha az IP cím helyett az én ip címemet adom meg, akkor tökéletesen müködik. Azonban, mint az ADSL kapcsolatoknál lenni szokott, az IP cím állandóan változik. Ezért egy ingyenes (al)domain nevet regisztráltam magamnak a Managed DNS oldalon. És ott a dynalias.com-ot választottam.
Most szeretném beállítani, hogy ne az IP címemet nézze, hanem a domain nevemet. A példa kedvéért most ez legyen az "azennevem.dynalias.com". Ha megpingelem az "azennevem.dynalias.com"-ot, akkor az ip címemmel tér vissza. Amit beirva az ip címes sorhoz, müködik is.

A fenti leírás és több ezzel foglalkozó oldal álláspontja szerint viszont a példa forráskód szerint müködnie kellene domain névvel is. De mégsem. Mi lehet a gond? Esetleg egy közbeiktatott ADSL router? De akkor az IP-vel miért?
Mutasd a teljes hozzászólást!
Ezt értem
De amikor az apacs megnézi a .htaccest, abban nevet talál és ebből ip-t kell csinálnia amit összevethet a látogató ip-jével.
Workaround: crontab-ból 10 percenként futtatsz egy scriptet ami lekéri a novacska.dynalias.org-ról a címet és ha változott, átírja a .htaccess-ben. Roppant gusztustalan megoldás, de talán működik.
Mutasd a teljes hozzászólást!

  • Háát, ez érdekes, itt is ugyanez van szinte:apache.org
    Lehet, hogy az apacs nem tudja feloldani a nevet?

    Gondolok itt jogosultság problémára. /etc/resolv.conf-ot tudja olvasni a www-data user?
    Mutasd a teljes hozzászólást!
  • Hát ez az amit nem tudok. Hogyan tudhatom meg?
    Én csak egy appserv-et (2.5.9) telepítettem windowsra, úgyhogy etc könyvtáram nincs Az egész apache könyvtárban resolv.conf sincs
    Mutasd a teljes hozzászólást!
  • Valami tűzfalon nem tiltottad le a kifwelé igyekvő apacsot?
    Mutasd a teljes hozzászólást!
  • Vagyok olyan felelőtlen, hogy tüzfal nélkül netezem...
    A windows tüzfal kikapcs, van nod32 és egy router, amin befelé csak a 80-as portot írányítom át. Szerintem kifelé az megy ami akar.
    Mutasd a teljes hozzászólást!
  • Ezt találtam, és Off-ra volt állítva:
    core - Apache HTTP Server Version 2.2
    De hiába állítom át On-ra vagy Double-re a helyzet nem javul.

    Arról lenne jó olvasni valahol, hogy az apache hogyan oldja fel a domain neveket. Lehet hogy nem elég ha csak a 80-as portot hagyom nyitva?
    Mutasd a teljes hozzászólást!
  • Ez valószínűleg a lognak mondja meg, hogy a hozzáférések naplózásakor feloldja e a nevet. Apropo: tedd On-ra és nézd meg a logot, hogy feloldja e az ip-t névre. Ha igen, valószínűleg az apacs is fel tudja oldani a neveket.
    Mutasd a teljes hozzászólást!
  • Érdekes eredményre jutottam:
    Kábeles hozzáférésem van, ami már eleve kap egy domain nevet:
    catvXXXbb.pool.t-online.hu Ezt adja vissza a log is. Ezzel működik is. De úgyanúgy, ahogy az IP változik, ez is változik időnként. Tehát nekem az azennevem.dynalias.com kellene azonosításnak.
    Aztán van egy másik gép ahonnan próbálkozom. Ez egy webszerver és a tlsys.hu domain nevet vásároltuk meg hozzá. Mivel belső felhasználásra van, ezért egy egyszerű tüzfal védi, ami csak bizonyos IP-ről engedi a hozzáférést. Például az én itthoni gépemről is. Tehát ha én megpingelem a tlsys.hu-t vissza is kapom az IP címét. A log viszont csak az IP-t írja.

    Ez nem úgy működik mint a php-ben, hogy a kérdéses domain ip-jét kellene lekérdeznie? Úgy ahogy én megpingelem a tlsys.hu-t és visszakapom az IP-t. Aztán ezt az IP-t engedné be:
    if (trim($_SERVER['REMOTE_ADDR'])==gethostbyname('tlsys.hu')) { echo 'hello tlsys.hu'; }
    Mutasd a teljes hozzászólást!
  • A doksi szerint mennie kéne az általad megadott módon:

    And, if you'd like to block access from an entire domain, you can specify just part of an address or domain name:

    Deny from 192.168.205
    Deny from phishers.example.com moreidiots.example
    Deny from ke

    Using Order will let you be sure that you are actually restricting things to the group that you want to let in, by combining a Deny and an Allow directive:

    Order deny,allow
    Deny from all
    Allow from dev.example.com
    Mutasd a teljes hozzászólást!
  • Ha jól értem, Te a tlsys.hu-ra csak magadat szeretnéd beengedni. A címed viszont dinamikus...
    Az a kérdés, hogy az apacs "menet közben" is foglalkozik címfeloldással, vagy csak induláskor ránéz és ami akkor, arra teszi az Allow-t?
    Mutasd a teljes hozzászólást!
  • Nem csak magamat szeretném beengedni, akkor ahhoz elég lenne a tüzfal. Azt szeretném megvalósítani, hogy rajtam kivül még olyan 10-15 számítógépről lehessen elérni egy bizonyos weblapot, de az összes többi weblapot bárhonnan.

    Ha nem foglalkozik menet közbeni címfeloldással, akkor is müködnie kellene, mert a kábelmodemes hozzáférésem miatt az IP-m csak olyan 2-3 hetente változik. Viszont azóta az apache-ot és a gépet is már legalább 20x/5x újra indítottam.

    És tudom, hogy nagykönyvben is ez van. Ráadásul a catvxxx..pool.t-online.hu címemet fel is oldja. Csakhát az is változik, ennyi erővel lehetne az IP is .

    Az lenne inkább a kérdés, hogy vajon milyen dns szervert használ ehhez? Ami a hálózati beállításaimnál van? Akkor az ugyanaz, amit a ping is használ? És vajon hogyan oldja fel a domain nevet? Megnézi valahol hogy milyen domain van arra az IP-re bejegyezve? Hiszen ha duplán, két domainre van bejegyezve egy IP, akkor a másodlagos így semmire sem jó. Ehelyett lekérhetné a tlsys.hu IP címét, annak a domainnek, amit a .htaccess fájlban megadtam. (mint ahogy a PHP-ben írt scriptem is teszi)


    Például ez a weblap se a kívánt domain nevemmel tér vissza:
    Convert Host Name to IP Address or Find IP address of a host - e.g. find IP address of host name of
    Pontosan úgyanúgy járok mint az apachenál. Ők vajon hogyan fejtik vissza a domainből?
    Mutasd a teljes hozzászólást!
  • Ha megpingeled a novacska.dyndns.org-ot, akkor az aktuális ip-det kapod, ha jól sejtem. Ugyanezt az ip-t kéne megkapnia az apacsnak is, ha ezt a nevet oldja fel.
    Ezért nem értem. Egy ip-re hivatkozhatsz több névszerverből, de ha visszafelé csinálod, a fene tudja mi lesz az eredmény.
    De szerencsére ezt nem kell.
    Mutasd a teljes hozzászólást!
  • Na de ez az hogy nem ezt teszi.

    Mert ő valhonnan az isten tudja honnan szeretné visszakapni a weboldlat megnyitó domain nevét, az illető IP-je alapján. Például ha én csatlakozom fel magamhoz, akkor a "catvxxx.pool.t-online.hu" domain nevet rendeli hozzám. Mert onnan ahonnan ő szerzi, ott nem novacska.dyndns.org, hanem ez a catvxxx.pool.t-online.hu van hozzám rendelve. De mivel csak a novacska.dyndns.org van engedélyezve a .htaccessben, ezért nem engedi, hogy hozzáférjek. eddig logikus is.
    De ha megnézné, akkor a novacska.dyndns.org IP címe megegyezik a catvxxx.pool.t-online.hu IP címével. Mert ideiglenesen mindkét domain az enyém.

    A catvxxx.pool.t-online.hu domaint is engedélyezhetném (müködne is a .htaccess), csak az, sajnos, az IP-vel együtt változik.

    az elöbbi hozzászólásomban adott linken is az IP-mből a a
    "catvxxx.pool.t-online.hu" -t kapom vissza
    Aki invitel ADSL-el rendelkezik, annak meg valami ilyesmi:
    81.21.64.205.pool.invitel.hu
    aki westel gprs-es, annak ehhez hasonló:
    gprsxxxxxx.pool.t-umts.hu

    De van-e mód arra, hogy az apacheot megkérjük, hogy a domain névből keresse vissza az IP-t és ne az IP-ből a domain nevet?
    Mutasd a teljes hozzászólást!
  • Félek nemértem: az apacs a névből kénytelen íp-t keresni, hiszen ip-t nem tud, mert te nevet adsz meg neki: novacska.dyndns.org-ot.
    Ebből kéne ip-t visszakeresnie, és ennek mennie is kell, hiszen a ping is felodja a nevet, ráadásul jól.
    Mutasd a teljes hozzászólást!
  • nem

    Az apache a látogató IP címét tudja. Egyszerűen lekérdezi, attól, aki meg akarja nyitni az oldalam. A .htaccess fájlra meg tojik. Azt nézi, hogy a látogható IP címe 205.204.203.201, és ehhez keres valahonnan egy domain nevet. Ezt a domain nevet ellenörzi, hogy benne van-e a .htaccess fájlban és ez a domain név lesz nálam "catvxxx.pool.t-online.hu". Ami igaz, mert ez tényleg az én domain nevem. Ezt a szolgáltatóm, a T-Kábel erölteti rám. Azonban van egy másik domain nevem is, az azennevem.dynalias.com. Én, ha ez utóbbit írom bele a .htaccess fájlba, akkor nem enged be. A catvxxx.pool.t-online.hu esetén pedig ugyan beenged, azonban az majd az IP címem válatozásakor átváltozik catvyyy... domainre.

    Az azennevem.dynalias.com és a catvxxx.pool.t-online.hu közül bármelyiket megpingelve ugyanazt az IP-t kapom, amit a showmyip.com, vagy whatismyip.com is kiir.

    végülis nem titkos se az ip-m, se a domainem:
    http://catv5403b8bb.pool.t-online.hu/
    http://fi76.dynalias.com
    http://84.3.184.187/

    Ha itt(Convert Host Name to IP Address or Find IP address of a host - e.g. find IP address of host name of) az IP addresshez beirod a 84.3.184.187, akkor visszakapod a catv5403b8bb.pool.t-online.hu domaint. Ha pedig a HOST name - hez a fi76.dynalias.com nevet, akkor megkapod a 84.3.184.187 IP-t. Az lenne jó, ha az apache is az utóbbi utat járná be. De nem. Neki van egy IP címe, ahhoz keres egy domaint. Pedig ahhoz van/lehet több név is. Viszont az IP biztosan fix lenne. A kérdés az, hogy valahogy ez beállítható-e, vagy csak akkor ha megtanulok C-ben programozni.
    Mutasd a teljes hozzászólást!
  • Ezt értem
    De amikor az apacs megnézi a .htaccest, abban nevet talál és ebből ip-t kell csinálnia amit összevethet a látogató ip-jével.
    Workaround: crontab-ból 10 percenként futtatsz egy scriptet ami lekéri a novacska.dynalias.org-ról a címet és ha változott, átírja a .htaccess-ben. Roppant gusztustalan megoldás, de talán működik.
    Mutasd a teljes hozzászólást!
  • De amikor az apacs megnézi a .htaccest, abban nevet talál és ebből ip-t kell csinálnia amit összevethet a látogató ip-jével.

    Ennek örülnék én is. De ő a látogató IP-jéből csinál domain nevet. És a szerzett domain nevet veti össze a .htaccess fájlban lévő domain névvel. És nem hiszem, hogy nincs erre semmi megoldás. Másnak ez még sosem okozott gondot?

    10 percenként futtatok egy scriptet az ok, csak nem szerettem volna vele ennyit dologzni. De már ez alatt, amit itt töltöttem tököléssel és a guglival, már rég megírtam volna PHP-ben is. Csak kicsit sok fájl van, amit át kellene írni.

    Köszi azért a segítséget!
    Mutasd a teljes hozzászólást!
  • Még nem adtam fel, körbekérdezem ismerőseimet, hátha valaki apacs expert
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd