Aller au contenu

Sécuriser son serveur ou Seedbox


Description

installé les logiciels de surveillances et configurer iptable

Bonjour, voici un script pour paramétrer votre Firewall avec filtre Hadopi, Indésirable, ainsi que Fail2ban et Portsentry

Merci a Ex_rat et au site Mondedie

Je l'ai testé sur une machine debian 7 et 8, marche trés bien.

Je log pas les "indésirables",je les drop direct (mais rien ne vous empêche de le faire).
Donc vous pouvez l'utiliser pour configurer votre firewall.
Attention les données a mettre dans le fichier "ruleFire" se trouve plus bas , ou j'ai mis des  *******************
Pour cela vous ouvrez une session root sur votre serveur puis vous tapez:
 

nano /home/VotreNomUtilisateur/ruleFire


"VotreNomUtilisateur" c'est le nom d'user sur le serveur

*-Un copier coller

Pour coller dans nano ......."clic droit de la souris "

Pour sauver les modif ....... Touches : Ctrl + o , Enter, Ctrl + x

*-Apres un petit:
 

chmod +x /home/VotreNomUtilisateur/ruleFire

*-Puis on l'execute:
 

/home/VotreNomUtilisateur/ruleFire

Surtout vous fermer pas votre session ssh, faut verifier que tout tourne bien

*-Un petit :
 

iptables -L -v -n

Vous avez vos règle firewall de lister, avec :

les entrées en premier : Input : ce qui est accepté et rejeté

les routées : Forward

Les sorties

Les log

Et les règle crées par des logiciels tiers (ex: Fail2ban etc..)

Essayé d'ouvrir une deuxieme connection ssh, si vous arrivez a vous logguer c'est tout bon

*-Vous pouvez fermer vos sessions.

*************** dessous ce qui est a coller dans le fichier "ruleFire" ************
Pour activer certaines option retiré le " # "


 

Révélation

#!/bin/bash
### BEGIN INIT INFO
# Provides: firewall rules
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
#!/bin/sh

# On vire tout

iptables -t filter -F
iptables -L
iptables -Z

# Vider les règles personnelles

iptables -t filter -X
echo - Vidage : [OK]

# Interdire toute connexion entrante et sortante

iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
echo - Interdire toute connexion : [OK]

#Filtres Anti Hadopi et Autres Lourds

iptables -t filter -I INPUT -p all -s 61.174.51.0/24,61.64.128.0/17,116.10.191.0/24,122.120.0.0/13,168.95.0.0/16 -j DROP
iptables -t filter -I INPUT -p all -s 5.23.42.12/30,90.80.100.192/28,195.5.217.72/29,194.79.189.240/29 -j DROP
iptables -t filter -I INPUT -p all -s 82.138.70.128/26,82.138.74.0/25,91.189.104.0/21,193.107.240.0/22,195.191.244.0/23,193.105.197.0/24 -j DROP
iptables -t filter -A INPUT -p tcp --dport 80 -m string --to 70 --algo bm --string 'GET /w00tw00t.at.ISC.SANS.' -j DROP
echo - Blocage indésirable : [OK]

# On garde les connexions etablies

iptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
echo - Connexion actuelle : [OK]

# Autoriser le loopback (reseau local)

iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
echo - LOOPBACK : [OK]

# ICMP (ping)

iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT
echo - ICMP : [OK]

# DNS (bind)

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

iptables -t filter -A OUTPUT -p tcp --dport 953 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 953 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 953 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 953 -j ACCEPT
echo - BIND : [OK]

# APACHE : HTTP + HTTPS

iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
echo - web : [OK]

# Mail SMTP:25 - Pour acces gmail ajouter 587

iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT
echo - SMTP : [OK]

# NTP Horloge synchro

iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT
echo - NTP : [OK]

# SSH numeros de Port a changer (XXXX) en rapport avec : : "/etc/ssh/sshd_config" on remplace XXXX par votre port ssh par exemple 22

iptables -t filter -A INPUT -p tcp --dport XXXX -m recent --rcheck --seconds 60 --hitcount 2 --name SSH -j LOG --log-prefix "SSH REJECT"
iptables -t filter -A INPUT -p tcp --dport XXXX -m recent --update --seconds 60 --hitcount 2 --name SSH -j DROP
iptables -t filter -A INPUT -p tcp --dport XXXX -m state --state NEW -m recent --set --name SSH -j ACCEPT
echo - Autoriser SSH : [OK]

# Rtorrent a vous de mettre les bons ports surtout pour le port d'annonce tracker

iptables -t filter -A INPUT -p tcp --dport 6890:6999 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --sport 6890:6999 -j ACCEPT
iptables -t filter -A INPUT -m udp -p udp --dport 6881:6999 -j ACCEPT
iptables -t filter -A OUTPUT -m udp -p udp --dport 6881:6999 -j ACCEPT

iptables -t filter -A INPUT -p tcp --dport 6400 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --sport 6400 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 6400 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 6400 -j ACCEPT

iptables -t filter -A INPUT -p tcp --dport 35000 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --sport 35000 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 35000 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 35000 -j ACCEPT

iptables -t filter -A INPUT -p tcp --dport 2086 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --sport 2086 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 2086 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 2086 -j ACCEPT

iptables -t filter -A OUTPUT -p tcp -m tcp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
echo - RTORRENT : [OK]

#Decommenter ci-dessous les services que vous utilisez

# FTP (BACKUP)
# iptables -t filter -A INPUT -p tcp --dport 21 -j ACCEPT
# iptables -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT

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

# Mail IMAP:143

# iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT
# iptables -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT

# Mail POP3S:995

# iptables -t filter -A INPUT -p tcp --dport 995 -j ACCEPT
# iptables -t filter -A OUTPUT -p tcp --dport 995 -j ACCEPT

# WEBMIN
# iptables -t filter -A INPUT -p tcp --dport 10000 -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -t filter -A OUTPUT -p tcp --dport 10000 -m state --state ESTABLISHED -j ACCEPT




#******************************fin du script **************************

Supprimer une règle :
# On liste les régles avec les numeros de ligne
iptables -L --line-numbers # avec resolution de nom
iptables -L --line-numbers -n # sans resolution de nom (plus rapide)
#Si on veux supprimer la regle de la ligne de de la table OUTPUT
iptables -D OUTPUT 2

Pour activer le script IPtable des le démarrage :

*-Vous pouvez l'ajouter au démarrage :
 

cp /home/VotreNomUtilisateur/RuleFire /etc/init.d/RuleFire

 

chmod +x /etc/init.d/RuleFire

update-rc.d RuleFire defaults


*-Pour l'enlever du démarrage :

 

update-rc.d -f RuleFire remove


Bon pour être complet voici 2 tutos rapide pour installer Fail2ban et Portsentry.

Installe de Postfix:

apt-get install -f postfix mailutils

Installe ....... choix : Internet

adresse de la machine

*-test mail:
 

echo 'Salut, je suis un email.' | mail -s 'Hello world' VotreEmail@gmail.com


Tuto installer Fail2ban :
 

apt-get install -f fail2ban


*-Le configurer :

On vas créer un filtre spécial apache contre des attaque ip:
 

nano /etc/fail2ban/filter.d/apache-other-Vhost.conf


*-On change dans le code si dessous : "XXX.XXX.XXX.XXX" par l'IP de notre serveur:

Exemple : Notre IP est 192.168.1.2 donc ça donne : "failregex = 192.168.1.2:80

*-On Copie est on colle dans le fichier (apache-other-Vhost.conf)

[Definition]

failregex = XXX.XXX.XXX.XXX:80 <HOST> -.*"GET .*muieblackcat

XXX.XXX.XXX.XXX:80 <HOST> -.*"GET .*w00t

XXX.XXX.XXX.XXX:80 <HOST> -.*"GET .*mysql

XXX.XXX.XXX.XXX:80 <HOST> -.*"GET .*dbadmin

XXX.XXX.XXX.XXX:80 <HOST> -.*"GET .*myadmin

XXX.XXX.XXX.XXX:80 <HOST> -.*"GET .*MyAdmin

XXX.XXX.XXX.XXX:80 <HOST> -.*"GET .*admin

XXX.XXX.XXX.XXX:80 <HOST> -.*"GET .*php

XXX.XXX.XXX.XXX:80 <HOST> -.*"GET .*jmx-console

ignoreregex =


*-On sauve et on quitte le fichier.

*-On créer un autre fichier :
 

nano /etc/fail2ban/filter.d/apache-w00tw00t.conf


*-On colle dedans ceci :

[Definition]

failregex = ^<HOST> -.*"GET /w00tw00t.at.ISC.SANS.DFind:).*".*

ignoreregex =



*-On sauve et on quitte le fichier.

*-On configure notre fichier de configuration des "Prisons" :
 

nano /etc/fail2ban/jail.conf


*-On vas modifier des Block :

Block :

# "ignoreip" can be an IP address, a CIDR mask or a DNS host

ignoreip = 127.0.0.1/8

bantime = 7200

maxretry = 3


Liste des adresses IP de confiance à ignorer par fail2ban

*-On ajoute dans "ignoreip" notre ip a la maison si elle est fixe.

Exemple notre ip maison : 99.99.99.99 donc ::> "ignoreip = 127.0.0.1/8 99.99.99.99

On peut aussi modifié "bantime" c'est en secondes, c'est le temps de bannissement d'une Ip

"maxretry" c'est le nombre d'essais avant qu'une connexion soit banni


Block :

# Destination email address used solely for the interpolations in

# jail.{conf,local} configuration files.

destemail = monadresse@gmail.com


*-On met l'adresse mail ou l'on veut recevoir les logs (bannissement,démarrage).

Attention smtp doit etre configurer (postfix, exim4 etc).

Je vous recommande une adresse gmail, et aussi d'installer postfix et apres supprimer exim si il est installé.


Block :

# email action. Since 0.8.1 upstream fail2ban uses sendmail

# MTA for the mailing. Change mta configuration parameter to mail

# if you want to revert to conventional 'mail'.

mta = sendmail


La on change rien


Block :

# Choose default action. To change, just override value of 'action' with the

# interpolation to the chosen action shortcut (e.g. action_mw, action_mwl, etc) in jail.local

# globally (section [DEFAULT]) or per specific section

action = %(action_)s


*-On modifie pour qu'on ai ça :

action = %(action_mwl)s

Comme ça l'email sera un peut plus détaillé.

Maintenant on attaque les sections "Jails":

C'est la que l'on active les filtres qui vont tourné celon ce que l'on veut surveiller :

*-On passe de "false" à "true" celle que l'on veut activer


Block:

# JAILS

#

# Next jails corresponds to the standard configuration in Fail2ban 0.6 which

# was shipped in Debian. Enable any defined here jail by including

#

# [SECTION_NAME]

# enabled = true

# in /etc/fail2ban/jail.local.

#

# Optionally you may override any other parameter (e.g. banaction,

# action, port, logpath, etc) in that section within jail.local

[ssh]

enabled = false

port = ssh,sftp

filter = sshd

logpath = /var/log/auth.log

maxretry = 3

bantime = -1


*-On va activer le filtre ssh et modifier le "port" pour avoir celui qui correspond a votre configuration :

"enabled= true"

Exemple notre port ssh est le port 158 :

"port =158"

Donc ça donne :


[ssh]

enabled = true

port = 158

filter = sshd

logpath = /var/log/auth.log

maxretry = 3

bantime = -1



*-On vas modifier ce Block pour avoir ça :

[pam-generic]

enabled = true

# pam-generic filter can be customized to monitor specific subset of 'tty's

filter = pam-generic

# port actually must be irrelevant but lets leave it all for some possible uses

port = all

banaction = iptables-allports

port = anyport

logpath = /var/log/auth.log

maxretry = 3


*-Celui la aussi on l'active en remplaçant le "port" part notre port ssh la si 158:

[ssh-ddos]

enabled = true

port = 158

filter = sshd-ddos

logpath = /var/log/auth.log

maxretry = 3


*-Ceux la aussi on les active :

[apache]

enabled = true

port = http,https

filter = apache-auth

logpath = /var/log/apache*/*error.log

maxretry = 3



[apache-noscript]

enabled = true

port = http,https

filter = apache-noscript

logpath = /var/log/apache*/*error.log

maxretry = 3


*-On crée ceux-ci :
[apache-Vhost]

enabled = true

filter = apache-other-Vhost

action = iptables[name=Apache-other-Vhost,port=80,protocol=tcp]

logpath = /var/log/apache2/other_vhosts_access.log

maxretry = 1


[apache-w00tw00t]

enabled = true

filter = apache-w00tw00t

action = iptables[name=Apache-w00tw00t,port=80,protocol=tcp]

logpath = /var/log/apache*/*access.log

maxretry = 1



Si vous avez un ftp listé dans la liste (genre pure-ftpd, proftpd) activez le (true)

*-On active postfix si on l'utilise :

# Mail servers

[postfix]

enabled = true

port = smtp,ssmtp

filter = postfix

logpath = /var/log/mail.log




*** Voila on peut relancer fail2ban ***

 

service fail2ban restart 


Vous devez avoir ça :

[ ok ] Restarting authentication failure monitor: fail2ban.

*-Vous faites un :

 

fail2ban-client status



Et vous aurez le nombre de filtre actif.

Voila, de plus si votre service mail est bien configuré vous avez du recevoir des mail de fail2ban et des filtres démarré.

Tuto pour installer Portsentry et le configurer pour virer les tentatives de scan.

Merci a Ex_rat du site Mondedie.fr

Installe Portsentry :

 

apt-get install portsentry


*-Configuration Portsentry :

 

nano /etc/portsentry/portsentry.ignore.static


*-Modifier :

# IP du serveur (votre serveur)

x.x.x.x

# Votre IP maison si fixe par sécurité (ou mettre plage d'ip de votre FAI : ex: IP Orange 81.253.0.0/18 -86.208.0.0/16)

x.x.x.x

# Plage d'IP Google

66.249.64.0/19

*-Configuration de Portsentry 2:
 

nano /etc/portsentry/portsentry.conf


*-Cherchez ce block la :

##################

# Ignore Options #

##################

# These options allow you to enable automatic response

# options for UDP/TCP. This is useful if you just want

# warnings for connections, but don't want to react for

# a particular protocol (i.e. you want to block TCP, but

# not UDP). To prevent a possible Denial of service attack

# against UDP and stealth scan detection for TCP, you may

# want to disable blocking, but leave the warning enabled.

# I personally would wait for this to become a problem before

# doing though as most attackers really aren't doing this.

# The third option allows you to run just the external command

# in case of a scan to have a pager script or such execute

# but not drop the route. This may be useful for some admins

# who want to block TCP, but only want pager/e-mail warnings

# on UDP, etc.

#

#

# 0 = Do not block UDP/TCP scans.

# 1 = Block UDP/TCP scans.

# 2 = Run external command only (KILL_RUN_CMD)

BLOCK_UDP="0"

BLOCK_TCP="0"


*-Et mettez "1" a la place de "0":

BLOCK_UDP="1"

BLOCK_TCP="1"


*-Cherchez le Block ci dessous et verifier que devant KILL_ROUTE ce soit décommenté (pas de #) :

# Newer versions of Linux support the reject flag now. This

# is cleaner than the above option.

KILL_ROUTE="/sbin/route add -host $TARGET$ reject"


Aller au Block :

###################

# External Command#

###################

# This is a command that is run when a host connects, it can be whatever

# you want it to be (pager, etc.). This command is executed before the

# route is dropped or after depending on the KILL_RUN_CMD_FIRST option below

#

#

# I NEVER RECOMMEND YOU PUT IN RETALIATORY ACTIONS AGAINST THE HOST SCANNING

# YOU!

#

# TCP/IP is an *unauthenticated protocol* and people can make scans appear out

# of thin air. The only time it is reasonably safe (and I *never* think it is

# reasonable) to run reverse probe scripts is when using the "classic" -tcp mode.

# This mode requires a full connect and is very hard to spoof.

#

# The KILL_RUN_CMD_FIRST value should be set to "1" to force the command

# to run *before* the blocking occurs and should be set to "0" to make the

# command run *after* the blocking has occurred.


*-Et ajoutez ceci :

# Ajout de moi

KILL_RUN_CMD="/sbin/iptables -I INPUT -s $TARGET$ -j DROP && /sbin/iptables -I INPUT -s $TARGET$ -m limit --limit 3/minute --limit-burst 5 -j LOG --log-level debug --log-prefix 'Portsentry: dropping: '


*-On sauve ( Ctrl + o, enter, Ctrl + x )

*-On edite :
 

nano /etc/default/portsentry


*-On modifie le Block ainsi :

# /etc/default/portsentry

#

# This file is read by /etc/init.d/portsentry. See the portsentry.8

# manpage for details.

#

# The options in this file refer to commandline arguments (all in lowercase)

# of portsentry. Use only one tcp and udp mode at a time.

#

TCP_MODE="atcp"

UDP_MODE="audp"


Voila on vient de passer en mode automatique la detection de nos ports qui sont utilisé.

*-Un coup de :
 

service portsentry restart


et voila portsentry est démarré et fonctionne en dropant les scans


*-Pour verifier les logues de Portsentry :
 

cat /var/log/daemon.log | grep "portsentry"






******* Un ptit Merci sera Aprécié. ********

  • J'aime 5

×