# Tun die Iptables das, was ich möchte?

## chilla

Hallo, 

ich habe hier einen Vserver von Hosteurope. Der Vserver macht ein OpenVPN auf. Ausserdem soll der installierte Samba ausschliesslich über das vpn erreichbar sein. Hierfür habe ich ihm folgendes in die config geschrieben:

```
   interfaces = 10.8.0.0/24 tun0

   bind interfaces only = true
```

Problem: netstat sagt immernoch, dass nmbd auf * lauscht und nicht nur auf das OpenVPN Netz.

```
Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

tcp        0      0 *:ssh                   *:*                     LISTEN     5481/sshd

tcp        0      0 10.8.0.1:microsoft-ds   *:*                     LISTEN     22046/smbd

tcp        0      0 10.8.0.1:netbios-ssn    *:*                     LISTEN     22046/smbd

udp        0      0 10.8.0.1:netbios-ns     *:*                                22044/nmbd

udp        0      0 *:netbios-ns            *:*                                22044/nmbd

udp        0      0 10.8.0.1:netbios-dgm    *:*                                22044/nmbd

udp        0      0 *:netbios-dgm           *:*                                22044/nmbd

udp        0      0 *:openvpn               *:*                                14333/openvpn
```

Weiss jemand, woran das liegen könnte? 

Wie dem auch sei, absichern möchte ich das Ding sowieso. Daher meine Anforderung: 

1. SSH-Verbindungen sollen mit dem Server gemacht werden können, und er soll auch raus sshen können.

2. Openvpn-Verbindungen sollen mit dem Server gemachtwerden können. 

3. Der Server soll pingen können und anpingbar sein. 

4. Im VPN-Netz ist alles erlaubt. (device tun0)

5. Alles andere soll verboten werden. 

Habe ich hierfür die richtigen IPtables anweisungen? Oder habe ich was vergessen? Ist hierbei generell eine krasse Sicherheitslücke?

Vielen Dank schonmal

```

Chain INPUT (policy DROP 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

    0     0 ACCEPT     0    --  lo     any     anywhere             anywhere

    0     0 ACCEPT     0    --  tun0   any     anywhere             anywhere

  410 32413 ACCEPT     0    --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED

    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:ssh state NEW

    0     0 ACCEPT     udp  --  any    any     anywhere             anywhere            udp dpt:openvpn

    0     0 ACCEPT     icmp --  any    any     anywhere             anywhere

    0     0 DROP       0    --  any    any     anywhere             anywhere

Chain FORWARD (policy DROP 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy DROP 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

    0     0 ACCEPT     0    --  any    lo      anywhere             anywhere

    0     0 ACCEPT     0    --  any    tun0    anywhere             anywhere

  322 58190 ACCEPT     0    --  any    any     anywhere             anywhere            state NEW,RELATED,ESTABLISHED

    0     0 ACCEPT     udp  --  any    any     anywhere             anywhere            udp spt:openvpn

    0     0 ACCEPT     icmp --  any    any     anywhere             anywhere

```

Das Skript dafür: 

```

#!/bin/sh

# Drop ICMP echo-request messages sent to broadcast or multicast addresses

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Drop source routed packets

echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route

# Enable TCP SYN cookie protection from SYN floods

echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# Don't accept ICMP redirect messages

echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects

# Don't send ICMP redirect messages

echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects

# Enable source address spoofing protection

echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter

# Log packets with impossible source addresses

echo 1 > /proc/sys/net/ipv4/conf/all/log_martians

#Flush all chains

/sbin/iptables --flush

# Allow unlimited traffic on the loopback interface

/sbin/iptables -A INPUT -i lo -j ACCEPT

/sbin/iptables -A OUTPUT -o lo -j ACCEPT

# Allow unlimited traffic on the OpenVPN interface

/sbin/iptables -A INPUT -i tun0 -j ACCEPT

/sbin/iptables -A OUTPUT -o tun0 -j ACCEPT

# Set default policies

/sbin/iptables --policy INPUT DROP

/sbin/iptables --policy OUTPUT DROP

/sbin/iptables --policy FORWARD DROP

# Previously initiated and accepted exchanges bypass rule checking

# Allow unlimited outbound traffic

/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

/sbin/iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Allow incoming TCP port 22 (ssh) traffic

/sbin/iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT

# Allow incoming and outgoing OpenVPN

/sbin/iptables -A INPUT -p udp --dport openvpn -j ACCEPT

/sbin/iptables -A OUTPUT -p udp --sport openvpn -j ACCEPT

# Allow incoming and outgoing Icmp

/sbin/iptables -A INPUT -p icmp -j ACCEPT

/sbin/iptables -A OUTPUT -p icmp -j ACCEPT

# Drop all other traffic

/sbin/iptables -A INPUT -j DROP 
```

----------

## misterjack

Samba hat auf einem öffentlichen Server nichts verloren. Dafür gibts ssh, scp/winscp.

Edit: +öffentlichen

----------

## bell

```
Chain OUTPUT (policy DROP 0 packets, 0 bytes) 

[..]

  322 58190 ACCEPT     0    --  any    any     anywhere             anywhere            state NEW,RELATED,ESTABLISHED

[..]
```

Dein Server selbst darf im Internet alles machen. Ist es so beabsichtigt? In der Anforderung steht, er soll nur pingen können.

Wenn beabsichtigt, dann kannst Du dir die anderen OUTPUT Regeln sparen, da diese Regel alles erlaubt.

----------

## chilla

 *misterjack wrote:*   

> Samba hat auf einem Server nichts verloren. Dafür gibts ssh, scp/winscp.

 

Auf einem Server? Klar läuft ein serverdienst auf einem Server. Ich bin nur dahinter, dass der samba keinesfalls öffentlich erreichbar ist, sondern nur im privaten netz (in diesem falle im vpn), so wie es sich gehört.

 *Quote:*   

> Dein Server selbst darf im Internet alles machen. Ist es so beabsichtigt? In der Anforderung steht, er soll nur pingen können.
> 
> Wenn beabsichtigt, dann kannst Du dir die anderen OUTPUT Regeln sparen, da diese Regel alles erlaubt.

 

Stimmt, du hast recht. Entweder ich schränke das ein, oder ich nehme den anderen teil weg. Danke für den Hinweis.

----------

