Disabilita Perl per alcuni / molti utenti Linux?

3

Uno degli account web del mio server è stato violato un paio di volte. Ogni volta che qualcuno scaricava uno script Perl tramite un forum phpBB e utilizzava lo script Perl per fare tutto ciò che volevano fare (per lo più si collegava per IRC e avviare DDoS attacca in base al codice dello script).

Vorrei disabilitare Perl per la maggior parte (non tutti come alcuni processi che utilizzo utilizzando Perl) o alcuni utenti specifici.

Come posso farlo correttamente? Sto usando Debian .

    
posta Guillaume 18.06.2012 - 12:18
fonte

3 risposte

7

Sono d'accordo con Gilles sul fatto che disabilitare perl non è una sicurezza efficace; poiché vi sono molti altri modi per attaccare (ad esempio, uno script python, uno script bash, uno script php, un eseguibile) e che limitare /usr/bin/perl a determinati gruppi di utenti potrebbe avere effetti collaterali (ad esempio, quel programma che chiama un script perl come utente ordinario).

Tuttavia, a parte, il modo semplice se hai un'applicazione in linux che vuoi limitare ad alcuni utenti, prima devi creare un gruppo, quindi aggiungere utenti a quel gruppo. I seguenti comandi eseguono questo in ubuntu (creando il gruppo perl e aggiungendo user1, user2, user3 ad esso:

sudo addgroup perl
sudo adduser user1 perl
sudo adduser user2 perl   
sudo adduser user3 perl

Ora trova dove è attualmente perl ( which perl che sul mio sistema era /usr/bin/perl ) trova la proprietà e le autorizzazioni di perl attualmente ( ls -l /usr/bin/perl su ubuntu per impostazione predefinita è posseduto dall'utente root e nel gruppo root) con tutti i permessi di lettura / esecuzione, che dovresti disabilitare per gli altri utenti a meno che non si trovino nel gruppo perl:

sudo chgrp perl /usr/bin/perl
sudo chmod o-rx /usr/bin/perl

Si noti che un utente malintenzionato sul proprio sistema che non è membro del gruppo perl, se può accedere a un terminale può caricare la propria versione dell'eseguibile perl (o se non è stato rimosso l'accesso in lettura ad altri utenti ; avrebbero potuto semplicemente copiarlo) in una directory locale / tmp, impostare il bit eseguibile su di esso (se possono eseguire chmod ), e quindi usare quello script di perl fuori dal proprio eseguibile.

    
risposta data 20.06.2012 - 07:57
fonte
6

La disabilitazione di perl è inutile. L'exploit che può essere scritto in Perl può anche essere scritto in un'altra lingua. Dì, PHP, che ovviamente non stai per disabilitare.

Se si prende un sistema che è già molto sicuro (come in: le vulnerabilità sono rare e tendono a influenzare solo una piccola parte del sistema senza alcun modo diretto di abilitare l'esecuzione di codice arbitrario), allora può essere utile disabilitare tutti i metodi di scripting. Questo può limitare la misura in cui alcune vulnerabilità possono essere sfruttate. Ad esempio, se è possibile iniettare solo un piccolo numero di caratteri ASCII, la scrittura di un eseguibile potrebbe essere una sfida importante, mentre la scrittura di uno script sarebbe banale.

Contro il tipo di vulnerabilità che hai incontrato, disabilitare gli interpreti non sarebbe stato di aiuto. L'autore dell'attacco può caricare PHP o codice macchina. Stai girando il messenger.

    
risposta data 19.06.2012 - 00:55
fonte
2

L'attacco che stai riscontrando è chiamato tecnica Remote File Inclusion (RFI). È fondamentalmente il risultato di un'applicazione Web vulnerabile che viene sfruttata per caricare codice dannoso per generare una shell remota.

Non è necessario disabilitare in modo specifico Perl. È possibile iniziare a identificare l'applicazione vulnerabile come ad esempio phpBB utilizzata dall'utente malintenzionato, quindi correggere o rimuovere completamente l'applicazione e sostituirla con una versione aggiornata.

Poiché la scatola è compromessa, è per lo più pericoloso non fare affidamento con il metodo sopra dato che potrebbe aver già installato una backdoor in esecuzione sul tuo host. Se si dispone di un accesso fisico al server, provare a farlo scendere sulla rete. Se disponi di accesso remoto, risolvi il problema con le regole del firewall, assicurandoti innanzitutto l'accesso solo alla tua posizione di origine (indirizzo IP).

Una cosa che puoi fare è negare esplicitamente tutto il traffico in entrata dal livello di rete e SPECIFICARE solo il traffico per una porta data o usata: TCP / 22,80 per assicurarti che anche se abbiano installato una backdoor in esecuzione su una porta diverso dai due, non vincolerà e genererà una shell remota.

La rimozione di Perl interromperà tutte le applicazioni dipendenti da Perl in esecuzione sul tuo host.

    
risposta data 18.06.2012 - 15:13
fonte

Leggi altre domande sui tag