Protocol SSH, aplicația principală și diferența față de Telnet. Protocol securizat de rețea SSH, de bază

SSH (Secure shell- Coajă protejată) -- aceasta este protocol de rețea asigurarea autentificării, conexiunii și transferului securizat de date între gazdele de rețea, prin criptarea traficului care trece prin aceasta, cu o posibilă comprimare a datelor. Un alt important caracteristică funcțională, este capacitatea de a crea tuneluri sigure, criptate pentru transmiterea sigură într-un mediu nesigur (de exemplu, Internet), alte protocoale de rețea, precum și capacitatea de a comprima traficul. În plus, protocolul SSH funcționează excelent cu redirecționarea (redirecționarea, redirecționarea) porturilor unei mașini către porturile alteia, inclusiv redirecționarea clienților la distanță XWindow... Acum protocol SSH, este un standard și este utilizat pe scară largă, de exemplu, pentru sistemele server, adică executarea diferitelor comenzi și manipulări în shell-ul serverului printr-o conexiune sigură, copierea fișierelor prin rețea, cum ar fi copiile de siguranță a datelor.

Protocol SSH, există în două versiuni, o versiune comercială dezvoltată de SSH inc și gratuit, open source, OpenSSH care este utilizat în principal pe majoritatea platformelor server. Implementare OpenSSH, este disponibil în orice sistem de operare al familiei Unix și în majoritatea acestora, SSH server și SSH client, sunt utilități standard... Tot ceea ce este scris mai jos va privi OpenSSHși sistemul de operare FreeBSD. Există două versiuni ale protocolului SSH nu sunt compatibile între ele. Prima implementare a protocolului SSH, SSH - 1, a fost dezvoltat în 1995. A doua versiune, SSH - 2, lansat în 1996. În 2006, protocol SSH a fost adoptat de IETF ca standard de internet. Acum este a doua versiune a protocolului care este utilizată pe scară largă. SSH pentru că, în primul rând, protocolul SSH versiunea 1, suferită de vulnerabilități grave, în al doilea rând, versiunea 2 folosește algoritmi de criptare mai puternici, în plus, susține capacitatea de a detecta corupția deliberată a datelor. Algoritmi de criptare:

  • Protocol SSH versiunea 1 DES, 3DES, blowfish
  • Protocol SSH versiunea 2 AES-128, AES-192, AES-256, blowfish, CAST-128, ArcFour
Funcția de digestie:
  • Protocol SSH versiunea 1 nr
  • Protocol SSH versiunea 2 HMAC-MD5, HMAC-SHA-1, HMAC-RIPEMD
După cum puteți vedea, diferența este foarte mare, deci protocolul SSH versiuni 1 , acum, în general, nu este strict recomandat pentru utilizare oriunde.

Metode de autentificare SSH, pachet software OpenSSH

Securitatea protocolului SSH furnizate de următoarele soluții software:
  • Criptarea întregului trafic care trece SSH o conexiune efectuată conform unuia dintre algoritmii posibili selectați în timpul negocierii părților la sesiunea de comunicare. Criptarea traficului de conexiune împiedică interceptarea și utilizarea acestuia în scopuri rău intenționate. Prin alegerea diferiților algoritmi de criptare, sistemul devine foarte flexibil, permițând, de exemplu, să nu folosească algoritmi în care au fost găsite vulnerabilități sau potențiale amenințări la adresa securității sau să folosească doar acei algoritmi care sunt susținuți de fiecare dintre părți;
  • Autentificare SSH serverul este întotdeauna efectuat, cu orice conexiune, care nu permite înlocuirea traficului sau a serverului în sine;
  • Autentificare SSH clientul poate apărea căi diferite, ceea ce, pe de o parte, face procesul de autentificare în sine mai sigur, pe de altă parte, face sistemul și mai flexibil, facilitând lucrul cu acesta;
  • Controlul integrității pachetelor de rețea, face posibilă urmărirea modificărilor ilegale în traficul conexiunii, dacă acest fapt este detectat, conexiunea este întreruptă imediat;
  • Parametrii de autentificare temporară împiedică utilizarea datelor de conexiune interceptate și, după un timp, decriptate.
Protocol SSH acceptă o varietate de metode de autentificare și autorizare pentru clienții aflați la distanță SSH server, iată câteva dintre ele:
  • Bazat pe GSSAPI autentificare
  • Bazat pe gazdă autentificare;
  • Autentificarea utilizatorului utilizând o cheie publică;
  • Autentificare provocare-răspuns ( răspuns la provocare);
  • Și, în cele din urmă, autentificarea obișnuită a utilizatorului, folosind o parolă;
Metodele de autentificare sunt utilizate în această ordine, totuși versiunea de protocol 2 are o opțiune, Autentificări preferate, permițându-vă să modificați comanda implicită. În plus, SSH acceptă metode suplimentare de autentificare a utilizatorilor, în funcție de sistemul de operare specific (de exemplu, bsd_auth sau PAM). În general, autentificarea utilizatorului se bazează pe chei publice. Client care încearcă să instaleze telecomanda SSH conexiune, criptează datele cu cheia de server public cunoscută de el, pe care o primește prima dată când se conectează la server și le transmite către SSH Server. La rândul său, serverul decriptează datele, cunoscute doar de el, cu o cheie secretă și le trimite clientului. Într-o astfel de schemă, clientul poate fi sigur că serverul este cine pretinde că este. Deci nu trebuie să te bazezi pe DNSși rutare chiar dacă atacatorul a reușit să falsifice intrarea DNS sau redirecționează pachetele către propria gazdă, autentificarea va eșua, deoarece gazdele străine nu au cheile necesare pentru aceasta. pentru că SSH acesta este un protocol de rețea complet, desigur, acesta este un anumit set de programe necesare funcționării sale, atât funcționalitatea de bază, cât și diverse oportunități suplimentare... Deoarece vorbim despre sistemul de operare FreeBSD (în alte versiuni de Unix, setul poate diferi ușor), componentele principale SSH sunt:
  • sshd este defapt SSH server, program daemon;
  • ssh- un program client care a devenit un înlocuitor pentru rloginși telnet;
  • scp- program pentru copiere de la distanță prin protocol SSH, Înlocuitor pentru rcp;
  • sftp- client ftp securizat;
  • sftp-server- un subsistem care asigură transferul de fișiere prin protocol SSH;
  • ssh-keygen- generator de chei
  • ssh-keyscan- „colector” de chei de gazdă publice;
  • ssh-agent- un agent de autentificare pentru a deține chei private;
  • ssh-add- un mic program pentru adăugarea de chei la ssh-agent;
Așa cum sa menționat mai sus, sshd, acesta este programul responsabil pentru funcționalitatea serverului SSH, începe când pornește sistemul de operare. Pentru a utiliza protocolul SSH imediat după instalarea FreeBSD, trebuie să activați demonul pentru a porni sshdîn programul de instalare Sysinstall... Deși acest lucru se poate face mai târziu, cu condiția să aveți acces la terminalul serverului. Permiteți demoniului să înceapă sshd, puteți prin scriptul de pornire /etc/rc.conf, scriind următorul rând: Bineînțeles, nu puteți face acest lucru, ci pur și simplu porniți daemonul din consolă / usr / sbin / sshd, dar la următoarea repornire, nu va porni de la sine, respectiv, accesul la server utilizând protocolul SSH nu îl veți avea, dar dacă serverul este situat în centrul de date al furnizorului de găzduire, atunci nu îl veți putea administra de la distanță. Din acest motiv, dacă intenționați să administrați serverul de la distanță, sshd inclus în faza de instalare.

SSH permite alegerea diferiților algoritmi de criptare. Clienții SSH și serverele SSH sunt disponibile pentru majoritatea sistemelor de operare din rețea.

SSH
Nume Secure shell
Nivel (model OSI) Aplicat
Familie TCP / IP
Port / ID 22 / TCP
Scopul protocolului Acces de la distanță
Specificație RFC 4251
Implementări principale (clienți)
  1. Autentificarea cu parolă este cea mai comună. Cu fiecare conexiune, cum ar fi https, este generată o cheie secretă comună pentru a cripta traficul.
  2. Pentru autentificarea perechii de chei, o pereche de chei publice și private este pre-generată pentru un anumit utilizator. Aparatul cu care doriți să vă conectați este stocat cheie privatăși deschideți pe aparatul de la distanță. Aceste fișiere nu sunt transferate în timpul autentificării, sistemul verifică doar că proprietarul cheii publice îl deține și pe cel privat. La această abordare De regulă, conectarea automată este configurată în numele unui anumit utilizator din sistemul de operare.
  3. Autentificarea prin adresă IP este nesigură; această caracteristică este de cele mai multe ori dezactivată.

Algoritmul Diffie-Hellman (DH) este utilizat pentru a crea un secret comun (cheie de sesiune). Pentru a cripta datele transmise se utilizează criptarea simetrică, algoritmii AES, Blowfish sau 3DES. Integritatea transferului de date este verificată folosind CRC32 în SSH1 sau HMAC -SHA1 / HMAC -MD5 în SSH2.

Datele criptate pot fi comprimate folosind algoritmul LempelZiv (LZ77), care oferă același nivel de compresie ca arhivatorul ZIP. Compresia SSH este activată numai la cererea clientului și este utilizată rar în practică.

Standarde și implementări de software

Prima versiune a protocolului, SSH-1, a fost dezvoltată în 1995 de cercetătorul Tatu Ulönen de la Universitatea de Tehnologie din Helsinki (Finlanda). SSH-1 a fost scris pentru a oferi mai multă confidențialitate decât protocoalele rlogin, telnet și rsh. În 1996, a fost dezvoltată o versiune mai sigură a protocolului, SSH-2, care era incompatibilă cu SSH-1. Protocolul a câștigat și mai multă popularitate, iar până în 2000 avea aproximativ două milioane de utilizatori. În prezent, termenul „SSH” înseamnă de obicei exact SSH-2, deoarece prima versiune a protocolului, din cauza unor neajunsuri semnificative, nu este practic practic utilizată acum.

Există module pentru utilizarea SSH în Python, cum ar fi python-paramiko și python-twisted-conch.

Tunelare SSH

Un tunel SSH este un tunel creat printr-o conexiune SSH și utilizat pentru a cripta datele tunelate. Este utilizat pentru securizarea transmiterii datelor pe Internet (IPsec are un scop similar). Când este trimis printr-un tunel SSH, traficul necriptat al oricărui protocol este criptat la un capăt al conexiunii SSH și decriptat la celălalt.

O implementare practică se poate face în mai multe moduri:

  • Crearea unui proxy Socks pentru aplicații care nu pot funcționa printr-un tunel SSH, dar pot funcționa printr-un proxy Socks
  • Folosind aplicații care pot funcționa printr-un tunel SSH.
  • Crearea tunelului VPN, potrivit pentru aproape orice aplicație.
  • Dacă aplicația funcționează cu un anumit server, puteți configura clientul SSH astfel încât să permită conexiunilor TCP prin tunelul SSH să ajungă pe un port TCP specific al mașinii pe care rulează clientul SSH. De exemplu, clienții Jabber se conectează implicit la portul 443. Apoi, pentru a configura o conexiune la serverul Jabber printr-un tunel SSH, clientul SSH este configurat să redirecționeze conexiunile de la orice port al mașinii locale (de exemplu, de la portul 4430 ) către un server la distanță (de exemplu, jabber .example.com și portul 443):

$ ssh -L 4430: jabber.example.com: 443 somehost

V acest caz Clientul Jabber este configurat să se conecteze la portul 4430 al serverului localhost (dacă clientul ssh rulează pe aceeași mașină cu clientul Jabber).

Pentru a crea un tunel ssh, aveți nevoie de o mașină cu un server ssh care rulează și acces la jabber.example.com. Această configurație poate fi utilizată dacă accesul la jabber.example.com de pe mașina locală este închis de un firewall, dar există acces la un server ssh care nu are restricții de acces la Internet.

SSH (Secure Shell) este un protocol de rețea acces de la distanță care utilizează criptarea și compresia pentru datele transmise. Pur și simplu, acesta este un instrument foarte util și puternic care vă permite să vă autentificați în sistem și să lucrați pe deplin în numele utilizator local fiind la mulți kilometri distanță de o mașină care funcționează. De asemenea, spre deosebire de telnet și rsh - SSH criptează tot traficul, astfel încât toate informațiile transmise să rămână confidențiale.

Deci, avem deja ssh instalat și ssh-daemon este adăugat la pornire la pornirea sistemului. O puteți controla prin comandă:

service ssh stop | start | restart

Pe Ubuntu sau:

/etc/init.d/ssh (pornire | oprire | reîncărcare | forță-reîncărcare | repornire | stare)

Pe Debian sau:

systemctl start | stop | restart sshd.service

În ArchLinux (după fiecare editare a configului, trebuie să reporniți). Kitul include un client și un server.

Să încercăm în acțiune! Mai întâi, creați un folder ~ / .ssh

mkdir ~ / .ssh

Generați chei pentru utilizator dat server cu comanda:

ssh-keygen (ca utilizator obișnuit).

Când generați, puteți seta o expresie de acces pentru cheie (este recomandabil să setați una lungă - apoi chiar dacă ați obținut cheia, dar nu știți parola din cheie, atacatorul nu va putea să se conecteze) sau puteți săriți-l apăsând pur și simplu „Enter” - în acest caz, parola nu va fi cerută niciodată. Aceleași chei publice și private au apărut în folderul ~ / .ssh.

Găsiți o altă mașină (chiar și un smartphone o va face - Android are câțiva clienți SSH extraordinari precum ConnectBot sau JuiceSSH), instalați ssh pe ea și conectați-vă la server cu comanda:

ssh [e-mail protejat]

Dacă totul este făcut corect, vi se va solicita parola utilizatorului și, după introducere, vă veți găsi în sistemul dvs. cu o vedere din linia de comandă.

Apropo, pentru Windows există și servere și clienți ssh.

După ce ne-am bucurat de rezultatul muncii noastre, să trecem la o parte și mai plictisitoare - configurarea clientului / serverului.

Configurarea din partea clientului este în / etc / ssh / ssh_config, iar serverul - / etc / ssh / sshd_config... Cel mai îndrumare completă pentru configurare, există probabil o pagină în man - man ssh și man sshd_config, așa că vă recomandăm să o citiți. Și în acest articol vom lua în considerare cele mai necesare lucruri.

Personalizare

Portul ssh standard este 22. Poate fi schimbat cu oricare altul care nu este standard (ceea ce face mai dificilă piratarea din cauza securității prin obscuritate sau atragerea atenției potențialilor atacatori :) - Pentru a face acest lucru, decomentați linia:

#Portul 22

Și adăugați orice doriți până la 65535 (asigurându-vă că portul nu intră în conflict cu alte servicii cu comanda #netstat -tupln | grep ASCULTĂ).

Acum, când se conectează la server, clientul va trebui să scrie cu cheia:

ssh -p [port]:

În mod implicit, accesul root este permis. Este foarte recomandabil să îl restricționați (și să delimitați în mod corespunzător drepturile utilizatorilor locali folosind sudo). Pentru a face acest lucru, găsiți linia „PermitRootLogin” și schimbați valoarea în „nu”. De asemenea, îl puteți schimba în „fără parolă” - în acest caz, autentificarea sub root va fi permisă numai de sub mașinile cu o cheie de încredere.

Puteți dezactiva autentificarea prin parolă și puteți lucra numai cu chei - găsiți linia: „Autentificare parolă” și schimbați valoarea la „nu”. Pentru ce? Dacă cineva dorește cu adevărat să aibă acces la sistemul dvs., atunci poate fie să forțeze brute parola atunci când încearcă să autorizeze, fie să vă asculte și să decripteze conexiunea. Dacă dezactivați autentificarea prin parolă și adăugați la ~ / .ssh / author_keys de pe server cheia publică a laptopului dvs., de exemplu, de lucru, atunci, după cum ne amintim, vom fi autorizați la server imediat. Dar dacă lucrați la echipamentul altcuiva și aveți nevoie urgentă de acces la serverul ssh, dar acesta, așa cum era de așteptat, nu ne va permite să intrăm? Apoi, nu puteți dezactiva autentificarea parolei, dar utilizați utilitarul fail2ban. Doar instalați-l din depozitul dvs., după care va aplica setările implicite și cel puțin vă va proteja canalul ssh de atacurile de forță brută. Mai multe despre fail2ban - http://putty.org.ru/articles/fail2ban-ssh.html.

În cazul în care cheile pentru lansarea rachetelor nucleare sunt stocate pe serverul dvs., puteți face așa ceva:

PermitRootLogin nu - conectarea sub root este interzisă.

PasswordAuthentication nu - conectare fără parolă

Să generăm o cheie lungă pe mașina de la distanță (-t tip criptare, -b lungime bit):

ssh-keygen -t rsa -b 4096

Cu o expresie de acces la fel de complexă (recuperare parola uitata apropo, nu poți. O puteți schimba cu comanda „ssh-keygen -p”, dar oricum vi se va cere oricum). Să transferăm cheia publică a mașinii locale la distanță către ~ / .ssh / autorizat_keys de pe server și voila - acum accesul poate fi obținut de la o singură mașină, folosind fraza de acces a cheii private. SSH vă permite să configurați o mulțime de configurații de securitate și are o mulțime de setări specifice pentru acest lucru - citiți despre ele la om.

Două opțiuni sshd_config au același scop:

LoginGraceTime- setează timpul după care conexiunea va fi deconectată dacă nu are loc autentificarea.

MaxAuthTries- setează numărul de încercări incorecte de a introduce datele de conectare, la atingerea cărora conexiunea va fi încheiată.

MaxSessions- numărul de sesiuni simultane (dacă serverul este computerul dvs. de acasă la care urmează să vă conectați de la universitate sau de la serviciu, atunci ar fi rezonabil să limitați numărul de sesiuni la una - o autentificare respinsă, în acest caz, va fi a devenit un motiv pentru creșterea paranoiei, generarea de chei noi și schimbarea parolei). Cu toate acestea, dacă sunteți atent, este posibil să fi observat că linia „Ultima autentificare” este afișată la fiecare autentificare la server. În plus față de acesta, puteți adăuga propriul mesaj de salut - găsiți linia „Banner” și, în loc de niciunul, setați calea către fișier cu textul care va fi citit și afișat la conectare.

Printre altele, puteți permite doar anumitor utilizatori să se conecteze sau permiteți tuturor, cu excepția anumitor utilizatori:

AllowUsers user1- permiteți utilizatorului să intre doar.

DenyUsers user1- permiteți tuturor, cu excepția utilizatorului1.

Și parametri similari pentru acces anumite grupuri- AllowGroups și DenyGroups.

De asemenea, puteți trimite o sesiune X11 prin SSH. Pentru a face acest lucru, găsiți linia „ÎnainteX11” și schimbați valoarea în „da”.

Găsiți o linie similară în configul clientului / / etc / ssh / ssh_config și, de asemenea, schimbați în „da”.

Acum trebuie să vă conectați la server prin ssh cu argumentul -X:

ssh -X [e-mail protejat]>

Puteți lansa imediat aplicația când sunteți conectat:

ssh -X [e-mail protejat]„aplicație”

Iată cum arată un GIMP care rulează într-o sesiune ssh:

Sau puteți obține ieșirea de pe camera web a laptopului unui utilizator nebănuit :)

Calculele sunt efectuate direct pe server, iar ieșirea este trimisă la computerul client (adică, chiar dacă serverul în sine nu are X11, aplicațiile grafice pot fi redate pe computerul dvs. la distanță). Această schemă funcționează destul de încet (nu uitați că tot traficul este criptat dinamic) - dar această funcție este foarte utilă.

De asemenea, puteți copia fișiere pe o sesiune SSH - există un simplu utilitar "scp" pentru aceasta. Puteți transfera fișiere direct în sesiune de la server la client:

scp [e-mail protejat]: / cale / către / fișier / pe / server / unde / salvare / pe / local / mașină

Deci, de la client la server:

calea scp / către / fișier / client [e-mail protejat]: / cale / pe / server

Acest lucru este destul de convenabil dacă trebuie să copiați un manual sau o fotografie, dar ce se întâmplă atunci când trebuie să lucrați cu mai multe fișiere? Există un lucru foarte convenabil pentru acest lucru - sshfs (disponibil pentru instalare în depozitele majorității * sistemelor nix).

Doar setați calea ca scp:

sshfs [e-mail protejat]: / acasă / utilizator / mnt /

Și folderul server / acasă / utilizator va apărea în punctul de montare / mnt al mașinii locale!

Demontarea se face prin umount.

Și, în sfârșit, să vorbim despre o caracteristică puțin cunoscută. Dacă creați un fișier /.ssh/configși umple-l astfel:

Gazdă [nume]

Numele gazdei

Utilizator [nume de utilizator server]

opțiunile dorite

ca

Înainte X11 da

Port 30.000

Apoi ne putem autentifica prin:

ssh [nume]

ssh -X -p 30000 [e-mail protejat]

Și toate opțiunile vor fi preluate automat. Astfel, cu autentificarea frecventă pe un anumit server, veți simplifica acest proces într-o chestiune de câteva momente.

Ei bine, am acoperit tot (și chiar mai mult) ce trebuie să știți despre SSH pentru utilizarea sa zilnică - am învățat cum să folosim autentificarea cheii, am protejat serverul de atacurile cu forță brută și, în general, am reparat majoritatea găurilor potențiale. De fapt, SSH poate face multe alte lucruri - de exemplu, tunelarea și redirecționarea porturilor printr-o sesiune ssh, dar este puțin probabil ca dvs., ca cel mai obișnuit utilizator, să folosiți acest lucru vreodată. Resurse aditionale

Introducere

În ediția anterioară, în articolul despre securitatea serverelor Internet, au fost ridicate problemele legate de alegerea platformei și a sistemului de operare al serverului Internet, securitatea serverului în general, s-a spus despre lucrul cu utilizatorii, ca precum și despre setări firewall... Permiteți-mi să vă reamintesc pe scurt că ne gândim să administrăm un mic birou sau o rețea de domiciliu atunci când aveți unul sau două computere dedicate. În primul caz, atunci când un computer este un firewall plus server de mail, Un server web și poate un server ftp. Pur și simplu, un computer dedicat este folosit ca un fel de resursă partajată. În al doilea caz, ceea ce implică prezența rețea mare, un computer este utilizat ca gateway plus un firewall, iar celălalt este folosit ca server de mail, server web etc. În principiu, a doua metodă este de preferat, deoarece separați fizic gateway-ul ca obiect al primului atac posibil de către hackeri și de server partajat rețele. În orice caz, pe viitor, vă puteți abstra din numărul de computere dedicate, amintindu-vă că, chiar dacă există două dintre ele, nu este rezonabil să le încărcați cu alte sarcini.

Toate cele următoare continuă linia articolului anterior, presupunând că o mașină Linux este utilizată ca server, iar utilizatorul este familiarizat cu Linux și rețeaua la un nivel de bază. Ideile pentru aceste exemple sunt împrumutate din diferite tutoriale Linux. Deci, ce întrebări ne vom uita de data aceasta? În primul rând, aplicațiile de server pe care veți dori să le instalați pe server. În al doilea rând, atacuri de rețea (inclusiv tipuri de viruși în Linux și troieni) și metode de gestionare a acestora. De ce aceste întrebări sunt combinate într-un singur articol? Faptul este că, de obicei, hacking-ul are loc fie din neglijența administratorului, fie din cauza lacunelor în protecția aplicațiilor server. Clientul, așa cum sugerează cuvântul însuși, nu controlează resursele sistemului, deci este evident că serverele pot fi subiectul unui atac.

Protecția aplicației server

Oricine este familiarizat cu UNIX își dă seama că aproape orice program de rețea poate fi folosit atât ca client, cât și ca server. În primul caz, utilizați serviciile, în al doilea, le furnizați. Este clar că ambele părți sunt necesare într-un serviciu de rețea. Întrebarea este ce fel de programe de server sunt necesare pe un server din rețeaua dvs. Când instalați Linux, desigur puteți alege cel puțin totul, deoarece instalarea pe un disc nu înseamnă încă pornirea. Dar pe care să le activați mai târziu? Există o rețetă simplă, pe care eu însămi o respect întotdeauna atunci când lucrez cu servere - cu cât sunt mai puține servere activate, cu atât mai bine (mai general: cu cât este mai dificil un lucru, cu atât este mai ușor să îl rupeți). Indiferent cât de mult vorbiți despre fiabilitatea UNIX, găurile sunt descoperite și reparate în mod regulat aici. Prin urmare, cu cât rulați mai puține programe, cu atât va trebui să le monitorizați mai puțin. În viața reală, desigur, acest lucru nu ar trebui să se rezume la faptul că interziceți utilizatorilor literalmente totul. Este sigur, desigur, dar de ce să vă deranjați cu un administrator? Cu toate acestea, lucrurile inutile, cum ar fi wais, cu siguranță nu ar trebui puse.

Telnet și ssh

Acum, să aruncăm o privire mai atentă la ceea ce au nevoie atât utilizatorii interni, cât și cei externi. Avem nevoie de telnet și ssh (shell securizat). Poate că nu este un acces foarte convenabil, dar este necesar, cel puțin pentru administratori. Acesta este un program care oferă acces în modul terminal, când pe computer apare o fereastră de 80x25 caractere, care reflectă complet serverul apelat. Puteți executa orice comandă și rula programe care nu utilizează grafică - în general, acesta este un terminal la distanță obișnuit. Diferența dintre telnet și ssh rezultă din nume, dar totuși să ne explicăm: telnet transmite informații neprotejate, chiar și parola este transmisă prin rețea în text clar și ssh criptează toate informațiile transmise. Dacă doriți să fiți mai mult sau mai puțin încrezători în protecție, dezactivați utilizarea telnet sau nu porniți-l deloc. Ei bine, dacă totuși doriți să-l utilizați, atunci, desigur, trebuie să utilizați un firewall. Comenzile standard pot fi după cum urmează:

pentru ipfwadm -

Ipfwadm -I -a accept -P tcp -S 10.0.0.0/8 -D 0.0.0.0/0 23 ipfwadm -I -a accept -P tcp -S some.trusted.host -D 0.0.0.0/0 23 ipfwadm - I -a refuz -P tcp -S 0.0.0.0/0 -D 0.0.0.0/0 23

pentru ipchains -

ipchains -A input -p all -j ACCEPT -s 10.0.0.0/8 -d 0.0.0.0/0 23

Ipchains -A input -p all -j ACCEPT -s some.trusted.host -d 0.0.0.0/0 23 ipchains -A input -p all -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0 23

De asemenea, puteți utiliza fișierele /etc/hosts.allow și /etc/hosts.deny, pentru care ar trebui să scrieți, respectiv:

în primul fișier -

In.telnetd: 10.0.0.0/255.0.0.0, some.trusted.host

în al doilea fișier -

In.telnetd: ALL

Rețineți că, chiar dacă aceste reguli sunt activate, orice program care ascultă în rețea undeva de-a lungul căii unui pachet cu o parolă îl poate intercepta.

Alte două fișiere importante cu informații legate de securitatea sistemului sunt / etc / securetty și / etc / shells. Primul specifică terminalele de la care utilizatorul root se poate conecta. În cele mai multe sisteme, în mod implicit, utilizatorul root se poate conecta numai de pe consolă. Al doilea fișier specifică o listă de împachetări valide care pot rula atunci când un utilizator se conectează. Un exemplu frumos pe care l-am luat din manualul Linux este utilizarea passwd ca shell. Aceasta oferă utilizatorilor o schimbare ușoară a parolei și asigură, de asemenea, că nu fac nimic altceva în modul terminal. Pentru a face acest lucru, introduceți programul passwd în fișierul / etc / shells, adică introduceți linia:

/ usr / bin / passwd

iar în fișierul / etc / passwd scrieți despre utilizator:

Nume utilizator: x: 1000: 1000 :: / home / nume utilizator: / usr / bin / passwd

Acum, când utilizatorul se conectează la rețea, el poate schimba doar parola. Ieșirea către terminal arată astfel:

Încercare 1.2.3.4 ... Conectat la localhost. Caracterul de evadare este „^]”. Red Hat Linux lansează 5.2 (Apollo) Kernel 2.2.5 pe un login i586: tester Parolă: Modificare parolă pentru tester (curent) Parolă UNIX: Parolă nouă UNIX: Reapelați parola UNIX nouă: passwd: toate jetoanele de autentificare au fost actualizate cu succes Conexiune închisă de străin gazdă.

Chiar dacă încercarea de a schimba parola a eșuat, aceasta va fi deconectată de la sistem. De asemenea, ar trebui să acordați atenție ieșirii de pornire atunci când vă conectați: telnet scrie sincer numele și versiunea sistemului. În general, acest lucru este convenabil, dar, în acest caz, oferiți unui potențial hacker informații pe care le poate folosi în propriile scopuri. Cum poți evita acest lucru? Când un utilizator se conectează, telnet afișează fișierul /etc/issue.net creat la pornirea sistemului. Este creat de comenzile din fișierul rc.local:

# Aceasta va suprascrie / etc / issue la fiecare boot. Deci, faceți orice modificări pe care doriți să le faceți / etc / issue aici sau le veți pierde când reporniți. echo ""> / etc / issue echo "$ R" >> / etc / issue echo "Kernel $ (uname -r) pe $ a $ (uname -m)" >> / etc / issue cp -f / etc / issue /etc/issue.net echo >> / etc / issue

Prin urmare, dacă nu supraîncărcați sistemul, puteți edita pur și simplu fișierul /etc/issue.net, altfel, editați rc.local în sine. În orice caz, telnet este recomandat numai atunci când este cu adevărat necesar și nu poate fi înlocuit cu ssh.

Ssh este similar cu telnet din punctul de vedere al utilizatorului. Spre deosebire de telnet, care folosește portul 23, acesta folosește 22, dar principala diferență internă este că tot traficul este criptat. În toate celelalte privințe, acestea sunt similare. Pentru ssh, puteți utiliza aceleași reguli firewall (cu numărul portului înlocuit) și setări în fișierele /etc/hosts.allow, /etc/hosts.deny. O caracteristică plăcută este prezența propriului fișier de configurare / etc / sshd / sshd_config care conține următoarele linii de configurare:

Port 22 # număr port, care poate fi mai mare de 22 ListenAddress 0.0.0.0 # ce se adresează demonului HostKey / etc / ssh / ssh_host_key # fișier coduri client RandomSeed / etc / ssh / ssh_random_seed # fișier cu numere aleatoare utilizate pentru a genera coduri ServerKeyBits 768 # lungime cod în biți LoginGraceTime 300 # timp de introducere nume și parolă KeyRegenerationInterval 3600 # frecvența regenerării codurilor PermitRootLogin nu # indiferent dacă utilizatorul root poate sau nu să se conecteze prin ssh IgnoreRhosts da # Ignoră sau nu informațiile din fișierul utilizatorului rhosts StrictModes da # modul strict, blocând defectele utilizatorilor, de exemplu, introducerea parolei de 5 ori # sau presa accidentală introduceți QuietMode nu # da - să nu scrieți deloc fișierul jurnal și nu - în caz contrar X11 Redirecționare nu # trimiteți informații despre serverul X prin canal ssh FascistLogging nu # grad de completitudine a fișierelor jurnal PrintMotd da # afișați o frază a zilei KeepAlive da # mențineți comunicare prin furnizarea de deconectare standard SyslogFacility DAEMON # care este responsabil pentru generarea jurnalelor RhostsAuthentication nu # permite autentificarea utilizatorului prin rhosts RhostsRSAAuthentication nu # indiferent dacă verificarea prin rhosts sau /etc/hosts.equiv # este setată la da în mod implicit RSAAuthentication da # numai pentru utilizare Autentificare RSA Parolă Autentificare da # utilizează parolele normale ale utilizatorilor sau nu PermitEmptyPasswords nu # permite utilizatorilor fără parolă sau nu

Există, de asemenea, câteva setări utile, în special:

AllowGroups, DenyGroups, AllowUsers, DenyUsers, AllowHosts, DenyHosts, IdleTimeout time (timp după care conexiunea va fi întreruptă în caz de inactivitate).

După cum puteți vedea din cele de mai sus, în general ssh are atât de multe opțiuni încât puteți controla exact cine se poate conecta și cum. Dar este vorba despre server, iar utilizatorii de rețea trebuie să ruleze clienți ssh. Spre deosebire de telnet, care este disponibil în Windows, ssh nu este inclus în distribuția standard. Linux nu are această problemă - și clientul este acolo. Este important să rețineți că demonul ssh este disponibil atât în ​​prima, cât și în a doua versiune. Bineînțeles, este neplăcut că nu există o compatibilitate inversă, dar sunt sigur că, în calitate de administrator, veți oferi utilizatorilor acei clienți care vor putea comunica cu serverul. Iată câțiva clienți ssh pentru Windows:

  • FiSSH gratuit și proaspăt. http://www.massconfusion.com/ssh/
  • Termenul Tera. http://hp.vector.co.jp/authors/VA002416/teraterm.html client telnet. http://www.zip.com.au/~roca/ttssh.html - dll suplimentar pentru suport ssh
  • Chit. http://www.chiark.greenend.org.uk/~sgtatham/putty.html - doar aproximativ 200K
  • Mindterm http://www.mindbright.se/mindterm/ - client Java ssh
  • Aplicația Java Telnet. http://www.mud.de/se/jta/ - există suport ssh
  • CRT sigur. http://www.vandyke.com/ - client comercial

Este necesar să menționăm accesul la terminal în legătură cu programe precum rlogin, rexec, rsh. Utilizarea lor este lipsită de orice protecție și uneori chiar permite utilizatorilor să treacă de la mașină la mașină fără a introduce o parolă. Deși acest lucru este convenabil, din punct de vedere al securității, pur și simplu nu este bun pentru nimic. Aceste servicii sunt de obicei pornite în mod implicit. Pentru a le anula, trebuie să editați fișierul /etc/inetd.conf și să reporniți demonul inetd. În general, telnet și ssh epuizează posibilitățile de acces terminal la sistem. Prin urmare, să trecem la alte aplicații de server care sunt utile pentru utilizatori.

E-mail sau e-mail

De ce este nevoie ca oamenii să aibă poștă, fără de care comunicarea între oameni nu mai este deseori concepută? O modalitate destul de obișnuită este instalarea unui server de poștă electronică, crearea unei cutii poștale pentru fiecare utilizator de acolo și configurarea unui pop-daemon, astfel încât oamenii să poată prelua acest e-mail. Dar pentru ca serverul să poată primi și trimite scrisori, acesta trebuie instalat pe acesta program de mail cum ar fi sendmail, postfix sau qmail, care gestionează e-mailurile pe o mașină UNIX. În mod tradițional, sendmail a fost utilizat în acest scop. Acum este folosit și pe majoritatea mașinilor, dar celelalte două programe menționate sunt înlocuiri bune și chiar îmbunătățite. Ca de obicei, principalele preocupări sunt legate de protecție, totuși ultimele versiuni sendmail (8.9.x) sunt destul de robuste.

Sendmail este disponibil pe toate sistemele Linux, cele mai recente distribuții conținând probabil versiunea 8.9.x. Programul folosește mai multe fișiere de configurare, pe care le analizează în acest proces. Dar înainte de a vorbi despre configurație, observăm că programul poate fi pornit atât ca un demon, cât și în modul de așteptare. În primul caz, va asculta în mod constant portul, iar în al doilea, va fi activat o singură dată și va procesa pur și simplu toate informațiile primite. A doua metodă este de preferat din punct de vedere al securității. Pentru a face acest lucru, trebuie doar să eliminați parametrul -bd din linia de pornire.

Acum despre configurație. Fișierul principal este sendmail.cf, care poate avea sau nu linkuri către alte fișiere. Este analizat și fișierul de acces, unde puteți pune astfel de adrese de la care (sau către care) nu vor fi trimise scrisori. De exemplu, intrările:

10.0.0 RELAY spam.com RESPINGE

înseamnă că e-mailurile de la adresele .spam.com nu vor fi acceptate, iar e-mailurile din rețeaua internă pot fi acceptate și trimise.

Un alt fișier util și folosit sunt aliasurile. Specifică ce nume vor fi interpretate ca numele căsuței poștale date. De exemplu, dacă setați

Petrov: stea

scrisori care vin la Petrov la adresa [e-mail protejat] va fi trimis la cutie [e-mail protejat] chiar dacă cineva nu știe adresa reală... Acest lucru este util, în special, dacă doriți ca e-mailurile să fie trimise unui manager care dorește să aibă o căsuță poștală nu cu managerul de nume, ci cu al său. Aceasta înseamnă că managerul va da adresa sa doar celor pe care îi consideră de cuviință, iar managerul va atârna pe pagina web. Evident, acest lucru va aduce confort maxim în cazul unei schimbări de manager. Orice număr de nume poate fi redirecționat către aceeași cutie poștală.

Fișierul virtusertable specifică maparea unei adrese cu alta, de exemplu:

[e-mail protejat] administrator

Prin utilizarea acestor două fișiere (pseudonime și virtusertable), se poate implementa duplicarea e-mailului, care va salva toate mesajele primite. Trucul este că fișierul virtusertable este analizat mai întâi, apoi aliasurile. Dacă, cu ultima intrare în virtusertable, scrieți în fișierul aliases:

Manager: stea, "/ var / spool / mail2 / stea"

apoi e-mailurile care sosesc atât la adresele managerului, cât și la cele stelare vor fi scrise în directorul normal / var / spool / mail și / var / spool / mail2.

Una dintre principalele diferențe dintre postfix și sendmail este modularitatea (pe care o are și qmail). Spre deosebire de sendmail, doar o mică parte din cod, doar un modul, rulează ca root, iar toate celelalte părți sunt rulate după cum este necesar și au propriile lor setări. În general, fișierele de configurare postfix se găsesc de obicei în / etc / postfix. Fișierul manager.cf gestionează funcționarea diferitelor module, specificând utilizatorii sub care rulează și numărul de procese. Fișierul main.cf este fișierul principal de configurare și stabilește parametrii de bază ai e-mailului. Iată forma sa aproximativă cu explicații (mai exact acele componente care cel mai probabil vor trebui editate):

# numele mașinii numelehostei = mail.example.org # domeniul mydomain = example.org # de la care adresă trimiteți e-mailuri myorigin = $ mydomain # pe care interfețe pentru a rula programul inet_interfaces = toate # fișierul de nume virtuale virtual_maps = hash: / etc / postfix / virtual # fișier de înlocuiri de nume alias_maps = hash: / etc / postfix / aliases # director în care e-mailul trebuie pus când utilizatorul îl primește home_mailbox = Maildir / # unde să stocheze mail mail_spool_directory = / var / spool / mail # comanda către extrage mail mailbox_command = / usr / sbin / scanmails # un fișier care indică adresele de la și către care e-mail ar trebui să fie transmis # relay_domains = / etc / postfix / relaydomains # mașini locale mynetworks = 10.0.0.0/24, 127.0.0.0/8 # ce să scoată dacă utilizatorii se conectează la portul 25 smtpd_banner = $ myhostname ESMTP $ mail_name

Programul postfix poate fi obținut de la http://www.postfix.org.

Acum să vorbim despre protocoalele POP și IMAP. Primul operează pe portul 110, al doilea - pe 143. În principiu, ambele urmăresc același scop, dar sunt implementate în moduri diferite. POP (protocolul poștal) este un protocol destul de vechi și slab. Tot ce permite este să vă conectați la server, să primiți e-mailuri și să le ștergeți din cutia poștală de pe server. Protocol IMAP mai avansat. Vă permite să vă gestionați e-mailul direct pe server. Nu trebuie să descărcați toate e-mailurile, ci luați doar antetele literelor, creați directoare pe server și distribuiți e-mailuri între ele. Din punct de vedere al securității, aceste protocoale sunt aceleași, deci este recomandabil să utilizați un firewall pentru a evita probleme. De asemenea, puteți pune traficul acestor protocoale în interiorul ssh. Este foarte important să vă verificați e-mailul pentru viruși. Deși virușii nu sunt înfricoșători în UNIX, deoarece mulți utilizatori folosesc Windows, este înțelept să rulați e-mailuri printr-un program de scanare precum AMAVIS. Cel mai simplu mod de a face acest lucru (desigur, se presupune că programul AMAVIS este deja instalat), dacă este în postfix în linia de configurare

Mailbox_command = / usr / bin / procmail

Mailbox_command = / usr / sbin / scanmails

Pe scurt despre modul în care un utilizator primește și trimite mesaje la locul de muncă. Din fericire, toate programele populare sunt clienți POP sau IMAP (mă refer, cel puțin la Netscape și Outlook). În plus, dacă administratorul a dat posibilitatea de a accesa serverul prin telnet sau ssh, puteți vizualiza e-mailurile și puteți lucra cu acesta în modul terminal (preluarea acestuia în acest caz este mai dificilă). Pentru a face acest lucru, trebuie să vă conectați la server și să rulați un program de mail în terminal, cum ar fi mail sau pin. Acesta din urmă este mult mai convenabil și este un program cu ecran complet cu meniu, numai în modul text.

Acces la fișiere și imprimare în rețea

Pe un sistem UNIX, există două instrumente standard- NFS și LPD. Primul vă permite să creați sisteme de fișiere de rețea, al doilea - să imprimați pe o imprimantă. În ceea ce privește utilizarea resurselor unei mașini UNIX din Windows, Samba (SMB) pare a fi cel mai potrivit pentru aceasta. Acest program vă permite să accesați fișiere și oferă, de asemenea, posibilitatea de a imprima în rețea de pe o mașină Windows printr-un server UNIX. Deoarece acest articol se referă în principal la securitatea serverului, trebuie remarcat faptul că partajarea resurselor în rețea nu este periculoasă, desigur, cu configurația normală a regulilor firewallului extern. Aici pot apărea probleme ale unui plan diferit, legate de faptul că nu toată lumea ar trebui să aibă acces la această informație sau la acea informație, dar aceasta este reglementată în totalitate de setările atributelor fișierelor și directoarelor. Indiferent cât de viclean ai fi, nu poți preveni o situație în care, de exemplu, cineva uită să închidă sesiunea ssh și să părăsească computerul. Este o altă chestiune dacă acordați acces la citire la unele fișiere, dar acestea sunt lucruri prea evidente pentru a ne opri. Prin urmare, ne îndreptăm acum spre examinarea aplicațiilor server care sunt utile nu numai utilizatorilor interni, ci și celor externi. Mă refer în primul rând la un server web și poate la ftp. Acum este dificil să vă imaginați cea mai mică companie sau chiar doar o rețea fără prima, iar prezența celei de-a doua depinde dacă aveți o nevoie reală de a încărca separat unele date pe un server ftp.

Servere web și ftp

Apache este liderul incontestabil în ceea ce privește popularitatea și performanța printre mai multe servere web existente în prezent. Acest server combină viteza, stabilitatea, securitatea ridicată și în același timp este gratuit. Nu este întotdeauna posibil să găsești un astfel de program în scopuri proprii, dar iată-l. Și trebuie să recunoaștem că autorii programului depun multe eforturi pentru a atinge eficiența și fiabilitatea maximă. În primul rând, rețineți că, dacă utilizați serverul Web numai în scopuri interne, cum ar fi administrarea sistemului sau partajarea fișierelor, atunci ar trebui să îl firewall cu siguranță din lumea exterioară. Dacă acesta este un server pentru toată lumea, atunci trebuie să înțelegeți că este deschis tuturor. De aceea este necesar să îl monitorizați corect, și anume: să îl configurați cu atenție și corect și să monitorizați fișierele jurnal pentru a determina în prealabil un posibil atac. În ceea ce privește securitatea, serverul în sine are foarte puțin acces la sistem, deoarece doar prima copie a acestuia rulează ca root, iar restul sunt de obicei rulate ca nimeni. În plus, în setările serverului, adică în fișierele httpd.conf, smr.conf, access.conf, este clar indicat la ce directoare are acces serverul și la care nu. Dacă scrieți în fișierul httpd.conf, de exemplu:

Opțiuni None AllowOrride None Opțiuni Indexuri FollowSymLinks Include AllowOverride None

atunci veți indica în mod explicit că serverul are acces doar la directorul / WWW, unde trebuie să plasați tot materialul site-ului (sau site-urilor), a cărui muncă este asigurată de server. Dacă doriți să fiți sigur că nimeni nu va modifica drepturile de acces prin includerea, de exemplu, a fișierului .htaccess într-un anumit director, atunci în srm.conf ar trebui să introduceți:

ordinul permite, nega nega de la toti

Din punct de vedere al securității, nu are sens să vorbim mai detaliat despre alte setări, mai ales că instalarea și configurația minimă a serverului Apache au fost descrise în numărul anterior într-un articol dedicat acestui subiect.

Este necesar să ne gândim separat la utilizarea protocolului https (securizat http). Acest protocol rulează de obicei pe portul 443 (spre deosebire de http standard care rulează pe portul 80). Există cel puțin două moduri de a îmbogăți Apache cu http securizat. Primul este să utilizați add-on-ul de la open-ssl, al doilea este să utilizați modulul mod_ssl. Ambele opțiuni conduc la aproape aceleași rezultate. În general, devine posibilă stabilirea conexiunilor utilizând https pe portul 443. Aceasta creează un certificat pentru server, care va fi verificat de clienți la conectare. Acest lucru va exclude (desigur, nu cu o garanție absolută) ascultarea traficului. Pentru a crea un certificat atunci când utilizați openssl, trebuie să dați comenzile:

Openssl genrsa -des3> httpsd.key openssl req -new -key httpsd.key> httpsd.csr

în plus, fișierele trebuie să se afle în același director în care se află fișierele de configurare ale serverului. Pentru ca serverul să funcționeze corect cu portul 443, va trebui, de asemenea, să modificați fișierele de configurare. Trebuie să scrie ceva de genul

# ascultare pe portul 443 (în mod implicit, serverul ascultă doar pe portul 80) Ascultați 443 # dezactivați utilizare globală ssl SSLDisable # locul în care serverul va stoca informații temporare în timpul conexiunii ssl. Fără # această setare, serverul nu va funcționa SSLCacheServerPath / usr / bin / gcache # port prin care serverul comunică cu CashServer SSLCacheServerPort 12345 # CashServer timeout SSLSessionCacheTimeout 300

După aceste setări, serverul dvs. este practic gata să funcționeze cu https, dar pentru moment acest protocol este interzis. Este recomandabil să creați o gazdă virtuală care să aibă același nume ca și cea implicită, dar cu o indicație explicită a portului 443, cu alte cuvinte, aveți acum un server web care rulează. Acesta rulează pe portul 80 și folosește protocolul http. Adăugând apache-ssl și setările descrise mai sus, le-ați dat utilizatorilor posibilitatea de a comunica cu serverul dvs. prin protocolul https. Este puțin probabil ca toate informațiile de pe serverul dvs. să fie atât de clasificate încât să doriți să le oferiți numai într-un mod de conexiune sigură. Serverul Apache vă permite să creați mașini virtuale, adică puteți să declarați un subdirector rădăcină pentru o gazdă, să îi dați un nume, să scrieți un set de fișiere de configurare și tot ce este necesar, dar din punct de vedere fizic va fi localizat pe computerul dvs. și va fi controlat de propriul dvs. server ... În cazul nostru, nici măcar nu este necesar să se dea un nume diferit, deoarece este același, doar un alt port. Așa ar putea arăta o astfel de configurare:

DocumentRoot / www / secure / ServerName www.example.com ServerAdmin [e-mail protejat] Jurnale ErrorLog / https_error.log TransferLog jurnale / https_access.log # Permiteți ssl pentru această gazdă virtuală SSLEnable # Necesită numai SSL SSLRequireSSL SSLCertificateFile /usr/conf/httpsd.crt SSLCertificateKeyFile / usr / conf / httpskeyClient

Pe lângă http, există și ftp - un serviciu util și convenabil, mai ales dacă aveți o mulțime de fișiere pe care utilizatorii trebuie să le descarce (de exemplu, furnizați câteva date de cercetare). Avantajul ftp față de http este viteza. Protocolul ftp are un minim de cheltuieli generale. Cu toate acestea, există multe probleme cu el. Principala este „vârsta” sa: ftp este la fel de vechi ca telnet. De aici, apar imediat complicațiile legate de securitate: numele de utilizator și parola sunt transmise în clar, iar traficul informațiilor transmise nu este protejat de nimic. Pe lângă ftp poate transfera doar fișiere. Prin urmare, dacă aveți unele informații disponibile tuturor, atunci este rezonabil să creați un singur utilizator, sub al cărui nume va intra toată lumea. Adesea în astfel de arhive ftp acest utilizator este numit anonim și își transmite adresa de e-mail ca parolă. În acest caz, există mult mai puține probleme de securitate. Mai mult, în cazul în care trebuie să oferiți acces ftp mai multor utilizatori, creați un chroot astfel încât să poată pune fișiere doar în propriile lor directoare. În ceea ce privește serverele, desigur, acestea sunt disponibile în pachete standard, dar poate doriți să instalați nu un ftpd standard, ci altele.

Unul dintre serverele ftp populare este proftpd. Fișierele sale de configurare sunt similare cu fișierele Apache, ceea ce face mai ușoară adaptarea la acestea, deoarece cel mai probabil serverul dvs. web este Apache. Fișierul principal de configurare este /etc/proftpd.conf. Forma sa aproximativă poate fi astfel:

ServerName "Instalare implicită ProFTPD" ServerType inetd DefaultServer pe portul 21 Umask 022 MaxInstances 30 Utilizator nimeni Grup nimeni Permiteți suprascrierea activată

Lista de mai sus indică faptul că serverul este pornit prin inetd, pe portul 21 standard, numărul maxim de copii este 30 și este pornit ca grup și utilizator nimeni. 022 - masca atributelor fișierului în timpul creării, care va fi aplicată ca standard inițial. Această configurație nu oferă acces utilizatorului anonim. Pentru a face acest lucru, trebuie să scrieți aproximativ următoarele setări de configurare:

User ftp Group ftp RequireValidShell off UserAlias ​​anonim ftp MaxClients 10 DisplayLogin welcome.msg DisplayFirstChdir .message DenyAll

După această adăugare, devine posibil să lucrați ca fișiere anonime și să citiți numai, adică să descărcați. Voi da un alt exemplu de setare a drepturilor de utilizare a directoarelor:

AllowAll DenyAll

O astfel de intrare în fișierul de configurare oferă acces la scriere, dar nu oferă dreptul de a descărca fișiere. Acest lucru este util dacă doriți ca utilizatorii să poată încărca fișiere, dar să nu poată vedea ce au pus alții.

Aceasta încheie subiectul aplicațiilor server. Desigur, trebuie remarcat faptul că există mult mai multe aplicații pentru server: există și DNS, servere de știri, servere NIS, serverul X și multe alte aplicații interesante și utile. Cu toate acestea, am încercat să mă concentrez asupra a ceea ce ar putea fi de fapt necesar atunci când operez o rețea care nu pretinde că este o ciberpolisă globală sau un furnizor. Acum să trecem la a doua întrebare, menționată la începutul articolului - la atacuri de rețea și hacks.

Atacuri de rețea și hacks

În primul rând, câteva cuvinte generale. În UNIX, spre deosebire de Windows, nu există nicio problemă cu virușii. Structura internă a alocării memoriei și a permisiunilor de fișiere este capabilă să facă față singură ceea ce fac de obicei virușii în vechiul DOS sau Windows. Principala barieră pentru viruși (în sensul lor standard) este lipsa accesului la dispozitivele fizice pentru programele care rulează în numele unui utilizator obișnuit, precum și faptul că atributele de fișiere nu sunt setate deloc, ci pentru utilizator, grup și toți utilizatorii. Nu există așa ceva în Windows (acest lucru este parțial implementat în Windows 2000). Deși supărarea cauzată de virușii tradiționali este aproape imposibilă, sistemele UNIX sunt încă pirate și distruse. Acest lucru se datorează prezenței unor tehnologii complet diferite, care pot fi împărțite aproximativ în două categorii. Primul este așa-numiții troieni, care sunt programe care aparent, și poate de fapt, efectuează acțiuni destul de rezonabile și legale. Totuși, în paralel, ei fac alte „lucrări”: ascultarea rețelei sau colectarea informațiilor despre parole și trimiterea acestora la rețea etc. Este puțin probabil ca aceste programe să facă rău direct - mai degrabă vor fi intermediari între sistemul dvs. și un atacator extern. A doua categorie este hacks de rețea. Aceste acțiuni nu fac apel inițial la conținutul intern al mașinii, ci încearcă să distrugă sistemul sau să obțină acces la acesta trimițându-i niște informații, cum ar fi pachete de rețea în mod deliberat incorecte, sau prin intermediul unor cereri special formate, care încearcă să „ademenească” câteva date ascunse. De ce hack sisteme deloc? Aceasta este o întrebare mai degrabă psihologică decât practică. Faptul este că, în realitate, o parte destul de mare a hacking-urilor nu provine din scopuri egoiste, ci pur și simplu din interesul față de procesul în sine. Printre persoanele care sunt numite de obicei hackeri se numără nu doar cei care hackerează pentru un beneficiu real, ci și „entuziaștii” care piratează rețeaua de dragul hackingului în sine. Sună neașteptat, dar este, iar statisticile o arată. În plus, este adesea destul de dificil să dai vina pe o persoană pentru ceea ce a făcut, deoarece uneori este imposibil să demonstrezi că el și acest computer au efectuat anumite acțiuni ilegale. Cu toate acestea, în acest articol discutăm despre hacks în sine, și nu despre aspectele lor psihologice și juridice, și, prin urmare, vom trece la lucruri specifice.

Hackarea rețelei, indiferent cât de atent este efectuată și orice metode sunt utilizate, conduce inevitabil la unele modificări ale sistemului. Aceasta ar putea fi o nouă listă de porturi de ascultare, programe necunoscute, redimensionarea programelor existente, în special ps sau netstat, sau chiar utilizatori noi. Într-un fel sau altul, ideea este că ceva trebuie să se schimbe, iar acest lucru este inevitabil. Prin urmare, prima acțiune rezonabilă pe care vă sfătuiesc să o luați imediat după instalarea și configurarea sistemului este crearea unui fișier cu informații despre sistem. Ceva de genul unei fotografii în momentul în care considerați că tot ce se întâmplă este corect. Mai precis, mă refer la informațiile furnizate de programele netstat, vmstat, free, du, df. Al doilea sfat este să faceți o copie de siguranță a fișierelor de configurare a sistemului și a setărilor inițiale. Comparându-le între ele, puteți furniza, de asemenea, câteva informații despre ceea ce sa întâmplat recent în sistem.

Să începem prin monitorizarea sistemului de fișiere, care implică nu doar monitorizarea utilizării sistemului de fișiere (care se poate face cu comenzile du și df), ci și verificarea imuabilității anumitor fișiere (de exemplu, fișiere de sistem). Există o serie de programe care îndeplinesc aceste funcții:

  • AIDE - un program care vă permite să creați sume de control pentru fișiere, verificând astfel integritatea acestora; permite utilizarea mai multor algoritmi. http://www.cs.tut.fi/~rammer/aide.html. (Restul programelor îndeplinesc funcții similare, toate sunt gratuite.)
  • Gog & Magog - creează o listă de atribute și proprietari de fișiere, permite comparații automate. http://www.multimania.com/cparisel/gog/
  • Sentinel - creează sumele de control folosind algoritmul MAC RIPEMD-160 biți are interfață grafică... http://zurk.netpedia.net/zfile.html
  • SuSEauditdisk este un program plasat pe o dischetă, care face posibilă efectuarea unei verificări de sistem complet autonomă, pornind direct de pe o dischetă. Livrat standard cu SuSELinux. http://www.suse.de/~marc
  • ViperDB - Verifică proprietarii și atributele fișierelor prin crearea de fișiere jurnal care înregistrează modificările care au avut loc. Programul are trei parametri: -init - creează baze de date prin fișiere, -check - verifică fișierele în baza de date și face modificări în baza de date dacă au apărut pe disc, -checkstrict - verifică fișierele în baza de date și returnează parametrii vechi dacă modificările au a avut loc. http://www.resentment.org/projects/viperdb
  • Sxid - Creează sumele de verificare a fișierelor și verifică atributele și proprietarii. ftp://marcus.seva.net/pub/sxid/
  • nannie - își amintește timpul de creare a fișierului. ftp://tools.tradeservices.com/pub/nannie/
  • confcollect - își amintește informatii despre sistem precum cele stabilite software, tabele de router etc. http://www.skagelund.com/confcollect/
  • Pikt este un instrument care conține un limbaj de script intern pentru crearea de programe care efectuează standard, dar nu sunt implementate sub formă de comenzi specifice, funcții (monitorizarea utilizării orare a sistemului, eliminarea proceselor de lungă durată, stabilirea dimensiunii cutie poștală etc.). Disponibil pentru diverse platforme: Solaris, Linux și FreeBSD. http://pikt.uchicago.edu/pikt/

De asemenea, puteți vorbi despre programe care efectuează funcții de backup, dar, în opinia mea, acest lucru nu este direct legat de securitatea sistemului și, în plus, diferite instrumente standard sunt incluse în distribuția UNIX. Securitatea este relevantă numai dacă backup-uri este necesar să se facă, dar acest lucru a fost deja menționat mai sus.

Acum, să aflăm ce trebuie să facem pentru a preveni atacurile de rețea. Desigur, trebuie să instalați un firewall pe gateway. Într-un fel sau altul, este necesară protecția la nivel de pachet. Dacă firewall-ul este ocolit în vreun fel, atunci sunt necesare următoarele programe:

  • DTK - emulează servicii și programe standard, iar în cazul cererilor non-standard trimise către aceste programe, sunt emise informații false în mod deliberat pentru a confunda atacatorul. http://all.net/dtk/
  • Psionic PortSentry - Monitorizează scanările porturilor. Sarcina principală este de a verifica porturile pentru scanare și de a afișa totul într-un fișier jurnal. http://www.psionic.com/abacus/portsentry/
  • Psionic HostSentry - Creează o bază de date cu informații despre utilizarea mașinii de către utilizatori, afișând un mesaj când se utilizează resurse non-standard. http://www.psionic.com/abacus/hostsentry/
  • Scanlogd - scanează pachetele de rețea, generând fișiere jurnal pe baza setărilor. http://www.openwall.com/scanlogd/
  • Firewalls este denumirea colectivă a programelor firewall.
  • TCP-WRAPPERS - programe care restricționează accesul la anumite resurse după nume sau număr de computer. Unele dintre aceste programe sunt disponibile la adresa. ftp://ftp.porcupine.org/pub/security/
  • NFR este un program similar în construcție cu un sniffer (sniffer este un program pentru ascultarea traficului de rețea). Înregistrează fișiere jurnal și detectează în timp real atacuri și scanări de porturi. http://www.nfr.com/
  • O întrebare frecventă detaliată și utilă despre atacurile de rețea și detectarea acestora poate fi găsită la http://www.robertgraham.com/pubs/network-intrusion-detection.html.

Este dificil să răspunzi fără echivoc la întrebarea ce și cum ar trebui făcut în timpul atacurilor de rețea. Aici multe depind atât de specificul rețelei specifice, cât și de organizația în care se află. Chiar și cu un atac de același tip, într-un caz, veți dori să salvați mai întâi datele, iar în al doilea, veți dori să blocați sursa atacului, adică totul depinde de priorități. Atacurile sunt o problemă foarte dificilă în organizațiile în care timpul de nefuncționare a rețelei este inacceptabil. Acolo va trebui să efectuați toate operațiunile online, pe cât posibil, păstrând legătura cu lumea exterioară. Destul de mult depinde și de natura atacului. Hacking-ul de dragul hacking-ului este un lucru, iar furtul intenționat al datelor clasificate este altul. Poate, este adevărat, și o versiune mai sofisticată, atunci când atacul este efectuat cu scopul de a distrage administratorul de la un hacking mai sofisticat și mai atent gândit efectuat în paralel. Dar nu credeți că un atac poate veni doar din exterior. S-ar putea să înceapă din interior. Un posibil scenariu este lansarea unui cal troian pe un computer Windows din rețeaua internă. Evident, acest lucru se poate face pur și simplu prin trimiterea unei scrisori prin poștă. Acum să aruncăm o privire mai atentă asupra programelor sniffer.

În general, adulmec înseamnă a adulmeca. Prin urmare, sniffers sunt programe care într-un fel sau altul ascultă rețeaua și toate informațiile care trec prin ea. Un exemplu ilustrativ este o parolă care vine în text clar din computer intern la server. Deoarece pachetele călătoresc prin rețea până când găsesc un destinatar, instalarea unui sniffer pe cel puțin un computer din rețeaua internă (de exemplu, folosind o literă, așa cum s-a menționat mai sus) este instrument la îndemână pentru un cracker extern. În cele mai multe cazuri, sniffers sunt destul de pasivi, ceea ce le face dificil de detectat. Mai jos este o listă cu mai multe programe sniffer care pot fi utilizate pentru a monitoriza ceea ce se întâmplă în rețea:

  • Tcpdump este cel mai vechi program livrat împreună cu tot UNIX.
  • Sniffit - are capacitatea de a filtra pachete și de a traduce informații în format text; echipat cu o interfață grafică. http://sniffit.rug.ac.be/~coder/sniffit/sniffit.html
  • Ethereal este un analizor de protocol de rețea.
  • Snort - conceput pentru a monitoriza rețeaua, poate detecta scanările porturilor. http://www.clark.net/~roesch/security.html
  • SPY este un sniffer, dar nu gratuit. Există o licență gratuită de rețea pentru un singur utilizator de până la cinci mașini. http://pweb.uunet.de/trillian.of/Spy/

Cu toate acestea, nu trebuie uitat că, pe lângă software, există și ascultarea hardware, de exemplu, pur și simplu conectarea unui alt computer sau conectarea la un cablu. Este curios că, dacă utilizați un Ethernet subțire (cablu coaxial), îl puteți asculta fără a-l deschide.

  • AntiSniff este un program care scanează rețeaua pentru detectarea mirosurilor. Principiul funcționării sale este foarte simplu: trimite o cerere și, prin răspuns și prin timpul de răspuns, determină dacă este procesat de un alt program sau nu. http://www.l0pht.com/antisniff/

Întrebări frecvente detaliate și utile despre sniffer pot fi găsite la. http://www.robertgraham.com/pubs/sniffing-faq.html.

O altă tehnică care poate ajuta la prevenirea atacurilor este testarea sistemului folosind programe care emulează atacuri sau programele în sine, cu care sunt efectuate aceste atacuri. Cumva verifici sistemul în condiții de luptă. Dacă protecția este cu adevărat o prioritate majoră pentru această mașină, atunci verificarea configurației sistemului înainte de conectare este un pas foarte important. Vă aduc în atenție câteva dintre aceste programe.

Programe care scanează sistemul de la sine din interior:

  • Tiger este un program încă în curs de dezvoltare. ftp://net.tamu.edu/pub/security/TAMU/
  • check.pl este un script Perl care verifică arborele directorului și fișierele din acesta și indică diverse atribute și nume de proprietari discutabile. http://opop.nols.com/proggie.html

Scannerele de rețea care indică serviciile disponibile pe un alt sistem (o idee bună pentru verificarea setărilor firewall-ului, de exemplu):

  • Strobe este un scaner de rețea vechi, dar rapid și încă eficient. Uneori inclus cu UNIX. ftp://suburbia.net/pub/
  • Nmap este un program care folosește noi metode de scanare a porturilor și este extrem de configurabil. Permite obținerea parametrilor sistemului de operare (nume, versiune). http://www.insecure.org/nmap/index.html
  • Portscanner este un scanner de porturi mic, care are multe formate pentru transmiterea informațiilor procesate. http://www.ameth.org/~veilleux/portscan.html
  • Queso nu este într-adevăr un scaner; este un program conceput pentru a determina tipul de sistem de operare de pe un computer la distanță. http://www.apostols.org/projectz/queso/

Software-ul de scanare pentru potențiale găuri de securitate este, fără îndoială, un pas înainte de scanerele de porturi. Aici, se aplică un nivel mai ridicat de analiză a informațiilor și nu sunt determinate porturile deschise în sine, ci acele vulnerabilități din sistemul către care este deschisă calea prin aceste porturi. Voi numi mai multe astfel de programe:

  • Nessus este un software de urmărire a atacurilor client-server. Există servere pentru Linux, FreeBSD, NetBSD și Solaris și clienți pentru Linux și Windows. În plus față de scanarea porturilor și urmărirea atacurilor, programul poate efectua căutări DNS pentru a găsi computerele asociate mașinii compromise. http://www.nessus.org/
  • Saint este un descendent al programului Satana, care a fost anterior unul dintre cele mai populare pentru colectarea de informații despre mașini. Saint folosește o arhitectură client-server, dar îl înlocuiește cu un program web. Scopul principal este de a colecta informații despre vulnerabilități în protecția sistemului. http://www.wwdsi.com/saint/
  • Cheops este un program care realizează o hartă a mediului de rețea IP cu o indicație a sistemului de operare care rulează pe computere. http://www.marko.net/cheops/
  • SARA (Security Auditor's Research Assistant) este un program similar cu Saint. Poate scana mai multe mașini în același timp, în plus, produce rezultatul muncii în format HTML. http://home.arc.com/sara/
  • BASS (Bulk Auditing Security Scanner) este un program a cărui ideologie se bazează pe faptul că Internetul nu este protejat. Sarcina principală este scanarea sistemelor pentru detectarea prezenței „găurilor de securitate” în ele. http://www.securityfocus.com/data/tools/network/bass-1.0.7.tar.gz

Programul de scanare a firewall-ului și verificarea corectă a configurării este Firewalk. Prin trimiterea diferitelor pachete, programul caută să calculeze regulile în funcție de care funcționează firewall-ul. http://www.packetfactory.net/firewalk/

Arhiva de la http://www.rootshell.com/ conține date cunoscute despre erorile de protecție a sistemului și linkuri către programe de completare de la producătorii de sisteme de operare care remediază aceste erori. Este adevărat, uneori, în loc de un astfel de link, puteți vedea mesajul „Upgrade la următoarea versiune”, care este jignitor, mai ales dacă sistemul este comercial. Acest lucru, de exemplu, este adesea cazul IBM AIX.

Cu aceasta, aș dori să închei descrierea problemelor legate de securitatea sistemelor pentru Servere de internet... Este o descriere, nu un ghid de acțiune și nu o referință detaliată. Scopul meu principal a fost să dau o idee despre ce trebuie făcut pentru a proteja sistemul. Este probabil ca, în unele cazuri, unele dintre sfaturi să pară inutile sau pur și simplu inutile și, probabil, legăturile cu programele date nu vor fi suficiente. Cu toate acestea, mi se pare că principalele puncte legate de protecția sistemelor și rețelelor UNIX au fost reflectate într-un grad sau altul. Unele probleme private, probabil, vor fi discutate în următoarele numere ale revistei.

ComputerPress 3 "2001

  • Coerciția administrativă și diferența acesteia față de alte tipuri de constrângere de stat este un sistem de măsuri ale constrângerii administrative.
  • Adresa instituției care a completat protocolul ___________________________________________________
  • Acte, protocoale. Componența detaliilor actului și protocolului. Amplasarea cerințelor pe formularul A4. Cerințe pentru înregistrarea actului și protocol. Acordarea forței juridice documentului.
  • Amnistia: concept și semne. Iertare: concept, consecințe juridice, diferență de amnistie.
  • Sistemul de instanță de arbitraj al Federației Ruse. Rolul sistemului judiciar în soluționarea litigiilor economice, inclusiv a litigiilor legate de aplicarea legislației fiscale.
  • SSH - (Secure Shell) - un protocol de rețea care vă permite telecomandă transfer computer și fișiere. Funcționalitatea este similară cu protocoalele Telnet și rlogin, dar folosește algoritmi de criptare pentru informațiile transmise.
    Neajunsurile telnet-ului au dus la o eliminare foarte rapidă a protocolului în favoarea protocolului SSH mai sigur și funcțional. SSH le oferă pe toate acestea funcționalitate care au fost prezentate în telnet, cu adăugarea unei codificări eficiente pentru a preveni interceptarea datelor precum nume de utilizator și parole. Sistemul de autentificare cu cheie publică SSH asigură acest lucru computer la distanță este cu adevărat cine pretinde că este.

    Securitatea criptografică a protocolului SSH nu este fixă; este posibilă alegerea diferiților algoritmi de criptare. Clienții și serverele care acceptă acest protocol sunt disponibile pentru diverse platforme. În plus, protocolul permite nu numai utilizarea unui shell securizat de la distanță pe mașină, ci și tunelarea interfeței grafice - Tunelare X (numai pentru sisteme de operare similare Unix sau aplicații care utilizează interfața grafică X Window System). SSH este, de asemenea, capabil să transmită orice alt protocol de rețea printr-un canal sigur (Port Forwarding), oferind (cu o configurație adecvată) capacitatea de a transmite în siguranță nu numai interfața X, ci și, de exemplu, sunetul.
    Cu toate acestea, SSH nu rezolvă toate problemele de securitate a rețelei. El își concentrează atenția doar pe furnizare muncă sigură aplicații precum emulatoarele de terminal. Utilizarea implementărilor protocolului SSH pe servere și aplicații client ajută la protejarea datelor numai în tranzit. SSH nu este în niciun caz un înlocuitor pentru firewall-uri, sisteme de detectare a intruziunilor, scanere de rețea, sisteme de autentificare sau alte instrumente pentru a ajuta la protejarea Sisteme de informareși rețelele din atacuri.
    39. Rolul și sarcinile serverului în rețeaua locală.

    Într-un sens general, un server este un computer care, de regulă, are performanțe ridicate și alte resurse de calcul, concepute pentru a oferi anumite capacități computerelor dintr-o rețea locală sau globală. Aceste oportunități sunt numite servicii de rețea .

    Sarcini de server:

    1. asigurarea accesului la datele stocate pe discurile server ale organizației;

    2. stocarea, procesarea și accesul la bazele de date ale companiei;

    3. procesarea programată a datelor pe care utilizatorul i le trimite și oferă rezultatele finale acestui utilizator;

    4. livrarea unei pagini web către utilizatorul care o solicită;

    5. trimiterea, primirea, stocarea și distribuirea e-mailuri care sunt trimise de toți utilizatorii rețelei locale.


    Servicii de rețea.

    Pentru utilizatorul final, rețeaua nu este calculatoare, cabluri și hub-uri sau chiar fluxuri de informații, pentru el rețeaua este, în primul rând, setul de servicii de rețea cu care poate vizualiza lista computerelor din rețea, poate citi o telecomandă fișier, imprimați documentul pe o imprimantă „străină” sau trimiteți un mesaj de poștă electronică. Totalitatea capabilităților furnizate - cât de largă este alegerea lor, cât de convenabile, fiabile și sigure sunt - determină aspectul unei anumite rețele pentru utilizator.
    În plus față de schimbul real de date, serviciile de rețea trebuie să rezolve alte sarcini mai specifice, de exemplu, sarcini generate de procesarea distribuită a datelor. Astfel de sarcini includ asigurarea consistenței mai multor copii ale datelor localizate pe diferite mașini (serviciu de replicare) sau organizarea executării unei sarcini în paralel pe mai multe mașini din rețea (serviciu de apel la procedură de la distanță). Dintre serviciile de rețea, se pot distinge cele administrative, adică cele care se concentrează în principal nu pe un simplu utilizator, ci pe un administrator și servesc la organizarea funcționării corecte a rețelei în ansamblu.
    Implementarea serviciilor de rețea este realizată software... Serviciile principale - serviciul de fișiere și serviciul de imprimare - sunt de obicei furnizate de sistemul de operare al rețelei, în timp ce serviciile auxiliare, precum baza de date, fax sau serviciul de voce, sunt furnizate de aplicații de rețea de sistem sau utilitare care lucrează îndeaproape cu sistem de operare în rețea. În general vorbind, distribuția serviciilor între sistemul de operare și utilitare este destul de arbitrară și variază în implementările specifice ale sistemului de operare.
    Termenul „transparență” este adesea folosit pentru a defini comoditatea unei resurse comune. Accesul transparent este un astfel de acces în care utilizatorul nu observă unde se află resursa de care are nevoie - pe computerul său sau pe una de la distanță. După ce a montat sistemul de fișiere la distanță în arborele său de directoare, accesați fișiere șterse devine complet transparent pentru el. Operația de montare în sine poate avea, de asemenea, un grad diferit de transparență - în rețelele cu transparență mai mică, utilizatorul trebuie să cunoască și să specifice în comandă numele computerului pe care este stocat sistemul de fișiere la distanță; în rețelele cu un grad mai mare de transparență , componenta software corespunzătoare a rețelei caută volume partajate de fișiere, indiferent de locația lor.
    Modul de adresare (denumire) a resurselor de rețea partajate este important pentru transparență. Numele resurselor de rețea partajate nu ar trebui să depindă de locația lor fizică pe un anumit computer. În mod ideal, un utilizator nu ar trebui să schimbe nimic în activitatea sa dacă administratorul de rețea a mutat un volum sau un director de la un computer la altul. Administratorul însuși și rețeaua sistem de operare au informații despre locație sisteme de fișiere, dar este ascuns utilizatorului. Acest grad de transparență este încă rar văzut în rețele - de obicei, pentru a avea acces la resursele unui anumit computer, trebuie mai întâi să stabiliți o conexiune logică cu acesta. Această abordare este utilizată, de exemplu, în Rețelele Windows NT