У меня есть настройка openvpn клиента сервера со всем клиентским трафиком, направленным через туннель через udp. Я хотел бы ограничить типы приложений, которые клиент может использовать при подключении к моему vpn. Начнем с id, как и клиенты, чтобы иметь возможность просматривать.
Как бы вы это сделали с помощью iptables?
С какой стороны вы разместите эти ограничения, то есть на сервере tun-адаптере или его общедоступном адаптере eth0?
******* ОБНОВЛЕНИЕ ***** в соответствии с предложением PQD я обновил свои iptables, но по какой-то причине он разрешает пересылку трафика на другие порты. Чтобы проверить, я попытался загрузить ubuntu через торрент в качестве клиента на моем vpn, и он работал нормально, когда не должен (номер порта в торрент-клиенте не виноват).
Может ли кто-нибудь заметить ошибку в моих iptables?
#!/bin/bash
SERVER_IP="***.***.***.***"
HOME_IP="***.***.***.***"
CLIENT_IP_RANGE="***.***.***.***/**"
# Flush all current rules from iptables
iptables -F
# Allow SSH connections on tcp port 22
iptables -A INPUT -p tcp --dport 22 -s $HOME_IP -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -d $HOME_IP -j ACCEPT
#Only ping my server from my home
iptables -A INPUT -p icmp --icmp-type 8 -s $HOME_IP -j ACCEPT
# Set default policies for INPUT, FORWARD and OUTPUT chains
#
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# Set access for localhost
#
iptables -A INPUT -i lo -j ACCEPT
# Accept packets belonging to established and related connections
#
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#Setup OpenVpn
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A OUTPUT -o tun+ -j ACCEPT
iptables -A INPUT -i venet0 -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -i venet0 -p tcp --dport 1194 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -s $CLIENT_IP_RANGE -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -s $CLIENT_IP_RANGE -p tcp --dport 8000 -j ACCEPT
iptables -A FORWARD -s $CLIENT_IP_RANGE -p icmp -j ACCEPT
iptables -A FORWARD -s $CLIENT_IP_RANGE -j DROP
#Setup NAT for openvpn
iptables -t nat -A POSTROUTING -o venet0 -j MASQUERADE
# Save settings
#
/sbin/service iptables save
обновить с помощью iptables -nL FORWARD
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT tcp -- 10.254.1.0/24 0.0.0.0/0 tcp dpt:80
ACCEPT tcp -- 10.254.1.0/24 0.0.0.0/0 tcp dpt:8000
ACCEPT icmp -- 10.254.1.0/24 0.0.0.0/0
DROP all -- 10.254.1.0/24 0.0.0.0/0
я бы сделал это только на основе исходного ip [в этом примере я предполагаю, что пользователи vpn имеют адреса с 10.0.15.0/24]:
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -s 10.0.15.0/24 -p tcp --dport 80 --j ACCEPT
iptables -A FORWARD -s 10.0.15.0/24 -p icmp --j ACCEPT
iptables -A FORWARD -s 10.0.15.0/24 --j DROP
помните, что более умные пользователи могут туннелировать нежелательный трафик через http / https