J'ai également mon propre serveur ftp/web... et j'ai un script qui s'occupe des règles du firewall. Je n'explique pas trop car j'ai du mal avec iptables et les firewall.
Voici mon script :
#!/bin/sh
WAN="eth1"
LAN="eth0"
IP_LAN="192.168.0.0/24"
firewall_start() {
# Initialisation de la table filter
iptables -F
iptables -X
# Politique par défaut de la table filter
# On ignore tout ce qui entre ou transite par la passerelle
iptables -P INPUT DROP
iptables -P FORWARD DROP
# On accepte, ce qui sort
iptables -P OUTPUT ACCEPT
# Pour éviter les mauvaises suprises, on va
# autoriser l'accès à la loopback, c'est vital !
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# On autorise les clients à accéder à internet
# On créé une nouvelle chaîne, le nom est indifférent
# appelons-la "local-internet"
iptables -N local-internet
# On définit le profil de ceux qui appartiendront à "local-internet"
# "local-internet" concerne toutes les connections sauf celles venant d'internet ( ! = non)
# En gros avec ça, vous rendez, vos serveurs inaccessibles depuis internet.
# Pas de panique, certains serveurs seront autorisés explicitement dans la suite.
iptables -A local-internet -m state --state NEW -i ! $WAN -j ACCEPT
# Evidemment, une fois acceptées comme "local-internet", les connections peuvent continuer
# et faire des petits :-)
iptables -A local-internet -m state --state ESTABLISHED,RELATED -j ACCEPT
# On termine en indiquant que les connections appartenant à "local-internet"
# accèdent à internet de manière transparente.
iptables -A INPUT -j local-internet
iptables -A FORWARD -j local-internet
# A ce stade, tous vos clients du réseau local et de la passerelle ont accès à internet. Mieux,
# vos clients du réseau local, ont accès à vos serveurs apache, proftp ... localement. Mais personne
# depuis internet ne peux accéder à l'un des serveurs que vous hébergés.
# Il est bien-sûr possible de déverrouiller pontuellement l'accès à un serveur depuis internet,
# en décommentant les 2 ou 3 lignes correspondantes.
########### ACTIVATION DES SERVEURS SUR INTERNET ##############
# autorisation du serveur ftp(20 et 21) ...
#iptables -A INPUT -p tcp --dport ftp-data -j ACCEPT
iptables -A INPUT -p tcp --dport ftp -j ACCEPT
# autorisation du serveur ssh(22) ...
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
# autorisation du serveur smtp(25) ...
#iptables -A INPUT -p tcp --dport smtp -j ACCEPT
# autorisation du serveur http(80) ...
iptables -A INPUT -p tcp --dport www -j ACCEPT
# autorisation du serveur ntp(123) ...
#iptables -A INPUT -p tcp --dport 123 -j ACCEPT
# autorisation du serveur https(443) ...
#iptables -A INPUT -p tcp --dport https -j ACCEPT
# autorisation du serveur DNS(53) ...
#iptables -A INPUT -p udp --dport domain -j ACCEPT
#iptables -A INPUT -p tcp --dport domain -j ACCEPT
# autorisation du serveur irc(6667) ...
#iptables -A INPUT -p tcp --dport ircd -j ACCEPT
# autorisation du serveur cvs (2401) ...
#iptables -A INPUT -p tcp --dport cvspserver -j ACCEPT
# autorisation du serveur tor (9001)...
#iptables -A INPUT -p tcp --dport 9001 -j ACCEPT
}
# Mon script
Posté par Thomas Bourdon . En réponse au message Serveur FTP VsFTP et Configuration de iptables. Évalué à 0.
J'ai également mon propre serveur ftp/web... et j'ai un script qui s'occupe des règles du firewall. Je n'explique pas trop car j'ai du mal avec iptables et les firewall.
Voici mon script :
#!/bin/sh
WAN="eth1"
LAN="eth0"
IP_LAN="192.168.0.0/24"
firewall_start() {
# Initialisation de la table filter
iptables -F
iptables -X
# Politique par défaut de la table filter
# On ignore tout ce qui entre ou transite par la passerelle
iptables -P INPUT DROP
iptables -P FORWARD DROP
# On accepte, ce qui sort
iptables -P OUTPUT ACCEPT
# Pour éviter les mauvaises suprises, on va
# autoriser l'accès à la loopback, c'est vital !
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# On autorise les clients à accéder à internet
# On créé une nouvelle chaîne, le nom est indifférent
# appelons-la "local-internet"
iptables -N local-internet
# On définit le profil de ceux qui appartiendront à "local-internet"
# "local-internet" concerne toutes les connections sauf celles venant d'internet ( ! = non)
# En gros avec ça, vous rendez, vos serveurs inaccessibles depuis internet.
# Pas de panique, certains serveurs seront autorisés explicitement dans la suite.
iptables -A local-internet -m state --state NEW -i ! $WAN -j ACCEPT
# Evidemment, une fois acceptées comme "local-internet", les connections peuvent continuer
# et faire des petits :-)
iptables -A local-internet -m state --state ESTABLISHED,RELATED -j ACCEPT
# On termine en indiquant que les connections appartenant à "local-internet"
# accèdent à internet de manière transparente.
iptables -A INPUT -j local-internet
iptables -A FORWARD -j local-internet
# Initialisation des tables nat et mangle
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
# Mise en place du masquerading
iptables -t nat -A POSTROUTING -s $IP_LAN -o $WAN -j MASQUERADE
# Activation de la passerelle
echo 1 > /proc/sys/net/ipv4/ip_forward
# Pas de spoofing
if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ] ; then
for filtre in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo 1 > $filtre
done
fi
# Pas de synflood
if [ -e /proc/sys/net/ipv4/tcp_syncookies ] ; then
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
fi
# Pas ping
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
if [ -e /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses ] ; then
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
fi
# Proxy Transparent
#iptables -t nat -A PREROUTING -i $IP_LAN -p tcp --dport 80 -j REDIRECT --to-port 3128
# A ce stade, tous vos clients du réseau local et de la passerelle ont accès à internet. Mieux,
# vos clients du réseau local, ont accès à vos serveurs apache, proftp ... localement. Mais personne
# depuis internet ne peux accéder à l'un des serveurs que vous hébergés.
# Il est bien-sûr possible de déverrouiller pontuellement l'accès à un serveur depuis internet,
# en décommentant les 2 ou 3 lignes correspondantes.
########### ACTIVATION DES SERVEURS SUR INTERNET ##############
# autorisation du serveur ftp(20 et 21) ...
#iptables -A INPUT -p tcp --dport ftp-data -j ACCEPT
iptables -A INPUT -p tcp --dport ftp -j ACCEPT
# autorisation du serveur ssh(22) ...
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
# autorisation du serveur smtp(25) ...
#iptables -A INPUT -p tcp --dport smtp -j ACCEPT
# autorisation du serveur http(80) ...
iptables -A INPUT -p tcp --dport www -j ACCEPT
# autorisation du serveur ntp(123) ...
#iptables -A INPUT -p tcp --dport 123 -j ACCEPT
# autorisation du serveur https(443) ...
#iptables -A INPUT -p tcp --dport https -j ACCEPT
# autorisation du serveur DNS(53) ...
#iptables -A INPUT -p udp --dport domain -j ACCEPT
#iptables -A INPUT -p tcp --dport domain -j ACCEPT
# autorisation du serveur irc(6667) ...
#iptables -A INPUT -p tcp --dport ircd -j ACCEPT
# autorisation du serveur cvs (2401) ...
#iptables -A INPUT -p tcp --dport cvspserver -j ACCEPT
# autorisation du serveur tor (9001)...
#iptables -A INPUT -p tcp --dport 9001 -j ACCEPT
}
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
}
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