#!/bin/sh
#eth0=local
#eth1=internet
#################################################################################
# initialisation des règles #
#################################################################################
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
ip6tables -F
ip6tables -X
ip6tables -Z
ip6tables -P INPUT DROP
ip6tables -P OUTPUT DROP
ip6tables -P FORWARD DROP
ip6tables -A INPUT -i lo -j ACCEPT
ip6tables -A OUTPUT -o lo -j ACCEPT
#################################################################################
# paramètres noyau #
#################################################################################
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
echo 0 > /proc/sys/net/ipv4/tcp_ecn
#################################################################################
# trafic local et lo #
#################################################################################
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A OUTPUT -o eth0 -j ACCEPT
iptables -A INPUT -i lo0 -j ACCEPT
iptables -A OUTPUT -o lo0 -j ACCEPT
#################################################################################
# NAT et état NAT connecté #
#################################################################################
iptables -A POSTROUTING -t nat -o eth1 -j MASQUERADE
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISH -j ACCEPT
#################################################################################
# état connecté internet <-> serveur #
#################################################################################
iptables -A INPUT -m state --state RELATED,ESTABLISH -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISH -j ACCEPT
#################################################################################
# initiation trafic internet -> serveur #
#################################################################################
iptables -A INPUT -p icmp -m limit --limit 2/s -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 1006 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p udp --dport 7777 -j ACCEPT
iptables -A INPUT -p udp --dport 7778 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 7779 -j ACCEPT
#################################################################################
# initiation trafic serveur -> internet #
#################################################################################
iptables -A OUTPUT -p icmp -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p udp --dport 123 -j ACCEPT