Correggi l'accesso FTP da PC client Linux con firewall abilitato
Oggi vorrei condividere la mia esperienza personale con l'accesso FTP in Linux. Grazie ai nuovi sistemi operativi di Microsoft, che non trovo adatti all'uso quotidiano, sono passato a Linux qualche anno fa. Sto eseguendo un server FTP nella mia rete domestica e non sono stato in grado di accedervi dal mio PC client in esecuzione Linux che ha regole del firewall per bloccare le connessioni in entrata, ovvero la politica INPUT è impostata su REJECT in iptables. Ecco come ho risolto il problema.
Presumo che la politica OUTPUT sia ACCEPT su entrambe le macchine client e server.
Soluzione n. 1. Usa il modulo del kernel nf_conntrack_ftp
Il modulo del kernel nf_conntrack_ftp consente di sbloccare automaticamente l'accesso alla porta richiesta per il server FTP ogni volta che si effettua una connessione. L'unico requisito per questo modulo è la seguente riga nelle regole di iptables (di solito è /etc/iptables/iptables.rules) sul PC client:
$IPT -A INPUT -i eth0 -m state --state RELATED, ESTABLISHED -j ACCEPT
C'è eth0 è il nome del tuo dispositivo di rete.
Successivamente, è necessario caricare nf_conntrack_ftp se non è caricato. Esegui il seguente comando come root sul PC client
# modprobe nf_conntrack_ftp
Se il tuo server utilizza una porta non predefinita (diversa dalla porta 21), usa il seguente comando:
# modprobe nf_conntrack_ftp ports=your_port
Ciò fornirà una connessione automatica con tutte le porte richieste tra il server FTP e il software client. Funziona fino al riavvio del PC.
Per rendere permanente questa modifica, devi creare un nuovo file di testo, /etc/modules-load.d/conntrack_ftp.conf, e aggiungere la seguente riga a questo file:
nf_conntrack_ftp
In caso di porta del server non predefinita, è necessario creare un file aggiuntivo, /etc/modprobe.d/conntrack_ftp.conf con il seguente contenuto:
opzioni nf_conntrack_ftp porte=
Questo dovrebbe essere sufficiente.
Soluzione n. 2. Utilizzare un intervallo di porte passive fisse
Se non è possibile utilizzare il modulo nf_conntrack_ftp, è possibile impostare un intervallo di porte fisso per il software del server FTP e aprirlo sul PC client. Ad esempio, ecco come può essere fatto per l'app vsftpd.
- Nel file di configurazione di vsftpd, che di solito è /etc/vsftpd.conf, aggiungi le seguenti righe:
pasv_min_port=5500. pasv_max_port=6500
Questo dovrebbe essere fatto sul lato server. Dopodiché dovresti riavviare vsftpd.
- Nelle tue regole iptables (di solito è /etc/iptables/iptables.rules) sul PC client, aggiungi la seguente regola:
$IPT -A INPUT -p tcp -s
--dport 5500:6500 -j ACCETTA - Applica le regole di iptables come segue:
# iptables-restore < /etc/iptables/iptables.rules
Questo è tutto.