Lembre-se de sua opção -d, se você quiser aplicar em todos os adaptadores, não use essa opção, como
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Eu tenho um servidor dedicado com o Ubuntu 14.10 instalado.
O servidor deve se conectar a um servidor OpenVPN e o tráfego deve passar apenas pela VPN, exceto pelo tráfego SSH.
Minha ideia é implementar isso com iptables
, mas não sou especialista.
O que exatamente deve ser tratado com iptables
?
Suponhamos abaixo as condições básicas:
Permitir apenas tráfego por VPN. Quando meu servidor perde a conexão com a VPN, não deve haver vazamento de tráfego.
Permitir SSH sem VPN. Eu quero conectar ao meu servidor com SSH e seu IP normal do provedor do servidor (mas apenas o tráfego SSH).
Como não sou o único usuário da VPN, quero ocultar meu servidor na VPN de outros computadores.
Eu comecei a criar minhas regras iptables
, mas sempre bloqueia todas as minhas conexões:
# flush old rules
iptables -F
# accept SSH traffic with non vpn connection
iptables -A INPUT -d X.X.X.X -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -s X.X.X.X -p tcp --sport 22 -j ACCEPT
# block everything except my rules
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
# allow loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# allow vpn
iptables -A INPUT -j ACCEPT -p udp -s Y.Y.Y.Y --sport 1194
iptables -A OUTPUT -j ACCEPT -p udp -d Y.Y.Y.Y --dport 1194
X.X.X.X é o IP do servidor do provedor.
Y.Y.Y.Y é o IP do servidor VPN.
As regras sempre me expulsam da minha conexão SSH atual e não consigo criar uma nova conexão SSH, embora ela deva aceitar tráfego pela porta 22.
Lembre-se de sua opção -d, se você quiser aplicar em todos os adaptadores, não use essa opção, como
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
EDITAR:
Allow only traffic through VPN. When my server loses connection to the VPN, there should be no traffic leak.
Isso deve se importar com o seu aplicativo VPN. Por exemplo, PIA (Private Internet Access) chama isso de Kill Switch, você pode simplesmente habilitar no aplicativo.
Allow SSH without VPN. I want to connect to my server with SSH and its normal IP from the server provider (but only SSH traffic).
Bem, isso contradiz o Kill Switch acima.
Como um usuário de VPN, resolvi-o sem me conectar ao seu IP local, por exemplo, 192.168.0.xxx, mas ao seu endereço público e ao ativar uma porta específica para o meu servidor, em vez de usar o 22, porque tenho vários servidores em casa, então você pode querer pensar nisso também. Isso também significa que você precisará redirecionar essa porta do roteador para esse servidor e tornar a regra iptables
para essa porta.
Since I am not the only user of the VPN, I want to hide my server in the VPN from other computers.
Como você não descreveu seu ambiente, só posso dizer que eu desabilitaria alguns serviços como samba
etc.
RESPOSTA ORIGINAL:
De acordo com a página do manual :
--sport is short for --source-port --dport is short for --destination-port
No seu caso, acredito que você deve usar apenas a opção --dport
.