apache, https, kluce a wget

Sekcia: Konfigurácia 10.01.2008 | 23:36
Avatar Frantisek Klabzuba Debian  Používateľ
Ahoj.

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
    • Re: apache, https, kluce a wget 11.01.2008 | 18:02
      lieko   Návštevník
      stahuj tie skripty cez scp a mas po probleme - mozes pouzit aj kluce
      • Re: apache, https, kluce a wget 11.01.2008 | 21:58
        Avatar Frantisek Klabzuba Debian  Používateľ
        no ale to by musel mat kazdy klient pristup na moj server (meno, heslo), lenze to su ludia ktorych nepoznam, uplne cudzi. Cize to potrebujem cez to https.
        • Re: apache, https, kluce a wget 11.01.2008 | 23:35
          lieko   Návštevník
          tak sprav na servery jeden ucet - home adresar daj do chrootu - shell daj scponly a nic ti nehrozi
          • Re: apache, https, kluce a wget 12.01.2008 | 00:59
            Avatar Frantisek Klabzuba Debian  Používateľ
            to je pekne nahovno riesenie, nehladiac na to ze chroot nie je bezpecnostny program, proste chcem https.
            • Re: apache, https, kluce a wget 12.01.2008 | 12:02
              lieko   Návštevník
              :) az teraz som si vsimol ze si uzivatel greenie - to vela vysvetluje

              preco by chroot nebol bezpecnostny program ? co je na tom rieseni zle ?
              • Re: apache, https, kluce a wget 12.01.2008 | 15:42
                Avatar Frantisek Klabzuba Debian  Používateľ
                http://kerneltrap.org/Linux/Abusing_chroot
                • Re: apache, https, kluce a wget 12.01.2008 | 23:27
                  lieko   Návštevník
                  hej chroot sa da obist, ale to by si musel byt root a mat normal shell nie scponly
    • Re: apache, https, kluce a wget 12.01.2008 | 00:32
      Avatar superlamer Debian RedHat FreeBSD  Používateľ
      je problem vygenerovat md5sum po kazdej zmene skriptu? stiahni ho tiez wgetom a porovnaj hashe...
      <pre>bash# grep initdefault /etc/inittab id:0:initdefault:</pre>
      • Re: apache, https, kluce a wget 12.01.2008 | 00:58
        Avatar Frantisek Klabzuba Debian  Používateľ
        ha ha ha, si ma pobavil, to akoze ked mi ten man-in-the-middle podstrci falosny skript tak mi uz nedokaze podstrcit falosny md5sucet ktory bude pasovat na ten jeho skript? Ludia premyslajte kus...
        • Re: apache, https, kluce a wget 12.01.2008 | 03:54
          Avatar superlamer Debian RedHat FreeBSD  Používateľ
          ta ked is taky mudry, tak by potom pre teba nemal byt problem rozbehat si ten apache s ssl...
          <pre>bash# grep initdefault /etc/inittab id:0:initdefault:</pre>
          • Re: apache, https, kluce a wget 12.01.2008 | 12:42
            WlaSaTy   Návštevník
            pesne tak, nahodit https hoci aj na greenie nie je ani najmensi problem. ak clovek nevie nazov balicku, tak ma predsa synap[Tab]. pri prvom spusteni sluzby sa urcite aj automaticky vygeneruje kluc.

            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).
            • Re: apache, https, kluce a wget 12.01.2008 | 16:18
              Avatar Frantisek Klabzuba Debian  Používateľ
              >> pesne tak, nahodit https hoci aj na greenie nie je ani najmensi problem. ak clovek nevie nazov balicku, tak ma predsa synap[Tab]. pri prvom spusteni sluzby sa urcite aj automaticky vygeneruje kluc.

              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?
              • Re: apache, https, kluce a wget 12.01.2008 | 18:25
                WlaSaTy   Návštevník
                :super rada, velmi uzitocna
                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.
    • Re: apache, https, kluce a wget 15.01.2008 | 00:15
      Avatar Frantisek Klabzuba Debian  Používateľ
      Takze tu je momentalny progres:

      vytvoril som kluce (dane adresare exisuju), zadal som heslo:
      openssl req -new -x509 -days 30 -keyout \
      /etc/apache2/moje_kluce/ssl.key/server.key \
      -out /etc/apache2/moje_kluce/ssl.crt/server.crt \
      -subj '/CN=ubuntu710'

      na koniec /etc/apache2/apache2.conf som pridal toto:
      LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so
      Listen 443
      AddType application/x-x509-ca-cert .crt
      AddType application/x-pkcs7-crl    .crl
      <VirtualHost localhost:443>
          ServerAdmin webmaster@example.com
          ServerName ubuntu710
          ErrorLog /var/log/apache2/error.log
          SSLEngine  on
          SSLCertificateFile /etc/apache2/moje_kluce/ssl.crt/server.crt
          SSLCertificateKeyFile /etc/apache2/moje_kluce/ssl.key/server.key
      <Directory />
          SSLRequireSSL
          SSLVerifyClient require
          SSLVerifyDepth 1
          SSLOptions +StrictRequire
      </Directory>
      </VirtualHost>

      Restartoval som apache, pyta heslo, vyplnim, napise:
      root@ubuntu710:/etc/apache2# apache2ctl start
      Apache/2.2.4 mod_ssl/2.2.4 (Pass Phrase Dialog)
      Some of your private key files are encrypted for security reasons.
      In order to read them you have to provide the pass phrases.
      
      Server ubuntu710:443 (RSA)
      Enter pass phrase:
      
      OK: Pass Phrase Dialog successful.
      root@ubuntu710:/etc/apache2# 

      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:
      localhost has received an incorrect or unexpected message. Error code: -12227

      v error.log apachu je toto:
      root@ubuntu710:/var/log/apache2# cat error.log 
      [Mon Jan 14 23:01:52 2008] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
      [Mon Jan 14 23:01:52 2008] [warn] RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
      [Mon Jan 14 23:01:52 2008] [warn] RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
      [Mon Jan 14 23:01:52 2008] [notice] Apache/2.2.4 (Ubuntu) mod_ssl/2.2.4 OpenSSL/0.9.8e configured -- resuming normal operations
      [Mon Jan 14 23:02:52 2008] [error] Re-negotiation handshake failed: Not accepted by client!?

      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:
      dvh@ubuntu710:~$ wget https://localhost/
      --23:12:34--  https://localhost/
                 => `index.html'
      Prevádzam localhost na IP adresu... 127.0.0.1
      Pripájam sa k localhost|127.0.0.1|:443... pripojené.
      CHYBA: Chyba overenia certifikátu pre localhost: self signed certificate
      CHYBA: bežné meno certifikátu `ubuntu710' sa nezhoduje s požadovaným menom hostiteľa `localhost'.
      Na nie bezpečné pripojenie k localhost použite `--no-check-certificate'.
      Nepodarilo sa nadviazať SSL spojenie.
      dvh@ubuntu710:~$ 

      Uz by som asi mal wgetu dat ten certifikat, ale ako? Vdaka za akekolvek napady.
      • Re: apache, https, kluce a wget 15.01.2008 | 09:10
        lieko   Návštevník
        skor je problem v tom ze sa ti nazov certifikatu nezhoduje s nazvom servera - co je aj napisane v tej chybe. A je tam aj odporucanie ako to obist : --no-check-certificate
        • Re: apache, https, kluce a wget 15.01.2008 | 19:29
          Avatar Frantisek Klabzuba Debian  Používateľ
          jasne, zmenil som meno host, uz tu chybu nehlasi, teraz prezmenu hlasi toto:
          root@ubuntu710:~# wget --save-headers https://ubuntu710/index.html
          --18:25:53--  https://ubuntu710/index.html
                     => `index.html.1'
          Prevádzam ubuntu710 na IP adresu... 127.0.1.1
          Pripájam sa k ubuntu710|127.0.1.1|:443... pripojené.
          OpenSSL: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
          Nepodarilo sa nadviazať SSL spojenie.
          root@ubuntu710:~# 
          

          Co s tym? Google som skusal ale riesenie som nenasiel...
          • Re: apache, https, kluce a wget 15.01.2008 | 20:06
            lieko   Návštevník
            ked si das do browseru https://localhost - to ti ide ?
            • Re: apache, https, kluce a wget 15.01.2008 | 22:08
              Avatar Frantisek Klabzuba Debian  Používateľ
              vo firefoxe to ide, vo wgete to nejde
            • Re: apache, https, kluce a wget 15.01.2008 | 22:12
              Avatar Frantisek Klabzuba Debian  Používateľ
              resp. s localhost to ide, s ubuntu710 to nejde, v error.log je toto:

              [Tue Jan 15 21:13:30 2008] [error] [client 127.0.1.1] Invalid method in request \x16\x03\x01

            • Re: apache, https, kluce a wget 15.01.2008 | 22:18
              Avatar Frantisek Klabzuba Debian  Používateľ
              no, takto, zmenil som kluc na localhost, aj server name som dal localhost, teraz to uz asi funguje, hlasi toto:
              dvh@ubuntu710:~$ wget https://localhost/
              --21:18:26--  https://localhost/
                         => `index.html'
              Prevádzam localhost na IP adresu... 127.0.0.1
              Pripájam sa k localhost|127.0.0.1|:443... pripojené.
              CHYBA: Chyba overenia certifikátu pre localhost: self signed certificate
              Na nie bezpečné pripojenie k localhost použite `--no-check-certificate'.
              Nepodarilo sa nadviazať SSL spojenie.
              dvh@ubuntu710:~$
              

              Cize uz hlasi len self signed certificate co je OK lebo tak to je.

              Dalsia otazka, ako mam wgetu podstrcit kluc aby nepindal?
              • Re: apache, https, kluce a wget 16.01.2008 | 12:31
                lieko   Návštevník
                aky kluc ? Pri https client nema ziaden kluc. Postavene je to na tom ze ked ides na https stranku prvy krat akceptujes certifikat. Pri dalsich navstevach uz vies ze ide o tu istu stranku - ma ten isty certifikat - alebo nie .

                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
                • Re: apache, https, kluce a wget 16.01.2008 | 19:01
                  Avatar Frantisek Klabzuba Debian  Používateľ
                  Ja sa potrebujem vyhnut interaktivnej hlaske pri prvej navsteve, t.j. klientovi "nainstalujem" verejnu cast mojho serveroveho certifikatu. Neviem ci sa vyjadrujem uplne presne.

                  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 :)
                  • Re: apache, https, kluce a wget 16.01.2008 | 20:00
                    lieko   Návštevník
                    tak skus vygenerovat certifikat pre klienta a potom pouzit wget s parametrom

                    wget --certificate=/cesta/k/certifikatu
                    • Re: apache, https, kluce a wget 17.01.2008 | 14:54
                      Avatar Frantisek Klabzuba Debian  Používateľ
                      cim a ako mam vygenerovat certifikat pre klienta?
                      • Re: apache, https, kluce a wget 17.01.2008 | 15:16
                        Avatar borg Arch, Debian jessie  Administrátor
                        openssl
                    • Re: apache, https, kluce a wget 18.01.2008 | 00:22
                      Avatar Frantisek Klabzuba Debian  Používateľ
                      nooo, zda sa ze to funguje:
                      dvh@ubuntu710:~$ wget --ca-certificate=./server.crt https://localhost/
                      --23:24:24--  https://localhost/
                                 => `index.html'
                      Resolving localhost... 127.0.0.1
                      Connecting to localhost|127.0.0.1|:443... connected.
                      HTTP request sent, awaiting response... 200 OK
                      Length: 7 [text/html]
                      
                      100%[==================================================================================>] 7             --.--K/s             
                      
                      23:24:24 (105.01 KB/s) - `index.html' saved [7/7]
                      
                      dvh@ubuntu710:~$ 
                      • Re: apache, https, kluce a wget 02.03.2008 | 16:21
                        utratit   Návštevník
                        dusan ty si uplny c0ck ;)