As IPTables permitem apenas o acesso ao host local

58

Eu lutei ao longo dos anos para obter um entendimento sólido sobre o iptables. Sempre que tento ler as páginas de manual, meus olhos começam a brilhar.

Eu tenho um serviço ao qual só quero permitir que o host local tenha acesso.

Quais termos (ou configuração, se alguém estiver se sentindo generoso) devo procurar no Google para permitir que apenas o host localhost tenha acesso a uma determinada porta?

iptablessuck
fonte
2
Em que porta esse serviço está sendo executado?
Bart De Vos
44344, é um serviço escrito internamente
iptablessuck
11
Eu gostaria de mudar meu nick temporariamente para 'iptablesrules', mas não posso
Art Shayderov 14/03/11
@Art, eles só sugam, porque eu não entendo eles :)
iptablessuck
@iptablessuck, na verdade, parece que eu posso. Mas eu não vou causar Eu não tenho certeza que vou ser capaz de mudá-lo de volta :)
Art Shayderov

Respostas:

65

Se por serviço você quer dizer uma porta específica, as duas linhas a seguir devem funcionar. Mude o "25" para qualquer porta que você esteja tentando restringir.

iptables -A INPUT -p tcp -s localhost --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j DROP
Hyppy
fonte
11
"Qualquer coisa que vem do host local para a porta 25, aceita" e a segunda regra diz "Solte qualquer coisa que entrar na porta 25". A primeira linha é processada primeiro, permitindo o host local e qualquer outra coisa será descartada pela segunda linha. Sim?
precisa
Está correto!
Hyppy
4
@ Hippy, como você "desfaz" isso?
Testador
10
@tester digite os comandos novamente, mas substitua -Acom-D
pepoluan
11
@ Astronauta, digite 'sudo service iptables save' para salvar as alterações. depois reinicie. você pode verificar se as alterações foram salvas, digitando 'sudo iptables -L'
Vinayak
30

Eu recomendo:

iptables -A INPUT -i lo -p tcp --dport $APP_PORT -j ACCEPT
iptables -A INPUT -p tcp --dport $APP_PORT -j DROP

Porque, pacotes auto-endereçados não necessariamente têm 127.0.0.1 como sua origem, mas todos eles 'entram' na lointerface.

Agora, se você realmente deseja entender, iptablesa primeira coisa a fazer é fazer o download e imprimir bons diagramas explicando as relações das netfiltertabelas. Aqui estão dois ótimos:

Por fim, leia muitos iptablesHOWTO's. Os exemplos práticos ajudariam você a ficar rápido rapidamente :)

pepoluan
fonte
ty! lomostra-se para mim depois de usar esses comandos com o último comando a partir deste link cyberciti.biz/faq/howto-display-linux-iptables-loaded-rules iptables -L -v -n --line-numbers
2
@Gracchus Acho que é muito mais fácil de usar iptables-save, salvar a saída para um arquivo, editá-lo com vimou emacse reimportar o arquivo editado usandoiptables-apply
pepoluan
Acho que, dependendo do caso de uso, a segunda regra deve rejeitar explicitamente, em vez de ser descartada silenciosamente. É descartado silenciosamente como uma prática recomendada? REJECT é seguro de usar?
Sr. Doomsbuster
11
@ tech-pro Sim, o REJECT é seguro de usar. Depende do que você está tentando realizar e se deseja ser cortês com as pessoas que tentam usar a porta. REJECT enviará de volta um pacote TCP RST informando ao cliente que a máquina está funcionando, mas a porta está fechada. Se você está fechando uma porta que as pessoas podem legitimamente esperar usar, REJECT é bom. Se você espera apenas scanners de portas, o DROP é melhor.
usar o seguinte código
11
@ x-yuri Por exemplo, eu corro unboundcomo cache DNS, na frente de dnscrypt-proxy. unboundvincula a 127.0.53.1:53, e dnscrypt-proxyvincula a 127.0.53.2:53. Quando um aplicativo solicita proxy não vinculado ou dnscrypt-proxy para resolver um FQDN, adivinhe de que endereço de origem o proxy não vinculado / dnscrypt-proxy responde?
pepoluan