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
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"
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á.
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
- ☐
bindnastaven 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
- ☐
maxmemorynastaveno (ne více než 70-80% RAM serveru) - ☐
maxmemory-policynakonfigurová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 hodnotuport 6379na 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.
requirepassje 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 :6379a 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_portsudo netstat -tlnp | grep redisgrep "^port" /etc/redis/redis.conf