iptables firewall/router

lano

Well-Known Member
c-b Experte
#1
Moin.

Ich habe einen Router.
Der hat an der Wan Schnittstelle (eth0) die ip 192.168.2.20/24
Auf der Lan Seite hat er mehrere Schnittstellen (ppp+)
Außerdem läuft auf dem Rechner einiges an Diensten die sowohl von Lan wie auch von Wan Seite erreichbar sein sollen.

Ich hab da mal versucht, funktioniert aber nich.

Bash:
#!/bin/bash

printf "Initializing firewall ...\n"

WAN=eth0

## FLUSHING / CLEANING UP EARLIER RULES
iptables -t nat -F POSTROUTING
iptables -t nat -F PREROUTING
iptables -t nat -F OUTPUT
iptables -t nat -F
iptables --delete-chain
iptables -F

## RULES
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

printf "Setting up firewall rules ...\n"

### Basic rules ###

## ENABLE MASQUERADE AND FORWARDING
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

# Accepts all established inbound connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allows all outbound traffic
iptables -A OUTPUT -j ACCEPT

# Allow ping
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# log iptables denied calls (access via 'dmesg' command)
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7


### Custom rules ###

# Allows HTTP and HTTPS connections from anywhere
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# Allows SSH connections
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

# PPPOE
iptables -A INPUT -i ppp+ -j ACCEPT

# Bind
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT

# smtp
iptables -A INPUT -p tcp --dport 25 -j ACCEPT

# pop3
iptables -A INPUT -p tcp --dport 110 -j ACCEPT

# imap
iptables -A INPUT -p tcp --dport 143 -j ACCEPT

#ftp
#iptables -A INPUT -p tcp --dport 21 -j ACCEPT

# SIP on UDP port 5060. Other SIP servers may need TCP port 5060 as well
iptables -A INPUT -p udp -m udp --dport 5060 -j ACCEPT

# IAX2- the IAX protocol
iptables -A INPUT -p udp -m udp --dport 4569 -j ACCEPT

# IAX - most have switched to IAX v2, or ought to
iptables -A INPUT -p udp -m udp --dport 5036 -j ACCEPT

# RTP - the media stream
iptables -A INPUT -p udp -m udp --dport 10000:10100 -j ACCEPT

# MGCP - if you use media gateway control protocol in your configuration
iptables -A INPUT -p udp -m udp --dport 2727 -j ACCEPT

# Reject all other inbound
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT


echo 1 > /proc/sys/net/ipv4/ip_forward
printf "Firewall is now configured and active!\n"

Ich weis da selbst nicht so wirklich was ich da versuche aber ich hoffe das was ich mir so vorgestellt hab wird irgendwie ein wenig deutlich :)
 

lano

Well-Known Member
c-b Experte
#3
Von den ppp Verbindungen wollte nix funktionieren.

Mittlerweile klappt es eigentlich. Bis auf das Asterisk routing.

Ich hab da mal nen bisschen Übersichtlicher:
Bash:
#!/bin/bash

printf "Initializing firewall ...\n"

## FLUSHING / CLEANING UP EARLIER RULES
iptables -F
iptables -X
iptables -Z

## RULES
iptables -N TCP
iptables -N UDP

iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP

iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

iptables -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT

iptables -A INPUT -m limit --limit 5/m --limit-burst 7 -j LOG --log-prefix '** HACKERS **' --log-level 4

iptables -A INPUT -p udp -m conntrack --ctstate NEW -j UDP
iptables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP

iptables -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset

iptables -A INPUT -j REJECT --reject-with icmp-proto-unreachable


printf "Setting up firewall rules ...\n"

### Basic rules ###

# SSH
iptables -A TCP -p tcp --dport 22 -j ACCEPT

# HTTP
iptables -A TCP -p tcp --dport 80 -j ACCEPT

# HTTPS
iptables -A TCP -p tcp --dport 443 -j ACCEPT

# DNS
iptables -A UDP -p udp --dport 53 -j ACCEPT
iptables -A TCP -p tcp --dport 53 -j ACCEPT

# POP
iptables -A TCP -p tcp --dport 110 -j ACCEPT

# SMTP
iptables -A TCP -p tcp --dport 25 -j ACCEPT

# SQUID
iptables -A TCP -p tcp --dport 3128 -j ACCEPT

# SIP
iptables -A UDP -p udp --dport 5060 -j ACCEPT

# SIP
iptables -A UDP -p udp --dport 4569 -j ACCEPT

# SIP
iptables -A UDP -p udp --dport 5036 -j ACCEPT

# SIP
iptables -A UDP -p udp --dport 10000:10100 -j ACCEPT

# SIP
iptables -A UDP -p udp --dport 2727 -j ACCEPT

# IRC
iptables -A TCP -p tcp --dport 6667 -j ACCEPT

# ntop
iptables -A TCP -p tcp --dport 9981 -j ACCEPT



### Custom rules ###

iptables -N fw-interfaces
iptables -N fw-open

iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -j fw-interfaces
iptables -A FORWARD -j fw-open

iptables -A FORWARD -j REJECT --reject-with icmp-host-unreachable
iptables -P FORWARD DROP

# Keine Ahnung
iptables -A fw-interfaces -i ppp+ -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE
#iptables -A fw-interfaces -i eth0 -j ACCEPT
#iptables -t nat -A POSTROUTING -s 10.3.0.0/16 -o ppp0 -j MASQUERADE

# HTTP
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.2.20
iptables -A fw-open -d 192.168.2.20 -p tcp --dport 80 -j ACCEPT

# HTTPS
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 192.168.2.20
iptables -A fw-open -d 192.168.2.20 -p tcp --dport 443 -j ACCEPT

# DNS
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 53 -j DNAT --to 192.168.2.20
iptables -A fw-open -d 192.168.2.20 -p udp --dport 53 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 53 -j DNAT --to 192.168.2.20
iptables -A fw-open -d 192.168.2.20 -p tcp --dport 53 -j ACCEPT

# POP
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 110 -j DNAT --to 192.168.2.20
iptables -A fw-open -d 192.168.2.20 -p tcp --dport 110 -j ACCEPT

# SMTP
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 192.168.2.20
iptables -A fw-open -d 192.168.2.20 -p tcp --dport 25 -j ACCEPT

# SIP on UDP port 5060.
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 5060 -j DNAT --to 192.168.2.20
iptables -A fw-open -d 192.168.2.20 -p udp --dport 5060 -j ACCEPT

# IAX2- the IAX protocol
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 4569 -j DNAT --to 192.168.2.20
iptables -A fw-open -d 192.168.2.20 -p udp --dport 4569 -j ACCEPT

# IAX - most have switched to IAX v2, or ought to
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 5036 -j DNAT --to 192.168.2.20
iptables -A fw-open -d 192.168.2.20 -p udp --dport 5036 -j ACCEPT

# RTP - the media stream
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 10000:10100 -j DNAT --to 192.168.2.20
iptables -A fw-open -d 192.168.2.20 -p udp --dport 10000:10100 -j ACCEPT

# MGCP - if you use media gateway control protocol in your configuration
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 2727 -j DNAT --to 192.168.2.20
iptables -A fw-open -d 192.168.2.20 -p udp --dport 2727 -j ACCEPT

# Tinc TCP Port 655
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 655 -j DNAT --to 192.168.2.20
iptables -A fw-open -d 192.168.2.20 -p tcp --dport 655 -j ACCEPT

# Tinc TCP Port 655
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6667 -j DNAT --to 192.168.2.20
iptables -A fw-open -d 192.168.2.20 -p tcp --dport 6667 -j ACCEPT

# Tinc TCP Port 655
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 9981 -j DNAT --to 192.168.2.20
iptables -A fw-open -d 192.168.2.20 -p tcp --dport 9981 -j ACCEPT


echo 1 > /proc/sys/net/ipv4/ip_forward
printf "Firewall is now configured and active!\n"
Dazu hab ich Grundlegende Fragen.

Mit
Code:
# SSH
iptables -A TCP -p tcp --dport 22 -j ACCEPT
Erlaube ich doch Port 22 an allen Schnittstellen

Mit
Code:
# POP
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 110 -j DNAT --to 192.168.2.20
iptables -A fw-open -d 192.168.2.20 -p tcp --dport 110 -j ACCEPT
Was mach en die zwei Sachen jetzt genau.

Wenn ich mir das anschaue wo die Pakete lang gehen sieht das irgendwie komisch aus.
 

DJFelipe

Well-Known Member
c-b Experte
#4
Naja du schiebst 2 neue Rules in die Firewall (1x NAT direkt und 1x eine eigene Tabelle fw-open). Beide adressieren die Pakete an die 192.168.2.20 zum Port 110...
Wenn ich die help von IPTables verstehe, besteht der unterschied zwischen -t und -A darin, das du bei -t eine Tabelle editierst, bei -A fügst du nur Einträge in eine Chain hinzu.
 

lano

Well-Known Member
c-b Experte
#5
Mein Ziel ist es irgendwie die Ports auf der Maschine zu erlauben und ggf welche zu einer anderen ip und port weiter zu leiten.

Ist das da dann jetzt nicht doppelt gemoppelt?
 
Oben