Iptables DROPS SSH dopo le regole di knockout della porta, ma nmap lo mostra come OPEN

2

Ho impostato le regole di knocking della porta su CentOS 7, iptables come segue:

-I INPUT -p tcp --dport 1 -m recent --set --rsource --name KNOCK1 -m limit --limit 5/min -j LOG --log-prefix "knock 1" --log-level 7
-I INPUT -p tcp --dport 2 -m recent --rcheck --rsource --seconds 20 --name KNOCK1 -m recent --set --rsource --name KNOCK2 -m limit --limit 5/min -j LOG --log-prefix "knock 2" --log-level 6
-I INPUT -p tcp --dport 3 -m recent --rcheck --rsource --seconds 20 --name KNOCK2 -m recent --set --rsource --name OPEN_NOW -m limit --limit 5/min -j LOG --log-prefix "knock 3" --log-level 6
-I INPUT -p tcp --dport 22 -m state --state NEW -m recent --rcheck --rsource --seconds 20 --name OPEN_NOW -j ACCEPT

Quindi ho bloccato la porta 22:

iptables -A INPUT -p tcp --dport 22 -j DROP

Funziona correttamente perché prima invia la sequenza di porte, nmap viene visualizzato come:

22/tcp filtered ssh     no-response

E dopo inviando le seguenti sonde (su Windows):

nmap -PN --host_timeout 201 --max-retries 0 -p 1 200.xxx.xxx.xxx && nmap -PN --host_timeout 201 --max-retries 0 -p 2 200.xxx.xxx.xxx && nmap -PN --host_timeout 201 --max-retries 0 -p 3 200.xxx.xxx.xxx

Sia nmap che nc lo mostrano come aperto:

nmap:
22/tcp open  ssh     syn-ack ttl 49
nc:
hostname.xxxx.xxxx [200.xxx.xxx.xxx] 22 (ssh) open

Tuttavia, non posso ssh in esso, usando qualsiasi client (Putty, nc). Timeout come Iptables sta facendo cadere correttamente i pacchetti. Ma la porta è OPEN (poiché le sonde hanno aperto la porta), il che significa che la regola DROP non era più in vigore e nmap / nc ha ottenuto "Ack / Open", non dovrei essere in grado di ssh?

    
posta Jonas 27.08.2017 - 11:35
fonte

1 risposta

0

Beh, sì, il problema era ovviamente lo stato - NEW ha permesso solo 1 pacchetto a SYN, dopo di che il server ha risposto con SYN / ACK e quindi iptables lascerà cadere ogni pacchetto successivo dal client.

Ma non volevo usare -contrack per TUTTE le connessioni, dal momento che sono solo paranoico sulle prestazioni o qualsiasi exploit che potrebbe trarre vantaggio dalle connessioni stabilite che in qualche modo hanno superato le regole.

Così ho aggiunto --state NEW, RELATED, ESABLISHED solo per l'ultimo knock, e che mi ha permesso di ssh per 20 secondi, quindi lascerà cadere la connessione, ma durante quel periodo vorrei solo -j ACCETTARE il mio IP.

    
risposta data 29.08.2017 - 06:15
fonte

Leggi altre domande sui tag