A kopogtatós módszer


Tagek: Linux, Egyéb, Security,
Írta: toshy
Publikálva: 2013-04-05 23:43:38



Ha szerver biztonság akkor SSH. Sajnos a brute force jellgű támadástól, a DDOS -ig mindennek ki van téve. Igaz legalább a csatorna tikosított SSL. Ilyenkor jönnek a külömböző oldalakon már szinte unalomig ismételgetett beálitás sorozat, hogy:

  • Tíltsuk ki a root felhasználót az SSH szervízből.
  • Minnél kevesebb felhasználónak engedélyezzük a belépést.
  • Jelszó hozzá férés helyet inkább kulcsos belépést konfiguráljunk.
  • Tegyük el az alapértelmezett port-ról az SSH-t.
  • Telepítsünk fail2ban -t.
  • … stb



Van pár házi praktika ebben a témában. Már-már lassan hit kérdése lehet az egész. Majd alkalom adtán készítek egy „TOP x lépés amit meglépnék, hogy biztonságban higgyem a szerverem” cikket. Persze ha a biztonságról van szó akkor nem lehet ellégé védekezni. Szóval akár mindent neten felelhető praktikát be lehet állítani, persze csak ésszel. Nem árt ha értjük mit miért állítunk be, ugyanis könyen lehet, hogy egyik másik beállítás üti egymást. Nade nem erről szerettem volna írni.

Van egy olyan módszer is, hogy kopogtatós módszer. :) :) :)
Hát ez nagyon tetszik nekem. Vizuális típusnak mondanám magam. Mikor ellőször hallotam erről, elképzeltem ahogy az ajtón álló alabárdosok mögött beosonó fickó, szíve imádotjának ajtaján kopogtatná a jelszót, hogy bejusson egy kis titkos etye-petyére :-D
De férfias izgalmában elfelejti hogy is volt: 3 rövid 2 hosszú 1 rövid ? Vagy 2 hosszú 3 rövid 2 hosszú ?
Kérem szépen pontosan erről van szó egyébként. Be állítunk egy bizonyos kombinációjú kopogtatást, és nyílik nekünk egy SSH „ajtó” ! Persze az is hozzá tartozik a vizualizációs vizióhoz, hogy itt lehet akár akkor is kopogtatni egyett amikor kilépünk, hogy záruljon mögöttünk az ajtó. Ezt nem feltétlenül kell így csinálni, de a lehetőség adott. Lássuk akkor a lehetőségeket.


A beállításokat az /etc/knockd.conf -file ban tudjuk megejteni.

      1. -es verzió. Kopogtatunk a belépéshez, és a kilépéshez.
      [options]
      	UseSyslog
      
      [openSSH]
      	sequence    = 7001,8090,9700
      	seq_timeout = 5
      	command     = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
      	tcpflags    = syn
      
      [closeSSH]
      	sequence    = 9700,8090,7001
      	seq_timeout = 5
      	command     = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
      	tcpflags    = syn
      


      Látható hogy a 7001,8090,9700 portokat végig kopogtatva a tűzfal nyit nekünk egy portot az adott IP címmel. Vissza felé kopogtatva pedig zárja „törli a tűzfal szabályt”. Természetesen nem törvény szerű az, hogy a zárás kopogtató mintája vissza felé ugyan annak kell lennie. A minta bármi lehet. Na mi a gond ezzel ??? Mi van ha valaki épp lehalgatja a hálózatunkat, sniff -eli a mintát, és lám lám az alabárdos kapúőr meghallota / látta a kopogtatós mintát. Innentől kezdve neki is nyílik az ajtó :-D




      2. -es verzió. Itt a protokolokat is belekeverjük. Illetve a feledékeny kifelé nem kopogtatókra gondolva egy cmd_timeout eltelte után zárja automatikusan az ajtót. Sajnos az előző probléma itt is adott. De nehezítettük a hallgatózó szemfülesnek a dolgát, hogy nehezebben felismerhető legyen a minta.

      [options]
      	logfile = /var/log/knockd.log
      
      [opencloseSSH]
      	sequence      = 2002:udp,3003:tcp,4004:udp
      	seq_timeout   = 15
         	tcpflags      = syn,ack
         	start_command = /usr/sbin/iptables -A INPUT -s %IP% -p tcp --syn --dport 22 -j ACCEPT
         	cmd_timeout   = 10
         	stop_command  = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --syn --dport 22 -j ACCEPT
      


      3. -as verzió. Itt „egyszer” használatos kulcsokról lenne szó. Persze ezt nem úgy kell elképzelni ahogy a banki tóken-ek müködnek. Itt nem realtime generálódnak a kulcsok. Nade lássuk akkor hogyan ?

      	 
      [options]
      	logfile = /var/log/knockd.log
      
      [opencloseSMTP]
         	one_time_sequences = /etc/knockd/smtp_sequences
         	seq_timeout        = 15
         	tcpflags           = fin,!ack
         	start_command      = /usr/sbin/iptables -A input -s %IP% -p tcp --dport 25 -j ACCEPT
         	cmd_timeout        = 5
         	stop_command       = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 25 -j ACCEPT
      


      Adott egy /etc/knockd/smtp_sequences fájl és ebben fel vannak sorolva a kopogtatós minták. Minden egyes sikeres kopogtatás után a felhasznált mintát inaktiválja, és már csak a következő mintával lehet legközelebb kopogtatni. Ez természetesen feltételezi azt, hogy a kliens oladlon ismerük ennek a file-nak tartalmát. És lám az előző lehalgatós / meglesős probléma is megvan oldva.


    Kérdezhetné mindenki, hogy jó-jó ! De mivel kopogtatunk ? Nos a szerző klienst is készített hozzá, illetve legyünk kreatívak. Akár egy telnet el is végig kopogatathatjúk.



    Persze ez egy szerverbiztonságról szóló publikációban édes kevés lenne. Nem is ez a célja a publikációnak. De nekem annyira tetszik ez a megoldás, és arról nem beszélve, hogy amilyen kis méretű dologról van szó annyira nagyszerű az egész, és felettéb szórakoztató volt már csak végig olvasni a müködését is. Nekem vizuális típusnak ez jobb volt mint egy rosszabb rész a betty a csúnya lányból ;-). Aki ezt az egészet megálmodta igazán nagyszerű dolgot valósított meg. Egyébként itt jön a forrás megjelölése. A minta konfigurációk innen vannak.
    Egyébként egy Vinet Judd nevü Kanadai fiatal ember szerzeménye

    Köszönöm szépen a megtisztelő figyelmet.

    Szólj hozzá

    Hozzászólások(0)