Existe um firewall interativo para o tráfego de saída no Ubuntu?

4

Desejo impedir que alguns programas "liguem para casa" e permitir que outros programas acessem apenas servidores da Web específicos.

Existe alguma maneira de permitir ou recusar interativamente a comunicação de saída de programas individuais no Ubuntu?

    
por GJ. 24.08.2010 / 13:26

4 respostas

1

Isso seria netfilter / ipfilter com algum script que faria as coisas de forma interativa (talvez com a boa API disponível no Ubuntu) usando um script de plano de fundo.

Há alguma discussão antiga nesta página do UbuntuForums .
Veja também, Ubuntu IPTablesHowTo e Firewall .

    
por 24.08.2010 / 16:15
1

Você pode tentar Anoubis . Existem instruções de instalação e pacotes para o Karmic Koala disponíveis (eu sou novo no superusuário, então você terá que encontrá-los você mesmo >: - Dica: na página de Download vá até "Distribuições").

    
por 27.09.2010 / 23:47
1

Bem, não é exatamente interativo, mas eu sei sobre 3 maneiras de restringir o acesso à rede a programas.

  1. Por padrão, o linux atribui permissões aos usuários e cada programa que eles executam tem as mesmas permissões. Execute o programa não confiável como um usuário separado. Isso é bem simples se você puder fazer isso. (Às vezes você não pode gostar quando um programa requere privilégios de root.) Adicione a seguinte regra de firewall:

    iptables -A OUTPUT -m owner --uid-owner ${untrusted_uid} -j DROP
    
  2. Se você não tem medo de corrigir o kernel, tente grsecurity . Permite diferentes permissões para diferentes executáveis para o mesmo usuário. Esta é provavelmente a melhor maneira, porque você pode integrá-lo com as regras do iptables e especificar restrições detalhadas. As regras devem ser parecidas com:

    ...
    role your_regular_user u
        ...
        subject /path/to/untrusted/program
            connect disabled
        ...
    ...
    
  3. Desative a função connect () com LD_PRELOAD. Essa é a maneira mais feia de usá-la apenas se você não tiver outra opção. Você precisará de uma biblioteca como esta:

    #include <errno.h>
    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    
    int connect(int sockfd, struct sockaddr const* addr, socklen_t addrlen) {
        errno = ECONNREFUSED;
        printf("connection refused\n");
        return -1;
    }
    

    Compile isso com

    gcc -fPIC -shared -Wl,-soname,fake_connect fake_connect.c -o libfake_connect.so
    

    Inicie o programa com

    LD_PRELOAD="./libfake_connect.so" ./untrusted_program
    
por 19.11.2010 / 21:21
0

Eu estava usando o gufw há algum tempo, é legal e fácil de instalar / configurar. O gufw não vem com instalações do Ubuntu. Você tem que instalá-lo manualmente 'sudo apt-get install gufw'.

Aqui estão algumas das referências.

link

    
por 21.08.2011 / 10:15