Představ si, že tvůj počítač nebo mobil je jako tvůj hrad. Uvnitř máš své poklady – fotky, hry, dokumenty a osobní údaje. Stejně jako hrad potřebuje pevné zdi a stráže, aby ho nikdo nevykradl, i tvůj počítač potřebuje ochranu. V digitálním světě na nás totiž číhají nebezpečí v podobě virů a dalších škodlivých programů. V této kapitole se naučíme, jak svůj digitální hrad chránit.
Počítačový virus je jako nemoc pro počítač. Je to malý, škodlivý program, který se umí sám šířit a dělat neplechu.
Počítačový virus je škodlivý software (program), který se bez tvého vědomí šíří v počítači a může mazat soubory, krást informace nebo zpomalovat počítač.
Naštěstí máme statečné strážce, kteří náš počítač chrání. Tím nejdůležitějším je antivirový program.
Antivirový program je software, který vyhledává, detekuje a odstraňuje počítačové viry a jiný škodlivý software z tvého počítače.
Představ si, že antivir je jako policista, který má seznam hledaných zločinců.
Představ si, že ve zdech tvého hradu jsou malé dírky, kterými by se mohl protáhnout zloděj. Čas od času musíš tyto dírky opravit. Přesně to dělají aktualizace.
Aktualizace softwaru je balíček oprav a vylepšení pro operační systém nebo pro nějakou aplikaci. Opravuje bezpečnostní díry, přidává nové funkce a zlepšuje stabilitu programu.
Aktualizace jsou naprosto klíčové pro bezpečnost!
V digitálním světě je naše bezpečnost neustále ohrožena. Antivirové programy a aktualizace jsou jako bezpečnostní pásy a airbagy v autě – základní výbava, která nás chrání. Učíme se je používat nejen proto, abychom ochránili svá data, ale abychom se mohli v online světě pohybovat svobodně a bez obav. Zodpovědnost za vlastní digitální bezpečnost je klíčovou součástí digitální gramotnosti.
Malware (malicious software = škodlivý software) je obecný název pro programy, které poškozují počítač nebo kradou data. Existuje mnoho druhů, každý funguje jinak:
Nejstarší typ malwaru. Virus se připojí k legitimnímu souboru (např. k programu nebo dokumentu) a šíří se, když uživatel tento soubor spustí nebo sdílí. Pojmenování podle biologického viru – potřebuje "hostitele" k přežití.
Na rozdíl od viru se červ šíří sám po síti bez jakékoli akce uživatele. Využívá bezpečnostní díry v systémech. Slavný příklad: červ WannaCry v roce 2017 napadl 200 000 počítačů ve 150 zemích během několika hodin.
Jeden z nejnebezpečnějších typů malwaru dnes. Ransomware zašifruje všechny tvé soubory a požaduje výkupné (ransom) za jejich odemčení – obvykle v kryptoměně, aby útočník nebyl vysledovatelný. Jedinou spolehlivou ochranou jsou pravidelné zálohy!
Podle legendy o trojském koni – vypadá jako užitečný program, ale uvnitř se skrývá škodlivý kód. Například stáhneš "bezplatnou hru" a s ní se ti nainstaluje program, který krade hesla.
Spyware sleduje tvou aktivitu – co píšeš, jaké stránky navštěvuješ, může zaznamenávat hesla. Adware zobrazuje nežádoucí reklamy a často zpomaluje počítač.
Antivirus je jen první linie obrany. Profesionálové používají další nástroje:
Firewall je "zeď" mezi tvým počítačem a internetem. Kontroluje veškerý příchozí a odchozí provoz a blokuje podezřelé spojení. Windows má vestavěný firewall, ale existují i pokročilejší (např. pfSense).
Sandbox je izolované prostředí pro spuštění podezřelého software. Je to jako kdyby ses otočil na test – pokud soubor obsahuje malware, poškodí jen sandbox, ne tvůj skutečný počítač.
Šifrování disku chrání data, i když ti někdo ukradne počítač. Windows nabízí BitLocker, Mac má FileVault. Bez hesla jsou data nečitelná.
Profesionální bezpečnost IT se řídí osvědčenými principy. Pojďme se na ně podívat podrobněji:
Nikdy nespoléhej jen na jednu vrstvu ochrany! Představ si středověký hrad – má příkop, hradby, bránu, strážce a vnitřní pevnost. Podobně bychom měli chránit data: firewall na perimetru, antivirus na počítačích, šifrování dat, školení uživatelů. Pokud útočník prolomí jednu vrstvu, narazí na další.
Každý uživatel a program by měl mít pouze ta oprávnění, která skutečně potřebuje. Běžný zaměstnanec nepotřebuje administrátorská práva. Účetní nepotřebuje přístup k personálním datům. Omezením oprávnění omezíš i škody v případě kompromitace účtu.
Tradiční model důvěřoval všemu uvnitř firemní sítě. Zero Trust říká: "Nikdy nevěř, vždy ověřuj." I když jsi ve firemní síti, musíš se prokázat při přístupu k citlivým datům. Tento přístup je nezbytný v době, kdy lidé pracují z domova a používají cloudové služby.
Každé bezpečnostní opatření chrání alespoň jednu z těchto tří hodnot:
Phishing je nejčastější útok – podvodník posílá e-mail nebo zprávu, která vypadá jako od důvěryhodného zdroje (banka, Facebook, Netflix) a láká tě ke kliknutí na odkaz. Na falešné stránce pak zadáš heslo, které útočník získá.
DDoS (Distributed Denial of Service) zahltí server miliony požadavků z napadených počítačů (botnet). Server nestíhá odpovídat a web je nedostupný. Útočníci to používají pro vydírání nebo sabotáž.
SQL Injection využívá chybu v programování webových stránek. Útočník vloží do formuláře škodlivý SQL kód a může získat přístup k celé databázi. Proto je důležité správně ošetřovat vstupní data!
Toto jednoduché pravidlo tě ochrání před většinou katastrof:
Jako IT specialista budeš zodpovědný za bezpečnost systémů. Naučíš se základy šifrování, hashování a bezpečného programování.
Hash je jednosměrná funkce – ze vstupu vytvoří "otisk", ale z otisku nelze získat vstup:
import hashlib
# Základní hashování
text = "tajne_heslo"
hash_md5 = hashlib.md5(text.encode()).hexdigest()
hash_sha256 = hashlib.sha256(text.encode()).hexdigest()
print(f"MD5: {hash_md5}")
print(f"SHA-256: {hash_sha256}")
# Hash souboru (kontrola integrity)
def hash_souboru(cesta):
sha256 = hashlib.sha256()
with open(cesta, 'rb') as f:
for blok in iter(lambda: f.read(4096), b''):
sha256.update(blok)
return sha256.hexdigest()
# Kontrola hesla
def over_heslo(zadane_heslo, ulozeny_hash):
hash_zadaneho = hashlib.sha256(zadane_heslo.encode()).hexdigest()
return hash_zadaneho == ulozeny_hash
Pro hesla se používá pomalý hash s "solí":
# pip install bcrypt
import bcrypt
# Vytvoření hashe hesla
heslo = "tajne_heslo".encode()
sul = bcrypt.gensalt() # Náhodná sůl
hash_hesla = bcrypt.hashpw(heslo, sul)
print(f"Hash: {hash_hesla}")
# Ověření hesla
zadane = "tajne_heslo".encode()
if bcrypt.checkpw(zadane, hash_hesla):
print("Heslo je správné!")
else:
print("Špatné heslo!")
Symetrické šifrování používá jeden klíč pro šifrování i dešifrování:
# pip install cryptography
from cryptography.fernet import Fernet
# Vygeneruj klíč (ulož bezpečně!)
klic = Fernet.generate_key()
print(f"Klíč: {klic}")
# Šifrování
sifra = Fernet(klic)
zprava = "Tajná zpráva".encode()
zasifrovano = sifra.encrypt(zprava)
print(f"Zašifrováno: {zasifrovano}")
# Dešifrování
desifrovano = sifra.decrypt(zasifrovano)
print(f"Dešifrováno: {desifrovano.decode()}")
Jako programátor musíš psát kód, který je odolný vůči útokům:
# ŠPATNĚ - SQL Injection zranitelnost!
jmeno = input("Zadej jméno: ")
dotaz = f"SELECT * FROM users WHERE name = '{jmeno}'"
# Útočník může zadat: ' OR '1'='1
# SPRÁVNĚ - parametrizovaný dotaz
import sqlite3
conn = sqlite3.connect('db.sqlite')
cursor = conn.cursor()
cursor.execute("SELECT * FROM users WHERE name = ?", (jmeno,))
# ŠPATNĚ - XSS zranitelnost
uzivatelsky_vstup = "<script>alert('hack')</script>"
html = f"<div>{uzivatelsky_vstup}</div>"
# SPRÁVNĚ - escapování
from html import escape
bezpecny = escape(uzivatelsky_vstup)
html = f"<div>{bezpecny}</div>"
import secrets
import string
# Bezpečné náhodné číslo
nahodne = secrets.randbelow(100)
# Bezpečný token
token = secrets.token_hex(32) # 64 znaků hex
# Generátor hesel
def generuj_heslo(delka=16):
znaky = string.ascii_letters + string.digits + string.punctuation
return ''.join(secrets.choice(znaky) for _ in range(delka))
print(generuj_heslo())
Jako IT specialista musíš rozumět bezpečnému programování a správě citlivých dat.
# .gitignore - BEZPEČNOSTNÍ SEKCE
# Proměnné prostředí (obsahují tajemství!)
.env
.env.local
.env.production
*.env
# Konfigurační soubory s hesly
config/secrets.yml
config/database.yml
settings_local.py
# API klíče
api_keys.txt
credentials.json
service_account.json
# SSH a certifikáty
*.pem
*.key
*.p12
id_rsa
id_ed25519
# Python cache a virtuální prostředí
__pycache__/
*.pyc
venv/
.venv/
# IDE
.vscode/
.idea/
*.swp
# Logs (mohou obsahovat citlivé info)
*.log
logs/
# Databázové soubory
*.db
*.sqlite
*.sqlite3
# OS soubory
.DS_Store
Thumbs.db
| Prostředí | Řešení | Příklad |
|---|---|---|
| Lokální vývoj | .env soubor (v .gitignore!) | python-dotenv |
| GitHub Actions | Repository Secrets | Settings → Secrets |
| Cloud deployment | Environment Variables | Heroku Config Vars |
| Enterprise | Secret Manager | AWS Secrets Manager, HashiCorp Vault |
# .env (NIKDY v Gitu!)
DATABASE_URL=mysql://user:heslo@localhost/db
API_KEY=sk-1234567890abcdef
SECRET_KEY=moje-super-tajne-heslo
# .env.example (TENTO soubor DO Gitu - šablona)
DATABASE_URL=mysql://user:password@localhost/database
API_KEY=your-api-key-here
SECRET_KEY=generate-random-key
# Python - načtení .env
# pip install python-dotenv
from dotenv import load_dotenv
import os
load_dotenv() # Načte .env soubor
database_url = os.getenv('DATABASE_URL')
api_key = os.getenv('API_KEY')
secret = os.getenv('SECRET_KEY')
# Kontrola, že jsou nastaveny
if not api_key:
raise ValueError("API_KEY není nastaven! Zkontroluj .env soubor.")
# .github/workflows/deploy.yml
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Deploy
env:
API_KEY: ${{ secrets.API_KEY }}
DATABASE_URL: ${{ secrets.DATABASE_URL }}
run: |
echo "API_KEY je nastaven (nezobrazí se)"
# Deployment skripty zde
git filter-branch nebo BFG Repo-Cleanergit push --force