Я хочу запретить некоторым программам звонить домой и разрешить другим программам получать доступ только к определенным веб-серверам.
Есть ли способ интерактивно разрешить или отклонить исходящую связь от отдельных программ в Ubuntu?
Я хочу запретить некоторым программам звонить домой и разрешить другим программам получать доступ только к определенным веб-серверам.
Есть ли способ интерактивно разрешить или отклонить исходящую связь от отдельных программ в Ubuntu?
Это был бы netfilter/ipfilter с некоторым сценарием, который делал бы вещи в интерактивном режиме (возможно, с хорошим API, доступным в Ubuntu), используя фоновые сценарии.
На этой странице UbuntuForums есть старое обсуждение.
Также смотрите страницы Ubuntu IPTablesHowTo и Firewall.
Ну, не совсем интерактивно, но я знаю о 3 способах ограничения доступа к программам в сети.
По умолчанию linux назначает разрешения пользователям, и каждая программа, которую они запускают, имеет одинаковые разрешения. Запустите ненадежную программу как отдельный пользователь. Это довольно просто, если вы можете это сделать. (Иногда вам не нравится, когда программа запрашивает права root.) Добавьте следующее правило брандмауэра:
iptables -A OUTPUT -m owner --uid-owner ${untrusted_uid} -j DROP
Если вы не боитесь исправления ядра, попробуйте grsecurity. Это позволяет разные разрешения для разных исполняемых файлов для одного и того же пользователя. Это, вероятно, лучший способ, потому что вы можете интегрировать его с правилами iptables и указать подробные ограничения. Правила должны выглядеть примерно так:
...
role your_regular_user u
...
subject /path/to/untrusted/program
connect disabled
...
...
Отключите функцию 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
Вы могли бы попробовать Anoubis . Доступны инструкции по установке и пакеты для Karmic Koala (я новичок в superuser, так что вам нужно будет найти их самостоятельно>: - S Подсказка: на странице загрузки прокрутите вниз до "Распространения").
Я использовал gufw в течение некоторого времени, это приятно и легко установить / настроить. gufw не поставляется с установками Ubuntu. Вы должны установить его вручную «sudo apt-get install gufw».
Вот некоторые из ссылок.