2009. május 18., hétfő

FTP védelme PHP-val

Folyamatosan gondot okoz, ez a fránya FTP jelszó lopó honlapvírusosító dolog. Egy általános megoldást csináltam most pár ügyfél oldalára, azóta nincs vírus :)

A dolog lényege, hogy mielőtt FTP kapcsolatot létesítenénk böngészőből meg kell hívni egy sima PHP fileot, ami az aktuális IP címet fehasználva létrehozza a megfelelő .ftpaccess -t ilyen formában:

<Limit ALL>
Allow IP_CÍMÜNK
DenyAll
</Limit>

Így csak mi fogunk tudni bejelentkezni FTP-n.

A PHP kód nagyon egyszerű. Bármilyen általunk preferrált authentikációt beépíthetünk én most a a legegyszerűbbett mutatom:

<? 
 if ( $_POST['pass']=='VALAMIJELSZÓ' ) {
 $f = fopen('.ftpaccess','w');
 $s = '<Limit ALL>
 Allow '.$_SERVER['REMOTE_ADDR'].'
 DenyAll
        </Limit>';
        fwrite($f,$s);
 fclose($f);
 echo('ok');
 }
 ?>
 <form method="post" action="<?=$_SERVER['PHP_SELF']?>">
 <input type="text" name="pass" />
 <input type="submit" />
 </form>
A dolog csak akkor működhet, ha van írási jogunk az .ftpaccess file-ra.
A teszteléssel óvatosan! :) amikor tesztelgettem jópárszor kitiltottam magam. Szóval előny, ha máshogyan is hozzáférhetünk a fileokhoz, ha esetleg megtörténne a baj. (pl. plesk, directadmin, ssh (bár akkor minek FTP :) ) )

4 megjegyzés:

  1. Hali Barna. Hogy is van ez?
    Csinálok egy .ftpaccess nevű fájlt és hogyan tovább? Ez hogy működik együtt az ftp-s progikkal? Bocs a hülye kérdésért... :)

    VálaszTörlés
  2. Az FTP programoktól ez független. Vagy működik, vagy nem :) Úgy képzeld el, mint az apache-nál a .htaccess fileot, csak FTP-re.
    egy kis segítség:
    http://www.proftpd.org/localsite/Userguide/linked/x1021.html
    http://integrity.hu/ftpaccess/

    VálaszTörlés
  3. Ma beszélgettünk egy kollégával erről és szó szerint ezt a megoldást ötlötte ki :)

    Szép húzás amúgy, bomba biztos a férgek ellen.

    VálaszTörlés