jeudi 29 janvier 2015

System administration:Basic Linux Administration

What is a system administrator?


-System Admin Tasks and Duties:
-Install systems (including clients/servers): hardware, software and o.s.
-Upgrade systems: hardware, software and o.s.
-Backups
-Start/stop system (reboot)

Other duties:

- Create accounts (add/delete), account management
- Job scheduling
- Security
- Performance monitoring and tuning
- Disk space management (formatting, partitions, quotas)
- Writing/modifying scripts (perl, shell, C, etc..)
- Running specialized services/servers (email server, web server, DNS etc..)
- Problem resolution

Last duties:

•      Training (others and oneself)
•      Fixing Bugs
•      Automate Tasks
•      Maintain system files
•      Analysis of logs/systems, collect stats, reports
•      Planning and Recommendations
•      Work with vendors, customers
•      Research New Technologies

Task of Linux Admin:

-        managing hardware
-        managing the kernel
-        managing filesystems
-        managing user account
-        managing network and security
-        managing backup/installation/archiving


File System in Linux:

  • Built-in hierarchical file structure
  • Common directories
-     /bin : essential command binaries which may be used by the system administrator and by ordinary users, required for system boot
-        /boot : kernel image and configuration files used by boot loader
-        /dev : device files
-        /etc : host-specific configuration files
-        /home: user home directories
-        /lib: essential shared lib and kernel modules
-        /mnt : mount point for temporarily mounting files system such as those on a CDROM or floppy disk
-        /opt : add-on application software packages
-        /root : the root user’s home directory
-        /sbin : system binaries, essential for system administration, but not for system boot
-        /tmp : location of temporary files
-        /usr : secondary hierarchy, intended as sharable, read-only data
-        /var : variable data such as spool directories & log file 

  • in unix, a filesystem is some device that is formatted to store files. It can be found on hard drives, floppies, CD-ROMs and others
  • the exact format and means the files are stored are not important;
  • based on second extended filesystem, ext2fs
  • provide a common interface for all filesystem types that it recognizes 
  • In Linux 7.2, ext2 is the default file system
-        Require check for consistency (e2fsck) when system is not properly shut down
-        Ext => ext2 =>ext3
-        Support 256 char filenames, 4 Tbyte max filesize
-        Others MS-Dos, FAT32, NTFS, ISO9660
  • Starting from Linux 7.3, ext3 is the default file system
-        Provide stronger data integrity in event of unclean shutdown
-        Check for consistency is needed only on rare hardware failure
-        Higher throughput, as it is optimizes hard drive head motion
-        Provide easy transition from ext2 to ext3
-        other common filesystem are MS-DOS (FAT32, NTFS, ISO9660)

Creating user account:

w  manage users and group accounts and related system files
w  passwd and group
ü  user account information is stored in /etc/passwd
-        each line in /etc/passwd contain a username, password, UID, GID, user’s name, home directory and default shell
ü  group information is stored in /etc/group
-        each line in /etc/group contain a group name, group password,  GID and group member list
w  to prevent users from obtaining encrypted passwords from passwd and group, shadow files are implemented
w  encrypted passwords are moved to a new file, which is readable only by root
w  the shadow file for /etc/passwd is /etc/shadow
w  the shadow file for /etc/group is /etc/gshadow
w  Three methods
ü  modify the files directly, not recommended
-        Login in as root
w  Create a record for the user in /etc/passwd
w  Set the user’s password
w  Specify a login shell for the user
w  Create a home directory for the user
ü  Use command line
-        useradd [-D] [-g default_group] [-b default_home] [-s default_shell]
-        Donald:x:503:503:unka Donald: home/donald:/bin/bash
ü  Alternatively, use GUI (most recommended)

Configuration files:

w  bash uses a number of configuration to set its operating environment when it starts
w  /etc/profile:
-        system wide initiation files, execute during log in, contains environment variables, such as initial PATH, and startup program
w  /etc/bashrc:
-        system wide initiation files for a user, contains alias

Who use the files?

w  There are 3 sets of permissions for every file or directory -- owner, group, and others
-        The owner permissions are for the owner of the file or directory
-        The group permissions are for everyone in the group
-        Others: The global permissions are for anyone
w  What is the command to see the permission and who own the files?
w  answer: ls -l
w  r -- file can be read
w  w -- file can be written and modified
w  x -- file can be executed (if it is a program)
w  chmod is a standard command that allows you to change the permissions of a file or directory.
w  There are two arguments for chmod:
-        the permissions : based on numbers
w  1 stands for execute.
2 stands for write.
4 stands for read.
-        the file/directory name. The permission argument for chmod.
w  chmod 777 lab2file will allow EVERYBODY full access to read, write and execute.
w  chmod 644 lab2file will all the owner (you) read and write access, the group read access, and everybody else (world) read access too.
w  chmod 700 lab2file will give yourself full access while giving everybody 

Setting up a secure system:

w  There are some very basic things that you have to do in order to secure your system
w  Shutting down the redundant services
-        You have to disable all network daemons (services) that are not needed by the system
-        Any network port that is listening for connections can be vulnerable to attacks due to probable exploits against running daemon
-        To find out the ports that are opened type:   # netstat -an
w  Looking in /etc/services or by passing -p to netstat we can tell which service is running per port
w  Check each port that looks like unnecessary
w  Examples vulnerable services:
-        telnetd, sendmail, ftpd: Send clear passwords through the web. Instead of telnet use ssh
w  Shutting down services involves editing the appropriate files on your system
w  On RedHat based systems daemons are started by scripts in the /etc/rc.d/init.d directory
w  Depending on the runlevel each daemon/services in linked to the appropriate rcX.d directory where 0<X<6
w  What to have in mind all the time:
-        Never use simple passwords. Try to make them complex by mixing letters,symbols and numbers
-        Do NOT work on the root account unless absolutely necessary
-        Do not ignore the log files
-        Update your system in a regular basis

Tcp wrapper configuration:

w  A simple and effective way to protect the system
w  TCP Wrappers “wrap” a service access (e.g. apache web server)monitoring the connections to it and refusing unauthorised sites
w  It is used in conjunction with inetd and xinetd
w  It's a good way to control the access to services that do not provide any native access control mechanism
w  TCP Wrapper is the first thing encounter when a connection is established with a service protected by the wrapper
w  TCP Wrapper is responsible for determining whether the connection comes from a source host that it is allowed to do so
w  Depending on whether you are using TCP Wrappers with inetd or xinetd there are two different approaches
w  If the system is using the inetd daemon you have to edit the /etc/inetd.conf file to use the TCP wrapper
w  Using TCP wrappers requires just a small change to /etc/inetd.conf
w  E.g. for the finger daemon
finger stream tcp nowait root /usr/sbin/in.fingerd in.fingerd
has to be changed to:
finger stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.fingerd
This cause the tcpd command, representing the TCP wrapper, to be executed instead of the in.fingerd and protect the daemon
w  xinetd is the replacement of inetd adopted by some distros
w  In most cases xinetd has built-in support for TCP wrappers
w  You need to modify the TCP wrapper configuration files (/etc/hosts.allow, /etc/hosts.deny)
w  /etc/hosts.allow and /etc/hosts.deny specify the access rules that are applied in daemon protection
w  When a TCP wrapper is invoked it obtains the IP address of the connecting host and its hostname
w  If the IP of the host is specified in the /etc/hosts.allow then access is permitted to the daemon/service
w  If no match is found, the /etc/hosts.deny is consulted. If the IP is described there then the connection is closed
w  If no much exists both of the files then access is granted
w  The syntax of those two files is simple
w  Each file contains a set of rules
w  General rule form:
daemon_list : client_list : shell_command
where daemon_list is comma separated list of daemons to which the rule applies, the client_list is comma separated list of the hostnames or IP addresses where the rule applies and shell_command is optional, specifying the command to be executed when rule matches
w  Example rules:
1. /etc/hosts.deny
ALL:ALL   # Deny everything from everywhere
In case that nothing is specified in the /etc/hosts.allow then this rule will refuse connection to any service by anyone
2. /etc/hosts.deny
ALL: ALL EXCEPT localhost
3. /etc/hosts.allow
in.fingerd: ALL

mercredi 28 janvier 2015

Les méthodes de détection des intrusions (SNORT)

Introduction


       Les systèmes d'information sont aujourd'hui de plus en plus ouverts sur Internet. Cette ouverture, a priori bénéfique, pose néanmoins un problème majeur : il en découle un nombre croissant d'attaques. La mise en place d’une politique de sécurité autour de ces systèmes est
donc primordiale.
       L’enjeu de la sécurité est devenu plus puissant à cause des pirates et hackers qui scrutent les réseaux privés afin de détecter une petite faille qui pourrait engendrer de graves  conséquences. Mais, malgré les progrès réalisés en ce domaine, celui de la sécurité informatique, on arrive juste à réduire les intrusions et non pas les éliminer.


Définition de l'IDS:



Un système de détection d'intrusion (ou IDS : Intrusion Detection System) est un ensemble de composants logiciels et matériels dont la fonction principale est de détecter et analyser toute tentative d’effraction (volontaire ou non) du réseau sur lequel il est placé. C'est un outil complémentaire aux firewalls, scanneurs de failles et anti virus.



Les IDS systèmes (Host IDS) analysent le fonctionnement et l'état des machines sur lesquels ils sont installés afin de détecter les attaques en se basant sur des démons (tels que syslogd par exemple). L'intégrité des systèmes est alors vérifiée périodiquement et des alertes peuvent êtres levées. 



Les IDS réseaux (Network IDS) analysent en temps réel le trafic qu'ils aspirent à l'aide d'une sonde (carte réseau en mode "promiscuous"). Ensuite, les paquets sont décortiqués puis analysés. En cas, de détection d'intrusion, des alertes peuvent être envoyées.

Pourquoi  a t-on besoin de l'IDS?



ü  le virus "Chernobyl" (CIH) a causé enormément de dégats en attaquant directement les BIOS et disques durs des machines. Pour la seule année 1999, ces dégats s'estimaient à 250 000 dollars, uniquement pour la Corée du Sud.

ü  Dernièrement, le virus Sasser à également prouvé sa virulance en infectant Les machines Microsoft avec une rapidité déconcertante.

Lorsque on observe les chiffres, il est clair que la prudence s'impose pour se protéger afin de minimiser les dégats. c’est pour cela qu’on aura besoin des IDS Pour  :  

- Avoir une  mise à jour quotidienne de la circulation du flux.

- Permettre à un administrateur réseau d’écouter différents endroits au niveau du réseau


Les différents types d'IDS:



Les IDS disposent de deux approches différentes, afin de déceler les intrusions :

Les IDS à signature : Généralement, les IDS réseaux se basent sur un ensemble de signatures qui représentent chacune le profil d'une attaque. Cette approche consiste à rechercher dans l'activité de l'élément surveillé (un flux réseau) les empreintes d'attaques connues, à l'instar des anti virus.
Une signature est habituellement définie comme une séquence d'événements et de conditions relatant une tentative d'intrusion. La reconnaissance est alors basée sur le concept de "pattern matching" (analyse de chaînes de caractères présente dans le paquet, à la recherche de correspondance au sein d'une base de connaissance). Si une attaque est détectée, une alarme peut être remontée (si l'IDS est en mode actif, sinon, il se contente d'archiver l'attaque).

Les IDS comportementaux : Les IDS comporteaux ont pour principale fonction la détection d'anomalie. Leur déploiement nécessite une phase d'apprentissage pendant laquelle l'outil va apprendre le comportement "normal" des fluxs applicatifs présents sur son réseau.
Ainsi, chaque flux et son comportement habituel doivent etre déclarés ; l'IDS se chargera d'émettre une alarme, si un flux anormal est détecté, et ne pourra bien entendu, spécifier la criticité de l'éventuelle attaque.

Mise en place d'un IDS:





Il existe plusieurs endroits stratégiques où il convient de placer un IDS.
Le schéma ci-dessus illustre un réseau local ainsi que les trois positions que peut y prendre un IDS :

Position ( 1 ): Sur cette position, l'IDS va pouvoir détecter l'ensemble des attaques frontales, provenant de l'extérieur, en amont du firewall. Ainsi, beaucoup d'alertes seront remontées ce qui rendra les logs difficilement consultables.

Position ( 2 ): Si l'IDS est placé sur la DMZ (Zone démilitarisée), il détectera les attaques qui n'ont pas été filtrées par le firewall et qui relèvent d'un certain niveau de compétence. Les logs seront ici plus clairs à consulter puisque les attaques bénins ne seront pas recensées.

Position ( 3 ): L'IDS peut ici rendre compte des attaques internes, provenant du réseau local de l'entreprise. Il peut être judicieux d'en placer un à cet endroit étant donné le fait que 80% des attaques proviennent de l'intérieur. De plus, si des trojans ont contaminé le parc informatique (navigation peu méfiante sur internet) il pourront êtres ici facilement identifiés pour être ensuite éradiqués.
Idéalement, on placerait des IDS sur les trois positions puis on délèguerait la consultation des logs à l'application "acid" (http://acidlab.sourceforge.net/) qui permet d'analyser les alertes et d'en présenter clairement les résultats via une interface web complète. Si une seule machine peut être déployée, autant la mettre sur la position 2, cruciale pour le bons fonctionnement des services.

Qu'est ce que SNORT?


SNORT est un open source du système de détection des intrusions de réseau.
 Il a capable d’analyser le trafic sur le réseau en temps réel et des paquets circulant sur le réseau IP.
Il peut exécuter l'analyse de protocole, en cherchant et s’assortant le content et peut être employé pour détecter une variété d'attaques, des tentatives comme des débordements d'amortisseur, des balayages de port de dérobée, des attaques de CGI, des sondes de SMB, des tentative d’empreinte de OS, et beaucoup plus.
SNORT a trois utilisations primaire:

- Il peut être employé en tant qu'un renifleur de paquet comme tcpdump
- un enregistreur de paquet (utile pour le trafic de réseau corrigeant).
- ou comme plein système soufflé de détection d'intrusion de réseau.

dimanche 7 décembre 2014

Exercice corrigé UML: gestion des formations d'un institut privé

Exercice:
Il s'agit d'établir le schéma conceptuel d'une base de données pour la gestion des formations d'un institut privé :
·         Un cours est caractérisé par un numéro de cours (NOCOURS), un libellé (LIBELLE), une durée en heures (DUREE) et un type (TYPE).
·         Un cours peut faire l'objet dans l'année de plusieurs sessions identiques.
·         Une session est caractérisée par un numéro (NOSES), une date de début (DATE) et un prix (PRIX).
·         Une session est le plus souvent assurée par plusieurs animateurs et est placée sous la responsabilité d'un animateur principal.
·         Un animateur peut intervenir dans plusieurs sessions au cours de l'année.
·         On désire mémoriser le nombre d'heures (NBH) effectué par un animateur pour chaque session.
·         Un animateur est caractérisé par un numéro (NOANI), un nom (NOMA) et une adresse (ADRA).
·         Chaque session est suivie par un certain nombre de participants.
·         Un participant est une personne indépendante ou un employé d'une entreprise cliente.
·         Un participant est caractérisé par un numéro (NOPAR), un nom (NOMP) et une adresse (ADRP).
·         Dans le cas d’un employé, on enregistre le nom (NOMEN) et l’adresse de l’entreprise (ADREN).
·         On désire pouvoir gérer d’une manière séparée (pour la facturation notamment) les personnes indépendantes d’une part, et les employés d’autre part. Si nécessaire, on fera les hypothèses sémantiques complémentaires qui pourraient s'imposer.
                                                                                                                    
Établir un schéma conceptuel (diagramme de classes UML) pour cette base de données.
Corrigé:


Corrigé Exercice UML: Compagnie aérienne

1)-  



































2)-




Exercice UML: Compagnie aérienne

Exercice:

Une compagnie aérienne veut mettre en oeuvre une base de données pour gérer ses différents vols :
·         Un VOL est un parcours aérien caractérisé par un NUMERO, une VILLE-DEPART, une VILLEARRIVEE, une HEURE-DEPART, une HEURE-ARRIVEE, une DISTANCE, une FREQUENCE.
·         Lorsqu'un VOL est programmé pour une DATE déterminée il constitue un DEPART.
·         Un VOL n’est programmé qu'une seule fois dans une journée à l'heure prévue.
·         Un certain nombre de PASSAGERS peut être enregistré pour un DEPART.
·         Un PASSAGER est caractérisé par son NOM, son ADRESSE, son NO-TELEPHONE.
·         Un AVION est affecté à chaque DEPART.
·         Un AVION est caractérisé par un NUMERO, un TYPE, une CAPACITE.
·         Un AVION utilise une certaine QUANTITE DE CARBURANT pour accomplir le trajet. Cette dernière dépend des conditions atmosphériques, donc de la DATE.
·         Un certain nombre de PERSONNELS est affecté à chaque DEPART. On distingue les personnels navigants des personnels non navigants. Parmi ces derniers, on distingue le(s) pilote(s). Un membre du personnel est caractérisé par son NOM, son ADRESSE, son NO-TELEPHONE.
1)- On désire utiliser cette base pour produire (entre autres) les listes suivantes :
-            passagers enregistrés pour un départ,
-            personnels affectés à un départ pour chacune des trois catégories,
-            départs programmés pour un vol donné,
-            départs assignés à un avion donné pour la semaine à venir,
-            caractéristiques du vol correspondant à un départ.
Proposer un diagramme de classes UML pour cette base (tous les éléments figurant en majuscules dans l'énoncé doivent être pris en compte).
2)- Un VOL peut en fait être constitué de plusieurs tronçons. Par ailleurs on souhaite pouvoir établir pour chaque VILLE les vols au départ et les vols à l'arrivée.

Suggérer une amélioration du modèle précédent pour prendre en compte ces deux aspects.