mercredi 20 janvier 2010

firewall iptables script

#!/bin/bash
#
# /etc/rc.local: Local multi-user startup script.
#

##on remet a zero le firewall
iptables -F
iptables -t nat -F
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

###
# Polices par défaut
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

###
# Boucle locale

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT


###
# Création d’une cible local anti xmas et null scan
iptables -N SCANS
iptables -A SCANS -p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP
iptables -A SCANS -p tcp --tcp-flags ALL ALL -j DROP
iptables -A SCANS -p tcp --tcp-flags ALL NONE -j DROP
iptables -A SCANS -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

iptables -A INPUT -j SCANS

###
# Création d’une cible personnalisée pour accepter les connexions établies
iptables -N KEEP_STATE
iptables -A KEEP_STATE -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A KEEP_STATE -m state --state INVALID -j DROP

iptables -A INPUT -j KEEP_STATE
iptables -A OUTPUT -j KEEP_STATE

###
# Services sur la machine locale (FTP, SSH, HTTP)

#iptables -A INPUT -m state --state NEW -p tcp --dport 20-21 -j ACCEPT
#iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
#iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT

#CUPS
iptables -A INPUT -p TCP --dport 631 -m state --state NEW -j ACCEPT
#smb
# EPMAP => définit toutes les RPC !
iptables -A INPUT -m state --state NEW -p TCP --dport 135 -j ACCEPT
iptables -A INPUT -m state --state NEW -p UDP --dport 135 -j ACCEPT
# NetBios-NS
iptables -A INPUT -m state --state NEW -p TCP --dport 137 -j ACCEPT
iptables -A INPUT -m state --state NEW -p UDP --dport 137 -j ACCEPT
# NetBios-DGM => exploration du réseau (basé sur SMB browser service)
iptables -A INPUT -m state --state NEW -p UDP --dport 138 -j ACCEPT
# NetBios-SSN => partage fichiers, imprimantes par Microsoft
iptables -A INPUT -m state --state NEW -p TCP --dport 139 -j ACCEPT
# SMB/IP => partage fichiers, imprimantes par SaMBa
iptables -A INPUT -m state --state NEW -p TCP --dport 445 -j ACCEPT
iptables -A INPUT -m state --state NEW -p UDP --dport 445 -j ACCEPT

###
# Connexions vers l’extérieur (FTP, SSH, DNS, HTTP, MSN, POP, IMAP, SMTP)



iptables -A OUTPUT -m state --state NEW -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p tcp --dport 1863 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p tcp --dport 110 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p tcp --dport 143 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p tcp --dport 995 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT

iptables -A OUTPUT -m state --state NEW -p udp --dport 6891 -j ACCEPT

#vnccleint
iptables -A OUTPUT -m state --state NEW -p tcp --dport 5900 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p udp --dport 5900 -j ACCEPT


##jabber
iptables -A OUTPUT --protocol tcp --dport 5222 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT --protocol tcp --sport 5222 -m state --state ESTABLISHED -j ACCEPT

dimanche 17 janvier 2010

iptables archlinux

Voulant avoir une série de règles simples et puissantes pour iptables, je suis tombé sur cet article du Brakablog.
Même si le tutoriel est à l’origine pour Ubuntu, je l’adapte, pour ArchLinux. Je précise qu’est pour le cas le plus simple, une machine seule connectée à une « box » ou un modem en connexion directe à l’internet.
On commence par installer iptables :
yaourt -S iptables
Ensuite, en mode root, on rentre les règles suivantes, merci à Brakbabord pour les infos :

##On remet le firewall à Zéro ##
iptables -F
iptables -t nat -F
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

Le loopback (boucle locale) est indispensable pour des logiciels qui refusent de démarrer sinon, comme Miro

## On accepte loopback ##
iptables -A INPUT -i lo -j ACCEPT

Et le reste des règles :
## On accepte uniquement les connexion désirées ##
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

## On refuse le reste ##
iptables -A INPUT -j drop
Si l’on a pas besoin de l’IP forwarding, dans le fichier /etc/conf.d/iptables, il faut dans la ligne IPTABLES_FORWARD mettre la valeur 0 qui désactive le Forwarding d’IP
Enfin, on sauve les règles, puis on lance le service du pare-feu, soit en root, soit via sudo :

/etc/rc.d/iptables save
/etc/rc.d/iptables start

Et pour lancer iptables au démarrage, il faut rajouter iptables à la ligne DAEMONS du fichier /etc/rc.conf, bien entendu après le daemon qui lance la connexion réseau.
De quoi avoir une protection « parfaite » sur les sites de tests de pare-feux

jeudi 30 juillet 2009

Creer un paquet debian pour un script

On nommerra le programme webtvorange.

creer un fichier "create_package.sh"

#!/bin/sh
INSTALL_DIR="/usr/share/webtvorange"

BIN_DIR="/usr/bin"
VERSION="2.0.1"

mkdir -p webtvorange/DEBIAN
cp control-install webtvorange/DEBIAN/control
cp postinst webtvorange/DEBIAN/postinst
cp postrm webtvorange/DEBIAN/postrm
# mkdir -p "webtvorange"$ICO_DIR
# cp pix/webtvorange.png "webtvorange"$ICO_DIR
#
# mkdir -p "webtvorange"$MAN_DIR
# cp doc/webtvorange "webtvorange"$MAN_DIR
#
mkdir -p -m a+rwx "webtvorange"$INSTALL_DIR
mkdir -p -m a+rwx "webtvorange"$INSTALL_DIR"/temp"
mkdir -p -m a+rwx "webtvorange"$INSTALL_DIR"/enregistrements"
mkdir -p -m a+rwx "webtvorange"$INSTALL_DIR"/chaines"
# mkdir -p "webtvorange"$INSTALL_DIR"/src"
# cp src/*.py "webtvorange"$INSTALL_DIR"/src/"

# mkdir -p "webtvorange"$INSTALL_DIR"/res"
# cp res/*.glade "webtvorange"$INSTALL_DIR"/res/"
#
# mkdir -p "webtvorange"$INSTALL_DIR"/pix"
# cp pix/*.png "webtvorange"$INSTALL_DIR"/pix/"
#
# mkdir -p "webtvorange"$INSTALL_DIR"/doc"
# cp doc/gpl.txt "webtvorange"$INSTALL_DIR"/doc/"
#
# cp doc/whatsnew.txt "webtvorange"$INSTALL_DIR"/doc/"
# mkdir -p "webtvorange"$APP_DIR
#
# cp WebTvorange "webtvorange"$APP_DIR

mkdir -p "webtvorange"$BIN_DIR
cp maj.sh "webtvorange"$INSTALL_DIR
cp WebTvorange "webtvorange"$BIN_DIR"/webtvorange"

# mkdir -p "webtvorange"$LOC_DIR
#
# cp -R locale/* "webtvorange"$LOC_DIR

dpkg-deb --build webtvorange webtvorange-$VERSION.deb

rm -rf webtvorange

creer un fichier postinst
#!/bin/bash
LAUNCHER="/usr/share/applications/webtv_orange.desktop"
touch $LAUNCHER
echo "[Desktop Entry]" > $LAUNCHER
echo "Name=Web Tv Orange" >> $LAUNCHER
echo "Name[fr]=WebTvOrange" >> $LAUNCHER
echo "Comment=Visualisez et enregistrer la télé par le net (Orange seulement)" >> $LAUNCHER
echo "TryExec=webtvorange" >> $LAUNCHER
echo "Exec=webtvorange" >> $LAUNCHER
echo "Icon=gtk-media-record" >> $LAUNCHER
echo "Terminal=false" >> $LAUNCHER
echo "Type=Application" >> $LAUNCHER
echo "Categories=AudioVideo;" >> $LAUNCHER
echo "MimeType=text/plain;" >> $LAUNCHER
echo "Web TV est bien installe."

creer un fichier postrm

#!/bin/bash
LAUNCHER="/usr/share/applications/webtv_orange.desktop"
rm $LAUNCHER;
rm -r /usr/share/webtvorange;
echo "web tv orange desinstalle" ;

Le programme et les fichier doivent être au meme endroit.

l'architecture d'un paquet est
"nomduqpaquet/DEBIAN/racinefictivedulecteur"
"nomduqpaquet/DEBIAN/postinst"
"nomduqpaquet/DEBIAN/postrm"
"nomduqpaquet/DEBIAN/control"

Le fichier control est l'identité du paquet et permet de gerer les dependances.
postinst est unscript lancé en fin d'installation du paquet
postrm est un script lancé en fin de desinstallation/
preinst et prerm c'est avant.

dimanche 8 juin 2008

installer un serveur php apache

installer un server LAMP :
apt-get install php5 apache2

editer le fichier /etc/apache2/sites-available/default
et modifier les deux lignes contenant /var/www/ pour y mettre le repertoire qui contiendra vos sites par exemple /home/user/messites/


ne pas oublier le "/" de la fin!

lundi 26 mai 2008

installlation techno&co

installer un server LAMP :
apt-get install php5 apache2 mysql-server phpmyadmin

editer le fichier /etc/apache2/sites-available/default
et modifier les deux lignes contenant /var/www/ pour y mettre le repertoire qui contiendra vos sites (dont techno&co)

Mettre le mot de passe de mysql et mettre un admin au server mysql autre que root (sécurité accrue, le nouveau de mot de passe sera lemotdepasse et le nouvel utilisateur sera lenouvelutilisateur)

mysqladmin password "lemotdepasse"
/etc/init.d/mysql restart
mysql -p
mysql> use mysql;
mysql> select * from user;
mysql> GRANT ALL PRIVILEGES ON *.* TO adminmysql@localhost
-> IDENTIFIED BY 'lemotdepasse' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> select * from user where User='lenouvelutilisateur';
mysql> quit


ensuite copier le répertoire de techno&co

à la fenetre pour installer mettre le login pis précédement et le mot de passe mis précédement.

voila
c'ets fini!

samedi 24 mai 2008

installation splashys ur une lenny

entrez les commandes suivantes :
apt-get install splashy splashy-themes

ensuite dû a un bug splash bloque le démarrage de lenny, il faut pour cela éditer les fichiers suivants:
/etc/init.d/console-screen.sh
/etc/init.d/keymap.sh

pour le premier fichier ajouter simplement la ligne
pidof splashy > /dev/null && exit 0
après "#!/bin/sh"

pour le scond ajouter :
pidof splashy > /dev/null && return

après les lignes
unicode_start_stop()
{


Ensuite éditer le fichier
/etc/default/splashy

et ajouter à la fin de celui-ci
POST_EXEC_SERVICES="keymap.sh console-screen.sh"

remattre l'initfram a jour :
update-initramfs -u -t -k `uname -r`

et c'est ok

mercredi 21 mai 2008

installation serveur apache2 php5

installer les paquets suivants :
php5 et apache2

les sites par défaut doivent être stocké dans /var/www/
l'accès avec le navigateur se fait par l'adresse http://localhost/
on peut changer le répertoire de stockage en éditant le fichier
Rediriger l'execution de script php vers un autre repertoire que /var/www/

nano /etc/apache2/sites-available/default

changer la ligne
DocumentRoot /var/www/

et la ligne


Et remplacer "/var/www/" par le chemin voulu