1 votes

Faire fonctionner NTP sur AWS sans ouvrir le port entrant dans le groupe de sécurité

J'ai un serveur privé sur AWS qui a aucun port entrant ouvert au public . Le seul port ouvert est SSH, et il n'est accessible qu'à partir d'autres machines du même sous-réseau.

Cette machine lit les fichiers de S3 sur le réseau. Récemment, elle a cessé de fonctionner parce que l'heure du serveur avait dérivé de plus de 15 minutes et que les demandes adressées à S3 étaient rejetées :

<Code>RequestTimeTooSkewed</Code>
<Message>
    The difference between the request time and the current time
    is too large.
</Message>
<MaxAllowedSkewMilliseconds>900000</MaxAllowedSkewMilliseconds>

La solution la plus simple consiste à installer ntp mais il faut pour cela ouvrir le port UDP 123. L'UDP étant sans état, les ports d'entrée et de sortie doivent être ouverts.

Comment puis-je mettre à jour automatiquement l'heure du système en utilisant uniquement les connexions TCP initiées par mon serveur ? Existe-t-il un démon standard basé sur TCP comme NTP ? Je me fiche que ce ne soit pas aussi précis : même un décalage de 10 minutes serait acceptable.

Editer le 2 juin 2017

C'est ainsi que le les groupes de sécurité sont mis en place :

  • Inbound

    Type           Protocol    Port Range    Source
    SSH            TCP         22            172.31.0.0/16
  • Sortie

    Type           Protocol    Port range    Destination
    All traffic    All         All           0.0.0.0/0

Il s'agit de la réseau ACL pour le sous-réseau - seulement l'ACL par défaut :

  • Inbound

    Rule #    Type           Protocol    Port Range    Source       Allow / Deny
    100       ALL Traffic    ALL         ALL           0.0.0.0/0    ALLOW
    *         ALL Traffic    ALL         ALL           0.0.0.0/0    DENY
  • Sortie

    Rule #    Type           Protocol    Port Range    Destination  Allow / Deny
    100       ALL Traffic    ALL         ALL           0.0.0.0/0    ALLOW
    *         ALL Traffic    ALL         ALL           0.0.0.0/0    DENY

Editer le 2 juin 2017 #2

Très bien, cela fonctionne maintenant sans groupe de sécurité spécial, comme prédit par @Tim. Je pense que je ne l'ai pas testé correctement :

  • ntpdate n'utilise pas les serveurs de /etc/ntp.conf Il signalait donc une erreur :

    aucun serveur ne peut être utilisé, quitter

  • ntpd n'essaie pas de mettre à jour l'horloge dès qu'il démarre ; il attend environ une minute.

Tester plutôt avec ntpdate-debian et sans le port 123 ouvert dans un groupe de sécurité, fonctionne bien ; et ntpd met à jour l'heure correctement si je le laisse fonctionner pendant un certain temps.

11voto

Tim Points 28848

によると、この Documentation AWS vous pouvez ouvrir UDP:123 dans votre groupe de sécurité uniquement en sortie. Comme les groupes de sécurité sont des groupes d'état, des réponses vous parviendront, mais personne en dehors de votre VPC ne pourra initier une connexion.

Vous aurez bien sûr besoin de NACLs ouverts dans les deux sens pour ce port.

Mise à jour Vous devriez lire ce qui suit Sécurité AWS en particulier les groupes de sécurité et les NACL.

NACL est un ACL réseau. Il s'agit d'un pare-feu qui vit à l'extérieur de votre instance et qui ne permet au trafic d'atteindre votre instance que si vous avez des ports ouverts. Par défaut, tous les ports entrants et sortants sont ouverts, mais vous pouvez les configurer comme vous le souhaitez. Les NACL sont sans état, vous devez donc ouvrir les ports dans chaque direction. N'oubliez pas les ports éphémères.

Les groupes de sécurité, quant à eux, appliquent les règles du réseau au niveau de l'hyperviseur. Ils sont à état constant, de sorte que si vous autorisez un port sortant, la réponse est automatiquement autorisée à entrer dans l'instance.

En théorie, les NACL réduisent légèrement la charge du serveur hôte, car elles empêchent le trafic d'atteindre l'interface réseau. Comme vous ne contrôlez qu'une petite partie du serveur, cela ne fait probablement pas une grande différence.

Mise à jour du 1er décembre 2017

AWS a annoncée les Service de synchronisation horaire AWS . En bref, ils fournissent des serveurs dans chaque centre de données pour s'assurer que l'heure du serveur est exacte.

La documentation AWS indique qu'il faut utiliser le logiciel Chrony plutôt que NTP, mais les deux services NTP. Il est inutile de copier les instructions d'AWS dans ce billet, car elles peuvent changer à l'avenir, et la documentation d'AWS est excellente.

Utilisation du NTPD

Au lieu d'installer Chrony, j'ai simplement ajouté ce qui suit à mon fichier /etc/ntp.conf pour essayer de faire en sorte que NTP utilise le nouveau serveur NTP d'AWS

server 169.254.169.123 prefer iburst

J'ai également vérifié qu'aucune des autres déclarations du serveur n'avait configuré "prefer".

0voto

wnm Points 151

Si vous n'êtes pas opposé à l'exécution d'une tâche cron sur une autre machine qui a l'heure exacte, vous pouvez toujours en avoir une. mise à jour automatique de la date via SSH . Si vous disposez d'autorisations SSH sur un autre serveur dont la date est exacte, vous pouvez également procéder de l'autre manière.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X