Community
0 2250
HostiServer
2025-12-07 12:01:00

Porty Redis: konfigurace, zabezpečení a nastavení 2026

⏱️ Doba čtení: ~10 minut | 📅 Aktualizováno: 7. prosince 2025

Jeden špatně nastavený port — a váš server je otevřený celému světu

Redis zpracovává miliony požadavků za sekundu, ukládá uživatelské relace, cachuje data pro okamžitý přístup. Ale je tu problém: ve výchozím nastavení Redis naslouchá na portu 6379 bez jakékoli autentizace. Hackeři to vědí a skenují internet 24/7.

V roce 2025 bylo přibližně 40 000 Redis serverů veřejně přístupných bez hesla. Výsledek — ukradená data, kryptominery na serverech, zničené databáze. A to vše kvůli špatně nastavenému portu.

Tento průvodce je o tom, jak správně nakonfigurovat porty Redis v roce 2026: od základní konfigurace po produkční zabezpečení s ACL a TLS. Ať už provozujete Redis na VPS nebo dedikovaném serveru, tyto znalosti ochrání vaše data.

Redis: in-memory databáze

Redis (Remote Dictionary Server) je in-memory databáze, která ukládá vše do operační paměti. Zatímco tradiční databáze čtou z disku za 10-15 milisekund, Redis dodává data za mikrosekundy.

Jak to funguje

Tradiční databáze ukládají data na disk a čtou je při každém požadavku. Redis drží vše v operační paměti — odtud ta rychlost. Disk se používá pouze pro persistenci (uložení dat při restartu).

Klienti (váš web, aplikace, API) se připojují k Redis přes síťový port. Ve výchozím nastavení je to port 6379. Server neustále naslouchá na tomto portu, připraven přijímat příkazy: uložit klíč, získat hodnotu, přidat prvek do seznamu.

Redis 8: co je nového v letech 2025-2026

Redis 8 je největší aktualizace v historii:

  • Až o 87% rychlejší — latence příkazů snížena pro 90+ operací
  • 2x propustnost — díky vylepšenému I/O multithreadingu
  • Vector Sets — nativní podpora vektorového vyhledávání pro AI/ML
  • JSON nativně — modul RedisJSON nyní vestavěný
  • Až 67% úspora RAM — optimalizace ukládání JSON a čísel
Redis 8 — největší aktualizace v historii

Porty Redis: který k čemu

Redis používá několik portů pro různé funkce. Pochopení každého z nich je klíčem ke správné konfiguraci.

Port Účel Kdy se používá
6379 Hlavní port Redis Všechna klientská připojení
16379 Cluster Bus Komunikace mezi uzly clusteru
26379 Redis Sentinel Monitoring a automatický failover
Vlastní Vaše volba (6380, 6381...) Více instancí na jednom serveru

Port 6379: hlavní port

Toto je standardní port, který zná každá klientská knihovna — Python redis-py, Node.js ioredis, PHP Predis. Když napíšete redis.connect() bez parametrů, připojení jde právě sem.

Problém: 6379 je první port, který hackeři skenují. Shodan ukazuje desítky tisíc otevřených Redis serverů denně.

Port 16379: Cluster Bus

Když Redis běží v režimu clusteru, uzly mezi sebou komunikují přes port 16379 (hlavní port + 10000). Jedná se o interní protokol pro synchronizaci dat a distribuci slotů.

Důležité: Tento port by nikdy neměl být přístupný z internetu — pouze mezi uzly clusteru.

Port 26379: Sentinel

Redis Sentinel zajišťuje High Availability — monitoruje master uzel a automaticky přepne na repliku, pokud master selže. Sentinel naslouchá na portu 26379 pro koordinaci s ostatními Sentinel instancemi.

Bezpečnost portů Redis: 6 úrovní ochrany

Nechráněný Redis není otázkou "jestli ho napadnou", ale "kdy". Zde je to, co potřebujete nakonfigurovat.

1. Bind: omezení rozhraní

Ve výchozím nastavení může Redis naslouchat na všech síťových rozhraních. To je nebezpečné.

# redis.conf — naslouchat pouze na localhost
bind 127.0.0.1
# Nebo konkrétní privátní IP
bind 127.0.0.1 10.0.0.5
# NEBEZPEČNÉ — naslouchat na všem
# bind 0.0.0.0

2. Protected Mode: vestavěná ochrana

Redis 3.2+ má protected mode — pokud není heslo a bind není nastaven, server odmítne externí připojení.

# redis.conf — vždy povoleno
protected-mode yes

3. ACL místo requirepass: granulární kontrola

Starý requirepass je jedno heslo pro všechny. ACL (Access Control Lists) od Redis 6+ umožňuje vytvářet uživatele s různými oprávněními.

# redis.conf — vytváření uživatelů s ACL
# Zakázat výchozího uživatele bez hesla
user default off
# Admin s plným přístupem
user admin on >SuperStr0ngP@ssw0rd ~* +@all
# Uživatel pouze pro čtení
user readonly on >R3adOnlyP@ss ~cached:* +@read -@dangerous
# Uživatel pro aplikaci — omezené příkazy
user webapp on >W3bAppP@ss ~session:* ~cache:* +get +set +del +expire

Vysvětlení syntaxe ACL:

  • on/off — aktivovat/deaktivovat uživatele
  • >password — nastavit heslo
  • ~pattern — přístup ke klíčům podle vzoru
  • +command — povolit příkaz
  • -@category — zakázat kategorii příkazů

4. TLS: šifrování provozu

Redis 6+ podporuje nativní TLS. Povinné pro produkci, zejména pokud provoz jde přes síť.

# redis.conf — konfigurace TLS
# Použít TLS na portu 6379, zakázat nešifrované
tls-port 6379
port 0
# Certifikáty
tls-cert-file /etc/redis/tls/redis.crt
tls-key-file /etc/redis/tls/redis.key
tls-ca-cert-file /etc/redis/tls/ca.crt
# Vyžadovat klientské certifikáty (volitelné, ale doporučené)
tls-auth-clients yes
# Minimální verze TLS
tls-protocols "TLSv1.2 TLSv1.3"
TLS: šifrování provozu

5. Firewall: omezení na úrovni sítě

I se všemi nastaveními Redis je firewall povinný.

# UFW — povolit Redis pouze z konkrétních IP
sudo ufw allow from 10.0.0.0/24 to any port 6379
sudo ufw deny 6379
# iptables — totéž
iptables -A INPUT -p tcp --dport 6379 -s 10.0.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 6379 -j DROP

6. Nebezpečné příkazy: přejmenujte nebo zakažte

Některé příkazy mohou zničit data nebo kompromitovat server.

# redis.conf — ochrana nebezpečných příkazů
# Úplně zakázat
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command DEBUG ""
# Nebo přejmenovat na něco složitého
rename-command CONFIG "CONFIG_b4ckd00r_pr0t3ct"
rename-command SHUTDOWN "SHUTDOWN_s3cur3_2026"

⚠️ Varování: Po přejmenování příkazů mohou některé monitorovací nástroje přestat fungovat. Testujte ve staging prostředí.

Změna portu Redis: krok za krokem

Změna standardního portu 6379 na vlastní je jedním ze způsobů, jak zkomplikovat automatizované útoky. Nenahrazuje to ostatní bezpečnostní opatření, ale přidává další úroveň ochrany.

Krok 1: Najděte konfigurační soubor

# Typická umístění
/etc/redis/redis.conf          # Debian/Ubuntu
/etc/redis.conf                # CentOS/RHEL
/usr/local/etc/redis.conf      # macOS (Homebrew)
# Najít soubor
sudo find / -name redis.conf 2>/dev/null

Krok 2: Změňte port v konfiguraci

# Otevřete soubor
sudo nano /etc/redis/redis.conf
# Najděte řádek (přibližně řádek 98)
port 6379
# Změňte na nový port
port 6380

Krok 3: Aktualizujte firewall

# UFW
sudo ufw allow 6380/tcp
sudo ufw delete allow 6379/tcp
# iptables
sudo iptables -A INPUT -p tcp --dport 6380 -j ACCEPT
sudo iptables -D INPUT -p tcp --dport 6379 -j ACCEPT

Krok 4: Restartujte Redis

# Systemd
sudo systemctl restart redis
# Nebo
sudo service redis-server restart

Krok 5: Ověřte funkčnost

# Připojení přes nový port
redis-cli -p 6380 ping
# Očekávaná odpověď: PONG
# Kontrola, že server naslouchá
sudo netstat -tlnp | grep redis
# tcp  0  0  127.0.0.1:6380  0.0.0.0:*  LISTEN  1234/redis-server

Krok 6: Aktualizujte všechny klienty

Nezapomeňte aktualizovat připojení ve všech aplikacích!

# Python
import redis
r = redis.Redis(host='localhost', port=6380)
# PHP
$redis = new Redis();
$redis->connect('127.0.0.1', 6380);
# Node.js
const Redis = require('ioredis');
const redis = new Redis({ port: 6380 });

Spuštění více Redis instancí na jednom serveru

Často je potřeba oddělit Redis pro různé úkoly: jeden pro cache, další pro session, třetí pro fronty. Každá instance běží na svém portu.

Vytvoření samostatných konfigurací

# Zkopírujte konfiguraci pro každou instanci
sudo cp /etc/redis/redis.conf /etc/redis/redis-cache.conf
sudo cp /etc/redis/redis.conf /etc/redis/redis-session.conf
sudo cp /etc/redis/redis.conf /etc/redis/redis-queue.conf

Nastavení každé instance

# /etc/redis/redis-cache.conf
port 6379
pidfile /var/run/redis/redis-cache.pid
logfile /var/log/redis/redis-cache.log
dir /var/lib/redis-cache
dbfilename dump-cache.rdb
# /etc/redis/redis-session.conf
port 6380
pidfile /var/run/redis/redis-session.pid
logfile /var/log/redis/redis-session.log
dir /var/lib/redis-session
dbfilename dump-session.rdb
# /etc/redis/redis-queue.conf
port 6381
pidfile /var/run/redis/redis-queue.pid
logfile /var/log/redis/redis-queue.log
dir /var/lib/redis-queue
dbfilename dump-queue.rdb

Systemd služby pro každou instanci

# /etc/systemd/system/redis-cache.service
[Unit]
Description=Redis Cache Instance
After=network.target
[Service]
ExecStart=/usr/bin/redis-server /etc/redis/redis-cache.conf
ExecStop=/usr/bin/redis-cli -p 6379 shutdown
Restart=always
User=redis
Group=redis
[Install]
WantedBy=multi-user.target
# Aktivace služeb
sudo systemctl daemon-reload
sudo systemctl enable redis-cache redis-session redis-queue
sudo systemctl start redis-cache redis-session redis-queue
# Ověření
sudo systemctl status redis-cache
redis-cli -p 6379 ping  # cache
redis-cli -p 6380 ping  # session
redis-cli -p 6381 ping  # queue
Instance Port Účel Doporučená RAM
redis-cache 6379 Cache stránek, API odpovědí 2-8 GB
redis-session 6380 Uživatelské session 1-4 GB
redis-queue 6381 Fronty úloh (Celery, Bull) 1-2 GB

Typické případy použití Redis

Redis už dávno přerostl jednoduché cachování. Zde je, k čemu se používá.

Redis už dávno přerostl jednoduché cachování

1. Cachování (klasika)

Ukládání výsledků náročných dotazů, API odpovědí, vyrenderovaných stránek. Snižuje zatížení hlavní databáze o 70-90%.

# Python příklad cachování
import redis
import json
r = redis.Redis(host='localhost', port=6379)
def get_user(user_id):
    # Pokus o získání z cache
    cached = r.get(f"user:{user_id}")
    if cached:
        return json.loads(cached)
    
    # Pokud není — dotaz do databáze (použijte parametrizované dotazy!)
    user = db.query("SELECT * FROM users WHERE id = %s", (user_id,))
    
    # Uložit do cache na 1 hodinu
    r.setex(f"user:{user_id}", 3600, json.dumps(user))
    return user

2. Uživatelské session

100x rychlejší než file-based session. Ideální pro distribuované systémy s více servery.

3. Rate Limiting

Omezení počtu požadavků — ochrana API před zneužitím.

# Rate limiter: 100 požadavků za minutu
def is_rate_limited(user_ip):
    key = f"rate:{user_ip}"
    current = r.incr(key)
    
    if current == 1:
        r.expire(key, 60)  # TTL 60 sekund
    
    return current > 100

4. Real-time žebříčky

Sorted Sets — ideální struktura pro žebříčky s okamžitou aktualizací.

# Aktualizovat skóre hráče
r.zadd("leaderboard:game1", {"player123": 5000})
# Top 10 hráčů
top10 = r.zrevrange("leaderboard:game1", 0, 9, withscores=True)
# Pozice konkrétního hráče
rank = r.zrevrank("leaderboard:game1", "player123")

5. Pub/Sub a fronty zpráv

Real-time komunikace mezi službami, chaty, notifikace.

6. AI/ML: Vector Search (Redis 8+)

Nový trend 2025-2026 — Redis jako vektorová databáze pro AI aplikace.

# Semantic caching pro LLM
# Místo přesné shody — hledání sémanticky podobných dotazů
# Úspora až 30% na volání API OpenAI/Claude
# Vector Sets v Redis 8 (syntaxe se může měnit)
VADD embeddings doc1 VECTOR [0.1, 0.2, 0.3, ...]
VSIM embeddings VECTOR [0.15, 0.22, 0.28, ...] COUNT 5

7. Geolokace

Hledání nejbližších objektů — restaurace, taxi, obchody.

# Přidat lokaci
r.geoadd("restaurants", 30.5234, 50.4501, "restaurant:1")
# Najít restaurace v okruhu 5 km
nearby = r.georadius("restaurants", 30.52, 50.45, 5, unit="km")

Klientské knihovny: připojení k Redis

Příklady připojení pro populární programovací jazyky.

Python (redis-py)

import redis
# Základní připojení
r = redis.Redis(host='localhost', port=6379, db=0)
# S heslem (ACL)
r = redis.Redis(
    host='localhost',
    port=6379,
    username='webapp',
    password='W3bAppP@ss'
)
# S TLS
r = redis.Redis(
    host='redis.example.com',
    port=6379,
    ssl=True,
    ssl_certfile='/path/to/client.crt',
    ssl_keyfile='/path/to/client.key',
    ssl_ca_certs='/path/to/ca.crt'
)
# Connection Pool (doporučeno pro produkci)
pool = redis.ConnectionPool(
    host='localhost',
    port=6379,
    max_connections=50
)
r = redis.Redis(connection_pool=pool)

PHP (Predis / phpredis)

// Predis
$client = new Predis\Client([
    'scheme' => 'tcp',
    'host'   => '127.0.0.1',
    'port'   => 6379,
    'password' => 'your_password'
]);
// S TLS
$client = new Predis\Client([
    'scheme' => 'tls',
    'host'   => 'redis.example.com',
    'port'   => 6379,
    'ssl'    => ['verify_peer' => true]
]);
// phpredis extension (rychlejší)
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth(['webapp', 'W3bAppP@ss']); // ACL username + password

Node.js (ioredis)

const Redis = require('ioredis');
// Základní připojení
const redis = new Redis({
    host: 'localhost',
    port: 6379
});
// S ACL
const redis = new Redis({
    host: 'localhost',
    port: 6379,
    username: 'webapp',
    password: 'W3bAppP@ss'
});
// S TLS
const redis = new Redis({
    host: 'redis.example.com',
    port: 6379,
    tls: {
        cert: fs.readFileSync('/path/to/client.crt'),
        key: fs.readFileSync('/path/to/client.key'),
        ca: fs.readFileSync('/path/to/ca.crt')
    }
});
// Cluster mode
const cluster = new Redis.Cluster([
    { host: 'node1', port: 6379 },
    { host: 'node2', port: 6379 },
    { host: 'node3', port: 6379 }
]);

Go (go-redis)

import "github.com/redis/go-redis/v9"
// Základní připojení
rdb := redis.NewClient(&redis.Options{
    Addr:     "localhost:6379",
    Username: "webapp",
    Password: "W3bAppP@ss",
    DB:       0,
})
// S TLS
rdb := redis.NewClient(&redis.Options{
    Addr:     "redis.example.com:6379",
    TLSConfig: &tls.Config{
        MinVersion: tls.VersionTLS12,
    },
})

Monitoring Redis

Redis CLI: základní diagnostika

# Připojení
redis-cli -h localhost -p 6379
# Kontrola spojení
PING
# Odpověď: PONG
# Úplné informace o serveru
INFO
# Pouze paměť
INFO memory
# Pouze klienti
INFO clients
# Statistiky příkazů
INFO commandstats

Klíčové metriky pro monitoring

Metrika Příkaz Kritický práh
Využití RAM INFO memory > 80% maxmemory
Připojení klienti INFO clients > 90% maxclients
Cache hit ratio INFO stats < 80%
Evicted keys INFO stats > 0 (potřeba více RAM)
Blocked clients INFO clients > 0 delší dobu

Slow Log: najít pomalé příkazy

# redis.conf — logovat příkazy pomalejší než 10ms
slowlog-log-slower-than 10000
slowlog-max-len 128
# Zobrazit slow log
redis-cli SLOWLOG GET 10

Redis Insight: GUI pro monitoring

Bezplatný nástroj od Redis pro vizuální monitoring, prohlížení dat a ladění.

Troubleshooting: typické problémy s porty Redis

Connection refused

Redis neběží nebo naslouchá na jiném portu/rozhraní.

# Zkontrolujte, zda Redis běží
sudo systemctl status redis
# Zkontrolujte, na kterém portu naslouchá
sudo netstat -tlnp | grep redis
# Zkontrolujte bind v konfiguraci
grep "^bind" /etc/redis/redis.conf
DENIED Redis is running in protected mode

Redis odmítá připojení z externích IP bez hesla.

Řešení: Nakonfigurujte ACL nebo bind na konkrétní IP.

NOAUTH Authentication required

Redis vyžaduje autentizaci, ale klient nepředal heslo.

# Připojení s heslem
redis-cli -a 'your_password'
# Nebo s ACL username
redis-cli --user webapp --pass 'W3bAppP@ss'
Address already in use (port obsazen)

Jiný proces již používá port 6379.

# Najít proces na portu
sudo lsof -i :6379
# Nebo
sudo fuser 6379/tcp
# Ukončit proces
sudo kill -9 <PID>
Can't connect through firewall

Firewall blokuje připojení k portu Redis.

# UFW status
sudo ufw status verbose
# Povolit port
sudo ufw allow from 10.0.0.0/24 to any port 6379
# iptables kontrola
sudo iptables -L -n | grep 6379
TLS handshake failed

Problém s certifikáty nebo konfigurací TLS.

# Zkontrolujte certifikáty
openssl x509 -in /etc/redis/tls/redis.crt -text -noout
# Zkontrolujte připojení
openssl s_client -connect localhost:6379
# Ujistěte se, že redis.conf má správné cesty
grep "tls-" /etc/redis/redis.conf

Production Checklist: Redis 2026

Použijte tento checklist před nasazením Redis do produkce.

🔐 Bezpečnost

  • bind nastaven na konkrétní IP (ne 0.0.0.0)
  • protected-mode yes
  • ☐ ACL nakonfigurován, výchozí uživatel zakázán
  • ☐ TLS povolen pro externí připojení
  • ☐ Firewall blokuje port 6379 zvenčí
  • ☐ Nebezpečné příkazy přejmenovány nebo zakázány
  • ☐ Silná hesla (min. 32 znaků)

💾 Paměť a persistence

  • maxmemory nastaveno (ne více než 70-80% RAM serveru)
  • maxmemory-policy nakonfigurováno (volatile-lru pro cache)
  • ☐ RDB nebo AOF nakonfigurováno pro persistenci
  • ☐ Backup skript běží denně

📊 Monitoring

  • ☐ Alerty na využití paměti > 80%
  • ☐ Alerty na evicted keys > 0
  • ☐ Slow log povolen
  • ☐ Metriky exportovány do monitorovacího systému

🚀 Výkon

  • tcp-keepalive 300
  • ☐ Connection pooling v klientech
  • ☐ Pipelining pro batch operace
  • ☐ Velké klíče rozděleny (vyhněte se > 10MB hodnotám)

🔄 High Availability

  • ☐ Replikace nakonfigurována (min. 1 replika)
  • ☐ Sentinel nebo Cluster mode pro automatický failover
  • ☐ Test failover prošel

✓ Tip: Projděte tento checklist pro každý nový Redis server. Vynechaný bod může stát data nebo bezpečnost.

🚀 Jste připraveni vybrat hosting pro perfektní výkon Redis?

Vyberte si servery s naší technickou podporou — stabilní, rychlé a bez starostí. V Hostiserver — výkonný hardware a tým s hlubokou expertízou, který vše nastaví správně napoprvé.

💻 Cloud (VPS) Hosting

  • Od $19.95/měs — Začněte v malém, škálujte okamžitě
  • KVM virtualizace — Garantované prostředky bez oversellingu
  • Okamžité upgrady — Bez výpadku
  • NVMe úložiště — Rychlý výkon
  • 24/7 podpora — <10 min odpověď

🖥️ Dedikované Servery

  • Od $200/měs — Moderní konfigurace
  • Vlastní konfigurace — Intel nebo AMD, nejnovější modely
  • Více lokací — EU + USA
  • 99.9% uptime — Spolehlivost
  • DDoS ochrana — Zahrnuta
  • Bezplatná migrace — Pomůžeme vám
  • Private Cloud podpora — Proxmox, VMware, OpenStack

💬 Nejste si jisti, kterou variantu potřebujete?
💬 Napište nám a se vším pomůžeme!

FAQ: Časté dotazy o portech Redis

Jaký port používá Redis ve výchozím nastavení?

Redis používá port 6379 pro klientská připojení. Navíc: 16379 pro cluster bus (komunikace mezi uzly clusteru) a 26379 pro Sentinel (monitoring a failover).

Je bezpečné nechat Redis na portu 6379?

Port 6379 sám o sobě není problém. Problém je otevřený přístup bez autentizace. Pokud máte nakonfigurované ACL, TLS, firewall a bind na localhost nebo privátní IP — port 6379 je zcela bezpečný.

Jak změnit port Redis?

Upravte redis.conf, změňte hodnotu port 6379 na požadovanou (například 6380), restartujte Redis a aktualizujte firewall a všechna klientská připojení.

Je TLS pro Redis nutné?

Povinné — pokud provoz jde přes veřejnou síť nebo mezi různými servery. Volitelné — pokud Redis a klient jsou na stejném serveru (localhost). Redis 6+ podporuje nativní TLS bez stunnel.

Co je lepší: requirepass nebo ACL?

ACL (Redis 6+) je vždy lepší. Umožňuje vytvářet různé uživatele s různými oprávněními — jeden pro čtení, další pro zápis, třetí pro administraci. requirepass je jedno heslo pro všechny, bez granulární kontroly.

Kolik Redis instancí může běžet na jednom serveru?

Kolik chcete, pokud máte dostatek RAM. Každá instance potřebuje svůj port (6379, 6380, 6381...), konfigurační soubor, PID soubor a datový adresář. Prakticky 3-5 instancí na server je typická konfigurace.

Co dělat, když Redis nenastartuje — "Address already in use"?

Port je již obsazen jiným procesem. Najděte ho příkazem sudo lsof -i :6379 a buď proces ukončete, nebo změňte Redis na jiný port.

Jak zjistit, na kterém portu Redis běží?

Několik způsobů:

  • redis-cli INFO server | grep tcp_port
  • sudo netstat -tlnp | grep redis
  • grep "^port" /etc/redis/redis.conf

Contents

MANAGED VPS STARTING AT

$19 95 / mo

NEW INTEL XEON BASED SERVERS

$80 / mo

CDN STARTING AT

$0 / mo

 

Tento web používá cookies. Používáním tohoto webu souhlasíte s politikou ochrany osobních údajů.