apache, https, kluce a wget
Mam apache na ktorom mam normalne staticke html stranky. Potreboval by som to zmenit tak aby komunikacia prebiehala sifrovane, resp. aby som vedel odhalit man-in-the-middle utok.
O co ide, mam na servri jeden bash skript ktory pouzivaju klienti roztruseny po celej republike na istu formu aktualizacie. Ten skript sa meni, cize nemozem kontrolovat md5 sucet alebo tak nejak.
Proste na kazdom klientovi bezi cron ktory raz denne tento skipt wgetom stiahne a spusti. Pri spominanom utoku by utocnik namiesto mojho skriptu poslal rm -rf / a som v pecku, ze. Cize chcem to spravit pomocou nejakeho sifrovania, idealne aby som do toho nemusel miesat gpg ale priamo aby ten wget stahoval sifrovane data, neviem ci to vobec podporuje. Cize co mi treba (asi):
1. na servri zrejme vygenerovat nejaky par klucov
2. nejak rozchodit aby https pouzivalo tento par klucov
3. asi verejny kluc klientovy niekam dat aby ho wget pouzil
Otazka znie, ako to mam spravit? S apachom som okrem BFU instalacie nic nerobil, wgetu neviem kam mam ten kluc dat, atd...
vdaka
Pre pridávanie komentárov sa musíte prihlásiť.
preco by chroot nebol bezpecnostny program ? co je na tom rieseni zle ?
rozdiel medzi pouzitim prenosu skriptu pre update cez https je rovnake bezpecnostne riziko ako pouzit scp pomocou ssh v chroote pre shel scponly. jedine co ich odisuje je ze taketo scp sa instaluje a konfiguruje tazsie.
ps.: kombinacia vyrazov "robit update cez skripty stiahnute z internetu" a "ludia ktorych nepoznam" ma dost dobre rozosmiala. ak sa jedna o update produktu ku ktoremu sa predava podpora, tak sa firma musi postarat o zabezpecenie jej certifikacie a na to je vhodnejie to scp (kluc sa da dodat pocas instalacie a kedykolvek overit).
Ja sa pytam "Nainstaloval som Apache, ako mam rozchodit https?", ty mi odpovedas "Rozchod https", super rada, velmi uzitocna
>> rozdiel medzi pouzitim prenosu skriptu pre update cez https je rovnake bezpecnostne riziko ako pouzit scp pomocou ssh v chroote pre shel scponly. jedine co ich odisuje je ze taketo scp sa instaluje a konfiguruje tazsie.
Ako uz som spominal vysie, nechcem scp, je to obskurne riesenie, nikde som ho zatial nevidel. Google mail, sourceforge.net, ... vsetci pouzivaju https, ja chcem tiez.
>> ps.: kombinacia vyrazov "robit update cez skripty stiahnute z internetu" a "ludia ktorych nepoznam" ma dost dobre rozosmiala. ak sa jedna o update produktu ku ktoremu sa predava podpora, tak sa firma musi postarat o zabezpecenie jej certifikacie a na to je vhodnejie to scp (kluc sa da dodat pocas instalacie a kedykolvek overit).
jedna sa o update produktu ktory je zadarmo, ano, kluc bude sucastou instalacie, ale co s tym dalej?
ak si dobre spominam, tak pre ubuntu su dva rozne baliky apache, jeden pre http a druhy pre https. predpokladam ze si si uz skontroloval dostupne balicky.
:nechcem scp, je to obskurne riesenie
nie je obskurne, je zlozitejsie na konfiguraciu. ale kazdy mame pravo na svoj nazor. ak by sa jednalo o obskurne riesenie, tak by zakapalo aj SVN alebo CVS cez SSL rovnako ako aj hoci RSYNC ktore mozes pouzit, setri to linku.
:jedna sa o update produktu ktory je zadarmo, ano, kluc bude sucastou instalacie, ale co s tym dalej?
ak je to zadarmo, tak ten namet na glosu beriem spet. existuje dost produktov ktore maju instalacny skript dostupny cez web a nik neriesi man in the middle attack. ale ak chces, tak si nainstaluj zodpovedajuci balicek a popripade este aj dokonfiguruj VHOST.
vytvoril som kluce (dane adresare exisuju), zadal som heslo:
na koniec /etc/apache2/apache2.conf som pridal toto:
Restartoval som apache, pyta heslo, vyplnim, napise:
Apache bezi (http), vsetko vyzera byt ok. Ked dam ale https://localhost/ tak sice vyskoci okno s certifikatom, to dam potvrdit ale vzapati zahlasi firefox tuto chybu:
v error.log apachu je toto:
Obe chyby som hladal, googlil, skumal, cely vecer ale neviem co s tym.
Skusil som vykomentovat SSLVerifyClient ale to robi to ze stranky taha z /htdocs/. Potom ide aj https://localhost/index.html (zobrazi to stranku v /htdocs/index.html). To zobrazi stranku vo firefoxe, pruzok s adresou je zlty, akoze https, cize to by teoreticky mohlo byt. Teraz, problem je v tom ze wget hlasi toto:
Uz by som asi mal wgetu dat ten certifikat, ale ako? Vdaka za akekolvek napady.
Co s tym? Google som skusal ale riesenie som nenasiel...
[Tue Jan 15 21:13:30 2008] [error] [client 127.0.1.1] Invalid method in request \x16\x03\x01
Cize uz hlasi len self signed certificate co je OK lebo tak to je.
Dalsia otazka, ako mam wgetu podstrcit kluc aby nepindal?
Problem u teba je, ze mas self signed certifikat a teda vzdy uzivatel dostane hlasku typu ze nazov certifikatu sa nezhoduje s nazvom serveru a bude to musiet odignorovat. Cize aj ked dojde k man-in-the middle attacku, ktoremu si sa chcel vyhnut, tak sa mu nevyhnes.
Mohol by si si kupit certifikat od nejakej certifikacnej autority vystaveny na meno servera a potom to bude ok. wget nebude pindat a ty nepotrebujes parameter no-check-certificate
Je to ako ked sa prvy krat prihlasujem na nejaky ssh server tak mi zobrazi hash serveroveho public kluca ktory ak akceptujem tak si ho niekam ulozi a pouziva. Ja vlastnim server, cize klientom mozem rovno nastavit aby uz moj certifikat povazovali za platny. Ale neviem ako to mam urobit.
Horsie je ze wget sa so mnou ani nebavi. Proste potrebujem nejak spravit aby sa ma wget opytal ci akceptujem certifikat zo servra. Ako?
Neviem ci nemam radsej spravit animaciu toho co vlastne chcem :)
wget --certificate=/cesta/k/certifikatu