Imposta OSSEC ban su firewall remoto

3

Sto implementando la modalità agent-server dell'architettura OSSEC. Voglio che il server banizzi l'IP non solo sull'agente ma anche su un firewall remoto (server iptables dedicato).

Ho consultato la documentazione di OSSEC ma non ho trovato il modo di farlo finora ...

    
posta 0x1gene 26.08.2013 - 09:57
fonte

3 risposte

4

Puoi farlo creando una risposta attiva personalizzata . Ciò richiederà di scrivere uno script che possa aggiungere IP al firewall remoto. Suggerisco di leggere i documenti collegati mentre lo spiegano abbastanza bene.

    
risposta data 26.08.2013 - 10:02
fonte
4

Se si dispone di un agente OSSEC in esecuzione sul firewall remoto, è possibile utilizzare i comandi nativi di ossec.

Il < posizione > opzione definisce dove deve essere eseguita la risposta attiva. Normalmente è configurato per eseguire la risposta attiva sull'host che ha generato l'evento ("locale"), ma può anche essere configurato per eseguire la risposta attiva su qualsiasi host che abbia un agente ("agente definito").

Un esempio di una configurazione di risposta attiva che deve essere sempre eseguita su un host specifico, indipendentemente da dove è stata attivata (in questo esempio i trigger AR su regole dal gruppo ar_central_firewall ed eseguito sull'agente 123).

<active-response>
    <command>firewall-drop</command>
    <location>defined-agent</location>
    <agent_id>123</agent_id>
    <rules_group>ar_central_firewall</rules_group>
    <timeout>900</timeout>
</active-response>

La documentazione OSSEC ha una panoramica di tutte le possibili opzioni di configurazione per le risposte attive.

    
risposta data 30.09.2013 - 15:50
fonte
1

Per i popoli che sono nello stesso caso come me, ecco una piccola sceneggiatura che ho scritto per l'occasione:

remoteipdrop(){
    local client=$(cut -d':' -f1<<<"$1")
    local vuser=$(cut -d':' -f2<<<"$1")
        local vserver=$(cut -d':' -f3<<<"$1")
    cmd="ssh ${vuser}@${vserver} /sbin/iptables -A INPUT -s ${client} -j DROP"
    $cmd
}

remoteipundrop(){
    local client=$(cut -d':' -f1<<<"$1")
    local vuser=$(cut -d':' -f2<<<"$1")
        local vserver=$(cut -d':' -f3<<<"$1")
    cmd="ssh ${vuser}@${vserver} /sbin/iptables -L INPUT -vn --line-number | \
        grep ${client} | cut -c 1 | xargs /sbin/iptables -D INPUT"
    $cmd
}

usage(){
    echo "Usage: $0 {drop} \"clientIP:serverIP:sshUser:sshServer\""
    echo "Exemples:"
    echo -e "\t$0 drop \"1.2.3.4:root:www.example.com\""
    echo -e "\t$0 open \"1.2.3.4:443:eth0:202.54.1.5:root:www03.example.com\""
    exit 1
}

line="$2"

[ $# -ne 2 ] && usage

case $1 in
    open) remoteipadd "$line";;
    close) remoteipdelete "$line";;
    drop) remoteipdrop "$line";;
    undrop) remoteipundrop "$line";;
    *) usage
esac

Aggiungerò qui come collegarlo con la risposta attiva.

    
risposta data 27.08.2013 - 09:21
fonte

Leggi altre domande sui tag