Temos Archyvai: Linux

Pigios kinietiškos IP kameros (ne)saugumas

Per AliExpress įsigijau pigią kinietišką IP kamerą. Daug maž tuo pat metu užsienio spaudoje plačiai nuskambėjo naujienos apie DDoS atakas rengiamas per piktadarių užvaldytas IP kameras ir kitus „įrenginių interneto“ prietaisus.

Gavęs savo užsakymą nusprendžiau išbandyti kiek saugi yra ši kamera. Nmap pagalba greitai aptikau atvirus prievadus:

80 prievadas naudojamas kameros web interfeisui, 554 – RTSP protokolo vaizdo srautui perduoti, o vat atidarytas telnet prievadas yra negražu ir yra plačiai išnaudojamas blogiukų įrenginiui užvaldyti.

Taigi bandau prie kameros jungtis per telnet – pirma išbandau kameros web interfeiso prisijungimo duomenis (kuriuos, beje, iš karto pakeičiau) – netinka, tada sekė keletas spėliojimų (su vartotojo root ir paprasčiausių slaptažodžių kombinacijomis) – nepavyko. Galiausiai po trumpo googlinimo radau 2014 (!) metų įrašą, po kuriuo komentatorius pasidalino panašios kameros root slaptažodžiu, kuris yra cat1029. Išbandžiau ir sėkmingai prisijungiau:

Taigi kameros kūrėjai dėl vienokių ar kitokių priežasčių paliko backdoor’ą su paprastai internete randamu slaptažodžiu, kamerai, kuri kaipgi turėtų užtikrinti Jūsų saugumą.

Pradžioje pabandykime užtikrinti KAMEROS saugumą: prisijungę per telnet vykdom komandą passwd ir pakeičiame slaptažodį. Perkrovus kamerą ir net atstačius gamintojo nustatymus per web interfeisą, slaptažodžio pakeitimas išsilaikė. Prieš kabindamas kamerą telnet servisą išjungsiu visai.

Taigi patarimai, įsigijusiems IP kameras:

  • Jokiu būdu neleiskite joms prieigos prie interneto! Laikykite jas tik už gerai sukonfigūruotos ugniasienės.
  • Jei įmanoma išjunkite nereikalingus servisus ir pakeiskite kameros root slaptažodį.

Raspberry Pi NFS serveris ir Windows klientas

Įžanga

Microsoft pateikiamas NFS klientas yra prieinamas tik Enterprise ir Ultimate Windows versijose, tad šiame straipsnyje aprašysiu kaip paleisti NFS serverį Raspberry Pi 3 kompiuteryje ir prie jo prisijungti iš Windows 10 Home kliento (viskas turėtų veikti ir su kitomis Windows versijomis).

Raspberry Pi serveris

titulinis

Disko prijungimas

Prijungiam diską prie Raspberry Pi ir vykdom komandą fdisk -l. Sužinome kokį žymėjimą gavo prijungtas diskas:

fdisk

Sukuriame prijungimo vietą:

sudo mkdir /media/transcend

Kadangi prijungtas diskas yra NTFS failų sistemos, įsitikiname, kad įdiegtas NTFS skaitymo – rašymo draiveris:

sudo apt-get update

sudo apt-get install ntfs-3g

/etc/fstab faile sukuriame tokį įrašą:

Perkrauname Raspberry ir naujai prijungtame diske sukuriame katalogą, kuriame saugosime NFS share:

mkdir /media/transcend/NFS

NFS serverio nustatymas

sudo apt-get install nfs-common nfs-server

Pridedame tokią eilutę į /etc/exports failą:

exports

192.168.8.0/255.255.255.0 reiškia, kad bus priimti prisijungimai iš vietinio tinklo adresų diapazono 192.168.8.1 – 192.168.8.254. Opcija insecure pridėta, nes kitaip Windows klientas neprisijungia.

Windows klientas

Parsisiunčiame sukompiliuotus NFS Windows kliento failus iš čia.

išarchyvuojame ir sekame šiais žingsniais:

  1. (Jei neįdiegta) įdiegiame vcredist*.exe bibliotekas.
  2. Du kartus spaudžiame ant nfs41_driver.cer failo, pasirenkame Install Certificate ir įkeliame jį į Trusted Root Certification Authorities saugyklą.
  3. Atidarome komandinę eilutę kaip administratorius.
  4. Vykdome install.bat failą.
  5. Kopijuojame konfigūracinius failus:
    1. mkdir C:\etc
    2. copy etc_netconfig C:\etc\netconfig
    3. copy ms-nfs41-idmap.conf C:\etc\
  6. Leidžiame Windows užkrauti bandomaisiais sertifikatais pasirašytus failus:
    bcdedit /set testsigning on
  7. Perkrauname kompiuterį.
  8. Išjungiame DFS klientą:
    1. Paleidžiame regedit ir keliaujame į HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Mup
    2. Pridedame DWORD reikšme pavadinimu DisableDfs ir reikšme 1.
    1. Pridedame DNS priesagą, jei jos nėra:dns_suffix
    2. Perkrauname kompiuterį.
  9. Išbandome NFS klientą vykdydami komandą:
    nfsd_debug.exe --noldap --uid 1000 --gid 1000 -d 3
  10. Jei klientas nenulūžo ir veikia, atsidarome kitą komandinės eilutės langą ir prijungiame NFS share kaip Z diską:
    nfs_mount.exe Z: 192.168.8.103:\media\transcend\NFS

    kur 192.168.8.103 yra Raspberry Pi adresas.

Veikia:

veikia

Jei prijungiant NFS share meta panašią klaidą:

failed_mount

o NFS serveris paleistas, bet jį perkrovus:

sudo /etc/init.d/nfs-kernel-server restart

viskas sėkmingai prijungiama, vadinasi tikėtina, kad kraunantis Raspberry Pi nfs-kernel-server yra paleidžiamas anksčiau negu prijungiamas išorinis diskas. Tam pataisyti, galima uždelsti nfs-kernel-server paleidimą, tarkim 10 sekundžių, redaguojant /etc/init.d/nfs-kernel-server failą – po start sekcijos pridėjus sleep 10 eilutę:

sleep_nfs_kernel

Automatinis paleidimas ir prijungimas

Įsitikinus, kad viskas veikia, paleidžiame cmd.exe kaip administratorius, grįžtame į išarchyvuotą NFS kliento katalogą ir įrašome NFS klientą kaip servisą:

nfsd.exe -install

Tada per Run paleidžiame services.msc, susirandame pnfs client įrašą ir jo paleidimo tipą pakeičiame į automatinį:

servicesmsc

Automatiniam NFS share prijungimui, paleidžiam Task Scheduler, kairėje pusėje pasirenkam Task Scheduler Library ir sukuriame naują užduotį, dešinėje panėleje spausdami Create Task. Užduočiai suteikiame pavadinimą, Triggers kortelėje sukuriam trigerį, kuris suveiktų sistemos paleidimo metu su kokių 30 sekundžių uždelsimu, Actions kortelėje sukuriame Start a program veiksmą, kuris paleistų skriptą su panašiu turiniu:

C:\Users\User\Desktop\ms-nfs41-client-x64\nfs_mount.exe Z: 192.168.8.103:\media\transcend\NFS

Conditions kortelėje nuimame paukštuką nuo start the task only if computer is on AC power.

taskscheduler

Spaudžiam OK.

Kitą kartą paleidus kompiuterį, NFS klientas bus paleistas ir share prijungtas automatiškai.

Šaltiniai

  1. Raspberry Pi: How to Create an NFS Server
  2. NFSv4.1 Client for Windows
  3. NFSv4.1 Client for Windows (Mailing list)
  4. nfs-kernel-server starts too early

Boscam HD19 ir Raspberry Pi

Atrodo, kad yra tik vienas būdas teikti vaizdą realiu laiku iš Boscam HD19 vaizdo kameros į Raspberry Pi kompiuterį. Tam reikės AV to USB capture card įrenginio. Šiam reikalui nusprendžiau išbandyti KWorld VS-USB2800D, kuris kažkada buvo naudotas miniDV įrašams skaitmeninti ir jau ilgus metus dūlėjo stalčiuje (1-2 Pav.)

KWorld VS-USB2800D

1 Pav. KWorld VS-USB2800D priekis

KWorld VS-USB2800D

2 Pav. KWorld VS-USB2800D galas

Prijungiam Boscam kamerą prie capture card su pateiktu mini USB į kompozitinį AV laidu. Sujungiam pateiktą su Boscam multifunkcinio prievado maitinimo laidą su 12 V baterija (pagal Boscam specifikaciją). Aš naudojau Turnigy 3S 11.1 V bateriją, įtampos atrodo pakanka. Žr. nuotraukas žemiau.

Pic 3. Boscam HD19 with composite and power cables connected

3 Pav. Boscam HD19 su prijungtu kompozitiniu ir maitinimo laidais

Pic 4. Turingy 3S 11.1 V battery

4 Pav. Turnigy 3S 11.1 V baterija

Pic 5. Everything's connected

5 Pav. Viskas sujungta

Prijungiam capture card prie Raspberry Pi USB prievado (6 Pav.)

Pic 6. And... It's a mess

6 Pav. Laidų šiukšlynas

Įjungiam Boscam kamerą laikydami įjungimo mygtuką ir paleidžiam Raspberry. Jei tau sekasi, tai Raspberry Pi aptiks tavo capture card automatiškai ir pasikrovus operacinei sistemai galėsi ja naudotis. Dalinį palaikomos įrangos sąrašą galima rasti LinuxTV tinklapyje. Greitas būdas išbandyti ar viskas veikia yra naudojant guvcview programinę įrangą.

Mano atveju, nors viskas buvo aptikta, bet guvcview rodė tik juodą ekraną. Problema yra tame, kad KWorld capture card turi du įėjimus: S-Video ir kompozitinį ir pagal nutylėjimą laukia vaizdo signalo iš S-Video įėjimo.

Problemai išspręsti peržiūrėjau aptiktus įėjimus:

enum_channels

7 Pav. Prieinamų kanalų peržiūra

ir pasirinkau kompozitinį:

select_channel

8 Pav. Kanalo pasirinkimas

Veikia!

Pic 7. guvcview works

9 Pav. guvcview veikia