Firewall + SSH Connexion PHP

32284
,

Bonjour,

Voilà j'ai deux petits problème, voici donc le premier:

Depuis très longtemps j'ai développé ce petit firewall pour protégé ma machine et mes serveurs de jeux des attaques trop "faciles". Le problème c'est que dès que je l'active, tout fonctionne mis à part le payement via PayPal (paypal checkout). Logiquement le port concerné est 443 (il est ouvert) mais les joueurs n'arrivent pas à obtenir leurs points (or moi j'obtiens leur argent). Voici mon par-feu:

#!/bin/sh

### BEGIN INIT INFO
# Provides:          firewall
# Required-Start:    networking
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Par-feu Linux
# Description:       Par-feu linux pour réduire les attaques courtantes
### END INIT INFO

# Remet à zéro les règles du par-feu
iptables -F
iptables -X

# Bloque tout le trafic
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

# Ne casse pas les connexions établies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Autorise localhost
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Verifie que le serveur est accessible
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT

# SSH
iptables -A INPUT -p tcp --dport 29313 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 29313 -j ACCEPT

# Mail SMTP
#iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT

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

# PayPal
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT

# Relation site/server
iptables -t filter -A INPUT -p tcp --dport 65410 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 65410 -j ACCEPT

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

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

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

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

# ------------------------- CONFIGURATION DES SERVEURS -------------------------
# ------------------------- CONFIGURATION DES SERVEURS -------------------------
# ------------------------- CONFIGURATION DES SERVEURS -------------------------

# Serveur BungeeCord essentiels
iptables -A INPUT -p tcp --dport 24965 -j ACCEPT # Bungee
iptables -A INPUT -p tcp --dport 24970 -j ACCEPT # Auth
iptables -A INPUT -p tcp --dport 24978 -j ACCEPT # Lobby
iptables -A INPUT -p tcp --dport 24981 -j ACCEPT # Faction
iptables -A INPUT -p tcp --dport 24999 -j ACCEPT # Training
iptables -A INPUT -p tcp --dport 25010 -j ACCEPT # Jeu

# Crée une catégorie pour Bungeecord
iptables -N bungee

# Adresse IP autorisées par BungeeCord
iptables -A bungee --src 151.80.109.131 -j ACCEPT
iptables -A bungee --src 0.0.0.0 -j ACCEPT
iptables -A bungee --src 127.0.0.1 -j ACCEPT

# Bloque toutes les autres adresses IP
iptables -A bungee -j DROP

# Port inaccessible sans BungeeCord
iptables -I INPUT -m tcp -p tcp --dport 24978 -j bungee
iptables -I INPUT -m tcp -p tcp --dport 24981 -j bungee
iptables -I INPUT -m tcp -p tcp --dport 24999 -j bungee
iptables -I INPUT -m tcp -p tcp --dport 25010 -j bungee

# Autoriser MYSQL distant
iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT

# ------------------------- CONFIGURATION DU TEAMSPEAK -------------------------
# ------------------------- CONFIGURATION DU TEAMSPEAK -------------------------
# ------------------------- CONFIGURATION DU TEAMSPEAK -------------------------

# Serveur Teamspeak
iptables -A INPUT -p tcp --dport 30033 -j ACCEPT
iptables -A INPUT -p tcp --dport 10011 -j ACCEPT
iptables -A INPUT -p udp --dport 9987 -j ACCEPT

# ------------------------ CONFIGURATION DE LA LISTE NOIRE ------------------------
# ------------------------ CONFIGURATION DE LA LISTE NOIRE ------------------------
# ------------------------ CONFIGURATION DE LA LISTE NOIRE ------------------------

# Liste noire des IP à bannir (booters)
iptables -A INPUT -s 239.192.145.229 -j DROP
iptables -A INPUT -s 185.13.36.49 -j DROP
iptables -A INPUT -s 185.13.36.45 -j DROP
iptables -A INPUT -s 185.13.36.46 -j DROP
iptables -A INPUT -s 185.13.36.57 -j DROP
iptables -A INPUT -s 5.39.71.18 -j DROP
iptables -A INPUT -s 144.0.0.22 -j DROP

# Liste noire des IP à bannir (VPN)
iptables -A INPUT -s 67.221.255.0/32 -j DROP
iptables -A INPUT -s 68.68.99.0/32 -j DROP
iptables -A INPUT -s 79.141.167.0/32 -j DROP
iptables -A INPUT -s 79.141.166.0/32 -j DROP
iptables -A INPUT -s 79.141.165.0/32 -j DROP
iptables -A INPUT -s 79.141.172.0/32 -j DROP
iptables -A INPUT -s 79.141.162.0/32 -j DROP
iptables -A INPUT -s 79.141.173.0/32 -j DROP
iptables -A INPUT -s 79.141.164.0/32 -j DROP
iptables -A INPUT -s 79.141.161.0/32 -j DROP
iptables -A INPUT -s 79.141.170.0/32 -j DROP
iptables -A INPUT -s 79.141.160.0/32 -j DROP
iptables -A INPUT -s 84.19.165.0/32 -j DROP
iptables -A INPUT -s 84.19.169.0/32 -j DROP
iptables -A INPUT -s 95.141.28.0/32 -j DROP
iptables -A INPUT -s 95.141.26.0/32 -j DROP
iptables -A INPUT -s 95.141.27.0/32 -j DROP
iptables -A INPUT -s 95.141.31.0/32 -j DROP
iptables -A INPUT -s 93.114.44.0/32 -j DROP
iptables -A INPUT -s 93.114.43.0/32 -j DROP
iptables -A INPUT -s 193.109.199.0/32 -j DROP
iptables -A INPUT -s 217.114.211.0/32 -j DROP
iptables -A INPUT -s 203.98.92.0/32 -j DROP
iptables -A INPUT -s 5.254.97.0/32 -j DROP

# Relance Fail2Ban (protection du site, SSH, FTP, ...)
service fail2ban restart

# Liste noir des IP à bannir (utilisateurs)

Le second problème c'est que dans mon panel admin, j'utilise " ssh2_connect " pour pouvoir me connecter à ma machine. Mais du coup, dans le code il y a en clair le mot de passe de ma machine. J'aimerais savoir s'il n'y aurait pas une méthode plus sûre afin de le cacher (sachant que la machine cible est la même que celle où est hébergé le site web). Je suis tombé sur ceci: http://php.net/manual/fr/function.ssh2-auth-pubkey-file.php mais il y avait toujours des erreurs peu importe les codes différents et les clés que je créais. J'ai regardé les commentaires présents sur le lien, et je suis tombé sur ceci (premier commentaire remonté):

This function has a known bug (https://bugs.php.net/bug.php?id=58573) under some Linux installations: you can't encrypt your private key if you've compiled libssh2 using libgcrypt. According to the bug page, the solution is to rebuild libssh2 with OpenSSL. (Or don't encrypt your private key, but that seems irresponsible somehow.) This isn't a bug report -- the bug is apparently already being fixed -- but a note for others, because it took me at least an hour of Googling to realize the problem wasn't with my own code.

Par conséquent, je ne vois pas trop comment faire car là, je ne comprends par contre pas n'étant plus " deux petites commandes " à entrer dans le terminal. Il faut carrément "rebuild libss2"... auriez-vous une idée ?

Merci d'avance pour toutes vos idées,
Coordialement,

1 Réponse

26524
,

As tu tester de mettre tcp ET udp pour le 443 ?