samedi 2 janvier 2016

Script bash permettant de récenser et de tuer les services réseau inutiles (TCP)

Salut et bonne année, je suis Rodrigue Daniel

Voilà, c'est la deuxième fois que je poste ce problème (section Linux). Peut être avec mon script complet, il y'aura une autre solution.
Bon mon but était de réaliser un script pouvant m'aider à stopper les services réseau inutiles. J'ai complètement fini mon script, mais j'ai rencontré un problème. Lorsque je tue un service réseau via son processus par son PID, il se redemarre automatiquement, et comme mon script a la possibilité de récenser tous les services réseau, alors je constate que rien n'a changé. J'ai même fait le test en direct, d'où j'ai fait ce constat...Bon voilà mon script complet.

Code:


#!/bin/bash
#
# ssri : Script permettant de stopper les services réseau inutilisés.
# Rodrigue Daniel (email : rodrigue_daniel@yahoo.com)
# Mon blog : rodriguedaniel.blogspot.com
# 14/12/2015
# Dépendances : netstat
# Testé sur Ubuntu (14.04,15.04,15.10) et Kali Linux (1.09)


set -u
clear

###########################################################################################
# Définitions des couleurs
RED='\e[1;31m'
BLUE='\e[1;34m'
CYAN='\e[1;36m'
GREEN='\e[1;32m'
NC='\e[0m'

#echo -ne $RED
echo -e $BLUE'
                                ____ ____  ____  ___
                            / ___/ ___||  _ \|_ _|
                            \___ \___ \| |_) || |
                              ___) |__) |  _ < | |
                            |____/____/|_| \_\___|

'$NC
echo -e $BLUE"\t\t Description : Stopper les Services Réseau Inutilisés"$NC
echo -e $BLUE"\t\t Auteur      : Rodrigue Daniel (email : rodrigue_daniel@yahoo.com)"$NC

# Vérification du mode root
if [[ $EUID -ne 0 ]]; then
        echo -e $RED"\n\t Erreur : Ce programme doit être éxécuté en root.\n"$NC
        exit 1
fi


###########################################################################################
# Definitions des variables
choix=""
reponse=""
numPort="" # variable contenant le numero de port saisi par un utilisateur qui souhaite tuer le processus associé au service réseau en cours d'exécution
old_IFS="" # variable de sauvegarde du contenu de la variable d'environnement IFS
resValide1="" ## résultat valide lorsqu'on a trouvé,
resValide2="" ## + un service, son port
resValide2="" ## + son numéro de PID
resValide4="" ## +
tabNumPort[0]="" # tableau constitué des numéros de port associé aux services réseau
tabServices[0]="" # tableau constitué des noms de services réseau
tabProcessusService[0]="" # Fonction constitué des processus associés aux services réseau
numTab=0 # variable contenant l'indice des informations (ports,services,processus) valides

###########################################################################################
# Definitions des fonctions

aideSsri () # Fonction permettant d'afficher le menu et qui fait office d'aide
{

        echo -e $CYAN"\n\t a : Afficher tous les services réseau."$NC
        echo -e $CYAN"\t h : Afficher cet écran d'aide."$NC
        echo -e $CYAN"\t i : Inviter à entrer le numero de port du service réseau à stopper."$NC
        echo -e $CYAN"\t q : Quitter le script."$NC
        echo -e $CYAN"\t t : Stopper tous les services réseau.\n"$NC

}


recenserPortsServicesProcessus () # fonction qui permet de recenser tous les services, leurs numeros de port et leur PID
{

        numTab=0
        old_IFS=$IFS
        IFS=$'\n'
        (netstat -pano | grep tcp | grep LISTEN) > /dev/null 2>&1
        if [ $? -eq 0 ] ; then
                (netstat -pano | grep tcp | grep LISTEN) 2> /dev/null > temporaire
                for resValide1 in $(cat temporaire) ; do
                        if [ "${resValide1%% *}" != "tcp6" ] ; then # on élimine les lignes contenant tcp6 car en ipv4 ou en ipv6, les ports ne changent pas
                                resValide2="${resValide1#*:}"
                                resValide3="${resValide1#*/}"
                                resValide4="${resValide1#*N}"
                                tabNumPort[$numTab]="${resValide2%% *}"
                                tabServices[$numTab]="${resValide3%% *}"
                                tabProcessusService[$numTab]="${resValide4%%/*}"
                                numTab=$(($numTab + 1))
                        fi
                done
                rm temporaire
        else
                echo -e $RED"\t Aucun service n'est démarré.\n"$NC
        fi
        IFS=$old_IFS
}


afficherTousServicesReseau ()  # Fonction permettant d'afficher tous les services réseau et leurs numeros de port
{

        recenserPortsServicesProcessus
        numTab=0
        echo -e "\n--------------------------------------------------
                echo -e "\tSERVICES\t|\tPORTS"
                echo "--------------------------------------------------
                while [ $numTab -lt ${#tabNumPort[@]} ] ; do
                        echo -ne "\t"${tabServices[$numTab]}"\t\t|\t"
                        echo ${tabNumPort[$numTab]}
                        numTab=$(($numTab + 1))
                done

        echo -e "\n----------------------------------------------------\n"

}


stopperUnServiceReseau () # fonction permettant de stopper un service réseau
{
        recenserPortsServicesProcessus
        numTab=0
        echo -ne "\n\t Entrez le numero de port du service à stopper : "
        read numPort
        while [ $numTab -lt ${#tabNumPort[@]} ] ; do
                if [ "$numPort" = "${tabNumPort[$numTab]}" ] ; then
                        kill -9 ${tabProcessusService[$numTab]}
                        sleep 1
                        echo -e $GREEN"\t Opération effectuée avec succès.\n"$NC
                        break
                elif [ $numTab = $((${#tabNumPort[@]} - 1)) ] ; then
                        echo -e $RED"\t Service non démarré ou Numéro de port inconnu.\n"$NC
                        break
                fi
                numTab=$(($numTab + 1))
        done
}


StopperTousServicesReseau () # Fonction permettant de stopper tous les services réseau
{
        recenserPortsServicesProcessus
        numTab=0
        reponse=""
        while [ "$reponse" != "n" ] ; do
                echo -ne "\n\t Etes-Vous sûr de vouloir continuer cette opération? (o/n) : "
                read reponse
                if [ "$reponse" = "o" ]; then
                        while [ $numTab -lt ${#tabNumPort[@]} ] ; do
                                kill -9 ${tabProcessusService[$numTab]}
                                numTab=$(($numTab + 1))
                        done
                        sleep 1
                        echo -e $GREEN"\t Opération effectuée avec succès.\n"$NC
                        break

                fi
        done
}


###########################################################################################
# Traitement

aideSsri

while true; do
        echo -e $CYAN
        echo -n "[SSRI]> "
        if ! read choix ; then
                echo $RED"\n\t Saisie Invalide. Appuyer sur la touche h pour consulter l'aide !\n"$NC
        fi
        if [ -z "$choix" ] ; then
                echo -e $RED"\n\t Saisie Vide. Appuyer sur la touche h pour consulter l'aide !\n"$NC
        fi
            case $choix in

                a ) afficherTousServicesReseau
                        ;;
                h ) aideSsri
                    ;;
                i ) stopperUnServiceReseau
                    ;;
                q ) break
                    ;;
                t ) StopperTousServicesReseau
                    ;;
                * ) echo -e $RED"\n\t Option inconnue. Appuyer sur la touche h pour consulter l'aide !\n"$NC
                    ;;
        esac
done

echo -e $BLUE'

                ____
                / __ \  _    _    _    _    _    _    _
              / / _  |_| |_ _| |_ _| |_ _| |_ _| |_ _| |_ _| |_
              | | (_| |_  _|_  _|_  _|_  _|_  _|_  _|_  _|
              \ \__ _| |_|  |_|  |_|  |_|  |_|  |_|  |_|
                \____/

'$NC

exit 0

Merci


from Hackademics : Forum de hacking – hackers white hat – cours de securite informatique, apprendre langage python, tutoriels de reverse engineering http://ift.tt/1OChUF4
via IFTTT

Aucun commentaire:

Enregistrer un commentaire