El portàtil d’un desenvolupador caduca en connectar-se al punt final privat de RDS, mentre que les mateixes credencials funcionen des d’un amfitrió bastió. No hi ha res caigut. Al camí entre aquest portàtil i la base de dades li falta una de tres coses: un nom que resolgui, una ruta que transporti el tràfic o una regla de grup de seguretat que admeti l’origen que la base de dades veu realment. Esbrineu quina falta abans de canviar les altres dues.

Llegiu la fallada a la capa correcta

Un temps d’espera no és un sol error. Un nom que no resol falla abans que cap paquet surti de la màquina. Una adreça sense ruta envia paquets a un forat negre. Un port filtrat produeix una espera que sembla exactament un amfitrió equivocat. Executeu els passos en ordre i atureu-vos al primer que falli.

dig +short db.internal.example
nc -vz db.internal.example 5432

Si el nom retorna una adreça pública, o no retorna res, el túnel encara no és el problema.

Si el nom resol i la prova del port s’encalla, compareu l’adreça que heu resolt amb l’adreça que la base de dades informa. Un punt final gestionat es pot resoldre a una adreça privada dins de la VPC i a res útil fora d’ella, i una adreça copiada d’una consulta antiga apuntarà a un amfitrió que ja no respon.

Separeu el túnel de la ruta

Connectar una VPN de client no encamina automàticament tots els rangs privats. El perfil porta les rutes que empeny el servei, i el client pot instal·lar-ne només algunes. Mireu quins rangs ha afegit realment el client i si l’adreça de la base de dades cau dins d’un d’ells.

ip route get 10.20.40.15
ip addr show tun0

Una ruta que apunta a la interfície del túnel és necessària; no és suficient, perquè el costat oposat encara ha d’acceptar el tràfic.

Els perfils de túnel dividit són l’origen habitual d’aquesta fallada parcial. Funcionen per a l’aplicació per a la qual es va dissenyar el perfil i deixen el rang de la base de dades fora del túnel, cosa que produeix exactament el temps d’espera que produiria un tallafoc.

Feu coincidir el grup de seguretat amb l’origen real

El grup de seguretat de RDS admet orígens, no persones. Segons l’arquitectura, l’origen pot ser el pool de clients de la VPN, l’adreça privada d’un bastió o una adreça NAT a la qual es tradueix el tràfic. Llegiu la regla i l’origen real del paquet alhora.

aws ec2 describe-security-groups --group-ids sg-0123456789abcdef0 \
  --query 'SecurityGroups[].IpPermissions'

Una regla per a l’adreça de casa d’un sol portàtil és un problema de manteniment, no un disseny d’accés.

Quan una VPN de client o una passarel·la NAT és al camí, la base de dades pot veure l’adreça del traductor en lloc de l’adreça del túnel del desenvolupador. Per això una regla copiada d’una configuració de bastió que funciona pot fallar per a un portàtil: els dos camins arriben des d’orígens diferents tot i que tots dos semblen interns.

Preferiu un camí estret a un d’ample

Quan un desenvolupador necessita una base de dades, el reenviament basat en sessió sol ser més barat d’operar que un túnel de xarxa complet. El client local es connecta a un port reenviat, i el component remot fa la connexió a la base de dades des de dins de la xarxa.

ssh -N -L 5432:db.internal.example:5432 bastion.internal.example

Manteniu la verificació TLS intacta en aquest disseny. El client encara ha de validar el certificat del servidor contra el nom que espera; un port reenviat local no és una raó per desactivar la verificació, i desactivar-la amaga exactament el problema d’identitat que val la pena detectar.

L’elecció entre un túnel complet i un reenviament estret és una decisió sobre l’abast, no sobre teatre de seguretat.

Deixeu un camí repetible al darrere

Documenteu el nom del punt final en lloc d’una adreça resolta, el rang d’origen que admet el grup de seguretat i el rol de base de dades que utilitza el desenvolupador. Aquests tres fets expliquen la majoria de fallades futures sense una trucada. Afegiu també la versió del perfil de client, perquè un canvi de perfil pot eliminar una ruta que l’antic portava.

Després proveu el cas negatiu una vegada: un client fora de l’origen aprovat encara ha de ser refusat.

Una base de dades privada que només funciona per a la persona que la va configurar no és accés privat; és una excepció no documentada que espera ser redescoberta. Escriviu el camí, i el proper desenvolupador heretarà un mètode en lloc d’un misteri.

Articles relacionats