Cum se instalează un server ftp sigur și de încredere

Cum se instalează un server FTP sigur și de încredere

Acest document se referă la modul de instalare a unui server FTP sigur și de încredere. După cum se știe pentru transmiterea fișierelor ilegale, serverele FTP sunt cele mai des folosite. De asemenea, destul de des hackerii reușesc să obțină acces la sisteme cu servere FTP instalate necorespunzător.






Această întrebare frecventă oferă recomandări administratorilor de sistem care îi vor ajuta să configureze corect serverul FTP și să reducă la minimum amenințarea utilizatorilor rău intenționați care intră în sistem prin acest tip de serviciu.

Creați un utilizator ftp în / etc / passwd. Poate aparține oricărui grup, de exemplu arhciv (dacă grupul nu este definit, apoi scrieți-l în fișierul / etc / group). Directorul de domiciliu trebuie să fie

ftp este calea completă către directorul care va fi "root" pentru toți utilizatorii publici (anonimi). Crearea acestui utilizator "lansează" un server public FTP.

Utilizați parola greșită și shell pentru acest utilizator. Linia din fișierul passwd pentru acest utilizator trebuie să fie similară cu aceasta: ftp: *: 400: 400: FTP anonim: / home / ftp: / bin / true Creați un director

ftp. Proprietarul directorului trebuie să fie root (dar nu ftp), același grup ca și utilizatorul ftp (de exemplu, comanda chown root.archiv ftp). Astfel, drepturile de acces "proprietar" sunt deținute de root, iar drepturile de grup aparțin tuturor celorlalți utilizatori. Setați permisiunile pentru director

ftp în 0555 (de exemplu, comanda chmod 555 ftp)

Atenție: În unele descrieri este recomandat să faceți titularul catalogului

ftp utilizator ftp. Dacă doriți să dormiți liniștit, atunci nu faceți niciodată acest lucru.

ftp / bin. Proprietarul directorului rădăcină, roată de grup. Drepturi de acces 0111 (noread, nowrite, execute).

Copiați programul ls în director

ftp / bin. Atribuiți proprietarului la ls - root. Drepturi de acces 0111 (noread, nowrite, execute). Dacă scrieți mai multe programe în acest director, atribuiți drepturile de acces și proprietarului în același mod ca pentru ls.

ftp / etc Proprietarul directorului rădăcină, roată de grup. Drepturi de acces 0111 (noread, nowrite, execute).

Creați în director

FTP / etc versiuni trunchiate ale fișierelor similare cu / etc / passwd și / etc / group. Drepturile de acces la fișier trebuie să fie 0444. În fișier

/ ftp / etc / passwd ar trebui descrisă doar de utilizatorii root, daemon, uucp și ftp. fișier

/ ftp / etc / group trebuie să conțină o descriere a grupului căruia îi aparține utilizatorul ftp. Tot în fișier

/ ftp / etc / passwd puteți crea o descriere a utilizatorilor ale căror fișiere vor fi în directoarele serverului (acest lucru este necesar pentru comanda ls). De exemplu, pentru toate fișierele din director

ftp / pub / linux proprietarul este 'balon' c UID = 156, caz în care puteți scrie la

Fișierul ftp / etc / passwd este următorul: linux: *: 156: 120: Kazik Balon. Nu uitați să ștergeți din fișier

ftp / etc / passwd * ALL * parole, având în schimb un simbol '*'. rădăcină: *: 0: 0: Ftp maintainer ::
ftp: *: 400: 400: Anonim ftp. Pentru mai multă securitate, nu puteți crea deloc în director

fișierele ftp / etc, passwd și grupul. În acest caz, comanda ls nu va afișa numele proprietarilor și grupurilor de fișiere. Dar rețineți că unii dintre demonstranții FTP pot folosi informațiile din fișierele passwd și grup pentru alte scopuri.

ftp / pub. Faceți-vă singur proprietarul directorului și alocați grupul la fel ca și utilizatorul ftp. Drepturile de acces la director trebuie să fie 0555.

Fișierele din acest director vor fi citite pentru toți utilizatorii "publici". Toate cataloagele din

ftp / pub trebuie să aibă drepturi de acces 0555.

Atenție: Nu există directoare, subdirectoare sau fișiere aflate în director

ftp nu trebuie să aparțină utilizatorului ftp. Unele daune FTP moderne vă permit să schimbați dreptul de proprietate asupra fișierelor și directoarelor folosind comenzi precum chown. Aceasta poate fi dezactivată în fișierul de configurare al serverului FTP. De exemplu, pentru WuFTP, puteți specifica următoarele în fișierul de configurare:


# toate următoarele implicite la "da" pentru toată lumea

ștergeți niciun oaspete, permisiunea anonimă # delete?

suprascrie niciun oaspete, permisiune de suprascriere # anonimă?

redenumiți niciun oaspete, permisiune # anonimă redenumită?

chmod nu permisiune anonimă # chmod?

nu ai permisiunea anonimă # umask?

Dacă mergeți pentru a permite utilizatorilor anonimi să scrie fișiere pe serverul dvs., creați un director

ftp / pub / intrare. Acest director trebuie să fie root și să aibă drepturi de acces 733. Și executați comanda chmod + t

ftp / pub / intrare. Un daemon FTP, de obicei, nu permite utilizatorilor anonimi să suprascrie fișierele. dar un utilizator obișnuit al sistemului le poate elimina. Setarea permisiunilor din 1733 interzice acest lucru. Mai jos este o secțiune a fișierului de configurare FTP al daemonului care controlează procesul de încărcare a fișierelor pe server.


# specificați informațiile din directorul de încărcare

încărcați / var / spool / ftp * nr

încărcați / var / spool / ftp / recepționați da ftp staff 0600 nodirs

cale-filtru anonim / etc / msgs / pathmsg ^ [- A-Za-z0-9 _.] * $ ^. ^ -

cale-filtru invitat / etc / msgs / pathmsg ^ [- A-Za-z0-9 _.] * $ ^. ^ -

Este interzisă încărcarea fișierelor în toate directoarele serverului, dar este permisă și pentru directorul / incoming cu proprietarul fișierelor ftp și a drepturilor de acces 0600.

Recomandare: Creați întreaga structură a serverului FTP (sau numai directorul de intrare) într-o altă partiție de disc. Acest lucru va ajuta la prevenirea umplerii intenționate a întregului dvs. disc de sistem cu tot felul de gunoi.

Dacă utilizați WuFTP, puteți configura unele funcții suplimentare, de exemplu arhivarea / dezarhivarea fișierelor "în zbor" sau crearea unui fișier tar cu o ierarhie de directoare. Pentru a face acest lucru, trebuie să obțineți sursa utilitarelor gzip, gnutar, comprimate și să le compilați fără a utiliza biblioteci dinamice. Apoi puneți aceste fișiere în director

ftp / bin și editați fișierul / etc / ftpconversions pentru a permite aceste operații.

Gary Mills a scris un mic program care implementează următoarele:

Pentru a executa comenzile de gudron și de compresie, a scris un mic program de țevi și a fost compilat fără a folosi biblioteci dinamice. Fișierul său / etc / ftpconversions arată astfel:


# prefix prefix: strip postfix: addon prefix: addon postfix: comanda externa: tipuri: optiuni: descriere

Z. / bin / comprimați -d -c% s: T_REG | T_ASCII: O_UNCOMPRESS: UNCOMPRESS

-z. / bin / comprimați -d -c% s: T_REG | T_ASCII: O_UNCOMPRESS: UNCOMPRESS

Z: / bin / comprimare -c% s: T_REG: O_COMPRESS: COMPRESS

tar: / bin / tar cf -% s: T_REG | T_DIR: O_TAR: TAR

tar.Z: / bin / țeavă / bin / tar cf -% s | / bin / comprese -c: T_REG | T_DIR: O_COMPRESS | O_TAR: TAR + COMPRESS

tar: / bin / gtar -c -f -% s: T_REG | T_DIR: O_TAR: TAR







tar.Z: / bin / gtar -c -Z -f -% s: T_REG | T_DIR: O_COMPRESS | O_TAR: TAR + COMPRES

tar.gz: / bin / gtar -c -z -f -% s: T_REG | T_DIR: O_COMPRESS | O_TAR: TAR + GZIP

Și aici programul în sine:


/ * pipe.c: execută două comenzi într-o țeavă * /

#define NULL (char *) 0

Și alte lucruri care nu ar face rău:

ca root, executați următoarele comenzi: atingeți

ftp / .forward
chmod 400

ftp / .rohosts
chmod 400

ftp / .forward, creați fișiere .forward și .rohosts de zero lungime cu proprietarul rădăcină și drepturi de acces 400.

Dacă vă aflați în agendă

FTP sau subdirectoarele sale montează discuri de la alte mașini, apoi setați modul read-only pentru ei. Aici este o intrare de probă pentru un fișier / etc / fstab pentru aparatul cu serverul FTP neclare: altele: / u1 / Linux / home / ftp / pub / linux nfs ro, noquota, nosuid, intr, bg 1 0 Pe această înregistrare smotniruetsya directorul / home / ftp / pub / linux disc cu „alte“ mașini fără o cotă de disc (noquota), fără sprijinul programelor suid, „întrerupt“ - în cazul în care gazda „altele“ nu funcționează.

Această secțiune este introdusă de Marcus J Ranum Recompilați ftpd-ul fără a utiliza bibliotecile dinamice și catalogați-l

ftp / bin. Omul umed trebuie să fie rădăcină.

Compilați fără să utilizați programul ls de biblioteci dinamice și puneți-l și în director

ftp / bin. Pentru Sun, puteți utiliza versiunea portată a comenzii ls din BSD. Acesta poate fi găsit pe ftp://ftp.tis.com/pub/firewalls/toolkit/patches/ls.tar.Z ls proprietari la livrarea trebuie să fie rădăcină.

Proprietarul directorului

FTP face rădăcină și drepturi de acces setate la 0755 (ACEASTĂ ESTE FOARTE IMPORTANT!)

Creați copii ale fișierelor

ftp / etc / group (nu uitați să eliminați parolele), proprietarul trebuie să fie root.

Creați programul de împachetare (una dintre opțiuni este prezentată mai jos) și scrieți-o în /etc/inetd.conf

** Programul presupune selectarea în directorul rădăcină / var / ftp

** Dacă aveți un director diferit, înlocuiți textul / var / ftp în întregul text cu calea completă

** la directorul selectat

** Notă: Nu folosiți '/' (root) pentru ftp!

Puteți utiliza "netacl" din setul de instrumente sau tcp_wrappers pentru a obține același efect.

Puteți, de asemenea, codul sursă ftpd pentru a găsi toate locurile în care seteuid vfzfvaetsya f-TION () eliminate aceste provocări, iar în „învelișul“ pentru a insera un apel la setuid (FTP) înainte de a apela ftpd. Acest lucru va împiedica înrădăcinarea privilegiilor dacă se găsește o "gaură" în fișierul ftpd.

Asigurați-vă că ar putea întreaga ierarhia de directoare de pe serverul FTP sunt permisiunile corect ustaeovlenny și dreptul de proprietate de fișiere, și niciodată loc un FTP fișiere executabile (cu steagul executat).

/ dtp / etc / passwd este complet separat și independent de fișierul de sistem / etc / passwd.

Dacă prin ftpd cineva poate obține privilegii "rădăcină", ​​atunci acest lucru se poate termina foarte trist. În acest sens, o recomandare foarte bună este următoarea - încercați să nu rulați "daemoni" de la utilizatorul rădăcină. Mulți încep astfel, dar nu toți au nevoie de privilegii de rădăcină. Puteți verifica cu drepturile de a rula programe folosind comanda "ps uax"

Unele sisteme necesită dispozitivul / dev / TCS: Old SVR2 și sistem SVR3 RTU 6.0 (Masscomp, acum concurente în timp real UNIX), ATT 3B1 și 3B2

Unele implementări ftpd necesită prezența

ftp / dev / tcp pentru operarea unui server FTP anonim.

Puteți crea acest dispozitiv (man mknod) în catadog

ftp / dev / c cu aceleași numere majore și minore cu sistemul / dev / tcp.

ftp / dev este un director,

ftp / dev / tcp este un dispozitiv de caractere. Grupul proprietarului m pentru el este "rădăcină". Permisiuni pentru

ftp / dev trebuie să fie citit / scriu / exec pentru proprietar și să citească / exec pentru grup, pentru

ftp / dev / tcp drepturile proprietarului citire / scriere, drepturi pentru grupul de citire.

[Logging] Dacă utilizați ftpd de la HP, este de a permite mai verbose în /etc/inetd.conf pentru ftpd trebuie să specificați tasta „-l“.

[Biblioteci] Pentru a rula pe SunOS cu biblioteci dinamice, trebuie să faceți următoarele: Creați un director

ftp / usr. Proprietarul este root, permisiunile sunt 0555.

ftp / usr / lib. Proprietarul este root, permisiunile sunt 0555.

Copiați încărcătorul ld.so în director

ftp / usr / lib. Proprietarul este root, permisiunile sunt 0555.

Copiați fișierele libc.so. * în director

Pentru libc.so. * - proprietarul rădăcină, permisiunile sunt 0555.

Notă: Pentru versiunile 4.1.2 sau anterioare, va trebui să copiați mai multe fișiere /usr/lib/libdl.so.* în director

ftp / dev. Proprietarul rădăcină, permisiuni 0111.

Pentru ca încărcătorul să funcționeze

ftp / dev / zero. Accesați directorul

ftp / dev și creați-o cu comanda: mknod zero c 3 12 Proprietar pentru

ftp / dev / zero - rădăcină. Citiți drepturile de acces (0444).

Atenție: Pentru începători: Nu încercați să copiați / dev / zero la

ftp / dev / zero! / dev / zero este un fișier fără sfârșit, care va fi copiat până când va umple întregul disc.

Dacă nu doriți să mutați biblioteca, puteți utiliza versiunea comenzii ls, care este copiată fără a utiliza biblioteci dinamice. Pe CD-ROM cu SunOS, îl puteți găsi și deja compilat. În acest caz, trebuie să efectuați acțiunile descrise la punctele # 5-6.

[Înregistrarea] Fișierele standard de sanfsk ftpd * toate * informații despre parolă. Pentru a remedia acest lucru, trebuie să instalați patch-ul:


101640-03 SunOS 4.1.3: in.ftpd înregistrează informații despre parolă când se utilizează opțiunea -d.

În fișierul /etc/inetd.conf, găsiți linia care începe cu "ftp". La sfârșitul acestei linii veți găsi "in.ftpd". Schimbați această opțiune la "in.ftpd -dl". În /etc/syslog.conf, adăugați o linie de genul:

Informațiile înregistrate pot fi împărțite (ceea ce este deosebit de important pentru SunOS4.1.1, care nu se ocupă de un daemon.) * Intrare, de exemplu:

Notă, coloanele trebuie separate prin file, nu prin spații, altfel nu vor funcționa.
Pentru a crea fișierul jurnal, executați comanda touch / var / adm / daemonlog și reîncărcați inetd-ul și syslogd-ul. Dacă nu aveți instalat un patch, asigurați-vă că faceți root proprietarul rădăcină de fișier și setați permisiunile la 0600, altfel oricine va putea să citească acest fișier și să selecteze parolele de utilizator din acesta.

Atenție: Puteți crea toate fișierele dvs. de jurnale accesibile numai pentru root. Acest lucru va proteja impotriva abilitatii de a calcula parola utilizatorului daca a intrat in locul acestuia in locul numelui sau.

Wuarchive FTP 2.4 - Un bun daemon FTP, cu control avansat al accesului, un sistem de logare și o configurație cu mai multe fațete.

Acesta poate fi găsit pe serverul FTP ftp.uu.net din directorul "/ networking / ftp / wuarchive-ftpd". Puteți verifica sumele de control pentru arhive pentru a vă asigura că aveți exact versiunea de care aveți nevoie. (Avertisment: există erori de securitate în versiunile mai vechi ale Wu-FTP!)

Suma de control a contului de control al contului MD5 Digital Signature

wu-ftpd-2.4.tar.Z 38213 181 20337 362 cdcb237b71082fa23706429134d8c32e

patch_2.3-2.4.Z 09291 8 51092 16 5558a04d9da7cdb1113b158aff89be8f

DECWRL versiunea ftpd 5.93, pot fi obținute de pe serverul gatekeeper.dec.com în directorul "/ pub / misc / vixie".

Sumă de control a contului de control al contului MD5 Semnătura digitală

ftpd.tar.gz 38443 60 1710 119 ae624eb607b4ee90e318b857e6573500

Sursa domeniului public:

Această secțiune conține o mică listă de acțiuni necesare pentru a verifica fiabilitatea serverului dvs. FTP. Verificați dacă serverul dvs. procesează comanda SITE EXEC la conectarea prin telnet la portul 21 cu următorul set de comenzi SITE EXEC. Dacă serverul dvs. procesează această comandă, asigurați-vă că aveți cea mai recentă versiune de ftpd, deoarece în versiunile mai vechi a fost posibil în această situație să accesați shell-ul prin portul 21.

Asigurați-vă că nimeni nu poate crea un fișier sau să scrie un fișier situat în directorul principal al serverului FTP. Dacă vine cineva și creează fișiere .rhosts și .forward cu anumite conținuturi, acesta va da șansa de a invada sistemul dvs. la orice atacator.

Asigurați-vă că nu există fișiere sau directoare aparținând utilizatorului ftp (directorul principal) pe serverul FTP. Dacă nu faceți acest lucru, se deschide și posibilitatea de penetrare în sistem.

Asigurați-vă că aveți cea mai recentă versiune a daemonului FTP.

Căutați programe pe servere FTP. Conectați-vă la unul dintre aceste servere ca arhie sau utilizați programul client corespunzător.


archie.ac.il 132.65.20.254 (Israel server)

arhie.ans.net 147.225.1.10 (server ANS, NY (SUA))

arhie.au 139.130.4.6 (Serverul australian)

archie.doc.ic.ac.uk 146.169.11.3 (United Kingdom Server)

arhie.edvz.uni-linz.ac.at 140.78.3.8 (serverul austriac)

archie.funet.fi 128.214.6.102 (serverul finlandez)

arhie.internic.net 198.49.45.10 (server ATT, NY (SUA))

archie.kr 128.134.1.1 (server coreeană)

archie.kuis.kyoto-u.ac.jp 130.54.20.1 (server japonez)

archie.luth.se 130.240.18.4 (serverul suedez)

archie.ncu.edu.tw 140.115.19.24 (server din Taiwan)

archie.nz 130.195.9.4 (server din Noua Zeelandă)

archie.rediris.es 130.206.1.2 (Server spaniol)

archie.rutgers.edu 128.6.18.15 (Universitatea Rutgers (SUA))

archie.sogang.ac.kr 163.239.1.11 (serverul coreean)

archie.sura.net 128.167.254.195 (serverul SURAnet MD (SUA))

arie.sura.net (1526) 128.167.254.195 (SURAnet alt MD (SUA))

arhie.switch.ch 130.59.1.40 (serverul elvețian)

archie.th-darmstadt.de 130.83.22.60 (Serverul german)

archie.unipi.it 131.114.21.10 (Server italian)

archie.univie.ac.at 131.130.1.23 (serverul austriac)

arhie.unl.edu 129.93.1.14 (U. of Nebraska, Lincoln (SUA))

archie.univ-rennes1.fr (serverul francez)

archie.uqam.ca 132.208.250.10 (Server canadian)

archie.wide.ad.jp 133.4.3.6 (Serverul japonez)







Trimiteți-le prietenilor: