Posle jedne od diskusija na linuxo.net forumima palo mi je na pamet da sastavim jedno malo uputstvo za povećanje bezbednosti OpenSSH servera. OpenSSH je odlična aplikacija za udaljeni pristup računarima jer omogućava kriptovanu vezu i potpuni osećaj rada u komandnoj liniji kao na lokalnoj mašini. OpenSSH je projekat, pazi ti to, OpenBSD ekipe. Dakle, postoji više načina da zaštitite svoj SSH pristup od radoznalaca i loših ljudi. Ja ću se ovde koncentrisati na jedan konkretan - sertifikati. Upotreba sertifikata za pristup udaljenoj mašini je jedan od boljih načina da se poveća sveukupna bezbednost servera. Sertifikati se obično koriste za tzv. pristup bez šifre. Naime, da ne biste pamtili stalno svoju šifru kreiraćete sertifikat koji nema šifru i pomoću njega pristupati sistemu. Ovo je loše jer ako neko dođe u posed vašeg sertifikata onda nastaju problemi. Za ovu priliku ću ipak koristiti seritifkat sa šifrom. Dakle, pređimo na posao. # local$ ssh-keygen -t rsa - obavezno unesite šifru u dijalogu za nju # local$ scp ~/.ssh/id_dsa.pub udaljena_masina # local$ ssh username@udaljena_masina # remote$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys # remote$ chmod 644 ~/.ssh/authorized_keys - obavezno ovo uradite jer u suprotnom sistem neće čitati sertifikat nego će tražiti šifru. To je to. Prekinete vezu sa udaljenom mašinom i kada pokušate ponovo da se nakačite dobićete nešto ovako: Enter passphrase for key ‘/home/nightweaver/.ssh/id_rsa’: Unesete šifru RSA ključa i bićete na sistemu. OK, idemo korak dalje. Ukoliko neko nema sertifikat biće prebačen na obično logovanje. Mi to ne želimo. Želimo da samo ljudi sa sertifikatom mogu da pristupe sistemu. Slede momenti napredne paranoje. Pre svega, napravimo korisnika koji ima neko neobično ime. Nešto što će biti teško povezati sa vama. Recimo, gatto. Dakle, imamo korisnika gatto. Prebacimo onaj sertifikat od malopre u home DIR korisnika gatto. Proverimo da li radi tako što ćemo uraditi: ssh gatto@udaljena_masina Ako se traži šifra sertifikata onda je sve OK. Idemo dalje. OpenSSH server ne mora slušati na podrazumevanom portu 22. To je port koji će razni skeneri prvo napadati. Prebacimo taj port na nešto visoko i nestandardno. Recimo: 7000. Ovo sve radim na OpenBSD mašini ali je procedura identična i za FreeBSD i GNU/Linux. Dakle: vim /etc/ssh/sshd_config Pri vrhu datoteke ćete videti liniju: Port 22. Izmenite to u 7000. Sačuvajte izmene i restartujte SSH server. Sada čete se na sistem kačiti na sledeći način: ssh -p 7000 gatto@udaljena_masina a sftp če raditi ovako: sftp -oPort=7000 gatto@udaljena_masina Proverite da li sve radi kako treba. Radi? Sjajno, idemo dalje. Kao što sam već naveo, ukoliko neko nema sertifikat bićemu tražena obična šifra. Ali mi želimo da ti "brute force" pokušaji unošenja šifre budu potpuno onemogućeni. Izmenimo sshd_config podatke da izgledaju ovako: LoginGraceTime 1m PermitRootLogin no StrictModes yes MaxAuthTries 3 AllowUsers gatto Ovako postižemo sledeće: korisnik ima 1m da unese svoju šifru, logovanje root korisnika direktno nije dozvoljeno a na raspolaganju će imati samo tri šanse da unese šifru. Poslednji red je veoma koristan. Samo korisnička imena koja se tu nalaze će uopše moći da priđu SSH serveru. Dakle, čak i da ne koristite sertifikate samo čete korisnikom gatto moći da se ulogujete. Lukavo, zar ne? Idemo dalje. Ukažimo sistemu gde mu se nalate RSA ključevi: RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys Isključimo sve ostalo: RhostsRSAAuthentication no HostbasedAuthentication no IgnoreRhosts yes Sledeći redovi su jako bitni. Stavite ovde NO samo ako ste prethodno testirali pristup RSA ključevima. Posto kada ovo prebacite u NO više neće biti moguće ući na sistem običnom šifrom. PasswordAuthentication no PermitEmptyPasswords no Dakle, sada samo korisnik gatto može pokušati da se uloguje i to ako i samo ako ima RSA sertifikat. No, ovo meni nije bilo dovoljno. Želeo sam da čak i ako neko uspe da uđe na sistem ne može tek tako doći do root naloga. Zato korisnika gatto nisam stavio u grupu wheel te samim tim komanda SU nije radila za njega. No, gatto se može prebaciti na nekog drugog korisnika. Napravio sam sebi radni nalog nightweaver koji je član grupe wheel i može postati root. Da vidimo sada malo skicirano kako izgleda ulaz na sistem: A nema sertifikat i ne zna dozvoljenog korisnika –> server - odbijen i pokušaj prilaska A ima sertifikat ali ne zna dozvoljenog korisnika –> server - odbijen i pokušaj prilaska A ima sertifikat, zna dozvoljenog korisnika ali ne za koji korisnik moze da radi SU –> ne može da napravi veliku štetu Putanja do sistema bi onda izgledala ovako: A mora imati sertifikat A mora znati koji korisnik koristi taj sertifikat i koja je šifra sertifikata A mora znati koji korisnik na serveru može da radi SU i koja je njegova šifra A se mora prebaciti na korisnika koji može raditi SU pa tek onda postati root Sve ovo može izgledati dosta komplikovano… verujte mi, nije. Probajte sami pa ćete videti. Kao neko ko se dosta dugo bavi bezbednošču računarskih mreža mogu vam reći da ni jedan sistem nikada neće biti najbezbedniji. Uz dovoljno truda i znanja svaka se zaštita može pre ili kasnije probiti. Ali zašto ne zakomplikovati put do sistema za one kojima tamo nije mesto?
Архива за 'BSD' категорију
Evo malo zabave za tmurno subotnje popodne. Pošto nam se grad napunio raznim bežičnim mrežama i na sve strane nas zrače (hehe) hajde da malo “zloupotrebimo” neke od tih bežičnih mreža te da se nakačimo na koju dok sedimo u parku ili kafeu koji nije tzv. HotSpot.
AlatkeTema ovog teksta jeste skoro pa nelegalno kačenje na tuđi AP. Nešto što bi se moglo nazvati dokaz koncepta i služi isključivo u rekreativne i edukativne svrhe. A i za ubijanje dosade dok sedite i čekate devojku koja kasni a imate laptop pri ruci. Dakle, ovo nije lepo raditi i tako to. Neću vam ja biti kriv ako vas neko nalupa što mu se kačite na AP.
Elem, posle ove moralne poruke da se vratimo temi ovog popodnevnog teksta. Šta nam je sve potrebno da bismo izveli ono što želimo?
Jedan primerak laptopa koji, jel’ te, ima wifi karticu i na njemu FreeBSD/OpenBSD ili GNU/Linux Alatka koja se zove AirCrack-NG i koja se nalazi u portovima. Kriptovana bežična mreža – ovom prilikom radimo na WEP kriptovanoj mreži Opciono možete slušati KCEA radio stanicu dok to radite. Apsolutno genijalna stanica koja 24/7 pušta swing i big band jazz. Ništa bolje za oblačno subotnje popodne. Malo teorijeŠta je kog vraga WEP? WEP predstavlja stari i jako loš sistem kriptovanja bežičnih mreža. 3-bitni vektor pod nazivom Inicijalizacioni Vektor (IV) se dodaje paketima na osnovu predefinisanog ključa koji svi klijenti znaju. E, ukoliko neko koristi WEP kriptivanje skoro svaki paket koji generiše klijent ili AP će nam biti od koristi da napadnemo mrežu i dobijemo ključ… ako nakupimo dovoljno paketa… par stotina hiljada paketa.
Alatke za akcijuAirCrack-NG je jedan fin švajcarski nož koji donosi nekoliko jako bitnih alatki za rad. One koje ćemo mi upotrebiti su:
airodump – Hvata IV-jeve aircrack – Krakuje IV-jeve airdecap – Dekodiranje uhvaćenih paketa airreplay – Ovaj je dobar… ubacuje pakete u AP kako bi izveo napad. Pređimo na posaoPrvo moramo naći mežu u koju ćemo upasti. Postoji više načina da to uradimo. Najjednostavniji je da na BSD-u uradite ovo:
ifconfig NIC up scanNaravno, umesto NIC stavite svoju mrežnu kartu. Ovo će izlistati sve mreže koje hvatate. Ono što nas zanima:
Tip enkripcije: Da li je 64-bit? 128-bit? Na kom je kanalu? Ovo može dosta ubrzati prikupljanje IV-a. IP adresa AP-a BSSID ESSID Hvatanje IV-aOk, pošto znamo koga napadamo vreme ja da hvatamo malo pakete.
./airodump NIC output prefix channel IV flag NIC je naravno vaša mrežna karta output prefix – ime datoteke u koju će se upisivati rezultati – potrebno. channel – specifičan kanal koji skeniramo. IVs flag- 0 ili 1, zavisti da li želite da sve pakete ili samo IV.Moja kartica je ath0 tako da bi kod mene ovo izgledalo ovako:
./airodump ath0 dump 3 1 Dekriptovanje ključaHajde da se sad pravimo da smo nakupili dovoljnu količinu IV-a da bismo započeli napad. Otvorite novi terminal dok još uvek radi airodump u prvom i pokrenite:
./aircrack [options] input fileŠta može ići pod options?
-a 1 : nameće WEP napad dok je 2 WPA napad ili -b za bssid ili -e za essid šta god je vama lakše. -n 64 ili -n 128 : dužina WEP ključa. Možete izostaviti ako do sada niste otkrili koliki je ključ.Tako da bi naša komanda izgledala ovako nekako:
./aircrack -a 1 -b 00:23:1F:55:XX:XX -n 128 dump.ivsAnd zer she blows. Sada vam ostaje da malo sačekate dok aircrack sastavlja sliku za vas.
Očekivani problemi i rešenjaVelika je šansa da ćete naići na neki problem. Ako ništa drugo imaćete dosta posla da podesite sve alatke da rade kako treba. To ovde nisam objašnjavao jer to nije tema ove priče.
Nema saobraćaja Nema saobraćaja tako da ne možete da uhvatite ni jedan IV. Ono što možete da uradite jeste da “ubacite” posebne pakete kako biste prevarili AP da šalje pakete. Filtriranje MAC adresa AP odgovara samo povezanim klijentima. Verovatno zato što je uključeno filtriranje MAC adresa. Koristeći airodump možete videti koje MAC adrese tu rade, postavite neku od njih za svoj uređaj i možete nastaviti… upotrebite Google da vidite kako se radi MAC spoofing. ;-) Ne možete krakovati čak ni sa tonom IV-a Neki statični napadi mogu stvarati lažne pozitivne odgovore i odvesti vas u pogrešnom pravcu. Pokušajte sa -k N (gde je N=1..17) ili -y kako biste varirali svoj napad. I dalje ništa? Nađite AP prateći signal i pitajte admina koji je WEP ključ – social engineering, NLP a možda i brute force metoda upali.I to je to. Neko će možda reći da je WEP zastareo metod zaštite i da ga niko ne koristi. Jel da? Prošetajte malo Beogradom pa mi onda recite da niko ne koristi WEP.
Kada posmatrate aktivnost na UNIX ili UNIX sličnom sistemu videćete određen broj procesa od kojih su neki ativni a neki spavaju. Ponekad će vam se desiti da se na listi nađe i određen broj zombiranih procesa. Nije potrebno previše mašte da shvatite šta može biti zombi proces. Za one koji ne žele puno da maštaju na datu temu evo kratkog objašnjenja: kada određen proces završi ono što radi ali ostane u tabeli procesa on postaje nemrtav ili zombi. Dete proces je umrlo (died) ali još uvek ga Smrt nije pokupila(reaped). U normalnim okolnostima bi roditeljski proces (parent) trebalo da pročita izlaznu informaciju svog deteta (child) izvršavanjem sistemske komande wait pri čemu se zombi uklanja. Ukoliko sve ne ide po planu mali zombi ostaje u listi procesa. Ovo ponekad može biti poželjno ukliko roditeljski proces pravi nove procese koji ne bi trebalo da imaju iste ID kao prethodna deca. Opet, ovo ponekad može biti loše..posebno kada se zombirana deca prenamnože.
Evo kratkog ali slatkog uputstva kako da pobijete svu zalutalu decu…(divna terminologija, zar ne?)
Prvo pokrenite komandu ps aux da biste videli svu tu zalutalu decu. Izaberite bilo koje od njih (PID) pošto će ih biti podosta.
ps axo ppid -p <pid deteta> | grep -v PPID | sed 's/ //g'Ovo će nam dati PID roditelja. Ukoliko nemate pojma koji je to program evo kako ćete saznati:
which `ps axo command -p <pid roditelja> | grep -v COMMAND | cut -d' ' -f1`Ok, sad znamo ko je vudu vrač koji podiže sve te zombije. Šta ćete sa njim raditi je na vama. Prosto restartovanje programa će pobiti sve zombije. Ukoliko želite da vidite šta se to desilo možete uraditi sledeće:
gdb /putanja/do/programa PID-roditeljaSrećno ubijanje dece…zombija…zombirane dece:-)
Kada posmatrate aktivnost na UNIX ili UNIX sličnom sistemu videćete određen broj procesa od kojih su neki ativni a neki spavaju. Ponekad će vam se desiti da se na listi nađe i određen broj zombiranih procesa. Nije potrebno previše mašte da shvatite šta može biti zombi proces. Za one koji ne žele puno da maštaju na datu temu evo kratkog objašnjenja: kada određen proces završi ono što radi ali ostane u tabeli procesa on postaje nemrtav ili zombi. Dete proces je umrlo (died) ali još uvek ga Smrt nije pokupila(reaped). U normalnim okolnostima bi roditeljski proces (parent) trebalo da pročita izlaznu informaciju svog deteta (child) izvršavanjem sistemske komande wait pri čemu se zombi uklanja. Ukoliko sve ne ide po planu mali zombi ostaje u listi procesa. Ovo ponekad može biti poželjno ukliko roditeljski proces pravi nove procese koji ne bi trebalo da imaju iste ID kao prethodna deca. Opet, ovo ponekad može biti loše..posebno kada se zombirana deca prenamnože.
Evo kratkog ali slatkog uputstva kako da pobijete svu zalutalu decu…(divna terminologija, zar ne?)
Prvo pokrenite komandu ps aux da biste videli svu tu zalutalu decu. Izaberite bilo koje od njih (PID) pošto će ih biti podosta.
ps axo ppid -p <pid deteta> | grep -v PPID | sed 's/ //g'Ovo će nam dati PID roditelja. Ukoliko nemate pojma koji je to program evo kako ćete saznati:
which `ps axo command -p <pid roditelja> | grep -v COMMAND | cut -d' ' -f1`Ok, sad znamo ko je vudu vrač koji podiže sve te zombije. Šta ćete sa njim raditi je na vama. Prosto restartovanje programa će pobiti sve zombije. Ukoliko želite da vidite šta se to desilo možete uraditi sledeće:
gdb /putanja/do/programa PID-roditeljaSrećno ubijanje dece…zombija…zombirane dece:-)
Ah, casual Friday. Weekend buzz. Experimenting a bit with FreeBSD, after a several year break. Will try to get back to blogging.
Kada je u pitanju administracija servera i bezbednost istih ni jedan stepen paranoje nije dovoljno visok. Posebno kada je u pitanju shell pristup koji ponekad jednostavno moramo dati svojim korisnicima iako to zaista ne želimo(BOFH). Najbolji način da se zaštitimo od potencijalnih nevolja koje taj shell pristup može da izazove jeste da ih nekako zatvorimo u neki virtuelni kavez iz kog ne mogu da pobegnu te da jedina šteta koju mogu da načine jeste šteta nad sopstvenim podacima(BOFH).
Uzmimo FreeBSD kao prvu žrtvu ovih paranoičnih izmena. Ovde je procedura donekle lakša. Prvo ćemo zameniti sistemski SSH server onim koji možete naći pod:
/usr/ports/security/openssh-portable/U pitanju je port verzija OpenSSH servera koji možete naći kod OpenBSD-a. Lično, uvek koristim tu verziju. Kada počnete instalaciju dobićete mogućnost da podesite malo taj OpenSSH. Ukoliko instalacija odmah počne bez ikakvih ponuđenih opcija (desi se i to ponekad) sve što treba da uradite je da je prekinete i ukucate komandu:
make configStavka na listi koja nas zanima je OPENSSH_CHROOT. Onda se vratite starom dobrom make install clean i to je to. Sada je potrebno da ubijete sistemski SSH i da malo izmenite /etc/rc.conf:
sshd_enable="NO" # OpenSSH server openssh_enable="YES" # OpenBSD OpenSSH-portableSada će se pri pokretanju sistema startovati OpenBSD verzija OpenSSH servera. I sada to sve radi..malo sutra. Jedva sam našao kako to zapravo treba da se podesi.
OpenSSH koji se kompajlira sa OPENSSH_CHROOT zakrpom čita putanju do home DIR malo drugačije. Tačnije, čita ”.” u putanji tako što je za njega ona / sistema. Malo sam zakomplikovao ovu rečenicu? Moguće.:) Dakle, ako je putanja do korisničkog home DIR recimo ovako nešto:
/home/./jail/home/userkada se korisnik uloguje na sistem i kuca “cd /” neće dobiti pravu root particiju već /jail i neće moći iz nje da izađe. Jako korisno, zar ne?
Problem nastaje što onda korisnik nema gotovo ništa od komandi..tačnije, ne može ni ući na sistem jer nema ni jedan shell. Ono ”/bin/csh” u njegovim podacima sada neće imati smisla. Šta sad? Napravimo mu onda “zatvor” koji ima neke od komandi.
cd /home/jail mkdir bin lib etc cp /bin/csh bin/Vodite računa da programi i komande koje kopirate u ”/bin” imaju i sve potrebne biblioteke. To ćete učiniti tako što ćete kucati:
ldd /home/jail/bin/cshDobićete nešto ovako:
/bin/csh: libncurses.so.6 => /lib/libncurses.so.6 (0x280bd000) libcrypt.so.3 => /lib/libcrypt.so.3 (0x280fc000) libc.so.6 => /lib/libc.so.6 (0x28114000)Aha, dakle potrebne su nam i neke biblioteke. Dobro, iskopirajte ih sve u naš “jailovan” /lib/” direktorijum. Sada će sve raditi kako treba.Šta sesve valja naći u “bin” direktorijum? To od vas zavisi. Ako korisniku date samo csh neće moći da radi ništa do da se uloguje na sistem. Korisno je dati mu komande: cd, ls,cp, mv, rm…odlučite već sami, ovo je samo predlog.
I to je to. Kada vaši korisnici uđu na sistem najdalje što će moći da odu jeste /jail. Ukoliko već imate korisnike koje želite da smestite u kavez:
chpass usernamete izmenite samo putanju do /home/ direktorijuma. Putanju do shell-a ne dirajte. I to je to. NAPOMENA: Ovo ima smisla samo ako je korisnik na sistem ušao preko SSH veze…ukoliko ima fizički pristup mašini onda chroot ne radi.:)
OpenBSD zahteva za nijansu drugačije korake. Iako su rekli da je zakrpa koja omogućava chroot ubačena to nije tačno jer čitanje ”.” u putanji ne radi dok sami ne dodate zakrpu koja sledi. No, to nije teško. Pretpostavimo da imate najnoviji OpenBSD (4.0). Vreme je da stavimo novu verziju OpenSSH-a na njega. Svoj paket možete naći na http://www.openssh.org/openbsd.html Tamo ćete naći i uputstvo koje kaže sledeće:
cd /usr/src/usr.bin tar xvfz .../openssh-4.6.tar.gz cd ssh make obj make cleandir make depend make make install cp ssh_config sshd_config /etc/sshTo je OK ako samo želite novu verziju SSH-a- Mi ćemo ovo uraditi malkice drugačije. Prva tri koraka su sasvim OK. Tu stanite. Ono što ćete uraditi jeste izmena datoteke session.c.
cp session.c session_backup.c vim session.cI dodajte ispred funkcije do_setusercontext sledeći kod:
/* do chroot / void do_chroot(struct passwd *pw){ char *user_dir; char *new_root; user_dir = xstrdup(pw->pw_dir); new_root = user_dir + 1; while((new_root = strchr(new_root, '.')) != NULL) { new_root--; if(strncmp(new_root, "/./", 3) == 0) { *new_root = '\0'; new_root += 2; if(chroot(user_dir) != 0) fatal("Couldn't chroot to user directory %s", user_dir); pw->pw_dir = new_root; break; } new_root += 2; } } / do_chroot /Zatim dodajte:
/ Set login name, uid, gid, and groups. / void do_setusercontext(struct passwd *pw) { / OVO DODAJETE / do_chroot(pw); / OVO DODAJETE */ if (getuid() 0 || geteuid() 0) { #ifdef HAVE_LOGIN_CAPNaznačio sam vam šta tačno dodajete. Ono ispred i iznad mog komentara je tu da lakše nađete tačnu lokaciju za dodatnu funkciju.
I sad se vratite koracima za instalaciju OpenSSH-a. Sve bi trebalo da prođe OK. Restartujete OpenSSH server a ostatak je isti kao kod FreeBSD-a. Srećno zlostavljanje korisnika.:-)
Kada je u pitanju administracija servera i bezbednost istih ni jedan stepen paranoje nije dovoljno visok. Posebno kada je u pitanju shell pristup koji ponekad jednostavno moramo dati svojim korisnicima iako to zaista ne želimo(BOFH). Najbolji način da se zaštitimo od potencijalnih nevolja koje taj shell pristup može da izazove jeste da ih nekako zatvorimo u neki virtuelni kavez iz kog ne mogu da pobegnu te da jedina šteta koju mogu da načine jeste šteta nad sopstvenim podacima(BOFH).
Uzmimo FreeBSD kao prvu žrtvu ovih paranoičnih izmena. Ovde je procedura donekle lakša. Prvo ćemo zameniti sistemski SSH server onim koji možete naći pod:
/usr/ports/security/openssh-portable/U pitanju je port verzija OpenSSH servera koji možete naći kod OpenBSD-a. Lično, uvek koristim tu verziju. Kada počnete instalaciju dobićete mogućnost da podesite malo taj OpenSSH. Ukoliko instalacija odmah počne bez ikakvih ponuđenih opcija (desi se i to ponekad) sve što treba da uradite je da je prekinete i ukucate komandu:
make configStavka na listi koja nas zanima je OPENSSH_CHROOT. Onda se vratite starom dobrom make install clean i to je to. Sada je potrebno da ubijete sistemski SSH i da malo izmenite /etc/rc.conf:
sshd_enable="NO" # OpenSSH server openssh_enable="YES" # OpenBSD OpenSSH-portableSada će se pri pokretanju sistema startovati OpenBSD verzija OpenSSH servera. I sada to sve radi..malo sutra. Jedva sam našao kako to zapravo treba da se podesi.
OpenSSH koji se kompajlira sa OPENSSH_CHROOT zakrpom čita putanju do home DIR malo drugačije. Tačnije, čita ”.” u putanji tako što je za njega ona / sistema. Malo sam zakomplikovao ovu rečenicu? Moguće.:) Dakle, ako je putanja do korisničkog home DIR recimo ovako nešto:
/home/./jail/home/userkada se korisnik uloguje na sistem i kuca “cd /” neće dobiti pravu root particiju već /jail i neće moći iz nje da izađe. Jako korisno, zar ne?
Problem nastaje što onda korisnik nema gotovo ništa od komandi..tačnije, ne može ni ući na sistem jer nema ni jedan shell. Ono ”/bin/csh” u njegovim podacima sada neće imati smisla. Šta sad? Napravimo mu onda “zatvor” koji ima neke od komandi.
cd /home/jail mkdir bin lib etc cp /bin/csh bin/Vodite računa da programi i komande koje kopirate u ”/bin” imaju i sve potrebne biblioteke. To ćete učiniti tako što ćete kucati:
ldd /home/jail/bin/cshDobićete nešto ovako:
/bin/csh: libncurses.so.6 => /lib/libncurses.so.6 (0x280bd000) libcrypt.so.3 => /lib/libcrypt.so.3 (0x280fc000) libc.so.6 => /lib/libc.so.6 (0x28114000)Aha, dakle potrebne su nam i neke biblioteke. Dobro, iskopirajte ih sve u naš “jailovan” /lib/” direktorijum. Sada će sve raditi kako treba.Šta sesve valja naći u “bin” direktorijum? To od vas zavisi. Ako korisniku date samo csh neće moći da radi ništa do da se uloguje na sistem. Korisno je dati mu komande: cd, ls,cp, mv, rm…odlučite već sami, ovo je samo predlog.
I to je to. Kada vaši korisnici uđu na sistem najdalje što će moći da odu jeste /jail. Ukoliko već imate korisnike koje želite da smestite u kavez:
chpass usernamete izmenite samo putanju do /home/ direktorijuma. Putanju do shell-a ne dirajte. I to je to. NAPOMENA: Ovo ima smisla samo ako je korisnik na sistem ušao preko SSH veze…ukoliko ima fizički pristup mašini onda chroot ne radi.:)
OpenBSD zahteva za nijansu drugačije korake. Iako su rekli da je zakrpa koja omogućava chroot ubačena to nije tačno jer čitanje ”.” u putanji ne radi dok sami ne dodate zakrpu koja sledi. No, to nije teško. Pretpostavimo da imate najnoviji OpenBSD (4.0). Vreme je da stavimo novu verziju OpenSSH-a na njega. Svoj paket možete naći na http://www.openssh.org/openbsd.html Tamo ćete naći i uputstvo koje kaže sledeće:
cd /usr/src/usr.bin tar xvfz .../openssh-4.6.tar.gz cd ssh make obj make cleandir make depend make make install cp ssh_config sshd_config /etc/sshTo je OK ako samo želite novu verziju SSH-a- Mi ćemo ovo uraditi malkice drugačije. Prva tri koraka su sasvim OK. Tu stanite. Ono što ćete uraditi jeste izmena datoteke session.c.
cp session.c session_backup.c vim session.cI dodajte ispred funkcije do_setusercontext sledeći kod:
/* do chroot / void do_chroot(struct passwd *pw){ char *user_dir; char *new_root; user_dir = xstrdup(pw->pw_dir); new_root = user_dir + 1; while((new_root = strchr(new_root, '.')) != NULL) { new_root--; if(strncmp(new_root, "/./", 3) == 0) { *new_root = '\0'; new_root += 2; if(chroot(user_dir) != 0) fatal("Couldn't chroot to user directory %s", user_dir); pw->pw_dir = new_root; break; } new_root += 2; } } / do_chroot /Zatim dodajte:
/ Set login name, uid, gid, and groups. / void do_setusercontext(struct passwd *pw) { / OVO DODAJETE / do_chroot(pw); / OVO DODAJETE */ if (getuid() 0 || geteuid() 0) { #ifdef HAVE_LOGIN_CAPNaznačio sam vam šta tačno dodajete. Ono ispred i iznad mog komentara je tu da lakše nađete tačnu lokaciju za dodatnu funkciju.
I sad se vratite koracima za instalaciju OpenSSH-a. Sve bi trebalo da prođe OK. Restartujete OpenSSH server a ostatak je isti kao kod FreeBSD-a. Srećno zlostavljanje korisnika.:-)
Network File System(NFS) je tehnologija koju je razvio Sun Microsystem 1985. i predstavlja prvi široko prihvaćen mrežni fajl sistem. Ovaj tekst nema za cilj da vas upozna sa istorijom NFS-a već da bude jako precizno uputstvo za upotrebu NFS-a na Windows mašinama. Pretpostavimo da imate omanju firmu gde deo korisnika ima neki UNIX-like OS a deo Windows OS. Jedan d načina da vaši korisnici nesmetano dele datoteke međusibno je verovatno FTP server. To i nije tako loše rešenje.Ipak, budimo iskreni…to rešenje je očajno. Daleko je lakše imati mogućnost da sena jedno mesto upisuju svi podaci a da korisnici ni ne znaju da to nije na njihovom računaru. Imaće još jednu particiju kojoj će pristupati kao bilo kojoj particiji na svom računaru. Pisati po njoj, brisati,čitati sa nje…sve ono što korisnici inače rade.
U te svrhe je daleko lakše postaviti NFS server koji će opsluživati čitavu firmu. Procedura će biti laka kada imamo homogenu UNIX-oliku mrežu sastavljenu od BSD, Solaris i Linux mašina. Ali šta činiti kada želimo da i Windows korisnici imaju pristup deljenim podacima? Možemo postaviti Samba server. No, Samba može biti naporna za podešavanje a nama je potrebno čisto i brzo rešenje.
NSF serverPrvo moramo podesiti mašinu koja će nam biti server i na koju će se podaci zaista smeštati. U mom slučaju to je FreeBSD 6.2. Evo uputstva u nekoliko koraka kako osposobiti NFS na BSD mašini:
1) U /etc/rc.conf dodajemo sledeće linije:
rpcbind_enable="YES" nfs_server_enable="YES" mountd_flags="-r"Ovo će aktivirati tri neophodna servisa potrebna za rad NFS-a.
2) Pretpostavimo da želimo da korisnici upisuju u DIR /home/mod koji je particija od 200GB. Da bi ta lokacija postala dostupna korisnicima potrebno je da u datoteku /etc/exports dodamo jednu liniju:
/home/mod -alldirs -maproot=root 10.0.0.2 10.0.0.3Ovo će omogućiti da korisnici sa navedenim IP adresama mogu da montiraju /home/mod particiju i da nad njom imaju “root” privilegije.Napomena: kada god dodajete nešto u /etc/exports potrebno je da mountd demonu kažete da ponovo učita tu datoteku. To ćete učiniti na dva načina:
kill -HUP `cat /var/run/mountd.pid`ili
/etc/rc.d/mountd onereloadNaravno, uvek možete restartovati sistem i sva podešavanja koja smo upravo izveli će biti prihvaćena. Ali kakav je to server ako ga zbog ovako nečeg morate restartovati?:-) Umesto toga uradite sledeće:
rpcbind nfsd -u -t -n 4 mountd -rI to je to. Vaš NFS server je spreman za upotrebu.
Windows kao NFS klijentZanimljivo je kako je malo resursa na Netu na ovu temu. Dosta ljudi mi je reklo da je to nemoguće. Valjda niko od njih nije probao te zato zaključuje da je nemoguće. Ali kako Marfi kaže: “Ukoliko želiš da otkriješ granice mogućeg probaj nemoguće”. Meni nije potrebno dva puta govoriti. Kako se ispostavilo procedura je neviđeno laka a svodi se na izor između dva softverska rešenja i nekoliko klikova.
Prvo softversko rešenje jeste ono koje nudi Micro$oft u vidu paketa koji se zove Windows Services for UNIX version 3.0. Kompletno uputsvo za instalaciju kao i sam paket možete naći na—> http://support.microsoft.com/kb/324055
Drugo predstavlja paket pod nazivom ProNFS i on je taj za koji sam se odlučio pri rešavanju ovog problema. Paket je znatno manji za preuzimanje od onog prvog I takođe jednostavan za instalaciju…4 klika.:-) ProNFS možete naći na: http://pronfs.com/
O otvorenosti i slobodi ova dva programska rešenja ovom prilikom neću govoriti.:-)
Kada instalirate ProNFS neće vam biti jasno zašto nema NFS-a nigde već ste u meniju dobili brdo nekih alatki. NFS je tu samo što se klijent ne instalira sam pri prvom instaliranju. ProNFS je zamišljen kao NFS server za Windows! Instalacija klijenta se nalazi unutar ProNFS direktorijuma u Program Files DIR:
Kada ga pokrenete nfssetup.exe sve bude završeno za par sekundi. Ovog puta restartujete računar jer ovaj OS nije tako napredan da dozvoljava igrarije kao UNIX-oliki sistemi.Kada se vaš sistem konačno podigne vreme je da dodate svoju NFS particiju Windowsu. To se može postići na dva načina. Prvi je da NFS particiju dodate kao Network place kroz My Network places. Drugi da je mapirate kao Network drive. Slede vizuelna uputstva:
Network place Map network driveI to bi bilo to. Kao što sam već napomenuo, rešenje je NEVIĐENO jednostavno. Sada Windows korisnici na mreži mogu da dele podatke sa ostalim kolegama na mreži…ukoliko im vi to dozvolite.:-)
Network File System(NFS) je tehnologija koju je razvio Sun Microsystem 1985. i predstavlja prvi široko prihvaćen mrežni fajl sistem. Ovaj tekst nema za cilj da vas upozna sa istorijom NFS-a već da bude jako precizno uputstvo za upotrebu NFS-a na Windows mašinama. Pretpostavimo da imate omanju firmu gde deo korisnika ima neki UNIX-like OS a deo Windows OS. Jedan d načina da vaši korisnici nesmetano dele datoteke međusibno je verovatno FTP server. To i nije tako loše rešenje.Ipak, budimo iskreni…to rešenje je očajno. Daleko je lakše imati mogućnost da sena jedno mesto upisuju svi podaci a da korisnici ni ne znaju da to nije na njihovom računaru. Imaće još jednu particiju kojoj će pristupati kao bilo kojoj particiji na svom računaru. Pisati po njoj, brisati,čitati sa nje…sve ono što korisnici inače rade.
U te svrhe je daleko lakše postaviti NFS server koji će opsluživati čitavu firmu. Procedura će biti laka kada imamo homogenu UNIX-oliku mrežu sastavljenu od BSD, Solaris i Linux mašina. Ali šta činiti kada želimo da i Windows korisnici imaju pristup deljenim podacima? Možemo postaviti Samba server. No, Samba može biti naporna za podešavanje a nama je potrebno čisto i brzo rešenje.
NSF serverPrvo moramo podesiti mašinu koja će nam biti server i na koju će se podaci zaista smeštati. U mom slučaju to je FreeBSD 6.2. Evo uputstva u nekoliko koraka kako osposobiti NFS na BSD mašini:
1) U /etc/rc.conf dodajemo sledeće linije:
rpcbind_enable="YES" nfs_server_enable="YES" mountd_flags="-r"Ovo će aktivirati tri neophodna servisa potrebna za rad NFS-a.
2) Pretpostavimo da želimo da korisnici upisuju u DIR /home/mod koji je particija od 200GB. Da bi ta lokacija postala dostupna korisnicima potrebno je da u datoteku /etc/exports dodamo jednu liniju:
/home/mod -alldirs -maproot=root 10.0.0.2 10.0.0.3Ovo će omogućiti da korisnici sa navedenim IP adresama mogu da montiraju /home/mod particiju i da nad njom imaju “root” privilegije.Napomena: kada god dodajete nešto u /etc/exports potrebno je da mountd demonu kažete da ponovo učita tu datoteku. To ćete učiniti na dva načina:
kill -HUP `cat /var/run/mountd.pid`ili
/etc/rc.d/mountd onereloadNaravno, uvek možete restartovati sistem i sva podešavanja koja smo upravo izveli će biti prihvaćena. Ali kakav je to server ako ga zbog ovako nečeg morate restartovati?:-) Umesto toga uradite sledeće:
rpcbind nfsd -u -t -n 4 mountd -rI to je to. Vaš NFS server je spreman za upotrebu.
Windows kao NFS klijentZanimljivo je kako je malo resursa na Netu na ovu temu. Dosta ljudi mi je reklo da je to nemoguće. Valjda niko od njih nije probao te zato zaključuje da je nemoguće. Ali kako Marfi kaže: “Ukoliko želiš da otkriješ granice mogućeg probaj nemoguće”. Meni nije potrebno dva puta govoriti. Kako se ispostavilo procedura je neviđeno laka a svodi se na izor između dva softverska rešenja i nekoliko klikova.
Prvo softversko rešenje jeste ono koje nudi Micro$oft u vidu paketa koji se zove Windows Services for UNIX version 3.0. Kompletno uputsvo za instalaciju kao i sam paket možete naći na—> http://support.microsoft.com/kb/324055
Drugo predstavlja paket pod nazivom ProNFS i on je taj za koji sam se odlučio pri rešavanju ovog problema. Paket je znatno manji za preuzimanje od onog prvog I takođe jednostavan za instalaciju…4 klika.:-) ProNFS možete naći na: http://pronfs.com/
O otvorenosti i slobodi ova dva programska rešenja ovom prilikom neću govoriti.:-)
Kada instalirate ProNFS neće vam biti jasno zašto nema NFS-a nigde već ste u meniju dobili brdo nekih alatki. NFS je tu samo što se klijent ne instalira sam pri prvom instaliranju. ProNFS je zamišljen kao NFS server za Windows! Instalacija klijenta se nalazi unutar ProNFS direktorijuma u Program Files DIR:
Kada ga pokrenete nfssetup.exe sve bude završeno za par sekundi. Ovog puta restartujete računar jer ovaj OS nije tako napredan da dozvoljava igrarije kao UNIX-oliki sistemi.Kada se vaš sistem konačno podigne vreme je da dodate svoju NFS particiju Windowsu. To se može postići na dva načina. Prvi je da NFS particiju dodate kao Network place kroz My Network places. Drugi da je mapirate kao Network drive. Slede vizuelna uputstva:
Network place Map network driveI to bi bilo to. Kao što sam već napomenuo, rešenje je NEVIĐENO jednostavno. Sada Windows korisnici na mreži mogu da dele podatke sa ostalim kolegama na mreži…ukoliko im vi to dozvolite.:-)
Opšte je poznato da BSD sistemi teže visokom stepenu sigurnosti koji ponekad prelazi u potpunu paranoju. No, kada se radi o serverima i administraciji istih ni jedan stepen paranoje nije dovoljno visok. Ipak, kada koristite FreeBSD kao desktop mašinu normalno je da vam ta paranoja smeta pri svakodnevnim aktivnostima. Jedna od takvih je i upotreba optičkih uređaja. Postoje dva načina da koristite svoj CD-ROM.
Prvi je da ga montirate kao root koristnik. To jako brzo dosadi. Drugi način je upotreba programa SUDO (/usr/ports/security/sudo). Sudo je sjajna aplikacija ukoliko svakog dana morate koristiti razne aplikacije kao root korisnik. Sudo, opet, možete koristiti na dva načina. Prvi način će od vas tražiti da stalno kucate svoju šifru i to ćete postići dodavanjem sledećeg reda u datoteku /usr/local/etc/sudoers:
nightweaver ALL=(ALL) ALLUkoliko pak želite da izbegnete kucanje šifre (potpuno suluda ideja ali dobro..ima nas raznih) taj red će izgledati ovako:
nightweaver ALL=(ALL) NOPASSWD: ALLI sve je ovo smor…znam…zbog toga postoji strašno jednostavan način da sistemu kažete da dozvoli upotrebu CD-ROM-a običnom korisniku. Evo uputstva u četiri koraka:
1) edit /etc/sysctl.conf
vfs.usermount=12) edit /etc/devfs.conf
perm xpt0 0660 perm pass0 0660 perm cd0 0660 perm acd0 0660 link cd0 cdrom link acd0 dvd #(ukoliko posedujete DVD)3) chown $username /cdrom && chmod 655 /cdrom (ili DIR u koji će običan korisnik montirati disk)
4) Dodate korisnika u grupu operator ili grupu koja je vlasnik uređaja /dev/cd0.
I to je to. Sada običan korisnik bez problema može u potpunosti da koristi optičke uređaje – montoranje, rezanje itd.
Opšte je poznato da BSD sistemi teže visokom stepenu sigurnosti koji ponekad prelazi u potpunu paranoju. No, kada se radi o serverima i administraciji istih ni jedan stepen paranoje nije dovoljno visok. Ipak, kada koristite FreeBSD kao desktop mašinu normalno je da vam ta paranoja smeta pri svakodnevnim aktivnostima. Jedna od takvih je i upotreba optičkih uređaja. Postoje dva načina da koristite svoj CD-ROM.
Prvi je da ga montirate kao root koristnik. To jako brzo dosadi. Drugi način je upotreba programa SUDO (/usr/ports/security/sudo). Sudo je sjajna aplikacija ukoliko svakog dana morate koristiti razne aplikacije kao root korisnik. Sudo, opet, možete koristiti na dva načina. Prvi način će od vas tražiti da stalno kucate svoju šifru i to ćete postići dodavanjem sledećeg reda u datoteku /usr/local/etc/sudoers:
nightweaver ALL=(ALL) ALLUkoliko pak želite da izbegnete kucanje šifre (potpuno suluda ideja ali dobro..ima nas raznih) taj red će izgledati ovako:
nightweaver ALL=(ALL) NOPASSWD: ALLI sve je ovo smor…znam…zbog toga postoji strašno jednostavan način da sistemu kažete da dozvoli upotrebu CD-ROM-a običnom korisniku. Evo uputstva u četiri koraka:
1) edit /etc/sysctl.conf
vfs.usermount=12) edit /etc/devfs.conf
perm xpt0 0660 perm pass0 0660 perm cd0 0660 perm acd0 0660 link cd0 cdrom link acd0 dvd #(ukoliko posedujete DVD)3) chown $username /cdrom && chmod 655 /cdrom (ili DIR u koji će običan korisnik montirati disk)
4) Dodate korisnika u grupu operator ili grupu koja je vlasnik uređaja /dev/cd0.
I to je to. Sada običan korisnik bez problema može u potpunosti da koristi optičke uređaje – montoranje, rezanje itd.