• Лучшая CTF площадка рунета Игры Кодебай

    Выполняй задания по кибербезопасности в формате CTF и получай бесценный опыт. Ознакомиться с подробным описанием можно тут.

  • B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Iptables + VPN-TOR-VPN

alexej

Green Team
15.10.2018
60
18
Хочу по максимуму настроить настроить сервера в связке VPN-TOR-VPN через IPtables. Пытаюсь сделать как в статье. Но по итогу идет подключение в интернет через первый сервер. При этом с первого на второй пинг не проходит. Наверняка, запутался в интерфейсах где-то, с перенаправлениями и разрешениями. ens3 (eth0) - интерфейс на сервере
Первый (к которому идет подключение с места) через UDP и идет пострутинг через интерфейс tun1

Код:
*filter

# Allow all loopback (lo) traffic and reject traffic
# to localhost that does not originate from lo.
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT
-A OUTPUT -o lo -j ACCEPT

# Allow ping and ICMP error returns.
-A INPUT -p icmp -m state --state NEW --icmp-type 8 -j ACCEPT
-A INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT

# Allow SSH.
-A INPUT -i ens3 -p tcp -m state --state NEW,ESTABLISHED --dport 22 -j ACCEPT
-A OUTPUT -o ens3 -p tcp -m state --state ESTABLISHED --sport 22 -j ACCEPT

# Allow UDP traffic on port 1194.
-A INPUT -i ens3 -p udp -m state --state NEW,ESTABLISHED --dport 1194 -j ACCEPT
-A OUTPUT -o ens3 -p udp -m state --state ESTABLISHED --sport 1194 -j ACCEPT

# Allow TCP traffic on port 1194.
-A INPUT -i ens3 -p tcp -m state --state NEW,ESTABLISHED --dport 1194 -j ACCEPT
-A OUTPUT -o ens3 -p tcp -m state --state ESTABLISHED --sport 1194 -j ACCEPT

# Allow DNS resolution and limited HTTP/S on ens3.
# Necessary for updating the server and keeping time.
-A INPUT -i ens3 -p udp -m state --state ESTABLISHED --sport 53 -j ACCEPT
-A OUTPUT -o ens3 -p udp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT
-A INPUT -i ens3 -p tcp -m state --state ESTABLISHED --sport 53 -j ACCEPT
-A OUTPUT -o ens3 -p tcp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT

-A INPUT -i ens3 -p tcp -m state --state ESTABLISHED --sport 80 -j ACCEPT
-A OUTPUT -o ens3 -p tcp -m state --state NEW,ESTABLISHED --dport 80 -j ACCEPT
-A INPUT -i ens3 -p tcp -m state --state ESTABLISHED --sport 443 -j ACCEPT
-A OUTPUT -o ens3 -p tcp -m state --state NEW,ESTABLISHED --dport 443 -j ACCEPT

# Allow traffic on the TUN interface.
-A INPUT -i tun0 -j ACCEPT
-A FORWARD -i tun0 -j ACCEPT
-A OUTPUT -o tun0 -j ACCEPT

# Allow forwarding traffic only from the VPN.
# -A FORWARD -i tun0 -o ens3 -s 10.8.0.0/24 -j ACCEPT
-A FORWARD -i tun0 -o tun1 -s 10.8.0.0/24 -j ACCEPT
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

COMMIT

После я еще добавляю: iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o tun1 -j MASQUERADE



Второй( приходит и уходит через TCP)

Код:
*filter

# Allow all loopback (lo) traffic and reject traffic
# to localhost that does not originate from lo.
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT
-A OUTPUT -o lo -j ACCEPT

# Allow ping and ICMP error returns.
-A INPUT -p icmp -m state --state NEW --icmp-type 8 -j ACCEPT
-A INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT

# Allow SSH.
-A INPUT -i ens3 -p tcp -m state --state NEW,ESTABLISHED --dport 22 -j ACCEPT
-A OUTPUT -o ens3 -p tcp -m state --state ESTABLISHED --sport 22 -j ACCEPT

# Allow UDP traffic on port 1194.
-A INPUT -i ens3 -p udp -m state --state NEW,ESTABLISHED --dport 1194 -j ACCEPT
-A OUTPUT -o ens3 -p udp -m state --state ESTABLISHED --sport 1194 -j ACCEPT

# Allow TCP traffic on port 1194.
-A INPUT -i ens3 -p tcp -m state --state NEW,ESTABLISHED --dport 1194 -j ACCEPT
-A OUTPUT -o ens3 -p tcp -m state --state ESTABLISHED --sport 1194 -j ACCEPT

# Allow DNS resolution and limited HTTP/S on ens3.
# Necessary for updating the server and keeping time.
-A INPUT -i ens3 -p udp -m state --state ESTABLISHED --sport 53 -j ACCEPT
-A OUTPUT -o ens3 -p udp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT
-A INPUT -i ens3 -p tcp -m state --state ESTABLISHED --sport 53 -j ACCEPT
-A OUTPUT -o ens3 -p tcp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT

-A INPUT -i ens3 -p tcp -m state --state ESTABLISHED --sport 80 -j ACCEPT
-A OUTPUT -o ens3 -p tcp -m state --state NEW,ESTABLISHED --dport 80 -j ACCEPT
-A INPUT -i ens3 -p tcp -m state --state ESTABLISHED --sport 443 -j ACCEPT
-A OUTPUT -o ens3 -p tcp -m state --state NEW,ESTABLISHED --dport 443 -j ACCEPT

# Allow traffic on the TUN interface.
-A INPUT -i tun0 -j ACCEPT
-A FORWARD -i tun0 -j ACCEPT
-A OUTPUT -o tun0 -j ACCEPT

# Allow forwarding traffic only from the VPN.
-A FORWARD -i tun0 -o ens3 -s 10.8.1.0/24 -j ACCEPT
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

COMMIT

И потом:
iptables -t nat -A POSTROUTING -s 10.8.1.0/24 -o ens3 -j MASQUERADE

п.с. правила позаимствовал с туториалов линода. Кстати, если поднять один сервер надо, то советую:

https://www.linode.com/docs/networking/vpn/set-up-a-hardened-openvpn-server/
 
Мы в соцсетях: