3 iptables="/usr/sbin/iptables"
4 ip6tables="/usr/sbin/ip6tables"
5 network_profile="$(cat /etc/enigmabox/network-profile)"
8 [[ "$network_profile" == "alix" ]] && internal_interfaces="eth1 eth2"
9 [[ "$network_profile" == "apu" ]] && internal_interfaces="eth0 eth1"
10 [[ "$network_profile" == "raspi" ]] && internal_interfaces="eth0"
14 ################################################################################
16 ################################################################################
23 $iptables -P INPUT DROP
24 {{#if_missioncontrol}}$iptables -P OUTPUT DROP{{/if_missioncontrol}}
25 {{^if_missioncontrol}}$iptables -P OUTPUT ACCEPT{{/if_missioncontrol}}
26 $iptables -P FORWARD DROP
28 ################################################################################
29 # define interfaces + address groups
30 ################################################################################
33 $iptables -A INPUT -i lo -j ACCEPT
34 $iptables -A OUTPUT -o lo -j ACCEPT
36 $iptables -X internal-services
37 $iptables -N internal-services
38 $iptables -A internal-services -p tcp --dport 22 -j ACCEPT # ssh
39 $iptables -A internal-services -p tcp --dport 25 -j ACCEPT # smtp
40 $iptables -A internal-services -p udp --dport 53 -j ACCEPT # allow dns requests to tinyproxy
41 $iptables -A internal-services -p udp --dport 67:68 -j ACCEPT # dhcp server
42 $iptables -A internal-services -p tcp --dport 80 -j ACCEPT # webinterface
43 $iptables -A internal-services -p tcp --dport 110 -j ACCEPT # pop3
44 $iptables -A internal-services -p tcp --dport 143 -j ACCEPT # imap
45 $iptables -A internal-services -p udp --dport 5060 -j ACCEPT # voip phone
46 $iptables -A internal-services -p tcp --dport 8117 -j ACCEPT # renew notice
47 $iptables -A internal-services -p tcp --dport 8080 -j ACCEPT # grandstream phone provisioning
48 $iptables -A internal-services -p tcp --dport 8888 -j ACCEPT # tinyproxy
49 $iptables -A internal-services -p icmp -m limit --limit 10/second -j ACCEPT # icmp
51 $iptables -X internal-in
52 $iptables -N internal-in
53 for interface in $internal_interfaces; do
54 $iptables -A internal-in -i "$interface" -j internal-services
57 $iptables -X internal-out
58 $iptables -N internal-out
59 for interface in $internal_interfaces; do
60 $iptables -A internal-out -o "$interface" -j ACCEPT
63 $iptables -X peering-servers
64 $iptables -N peering-servers
66 $iptables -A peering-servers --dst {{ip}} -j ACCEPT
70 $iptables -A peering-servers --dst {{ip}} -j ACCEPT
73 ################################################################################
75 ################################################################################
78 echo 1 > /proc/sys/net/ipv4/tcp_syncookies
80 # allow related and established
81 $iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
82 $iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
84 ################################################################################
86 ################################################################################
88 # allow internal interfaces
89 $iptables -A INPUT -j internal-in
93 $iptables -A INPUT -p udp --dport {{peering_port}} -j ACCEPT
96 ################################################################################
98 ################################################################################
100 $iptables -A OUTPUT -o tun0 -j ACCEPT # that is needed for dnsmasq to make dns requests
101 $iptables -A OUTPUT -j peering-servers
102 $iptables -A OUTPUT -j internal-out # asterisk needs this
104 ################################################################################
106 ################################################################################
109 $iptables -A POSTROUTING -t nat -o tun0 -j MASQUERADE
111 for interface in $internal_interfaces; do
114 $iptables -A FORWARD -i "$interface" -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
116 # allow forwarding for internal_interfaces, but not for others
117 $iptables -A FORWARD -i "$interface" -o tun0 -j ACCEPT
118 $iptables -A FORWARD -i tun0 -o "$interface" -m state --state RELATED,ESTABLISHED -j ACCEPT
122 {{#if_display_expiration_notice}}
123 # show renew notice if subscription has expired
124 for interface in $internal_interfaces; do
125 $iptables -t nat -A PREROUTING -i "$interface" -p tcp --dport 80 -j REDIRECT --to-port 8117
127 {{/if_display_expiration_notice}}
131 ################################################################################
133 ################################################################################
135 ################################################################################
137 ################################################################################
144 $ip6tables -P INPUT DROP
145 $ip6tables -P OUTPUT DROP
146 $ip6tables -P FORWARD DROP
148 ################################################################################
149 # define interfaces + address groups
150 ################################################################################
153 $ip6tables -A INPUT -i lo -j ACCEPT
154 $ip6tables -A OUTPUT -o lo -j ACCEPT
156 $ip6tables -X internal-in
157 $ip6tables -N internal-in
158 for interface in $internal_interfaces; do
159 $ip6tables -A internal-in -i "$interface" -j ACCEPT
162 $ip6tables -X internal-out
163 $ip6tables -N internal-out
164 for interface in $internal_interfaces; do
165 $ip6tables -A internal-out -o "$interface" -j ACCEPT
168 $ip6tables -X friends-services
169 $ip6tables -N friends-services
170 $ip6tables -A friends-services -p tcp --dport 25 -j ACCEPT # smtp
171 $ip6tables -A friends-services -p tcp --dport 5060 -j ACCEPT # asterisk
172 $ip6tables -A friends-services -p udp --dport 5060 -j ACCEPT # asterisk
173 $ip6tables -A friends-services -p udp -m udp --dport 10000:20000 -j ACCEPT # rtp
174 $ip6tables -A friends-services -p ipv6-icmp -m limit --limit 10/second -j ACCEPT # icmp
176 $ip6tables -X friends-in
177 $ip6tables -N friends-in
179 $ip6tables -A friends-in -i tun0 --src {{ipv6}} -j friends-services
182 ################################################################################
184 ################################################################################
186 # allow related and established
187 $ip6tables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
188 $ip6tables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
191 $ip6tables -A INPUT -p ipv6-icmp -m limit --limit 10/second -j internal-in
193 ################################################################################
195 ################################################################################
198 $ip6tables -A INPUT -j friends-in
200 {{#if_global_availability}}
202 $ip6tables -A INPUT -i tun0 -p ipv6-icmp -m limit --limit 10/second -j ACCEPT
204 # allow calls from everyone
205 $ip6tables -A INPUT -i tun0 -p tcp --dport 5060 -j ACCEPT
206 $ip6tables -A INPUT -i tun0 -p udp --dport 5060 -j ACCEPT
208 # RTP - the media stream
209 # (related to the port range in /etc/asterisk/rtp.conf)
210 $ip6tables -A INPUT -i tun0 -p udp -m udp --dport 10000:20000 -j ACCEPT
212 # allow emails from everyone
213 $ip6tables -A INPUT -i tun0 -p tcp --dport 25 -j ACCEPT
214 {{/if_global_availability}}
216 {{#if_teletext_enabled}}
218 $ip6tables -A INPUT -i tun0 -p tcp --dport 3838 -j ACCEPT
219 #$ip6tables -A INPUT -i tun0 -p tcp --sport 3838 -j ACCEPT - test that
220 {{/if_teletext_enabled}}
222 {{#if_webserver_enabled}}
224 $ip6tables -A INPUT -i tun0 -p tcp --dport 80 -j ACCEPT
225 {{/if_webserver_enabled}}
227 # allow webserver access from LAN
228 $ip6tables -A INPUT -p tcp --dport 80 -j internal-in
230 ################################################################################
232 ################################################################################
234 # allow OUTPUT for tun0
235 $ip6tables -A OUTPUT -o tun0 -j ACCEPT
237 # allow router advertisements
238 #$ip6tables -A OUTPUT -p ipv6-icmp -j internal-out
240 ################################################################################
242 ################################################################################
245 $ip6tables -A POSTROUTING -t nat -o tun0 -j MASQUERADE
247 for interface in $internal_interfaces; do
250 $ip6tables -A FORWARD -i "$interface" -o tun0 -j ACCEPT
251 $ip6tables -A FORWARD -i tun0 -o "$interface" -m state --state RELATED,ESTABLISHED -j ACCEPT