2012. január 31., kedd

Védd magad ! - 1. rész CCcam

Jelen cikket az inspirálta, hogy a napokban a nyilvánosságra került egy sok-sok oldalas lista, ami CS-vel foglalkozó DNS/IP címeket tartalmazott. Ez (érthető okból) igen nagy felzúdulást váltott ki a fórumokon. Többen teljesen tanácstalanságban kérdezték, hogy "most akkor mit tehetünk" ? 

Először is: nincs itt a világvége !  Egy ilyen adatbázist összeállítani nem olyan nagy ördögösség, mint ahogy azt feltételezzük. Ráadásul ez csak egy DNS/IP lista, (szerencsére) nem tartalmaz semmilyen egyéb adatot (port, protokol, user, jelszó, stb).

Másodszor, szögezzük le: nincs 100%-os módszer a védelemre ! Illetve van, de akkor ne használjunk CS-t...

Megnehezíthetjük és ezért kevésbé kívánatos célponttá tehetjük CCcam szerverünket a  betörök szempontjából, de midig lesznek ügyes emberek...

A technikai megoldások előtt, néhány jó tanács:
  • Válogassuk meg a partnereinket ! Óvakodjunk az olyan ajánlkozó partnertől aki ismeretlenül olyan kártyá(ka)t ajánljanak nekünk ami kuriózum, és cserébe (szinte) semmit nem kérnek ! Ez mindig gyanús... 
  • A másik érdekes partner, aki 3-4 (vagy több) lokális prémium kártyát ígér, full csomaggal... Ha kicsit utána számolunk az előfizetési díja 100 eFt-os nagyságrend lenne ! Kevéssé hihető hogy tényleg elő van fizetve mindegyikre...
  • Free CardServer és hasonló szenzációs ajánlatokkal SOHA ne foglalkozzunk, még EGY PRÓBA EREJÉIG SE ! Még ha tényleg azt nyújtják amit ígérnek, hamar bele kerülhet DNS/IP címünk egy olyan adatbázisba amibe nem szeretnénk ott lenni...
Néhány általános technikai  tanács:
  • Minden nem a CS-hez használt, de az internet felé nyitott portot (komolyabb) jelszóval védjünk le (az 1234 és az admin NEM komoly jelszó...) !
  • A router és a box(-ok) alapértelmezett jelszavát változtassunk meg !
  • Ha használunk WiFi-t, akkor lehetőleg WPA2 titkosítást válasszuk, és itt is komolyabb jelszót állítsunk be ! A WEP-et kerülni kell, nagyon könnyen feltörhető.
  • Ha a belső hálózatunkon a tárhelyek megosztására használunk SAMBÁ-t akkor tiltsuk le a guest típusú kacsolódást, csak a jelszavasat engedélyezzük ! (Ez akkor lesz fontos, ha már valaki betört hozzánk. Így megnehezíthetjük hogy mást is elérjen)
  • A CCcam programot lehetőleg biztos forrásból szerezzük be és óvakodjunk a box-okra szánt "mindet" tartalmazó IMG-től ! Sokkal biztonságosabb, ha külön forrásból telepítjük a CCcam programot, vagyis az nem az IMG része. Konkrét példa: pont a napokban derült ki, hogy a "Gemini 4,70 CCcam 2.1.4 DM500 Maxvar" IMG egyes verziói preparáltak, nem csak azokat a dolgokat tartalmazzák, amit ígérnek, hanem egy backdoort (hátsó ajtót) is, ahonnét szabadon be lehet járni a DreamBox-ra....
Ezek elég banális dolgoknak tűnnek, de az esetek 99%-ban ezeket felhasználva törnek be.

Nézzünk, milyen eszközeink vannak CCcam szerverünk megvédésére.


CCcam működési port

Állítsuk be azt a portot, ahol a CCcam dolgozni fog.
Keressük meg (ha nincs ilyen, akkor írjuk bele) a CCcam.cfg-be az alábbi bejegyzést:

SERVER LISTEN PORT: 12000



Ez az alapértelmezett port, ezt mindenképpen módosítsuk ! Elvileg bármilyen portot használhatunk, de javasolt 12000 feletti érték használata, mert itt már nincs semmilyen dedikált port.


F sorok DNS/IP védelme

Minden F sor végére írjuk be azt a DNS vagy IP címet, ahonnét a partner csatlakozik. Igy más címről nem fogadja el a CCcam a kapcsolódást.

Pl.
Ha az illető C sora így néz ki:

C: troll.link.hu 12000 user jelszo


Akkor az F sor végét így módosítsuk:

F: troll jelszo 0 0 0 { 0:0:2 } {} {} troll.link.hu


Ennek nagy előnye, hogy így meg tudjuk akadályozni a sorlopást: attól még, hogy ellopja valaki Troll C sorát, nem fog tudni csatlakozni hozzánk, hiszen azt biztosan más DNS/IP címről tenné.


Fail2Ban

A Fail2Ban egy nagyon jó eszköz a próbálkozók "lenyugtatására". Nem csak CCcam-hoz használható, hanem bármilyen (folyamatos log fájlt készítő) hálózatos programhoz.

Működési feltételek a Fail2Ban működéséhez:
  • Telepített IPtables nevű (parancssoros) tűzfal. Ez a legtöbb Linux disztribúciónak (az Ubuntunak is) alapból része, így vélhetően ezt külön nem kell telepíteni.
  • CCcam.cfg-ben ez a bejegyzés: LOG WARNINGS : /tmp/warnings.txt. Ezzel azt érjük el, hogy folyamatosan naplózza az eseményeket
A Fail2Ban úgy működik, hogy figyeli a megadott log fájlt, és amennyiben az előre definiált esemény, az előre megadott darabszámban megismétlődik, az IPtables segítségével ideiglenesen blokkolja a próbálkozó IP címét (konkrétan: létrehoz egy ideiglenes szabályt a tűzfalban). 
CCcam esetén a definiált esemény a sikertelen kapcsolódási kísérlet lesz, vagyis valaki nem a CCcam.cfg-ben engedélyezettek szerint próbálkozik kapcsolódni. Melyek lehetnek ezek az esetek ? Néhány példa :
  • nem megfelelő protokoll használata (pl. F sorra N sorral akar csatlakozni)
  • nem engedélyezett DNS-röl próbál csatlakozni (jók az user adatok, de nem az általunk megadott DNS-ről jön a csatlakozás)
  • olyan személy próbál csatlakozni, aki nem is szerepel a CCcam.cfg-ben (pl, törölt user, vagy éppen egy BuruteForce betörési kísérlet....)
Ilyen esetekben a CCcam "Login Failed !" naplóbejegyzéssel elutasítja a kapcsolatot.

Felmerül a kérdés, hogy ha a CCcam amúgy is elutasítja a kísérletet, minek foglalkozni az egész Fail2Ban-nal ? Nézzük a másik oldalról, ha nincs Fail2Ban.
Tételezzük fel, hogy szerzek egy olyan DNS címet, ahol vélhetően fut a CCcam és még a portot is ismerem (pl. 12000-as). Mondjuk, én szeretnék ide betörni (tehát nem használni akarom a sharingot, hanem be akarok törni az eszközre). Az 12000-as port ugyebár egy nyitott port a tűzfalon és a routeren, mert e nélkül nem menne a sharing. Jelen állapotában nem tudok túl sok minden tenni, mert a CCcam elutasítja a kapcsolatot, főleg ha nem is CCcam-al kapcsolódnék erre a portra. Első feladat: iktassuk ki a CCcam-ot ! Valamilyen módszerrel néhány perc alatt küldök több ezer kapcsolódási kérelmet, amit a CCcam elutasít ugyan, de egyre inkább túlterhelődik. Lesz egy pont (sajnos nem kell sok) amikor a CCcam megadja magát, és leáll. Ebben a pillanatban felszabadul a 12000-as port, és megfelelő szaktudás birtokában jöhet a következő lépés: állítsuk be úgy a cél számítógépet, hogy tudjunk más protokollt is használni az 12000-as porton (FTP, SSH, Telnet stb). Higgyük el, hogy megoldható... Innentől fogva szabadrablás van, minden fájl és könyvtár letölthető, módosítható, de ha SSH, Telnet (vagy hasonló) protokolt használok, más (a helyi hálózaton lévő) eszközt is tudok támadni (Pl a routert....)
Persze ez csak egy forgatókönyv a rengeteg rossz szándékú módszer közül.
Ezzel szemben, ha van Fail2Ban a CCcam-ot jelentősen tehermentesítjük, mivel pl. 10 hibás kapcsolódási kísérlet után 1 órára tiltólistára tesszük az illető IP címét. Így már nehezen lehetne túlterhelni a CCcam-ot.

Kártyaszerver nélkülieknek rossz hír, hogy (tudomásom szerint) a Fail2Ban módszer nem működik Linux-os boxon. Maga az Fail2Ban program működőkepés lenne ugyan, de az IPtables nem fut...  
De ha valakinek ellenkező információi vannak, azt kérem ossza meg velem is !

Ennyi bevezető után installáljuk és állítsuk be a Fail2Ban-t. Én most Ubuntura fogom telepíteni, de természetesen más Linuxra is telepíthető. Ebben az esetben a parancsok eltérhetnek.

Telepítés. Nyissuk meg a konzolt, és irjuk be ezt a parancsot:

sudo apt-get install fail2ban


Ha kész, állítsuk be a konfigurációs fájlt. Nyissuk meg módosításra az alábbi paranccsal:

sudo gedit /etc/fail2ban/jail.conf


Keressük meg az alábbi sort:

# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1 192.168.1.72 


Az ingoreip után (szóközzel elválasztva) felsorolhatjuk azokat az IP címeket, amiket a Fail2Ban figyelmen kívül hagy, vagyis nem fog figyelni az olyan bejegyzésekre amelyek ezeket az IP címeket tartalmazzák. Érdemes a helyi hálózat címeit ide felsorolni, de ha maximális biztonságra hajazunk, a 127.0.0.1-en kívül ne írjunk ide semmit.

A konfig fájl végére illesszük be a CCcam számára definiált szűrőt:

[cccam-12000]                        


enabled = true                      
# engedélyezve
port = 12000                         # CCcam portja
filter = cccam                      
# szűrő neve
action = iptables[name=CCcam0, port=12000, protocol=tcp] 

# Az akció, amit végrehajt (letiltja az IPtables-ben a betolakodo IP címét)
logpath = /tmp/warnings.txt          # log fájl, és pontos helye amit figyel
maxretry = 10                        # 10 sikertelen próbálkozás után aktiválódik
bantime = 6000                       # bannolás időtartama, másodpercben 


Hozzunk létre a szűrő részére konfig fájlt:

sudo gedit /etc/fail2ban/filter.d/cccam.conf


Írjuk ezt bele:
# Fail2Ban configuration file
[Definition]
failregex = Connection from IP: <HOST> Login Failed!

Ez a sor a legfontosabb.
PONTOSAN írjuk ide, hogy a warnings.txt hogyan jegyzi a CCcam a sikertelen próbálkozást. Ez alapján tudja a Fail2Ban, hogy neki foglalkozni kell ezzel a sorral. Ha hibásan írjuk, nem fog aktiválódni a Fail2Ban védelem. A HOST-ot a fenti formában írjuk.

Nálam így szerepel egy bejegyzés a warnings.txt-ben, de ez CCcam verziónként eltérő lehet:

Connection from IP: 256.256.256.256 Login Failed!

Elmentjük a konfigot, majd újraindítjuk a Fail2Ban-t:

sudo /etc/init.d/fail2ban restart



Kész, a Fail2Ban innentől működőkepés ! A naplót megnézhetjük a

sudo gedit /var/log/fail2ban.log


parancsal.

Updade 2013-01-16:
Egy apróság kimaradt a leírásból....

Talán kevesek tudják, de a CCcam is rendelkezik webes felülettel, mely alapértelmezetten üzemel.
Itt nem állítható semmi, de a teljes CS folyamatáról ad információt, melyek között "érzékeny" adatok is vannak. A webes felületnek (a neve: WebInfo) alapértelmezetten a 16001-es a portja, és nincs jelszóval védve.

Probáljuk ki a saját rendszerünkön:

http://szerver_ip:16001




Az elérés beállításait a CCcam.cfg-ben módosíthatjuk, az alábbi módon:

ALLOW WEBINFO: yes # engedélyezzük a webes felületet (ez az alapérték)
WEBINFO LISTEN PORT : 16001 # a portcím (ez az alapérték)
WEBINFO USERNAME : kispista # a felhasználónév (az alapérték: nincs)
WEBINFO PASSWORD : jelszo # a jelszó (az alapérték: nincs)




Mint mondtam, a webes felületen jellegéből fakadóan kárt nem lehet okozni, de a levédése jelszóval erősen javasolt ! A letiltását azért nem javaslom, mert sok hasznos program van ami különféle elemzéseket készít a WebInfo alapján (pl. CccamPHPInfo) . A port címet sem érdemes megváltoztatni, de ha maximális védelem a cél, csak a belső hálózatunkon engedélyezzük az elérését, vagyis a routeren ne nyissuk ki a 16001-es portot.  

A következő részben ugyanebben a témakörben az Oscammal foglalkozunk.

2 megjegyzés:

  1. Tiszteletem! Létezik hasonlo védelem winre? Azért kérdezem ,mert a boxon linux van a pc-n viszont XP.

    VálaszTörlés
  2. Bár gyakorlatilag még nem foglalkoztam a dologgal, de nagyon hasznosnak tűnik az egész blog-od! Lehet belőle tanulni pár dolgot...

    VálaszTörlés