search
top
Vous naviguez actuellement sur:Linux/Unix

Utilisation d’iptable

Voici un exemple commenté, cela est plus simple que de longue explications ;)

#!/bin/bash

# Vider les tables actuelles
iptables -t filter -F
iptables -t filter -X

# Autoriser SSH
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT

# 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

# Monitoring Dedibox
iptables -A INPUT -i eth0 -s 88.191.254.0/24 -p tcp --dport 161 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -s 88.191.254.0/24 -p udp --dport 161 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -d 88.191.254.0/24 -p tcp --sport 161 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -d 88.191.254.0/24 -p udp --sport 161 -m state --state ESTABLISHED -j ACCEPT

# Interdire toute connexion entrante
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP

# Interdire toute connexion sortante
iptables -t filter -P OUTPUT DROP

# Autoriser les requetes DNS, FTP, HTTP, NTP (pour les mises a jour)
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 udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT

# Autoriser loopback
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT

# Autoriser ping
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT

# HTTP
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT

# 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

# DNS
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT

# Mail
iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT

# Steamcast
iptables -t filter -A INPUT -p tcp --dport 8000 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 8001 -j ACCEPT

# Syn-Flood
iptables -A FORWARD -p tcp --syn -m limit --limit 1/second -j ACCEPT
iptables -A FORWARD -p udp -m limit --limit 1/second -j ACCEPT

# Spoofing
iptables -N SPOOFED
iptables -A SPOOFED -s 127.0.0.0/8 -j DROP
iptables -A SPOOFED -s 169.254.0.0/12 -j DROP
iptables -A SPOOFED -s 172.16.0.0/12 -j DROP
iptables -A SPOOFED -s 192.168.0.0/16 -j DROP
iptables -A SPOOFED -s 10.0.0.0/8 -j DROP

Transfère de linux à linux avec SCP

Cette commande permet de recopier un fichier ou répertoire de manière sécurisée (encryptage) de ou vers une machine distante.

Pour copier un fichier local ‘le_fichier’ vers le compte de l’utilisateur « username » sur la machine distante « nom_de_machine.nom_de_domaine », tapez la commande suivante :

scp le_fichier username@nom_de_machine.nom_de_domaine:

Pour copier le fichier distant ‘le_fichier’ situé dans le sous répertoire ‘directory’ d’un compte de l’utilisateur « username » de la machine « nom_de_machine.nom_de_domaine ».

scp username@nom_de_machine.nom_de_domaine:directory/le_fichier

Pour copier le répertoire local ‘directory’ vers le compte de l’utilisateur « username » sur la machine « nom_de_machine.nom_de_domaine » :

scp -r directory username@nom_de_machine.nom_de_domaine:

Pour copier le répertoire distant ‘directory’ (et tous ses sous-répertoire) d’un compte de l’utilisateur « username » de la machine « nom_de_machine.nom_de_domaine ».

scp -r username@nom_de_machine.nom_de_domaine:directory

Remonter une partition en lecture/ecriture

Dans le cas ou votre /tmp est passé en lecture seul (probleme d’acces disque par exemple)
Vous pouvez remonter la partition le lecture/ecriture sans la demonter. Cela est plus utile pour le / ;)

mount /tmp -o remount,rw

Changer le domaine ou l’adresse mail a l’envoie

Ajoutez dans le fichier de configuration main.cf :

smtp_generic_maps = hash:/etc/postfix/generic

Dans ce fichier, vous y indiquerez ce qui doit être réécrit

@domaine.local   @domaine.net
root@domaine.local   noreply@domaine.net
  • Le premier exemple remplace domaine.local par domaine.net
  • Le deuxième exemple remplace l’adresse root@domaine.local par noreply@domaine.net

Postfix utilisera le hash de ce fichier, générez le avec postmap

postmap /etc/postfix/generic

Envoyé les notifications Munin par mail, au Syslog, a un compte Twitter

/etc/munin/munin.conf

Configuration des commandes d’envoie :

contact.mail1.command |mail -s "Munin-notification for ${var:group} :: ${var:host}" mail1@foo.com
contact.mail2.command |mail -s "Munin-notification for ${var:group} :: ${var:host}" mail2@foo.com

Pour envoyé les notifications a chaque check au contact « mail1″:

contact.mail1.always_send warning critical

Envoyé une alerte sur un compte Twitter

contact.twitter.command /etc/munin/send2twitter.sh

Script send2twitter.sh

#!/bin/sh
DATASTDIN=$(tr '[:upper:]' '[:lower:]' < /dev/stdin)
RESULT=`curl -s --basic -u votrelogin:votremotdepasse -d status="$DATASTDIN" http://twitter.com/statuses/update.json`

Le script send2twitter.sh doit avoir les droits d’exécution avec le compte utilisé par Munin.

Envoyé au syslog

contact.syslog.command logger -p user.crit -t "Munin-Alert"

plugin de test

Ce plugin munin sera toujours en état critique.

!/usr/bin/ruby

if ARGV[0] == 'config'
  puts "value.label Some Label"
  puts "value.warning 100"
  puts "value.critical 150"
else
  puts "value.value 200"
end

« Articles précédents Articles suivants »

top