Skocz do zawartości
HaPe

Odpowiednik mac_portacl w Linuxie

Polecane posty

Witam, orientujecie się czy w Linuxie istnieje odpowiednik mac_portacl znanego z FreeBSD?

Edytowano przez HaPe (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A nie polaczysz --uid-owner z opcjami z Grsecurity typu: GRKERNSEC_SOCKET, GRKERNSEC_SOCKET_ALL, GRKERNSEC_SOCKET_ALL_GID, GRKERNSEC_SOCKET_CLIENT, GRKERNSEC_SOCKET_CLIENT_GID, GRKERNSEC_SOCKET_SERVER, GRKERNSEC_SOCKET_SERVER_GID nigdy sie tym nie bawilem docelowo. Tutaj masz sznurek moze ci sie przyda:

http://en.wikibooks.org/wiki/Grsecurity/Print_version#Socket_restrictions

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nie ma, jest tylko --uid-owner w iptables.

To wiem, tyle że jak ktoś uruchomi jakąś apkę na danym porcie to i tak zablokuje socket.

 

A nie polaczysz --uid-owner z opcjami z Grsecurity typu: GRKERNSEC_SOCKET, GRKERNSEC_SOCKET_ALL, GRKERNSEC_SOCKET_ALL_GID, GRKERNSEC_SOCKET_CLIENT, GRKERNSEC_SOCKET_CLIENT_GID, GRKERNSEC_SOCKET_SERVER, GRKERNSEC_SOCKET_SERVER_GID nigdy sie tym nie bawilem docelowo. Tutaj masz sznurek moze ci sie przyda:

http://en.wikibooks.org/wiki/Grsecurity/Print_version#Socket_restrictions

 

W to wątpię, ponieważ ww. opcja jest stricte z nftables, raczej nie przejdzie to. Z grsec jest tak, że ma tylko opcje blokady, ale ogólnie bindowania portów pod klienta albo serwer, konkretnych mu nie wskażę.

Szukałem czegoś w dokumentacji tomoyo, ale tam nic odnośnie portów nie widzę.

Edytowano przez HaPe (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Chcę pewnemu użytkownikowi dać dostęp do pewnego portu TCP, tak aby nawet jak wyłączy aplikację, to nikt nie był wstanie zająć mu tego portu.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Możesz sobie zrobić BAARDZO uproszczony "holder" w postaci skryptu w pythonie/perlu, który trzyma konkretny port oraz skryptu bashowego typu "autostart" po stronie klienta.

 

Po stronie serwera:

 

 

#!/bin/bash

set -e

nasluchuj() {

while :; do

inotifywait -qqe create /tmp/klient

find /tmp/klient -type f | while read ARG; do

case "$(basename "$ARG")" in

start) kill $PID ;;

stop) python jakisholder.py &; PID=$! ;;

finish) kill 0 ;;

esac

rm -f "$ARG"

done

done

}

 

mkdir -p /tmp/klient

chown klient.klient /tmp/klient

nasluchuj &

touch /tmp/klient/stop

wait

exit 0

 

Po stronie klienta:

 

 

 

#!/bin/bash

set -e

case "$1" in

start) touch /tmp/klient/start; sleep 1; ./jakisserwer ;;

stop) kill "$(pidof jakisserwer)"; touch /tmp/klient/stop ;;

esac

 

Główny serwerowy proces odpalasz via setsid bo ma kill 0.

A jakbyś chciał go wyłączyć robisz touch /tmp/klient/finish.

 

Rozwiązanie strasznie naokoło, ale będzie działało.

Edytowano przez Archi (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dziękuję za pomoc.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×