Есть ли в Ubuntu интерактивный межсетевой экран для исходящего трафика?

Я хочу запретить некоторым программам звонить домой и разрешить другим программам получать доступ только к определенным веб-серверам.

Есть ли способ в интерактивном режиме разрешить или отклонить исходящую связь от отдельных программ в Ubuntu?

4 ответа

Вы могли бы попробовать Anoubis. Доступны инструкции по установке и пакеты для Karmic Koala (я новичок в superuser, поэтому вам придется их найти самостоятельно>:-S Подсказка: на странице загрузки прокрутите вниз до "Распространения").

Ну, не совсем интерактивно, но я знаю о 3 способах ограничения доступа к программам в сети.

  1. По умолчанию linux назначает разрешения пользователям, и каждая программа, которую они запускают, имеет одинаковые разрешения. Запустите ненадежную программу как отдельный пользователь. Это довольно просто, если вы можете это сделать. (Иногда вам не нравится, когда программа запрашивает привилегии root.) Добавьте следующее правило брандмауэра:

    iptables -A OUTPUT -m owner --uid-owner ${untrusted_uid} -j DROP
    
  2. Если вы не боитесь патчить ядро, попробуйте http://grsecurity.net/. Это позволяет разные разрешения для разных исполняемых файлов для одного и того же пользователя. Это, вероятно, лучший способ, потому что вы можете интегрировать его с правилами iptables и указать подробные ограничения. Правила должны выглядеть примерно так:

    ...
    role your_regular_user u
        ...
        subject /path/to/untrusted/program
            connect disabled
        ...
    ...
    
  3. Отключите функцию connect() с помощью LD_PRELOAD. Это самый уродливый способ использовать его, только если у вас нет другого выбора. Вам понадобится такая библиотека:

    #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;
    }
    

    Скомпилируйте это с

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

    Запустите программу с

    LD_PRELOAD="./libfake_connect.so" ./untrusted_program
    

Это был бы netfilter/ipfilter с некоторым сценарием, который делал бы вещи в интерактивном режиме (возможно, с хорошим API, доступным в Ubuntu), используя фоновые сценарии.

На этой странице UbuntuForums есть старое обсуждение.
Также смотрите страницы Ubuntu IPTablesHowTo и Firewall.

Я использовал gufw в течение некоторого времени, это приятно и легко установить / настроить. gufw не поставляется с установками Ubuntu. Вы должны установить его вручную "sudo apt-get install gufw".

Вот некоторые из ссылок.

https://help.ubuntu.com/community/Gufw

Другие вопросы по тегам