Info16.fr

Le blog de B@rtounet

Archives 2011

#Gnu/Linux

Petit exemple de création de tunnel SSH

Quand on surf en dehors de chez soi, dans un cyber café, ou à partir d'un réseau qu'on ne controle pas, on en oublie aussi souvent la sécurité. Ce post me sert d'aide mémoire pour creer des tunnels SSH en local et en remote afin de pouvoir acceder de facon sécurisé à des services qui ne le sont pas forcément (smtp, pop, imap, ftp, http)...

Si on se met en situation, imaginez vous avez votre pc portable, vous etes sur une connexion que vous ne controlez pas (hotels, cyber café) vous voulez relevez vos mails en imap ou en pop. L'utilisateur lambda se connecterai à son serveur de messagerie directement sans se soucier de la sécurité. Le probleme est que dans un tel réseau vous n'etes jamais sur que quelqun ne "sniff" pas les connexions, il est très facile de sniffer tout ce qui passe sur son réseau pour un admin réseau ou même un petit bricolo... il faut donc savoir que

lorsque vous utilisez des protocoles non sécurisés, vos login et mots de passe circulent en clair sur le réseau... Ce n'est pas très grave quand vous surfez sur le web mais ca l'ai plus si vous rapatriez vos mails, si vous transferer des fichiers sur des ftp etc...

Bref tout cela pour dire que quand les connexions sont assez sensibles, mieux vaut ajouter un peu de sécurité... C'est pourquoi mon but va être de faire passer ces connexions non sécure dans un tunnel sécurisé... pour cela SSH est assez performant...

prenons un exemple simple

La manipulation est simple il faut creer un tunnel ssh entre votre poste client et votre serveur... pour cela vous devez bien sur avoir la main sur votre serveur externe et avoir le serveur SSH lancé et configuré. imaginons que je veuille acceder à mon webmail qui est hebergé sur mon serveur dédié, mais que je ne veux absolument pas qu'on puisse intercepter mes identifiants... sur mon poste client qui est bien sur sous Gnu/Linux je tappe

root@ubuntu:~# ssh -L 3333:localhost:80 info16.fr

Cela signifie qu'un tunnel SSH à été établie en moi et mon serveur info16.fr et que toutes les connexion qui auront lieux sur localhost:3333 de mon poste client sera redirigé PAR LE TUNNEL SSH sur le port 80 de info16.fr

on test:

root@ubuntu:~# ssh -L 3333:localhost:80 info16.fr root@info16.fr's password: Last login: Fri Mar 28 14:59:15 2008 from lmontsouris-152-61-27-191.w80-13.abo.wanadoo.fr Ubuntu 6.06.2 LTS Linux serveur.info16.fr 2.6.24.2-xxxx-std-ipv4-32 #4 SMP Wed Feb 13 16:50:04 CET 2008 i686 GNU/Linux server : 11178 ip : 91.121.31.206 hostname : serveur.info16.fr

sur le poste client il suffit alors de se connecter avec un navigateur sur son adresse de loopback et sur le port 3333 et on passe à travers le tunnel jusque sur le port 80 du serveur info16.fr On vérifie cela avec le fabuleux navigateur lynx

root@ubuntu:~# lynx http://localhost:3333

On obtient alors:

www.info16.fr www.info16.fr FTP Free FTP dedi Blog Webmail appart Webmail info16.fr Decelect%20158.jpg Contact:B@rtounet

On est bien sur le webmail de info16.fr a partir de localhost:3333 et ceci de manière totalement sécurisée

Maintenant je vais vous montrer un exemple encore plus interessant... Utiliser le tunnel SSH avec le mode remote.... Le tunnel sera toujours initié entre mon poste client et mon serveur dédié, mais cette fois l'écoute se fera sur le serveur....

Ceci peut etre très utile... imaginé que vous etes en train de developper un site web en local... sur votre poste... vous souhaitez que des personnes externes puisse y acceder de la toile, mais vous ne voulez pas ou ne pouvez pas ouvrir les ports 80 sur votre firewall et les rediriger sur l'ip de votre poste...

Qu'a cela ne tienne, le tunnel ssh est là pour ca...

je vais initier un tunnel entre mon poste client et mon serveur dédié en mode remote...

ATTENTION, j'ai cherché un moment avant que cette manip fonctionne... par défaut votre serveur dédié se mettra à l'écoute sur 127.0.0.1 ors si onveut que des personnes externes puisse se connecter dessus, il faut que le socket initié par le tunnel ssh sur le serveur dédié soit à l'écoute pour toutes les adresses c'est à dire soit à l'écoute sous 0.0.0.0

Après avoir longtemps parcouru le man de ssh j'ai enfin trouvé la solution. il faut rajouter une option dans le /etc/ssh/sshd_config

il faut donc rajouter

GatewayPorts yes

après cela le serveur écoutera bien sur toutes les adresses...

la commande magique:

root@ubuntu:~# ssh -R 3333:localhost:80 info16.fr

En langage peut etre plus clair... cette commande signifie je veux initier un tunnel ssh tel que quand on se connecte sur le port 3333 de info16.fr on soit automatiquement redirigé ver le port 80 de mon poste (localhost)

on peut vérifier que sur info16.fr l'ecoute se fait bien:

root@serveur:~# netstat -anp | grep 3333 tcp 0 0 0.0.0.0:3333 0.0.0.0:* LISTEN 16075/1

à partir de là n'importe quel personne externe (du moment qu'il n 'y ai pas de regle de pare feu qui bloque le port 3333 de info16.fr) peut se connecter sur http://info16.fr:3333 il sera automatiquement redirigé par le tunnel SSH sur le port 80 de votre poste client qui heberge votre site en construction...

on peut bien sur le faire pour tous les protocole...

Vous voulez que quelqun prenne la main en ssh sur votre poste gnu/linux mais vous ne voulez pas ouvrir de port sur votre pare feu...

la commande est la même...

ssh -R 3333:localhost:22 info16.fr

Je veux initier un tunnel ssh tel que quand on se connecte sur le port 3333 de info16.fr on soit automatiquement redirigé ver le port 22 de mon poste (localhost)

comme je dis pas de betise on test tout de suite si ca marche à partir d'un poste externe n'importe ou sur la toile...

xenserver:~ # ssh -p3333 info16.fr root@info16.fr's password: Last login: Fri Mar 28 16:45:32 2008 from localhost Linux ubuntu 2.6.22-14-generic #1 SMP Tue Feb 12 07:42:25 UTC 2008 i686 The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. root@ubuntu:~#

on voit bien ici qu'a partir d'un client externe en se connectant au port 3333 de info16.fr on est automatiquement redirigé vers le port 22 du client (ubuntu)

27 juillet 2011 1 commentaire

#Gnu/Linux

Compression sous Gnu/Linux en environnement multi-CPU

Si il y a bien quelque chose qui manque sous Linux, c'est le fait de pouvoir profiter d'un vrai outil de compression qui utilise au mieux les nouveaux environnements SMP actuels. Gzip est un excellent outil de compression, mais vous avez dut remarquer qu'il ne fonctionne que sur un CPU... c'est très embetant dans des environnements serveurs ou on a besoin de creer des fichiers compréssés assez rapidement...

En cherchant un petit peu je suis tombé sur l'outil mgzip. Ce projet semble dater un peu mais il à le mérite d'exister...

vous pouvez voir ce projet au http://lemley.net/mgzip.html

Les sources sont disponibles sur http://lemley.net/smp_mgzip_1.2c.tar.gz

Il suffit de le télécharger et de le décompresser dans le dossier de votre choix...

root@serveur:~# tar xvfz smp_mgzip_1.2c.tar.gz smp_mgzip_1.2c/ smp_mgzip_1.2c/README smp_mgzip_1.2c/COPYING smp_mgzip_1.2c/Makefile.in smp_mgzip_1.2c/config.h.in smp_mgzip_1.2c/configure.in smp_mgzip_1.2c/die.c smp_mgzip_1.2c/die.h smp_mgzip_1.2c/get_options.c smp_mgzip_1.2c/mgzip.h smp_mgzip_1.2c/queue.c smp_mgzip_1.2c/queue.h smp_mgzip_1.2c/version.awk smp_mgzip_1.2c/test_suite.sh smp_mgzip_1.2c/configure smp_mgzip_1.2c/Makefile.AIX smp_mgzip_1.2c/Makefile.ALPHA smp_mgzip_1.2c/Makefile.Linux smp_mgzip_1.2c/4g-patch.tar smp_mgzip_1.2c/concat.patch smp_mgzip_1.2c/ChangeLog smp_mgzip_1.2c/mgzip.c

Après cela il faut le compiler.

root@serveur:~/smp_mgzip_1.2c# ./configure --with-zlib=/root/zlib-1.2.3 && make loading cache ./config.cache checking how to run the C preprocessor... (cached) cc -E checking for AIX... no checking for gawk... (cached) gawk checking for gcc... (cached) gcc checking whether the C compiler (gcc ) works... yes checking whether the C compiler (gcc ) is a cross-compiler... no checking whether we are using GNU C... (cached) yes checking whether gcc accepts -g... (cached) yes checking whether make sets ${MAKE}... (cached) yes checking for library containing __pthread_create... (cached) no checking for library containing pthread_join... (cached) -lpthread checking for ANSI C header files... (cached) yes checking for unistd.h... (cached) yes checking for zlib.h... (cached) yes checking for gzdopen in -lz... (cached) yes checking whether byte ordering is bigendian... (cached) no checking for working const... (cached) yes checking for vprintf... (cached) yes checking for pthread_delay_np... (cached) no creating ./config.status creating Makefile creating config.h config.h is unchanged gcc -I/root/zlib-1.2.3 -g -O2 -I/root/zlib-1.2.3 -c -o mgzip.o mgzip.c mgzip.c:40: error: 'gz_header' redeclared as different kind of symbol /root/zlib-1.2.3/zlib.h:124: error: previous declaration of 'gz_header' was here mgzip.c: In function 'gzip_worker_thread': mgzip.c:219: warning: pointer targets in passing argument 2 of 'crc32' differ in signedness make: *** mgzip.o Error 1

On remarque tout de suite une erreur qui peut etre corrigé en modifiant le fichier mgzip.c

Editez ce fichier et modifier tous les gz_header de cette maniere : pouet_gz_header (rajout indicatif mettez ce que vous voulez) (faite une recherche de toutes les occurences de gz_header ca ira plus vite) ou encore mieux avec un sed pour remplacer l'occurence gz_header par pouet_gz_header

cat mgzip.c | sed 's/gz_header/pouet_gz_header/' > mgzip2.c && mv mgzip2.c mgzip.c

Une fois le fichier modifié ca devrait mieux compiler...

en effet:

root@serveur:~/smp_mgzip_1.2c# ./configure --with-zlib=/root/zlib-1.2.3 && make loading cache ./config.cache checking how to run the C preprocessor... cc -E checking for AIX... no checking for gawk... gawk checking for gcc... gcc checking whether the C compiler (gcc ) works... yes checking whether the C compiler (gcc ) is a cross-compiler... no checking whether we are using GNU C... yes checking whether gcc accepts -g... yes checking whether make sets ${MAKE}... yes checking for library containing __pthread_create... no checking for library containing pthread_join... -lpthread checking for ANSI C header files... yes checking for unistd.h... yes checking for zlib.h... yes checking for gzdopen in -lz... yes checking whether byte ordering is bigendian... no checking for working const... yes checking for vprintf... yes checking for pthread_delay_np... no updating cache ./config.cache creating ./config.status creating Makefile creating config.h gcc -I/root/zlib-1.2.3 -g -O2 -I/root/zlib-1.2.3 -c -o mgzip.o mgzip.c mgzip.c: In function 'gzip_worker_thread': mgzip.c:219: warning: pointer targets in passing argument 2 of 'crc32' differ in signedness gcc -I/root/zlib-1.2.3 -g -O2 -I/root/zlib-1.2.3 -c -o queue.o queue.c gcc -I/root/zlib-1.2.3 -g -O2 -I/root/zlib-1.2.3 -c -o die.o die.c gcc -I/root/zlib-1.2.3 -g -O2 -I/root/zlib-1.2.3 -c -o get_options.o get_options.c gcc -o mgzip mgzip.o queue.o die.o get_options.o -lz -lpthread -L/root/zlib-1.2.3

On obtient maintenant dans ce dossier le fameux programe mgzip, pour bien faire placer le dans /usr/sbin pour qu'il soit directmeent disponible

Comme j'aime bien finir les billet par un petit test on va quand même verifier l'efficacité de cette commande...

Pour cela ma machine de test sera compsé de: Athlon X2 5000+ Black edition à 2600MHZ 2Go de DDR2 800 Crucial en 44412 MSI K9N Platinum 2 Disk hitachi sata 2 Raid edition 160Go en Raid0 Logiciel

Mon protocle de test est assez simple... Je pars d'un disque de type LVM formaté en ext3 qui contient 2go de données. et je vais compréssé avec gzip et avec mgzip et calculé le temps necessaire à cette compréssion...

Voici le résultat

xenserver:~/testcpu # dd if=/dev/vg0/gziptest bs=16M | gzip -c --fast | dd of=/gziptest.gz bs=16M 128+0 records in 128+0 records out 2147483648 bytes (2.1 GB) copied, 33.7023 s, 63.7 MB/s 0+500 records in 0+500 records out 9401822 bytes (9.4 MB) copied, 33.6445 s, 279 kB/s xenserver:~/testcpu # dd if=/dev/vg0/gziptest bs=16M | mgzip -c -1 -t 64 | dd of=/gziptest.gz bs=16M 128+0 records in 128+0 records out 2147483648 bytes (2.1 GB) copied, 26.2779 s, 81.7 MB/s 0+794 records in 0+794 records out 10075503 bytes (10 MB) copied, 26.314 s, 383 kB/s

on remarque que le mgzip à été un peu plus rapide mais sans aller deux fois plus vite... ce qui théoriquement devrait être le cas... Je cherche encore un outils qui serait plus performant... mailez moi si vous en trouvez un

27 juillet 2011 Aucun commentaire

#Gnu/Linux

Mise en place de virtualHosts sous opensuse 10.3

Quand on installe apache2 de base, on peut bien sur heberger son site à la racine de l'arborescence, mais on est très vite bloqué si on veut creer plusieurs sites avec plusieurs sous domaines...

Ce billet me sert juste d'aide mémoire pour mettre en place les virtualshosts sous suse. Ayant l'habitude de monter des sites sous Ubuntu / Debian la configuration sous suse est légèrement différente.

Pour la mise en place de virtualhosts sous Ubuntu, je vous renvoie vers l'excellent documentation du forum ubuntu-fr http://doc.ubuntu-fr.org/tutoriel/virtualhosts_avec_apache2 Le principe est assez simple grace aux modules sites-available

Après avoir longtemps évolué sous ubuntu/debian quand on passe sous suse on est un peu perdu...

En effet ne cherchez pas l'arborescence du site dans /var/www, elle n'y est pas... dans cette distribution tout se trouve sous /srv/www/htdocs

Je pars du principe que je souhaite 3 hotes virtuels... le tout sur une ip locale 192.168.1.250 1- La racine de mon site qui sera www.appart.lan 2- L'accès à mon webmail qui sera webmail.appart.lan 3- L'accès à un site de test en developpement test1.appart.lan

tout d'abord verifier que les virtual hosts seront biens pris en compte dans /etc/apache2/httpd.conf

### Virtual server configuration ############################################ # # VirtualHost: If you want to maintain multiple domains/hostnames on your # machine you can setup VirtualHost containers for them. Most configurations # use only name-based virtual hosts so the server doesn't need to worry about # IP addresses. This is indicated by the asterisks in the directives below. # # Please see the documentation at # <URL:http://httpd.apache.org/docs-2.2/vhosts/> # for further details before you try to setup virtual hosts. # # You may use the command line option '-S' to verify your virtual host # configuration. # Include /etc/apache2/vhosts.d/*.conf # Note: instead of adding your own configuration here, consider # adding it in your own file (/etc/apache2/httpd.conf.local) # putting its name into APACHE_CONF_INCLUDE_FILES in # /etc/sysconfig/apache2 -- this will make system updates # easier :)

ensuite préciser sur quelle socket (adresse_ip:port) le serveur écoutera dans /etc/apache2/listen.conf definir la derniere ligne comme suit

NameVirtualHost 192.168.1.250:80

Pour finir nous allons définir un dossier de configuration pour tous nos virtualshosts dans /etc/apache2/vhosts.d En effet là ou sous debian on aurait fait un fichier de conf pour chaque virtual hosts, ici sous suse je n'ai réussi à le faire fonctionner qu'en utilisant un seul et unique fichier... C'est peut etre pas plus mal...

j'ai donc créee un fichier mesvirthosts.conf

à l'intérieur tout est explicite:

# ---> Site principal <VirtualHost 192.168.1.250:80> ServerName appart.lan ServerAlias bartounet.no-ip.org DocumentRoot /srv/www/htdocs </VirtualHost> # # ---> Site du sous-domaine "Webmail" <VirtualHost 192.168.1.250:80> ServerName webmail.appart.lan ServerAlias webmail.bartounet.no-ip.org DocumentRoot /srv/www/htdocs/squirrelmail </VirtualHost> # # ---> Site du sous-domaine "test1" <VirtualHost 192.168.1.250:80> ServerName test1.appart.lan ServerAlias test1.bartounet.no-ip.org DocumentRoot /srv/www/htdocs/test1 </VirtualHost>

on définit d'abord sous quel socket sera disponible le virtual host ensuite sous quel domaine local il ser aaccessible, son alias publique et bien sur le chemin dans lequel sera stocké le site en question

bien terminer la configuration par

rcapache2 restart

Vous l'avez compris la racine de mon site sera accessible en passant par www.appart.lan qui pointe vers /srv/www/htdocs mon webmail par webmail.appart.lan qui pointe vers /srv/www/htdocs/squirrelmail mon site test1 par test1.appart.lan /srv/www/htdocs/test1

27 juillet 2011 Aucun commentaire

#Gnu/Linux

Script Firewall iptables

Je met en ligne un petit script me permettant de mettre en place un firewall sur mes serveur linux histoire que je le perde pas...

#!/bin/bash
 #
 #Antony MARTINEAU 2007
 #Firewall script   "BAD PACKETS STOP HERE"
 
 ipmaboite=$(ping -c1 maboite.dnsalias.net | grep time | sed -n 1p | cut -d"(" -f2 | cut -d")" -f1)
 echo "ip de maboite $ipmaboite"
 
 firewall_start() {
 # Nous vidons les chaînes :
 iptables -F
 # Nous supprimons d'éventuelles chaînes personnelles :
 iptables -X 
 
 # Nous les faisons pointer par défaut sur DROP
 
 iptables -P INPUT DROP
 iptables -P OUTPUT ACCEPT
 iptables -P FORWARD DROP
 
 # Nous faisons de même avec toutes les autres tables, 
 # à savoir "nat" et "mangle", mais en les faisant pointer
 # par défaut sur ACCEPT. Ca ne pose pas de problèmes 
 # puisque tout est bloqué au niveau "filter"
 
 iptables -t nat -F
 iptables -t nat -X 
 
 iptables -t nat -P PREROUTING ACCEPT
 iptables -t nat -P POSTROUTING ACCEPT
 iptables -t nat -P OUTPUT ACCEPT
 
 iptables -t mangle -F
 iptables -t mangle -X 
 
 iptables -t mangle -P PREROUTING ACCEPT
 iptables -t mangle -P INPUT ACCEPT
 iptables -t mangle -P OUTPUT ACCEPT
 iptables -t mangle -P FORWARD ACCEPT
 iptables -t mangle -P POSTROUTING ACCEPT
 
 ##AUTORISATION DES SERVICES FONDAMENTAUX
 
 # Autoriser TOUT pour ma Freebox differents client SSH
 #Attention apres differents test il faut toujours indiquer le protocole quand on specifie un port de destination
 iptables -A INPUT -s 82.122.232.222 -j ACCEPT
 iptables -A INPUT -s $ipmaboite -j ACCEPT
 iptables -A INPUT -p tcp -s $ipmaboite --dport 3128 -j ACCEPT
 iptables -A INPUT -p tcp -s $ipmaboite --dport 22 -j ACCEPT
 #iptables -A INPUT -p tcp -s 200.200.200.200 --dport 22 -j ACCEPT
 
 # Autoriser SSH
 #iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
 #echo - Autoriser SSH : [OK]
 
 # Ne pas casser les connexions etablies
 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 echo - Ne pas casser les connexions établies : [OK]
 
 ################ Priorisation de la bande passante et des connections ######################
 
 echo "[priorisation des connections ssh ...]";
 iptables -A PREROUTING -t mangle -p tcp --sport 443 -j TOS --set-tos Minimize-Delay
 
 echo "[priorisation des connections http ...]";
 iptables -A PREROUTING -t mangle -p tcp --sport http -j TOS --set-tos Maximize-throughput
 
 ###### Fin Inialisation ######
 ##### Debut Regles ######
 
 # Autoriser les requetes DNS, FTP, HTTP, NTP
 iptables -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT
 iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
 iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
 iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
 iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT
 echo - Autoriser les requetes DNS, FTP, HTTP, NTP : [OK]
 
 # Autoriser le serveur DNS
 # Les 4 règles suivantes acceptent le rôle de serveur DNS
 iptables -A INPUT -p udp --dport 53 -j ACCEPT
 iptables -A INPUT -p tcp --dport 53 -j ACCEPT
 iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
 iptables -A OUTPUT -p tcp --sport 53 -j ACCEPT
 # Les 4 règles suivantes acceptent notre rôle de client DNS
 # Autorisation de la sortie de la requète
 iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
 iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
 # Autorisation du retour de la réponse
 iptables -A INPUT -p udp --sport 53 -j ACCEPT
 iptables -A INPUT -p tcp --sport 53 -j ACCEPT 
 echo - Autoriser serveur DNS : [OK]
 
 # Autoriser loopback
 iptables -t filter -A INPUT -i lo -j ACCEPT
 iptables -t filter -A OUTPUT -o lo -j ACCEPT
 echo - Autoriser loopback : [OK]
 
 # Autoriser ping
 #iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
 #iptables -A INPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
 
 # Limite de 10 pings par seconde 
 iptables -A INPUT -p icmp -m limit --limit 2/s -j ACCEPT
 echo - Autoriser ping : [OK]
 
 # HTTP
 iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
 iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
 iptables -t filter -A INPUT -p tcp --dport 8443 -j ACCEPT
 iptables -A OUTPUT -o eth0 -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport https -j ACCEPT
 iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -p tcp --sport https -j ACCEPT 
 echo - Autoriser serveur Apache : [OK]
 
 # FTP
 #modprobe ip_conntrack_ftp
 iptables -t filter -A INPUT -p tcp --dport 20 -j ACCEPT
 iptables -t filter -A INPUT -p tcp --dport 21 -j ACCEPT
 iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 echo - Autoriser serveur FTP : [OK]
 
 #Serveur Teamspeak
 iptables -t filter -A INPUT -p udp --dport 8767 -j ACCEPT
 echo - Autoriser serveur TS : [OK]
 
 #Mail
 iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
 iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT
 echo - Autoriser serveur Mail : [OK]
 
 #Log iptables (je log tout sauf les paquets de broadcast)
 iptables -t filter -A INPUT -j ULOG -d ! 91.121.31.255 --ulog-prefix="[IPTABLES BLOCKED]"
 }
 
 firewall_stop() {
 
 iptables -F
 iptables -X
 iptables -P INPUT ACCEPT
 iptables -P FORWARD ACCEPT
 iptables -P OUTPUT ACCEPT
 
 iptables -t nat -F
 iptables -t nat -X
 iptables -t nat -P PREROUTING ACCEPT
 iptables -t nat -P POSTROUTING ACCEPT
 iptables -t nat -P OUTPUT ACCEPT
 
 iptables -t mangle -F
 iptables -t mangle -X
 iptables -t mangle -P PREROUTING ACCEPT
 iptables -t mangle -P OUTPUT ACCEPT
 echo " [firewall desactive]"
 
 }
 
 firewall_restart() {
 firewall_stop
 sleep 2
 firewall_start
 }
 
 case "$1" in
 'start')
 firewall_start
 ;;
 'stop')
 firewall_stop
 ;;
 'restart')
 firewall_restart
 ;;
 'status')
 iptables -L
 iptables -t nat -L
 iptables -t mangle -L
 ;;
 *)
 echo "Usage: firewall {start|stop|restart|status}"
 esac
27 juillet 2011 Aucun commentaire

#Gnu/Linux

Script SSH sans mot de passe.

J'ai fait il y a quelques temps un billet, expliquant la procédure pour configurer la connexion SSH entre deux noeuds sans mot de passe... bien que la procédure soit simple, elle est souvent source d'erreur car il faut switcher entre les deux noeuds, si bien que souvent on s'y perd... C'est pourquoi j'ai fait un script qui fait tout ca automatiquement...

La seule prérogative, est que SSH soit installé sur les deux noeuds et que vous connaissiez bien sur les mots de passes...

#!/bin/bash # #sshnode by Antony MARTINEAU # # #Ce script permet de configurer deux noeud afin qu'ils puissent de connecter par ssh sans mot de passe echo -n "Nom ou ip de ce noeud:" read node1 echo -n "Nom ou ip du noeud distant:" read node2 echo "Pour toutes les passphrases tappez juste ENTER" sleep 1 ssh-keygen -t dsa scp /root/.ssh/id_dsa.pub root@$node2:/root/.ssh/ ssh $node2 'cat /root/.ssh/id_dsa.pub >> /root/.ssh/authorized_keys' ssh $node2 'rm -f /root/.ssh/id_dsa.pub' ssh $node2 'ssh-keygen -t dsa' scp $node2:/root/.ssh/id_dsa.pub /root/.ssh/ cat /root/.ssh/id_dsa.pub >> /root/.ssh/authorized_keys rm -f /root/.ssh/id_dsa.pub echo "Afin de terminer la procedure connectez vous mannuellement du noeud distant sur ce noeud"
27 juillet 2011 Aucun commentaire