TLS
SSL (1995–1996) — устаревший предшественник TLS, не используется. TLS 1.0/1.1 объявлены deprecated в RFC 8996. Современный продакшн — TLS 1.2 (RFC 5246) и TLS 1.3 (RFC 8446).
При корректной валидации сертификатов TLS даёт:
- конфиденциальность — AEAD-шифрование (AES-GCM, ChaCha20-Poly1305);
- целостность — встроена в AEAD;
- аутентификацию сервера — X.509-сертификат должен пройти проверку цепочки доверия и имени; опционально mTLS-аутентификацию клиента.
Handshake (упрощённо)
В TLS 1.3 (RFC 8446) handshake занимает 1-RTT:
ClientHello— список поддерживаемых версий, ciphersuites,key_share((EC)DHE),signature_algorithms, SNI, ALPN.ServerHello+EncryptedExtensions+Certificate+CertificateVerify+Finished— послеServerHelloвсё шифруется.Finishedот клиента → канал готов.
В TLS 1.3 статический RSA key exchange удалён. Полный handshake обычно использует (EC)DHE и даёт forward secrecy; PSK/resumption и 0-RTT требуют отдельной оценки replay/PFS-свойств.
X.509-сертификат
Содержит:
- subject (CN, SAN — список доменов);
- срок действия (для публичных CA ограничен требованиями CA/Browser Forum и браузерных root programs);
- публичный ключ (RSA-2048+ или ECDSA P-256+);
- подпись Issuer CA.
Проверка:
openssl s_client -connect example.com:443 -servername example.com
openssl x509 -in cert.pem -text -noout
Цепочка доверия
Root CA (в trust store ОС/браузера)
└─ Intermediate CA (отправляется сервером)
└─ Server Certificate (отправляется сервером)
Сервер обязан отдать leaf + все intermediates. Root уже у клиента. Пример: Let's Encrypt — leaf подписан R3 или R10/R11, который подписан ISRG Root X1.
Self-signed
openssl req -x509 -newkey rsa:4096 -nodes -keyout key.pem -out cert.pem \
-days 365 -subj "/CN=internal.local"
Применимо только если клиент явно доверяет конкретному сертификату (CA-pinning, internal trust store).
Firewall в Linux
Все стандартные firewall-инструменты используют netfilter в ядре.
iptables / iptables-nft
Подробно — в отдельной заметке про цепочки. Минимальный набор:
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -P INPUT DROP
nftables
Современный фронтенд к netfilter, рекомендуемая замена iptables (с ядра 3.13, 2014). Объединяет IPv4/IPv6/ARP/bridge в одной семействе inet:
nft add table inet filter
nft add chain inet filter input { type filter hook input priority 0\; policy drop\; }
nft add rule inet filter input ct state established,related accept
nft add rule inet filter input iif lo accept
nft add rule inet filter input tcp dport {22,80,443} accept
nft list ruleset
ufw
Высокоуровневая обёртка над iptables/nftables (Ubuntu/Debian):
ufw default deny incoming
ufw allow 22/tcp
ufw allow 80,443/tcp
ufw enable
ufw status verbose
firewalld
Используется в RHEL/Fedora, работает поверх nftables, оперирует zone'ами и сервисами.
firewall-cmd --permanent --add-service=https
firewall-cmd --reload