salut!
j’ai un serveur web monté derrière un firewall iptables et squid3 transparent
internet–>routeur(192.168.0.1)–>eth1(192.168.0.2)firewall(eth0)(192.168.1.1)—>eth0(192.168.1.2)serveur web
comment le mettre accessible depuis internet
voici config routeur
et iptables
[code]
#!/bin/sh
INTERNET=eth1
LAN=eth0
INTERNET_IP=192.168.0.1
LAN_IP=192.168.1.2
LAN_NETWORK=192.168.1.0/24
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -s $LAN_NETWORK -j ACCEPT
iptables -A OUTPUT -d $LAN_NETWORK -j ACCEPT
On refuse certaines requetes
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 -p udp --dport 33434:33523 -j DROP
iptables -A OUTPUT -p tcp --dport telnet -j DROP
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
On autorise le PC a faire des pings sur des IP externes et à répondre aux requêtes “ping”
On autorise les pings
iptables -A OUTPUT -p icmp --icmp-type 8 -s $INTERNET_IP -d 0/0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 0 -s 0/0 -d $INTERNET_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
#Flood TCP&UDP
iptables -A INPUT -i $INTERNET -p tcp --syn -m limit --limit 3/s -j ACCEPT
iptables -A INPUT -i $INTERNET -p udp -m limit --limit 10/s -j ACCEPT
iptables -A INPUT -i $INTERNET -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -i $INTERNET -p icmp --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT
On accepte la sortie de certains protocoles
iptables -A OUTPUT -o $INTERNET -p UDP --dport domain -j ACCEPT # Port 53 (DNS)
iptables -A OUTPUT -o $INTERNET -p TCP --dport domain -j ACCEPT # Port 53 (DNS)
iptables -A OUTPUT -o $INTERNET -p TCP --dport http -j ACCEPT # Port 80 (Http)
iptables -A OUTPUT -o $INTERNET -p TCP --dport https -j ACCEPT # Port 443 (Https)
iptables -A OUTPUT -o $INTERNET -p TCP --dport pop3 -j ACCEPT # Port 110 (Pop3)
iptables -A OUTPUT -o $INTERNET -p TCP --dport 993 -j ACCEPT # Port 993 (auth.SSL)
iptables -A OUTPUT -o $INTERNET -p TCP --dport 995 -j ACCEPT # Port 995 (auth.SSL)
iptables -A OUTPUT -o $INTERNET -p TCP --dport smtp -j ACCEPT # Port 25 (Smtp)
iptables -A OUTPUT -o $INTERNET -p TCP --dport ftp-data -j ACCEPT # Port 20 (Ftp Data)
iptables -A OUTPUT -o $INTERNET -p TCP --dport ftp -j ACCEPT # Port 21 (Ftp)
iptables -A OUTPUT -o $INTERNET -p TCP --dport 1863 -j ACCEPT #PORT 1863 (MSN)
On autorise les connexions deja etablies a entrer
iptables -A INPUT -i $INTERNET --match state --state ESTABLISHED,RELATED -j ACCEPT
Ignore ‘ICMP Redirects’ message
echo “0” > /proc/sys/net/ipv4/conf/all/accept_redirects
Ignore ‘ICMP Echo Request’ message
echo “1” > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo “1” > /proc/sys/net/ipv4/icmp_echo_ignore_all
Ignore ‘ICMP Bogus Response’ message
echo “1” > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
Interdire ‘Source Routing’
echo “0” > /proc/sys/net/ipv4/conf/all/accept_source_route
Surveiller ‘martians’ (adresse source falsifée ou non routable)
echo “1” > /proc/sys/net/ipv4/conf/all/log_martians
Se protéger de l’IP Spoofing bis
echo “1” > /proc/sys/net/ipv4/conf/all/rp_filter
Se protéger des attaques ‘SYN Flood’
echo “1” > /proc/sys/net/ipv4/tcp_syncookies
#forward
echo “1” > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
#squid
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
REJECT all other traffic
iptables -A INPUT -j LOG --log-prefix "iptables: "
iptables -A INPUT -j REJECT[/code]