Ecco alcune opzioni:
- Attacca con gdb e chiama close() su fd. Puoi mappare da addr/porta al numero di inode tramite /proc/net/tcp e dal numero di inode a FD all'interno del processo con ls -la /proc/$pid/fd.
- Spoofing di un pacchetto RST. Dovrai generarlo localmente e indovinare il numero SEQ in qualche modo.
- Forse impostare una regola iptables per generare un RST sul prossimo pacchetto.
- Scrivi un modulo del kernel.
Non sembra esserci un modo ben supportato per farlo. È probabile che i processi vadano in crash se i loro FD vengono comunque chiusi inaspettatamente.
Non puoi terminare una singola connessione di un processo.
Ma potresti bloccarlo con iptables. Quindi la connessione non può fornire o ricevere dati e il client verrà eseguito in un timeout.
Sul kernel linux>=4.9 puoi usare il ss
comando da iproute2 con la chiave -K
ss -K dst client1.something dport = 49987
il kernel deve essere compilato con CONFIG_INET_DIAG_DESTROY
opzione abilitata.
Puoi uccidere per porta di destinazione:
ss -K dport = 65987