Sujet technique
Transcription
Sujet technique
Ministère de l’Équipement, des Transports et du Logement Examen de vérification d’aptitude aux fonctions de programmeur de système d’exploitation Épreuve commune Unix et Windows Session 2001 Durée: 4h Coefficient: 4 Le sujet comporte 3 pages. - Résumé Les questions suivantes ont pour objectif la réalisation d’un programme en ligne de commande pouvant d’une part filtrer les connections tcp entrantes par ports et plages d’adresses IP et d’autre part interdire les messages avec un dom aine sm tp ne correspondant pas au dom aine du serveur client. Seules les documentations Unix et Microsoft fournies sont autorisées. La lecture de la docum entation unix est recommandée. La documentation fournie, d’origine gcc linux et Visual C++, doit être prise dans un sens générique. Le choix du langage de programmation est libre à l’exception de tout langage de script. Les questions peuvent être traitées de façon indépendantes. Table des matières 1 Description du problème 2 2 Traitement du fichier de configuration 2 3 Filtrage IP 2 4 Filtrage SMTP 3 5 Écriture d’un fichier journal de sécurité 3 EVA Programmeur système d'exploitation - session 2001 1 Description du problème Les questions suivantes ont pour objectif la réalisation d’un programm e permettant de filtrer les connections tep par port et plages d’adresses IP: ce programme se lancera enligne de commande 1 avec en argument le numéro du port que l’on désire filtrer; plusieurs instances du programme pourront être lancées simultanément si l’on veut filtrer plusieurs ports; toutes les instances utiliseront un fichier de configuration unique; Le fichier de configuration devra comprendre pour chaque port tcp à filtrer les plages d’adresses IP autorisées. 2 Traitement du fichier de configuration a. Définissez le format du fichier de configuration ainsi que la structure (adaptée au langage de votre choix) utilisée pour stocker les plages d’adresses IP. Justifiez succinctement vos choix. b. Écrivez un sous-programme prenant en arguments un numéro de port tep et un nom de fichier qui recherche la ligne correspondante dans le fichier et retourne les plages d’adresses IP autorisées à se connecter. 3 Filtrage IP Dans cette partie nous allons mettre en place le filtrage IP proprement dit. a. Un serveur tcp doit pouvoir gérer les connections au fur et à mesure qu’elles arrivent sans en perdre. Quelles sont les différents m écanism es utilisables. Donnez succinctem ent leurs avantages et inconvénients. b. Écrivez le sous-programme qui: ouvre le port passé en argument, attend indéfiniment les connections, passe les connections entrantes au sous-programme verif ip en attendant de reprendre la main. c. Écrivez le sous-programme veriLip prenant en argument: la socket précédement ouverte de la question b, la structure retournée parle sous-programme écrit dans la question 2b, — — qui vérifie que l’adresse IP du client est dans les plages d’adresses autorisées. 1 Pour l’épreuve windows le programme à écrire doit être du type « Win32 Console Application » et non un service NT. La docum entation fournie engage à utiliser l’api socket « de base» (Berkeley style). Les extensions des api socket spécifiques à Microsoft (fonctions prefixées par WSA) ne sont pas utiles pour notre application non graphique en mode console. Seul un appel à WSAStartup et WSACleanup (avant et après l’utilisation des api socket) doit être fait. Page 2/3 EVA Programmeur système d'exploitation - session 2001 4 Filtrage SMTP Dans cette partie nous voulons vérifier, si la connection se fait sur le port smtp, que le client appartient au domaine smtp annonce. Pour des raisons de simplicité, on considère que le client smtp «parle en premier» en envoyant sur la socket HELLO <domaine smtp du client> _ a. A partir de l’adresse IP récupérée, comment peut-on trouver le dom aine du serveur client ? b. Écrivez le sous-programme qui: prend comme arguments une socket et une adresse IP lit sur la socket les inform ations envoyées par le client; vérifie que le domaine smtp annoncé par le client correspond bien au domaine trouvé à partir de l’adresse IP. 5 Écriture d’un fichier journal de sécurité a. Décrivez la ou les méthodes pour permettre à différents programmes tournant simultanément d’écrire dans le même fichier journal de manière sécurisée. b. Écrivez le sous-programme qui prend en argument une chaîne de caractères et l’écrit dans un fichier journal. Le fichier journal est partagé par les différentes instances lancées simultanément. Page 3/3