Fixa FTP-åtkomst från Linux-klientdator med brandvägg aktiverad
Idag skulle jag vilja dela med mig av min personliga erfarenhet av FTP-åtkomst i Linux. Tack vare de nya operativsystemen från Microsoft, som jag inte finner lämpliga för dagligt bruk, bytte jag till Linux för några år sedan. Jag kör en FTP-server i mitt hemnätverk och jag kunde inte komma åt den från min klientdator som körs Linux som har brandväggsregler för att blockera inkommande anslutningar, dvs. INPUT-policyn är inställd på REJECT i iptables. Så här fixade jag problemet.
Jag antar att OUTPUT-policyn är ACCEPT på både klient- och serverdatorer.
Lösning #1. Använd kärnmodulen nf_conntrack_ftp
Kärnmodulen nf_conntrack_ftp låter dig avblockera åtkomst till den port som krävs för FTP-servern automatiskt varje gång du gör en anslutning. Det enda kravet för denna modul är följande rad i dina iptables-regler (vanligtvis är det /etc/iptables/iptables.rules) på klientdatorn:
$IPT -A INPUT -i eth0 -m state --state RELATED, ETABLISHED -j ACCEPT
Det finns eth0 är ditt nätverksenhetsnamn.
Därefter måste du ladda nf_conntrack_ftp om den inte är laddad. Kör följande kommando som root på klientdatorn
# modprobe nf_conntrack_ftp
Om din server använder någon icke-standardport (annan än port 21), använd då följande kommando:
# modprobe nf_conntrack_ftp ports=din_port
Detta ger en automatisk anslutning med alla nödvändiga portar mellan FTP-servern och din klientprogramvara. Detta fungerar tills du startar om din dator.
För att göra denna ändring permanent måste du skapa en ny textfil, /etc/modules-load.d/conntrack_ftp.conf, och lägga till följande rad i den här filen:
nf_conntrack_ftp
I händelse av icke-standardserverport måste du skapa en ytterligare fil, /etc/modprobe.d/conntrack_ftp.conf med följande innehåll:
alternativ nf_conntrack_ftp ports=
Detta borde räcka.
Lösning #2. Använd ett fast intervall för passiva portar
Om du inte kan använda modulen nf_conntrack_ftp kan du ställa in ett fast portintervall för FTP-serverprogramvara och öppna den på klientdatorn. Till exempel, här är hur det kan göras för vsftpd-appen.
- I konfigurationsfilen för vsftpd, som vanligtvis är /etc/vsftpd.conf, lägg till följande rader:
pasv_min_port=5500. pasv_max_port=6500
Detta bör göras på serversidan. Efter det bör du starta om vsftpd.
- I dina iptables-regler (vanligtvis är det /etc/iptables/iptables.rules) på klientdatorn, lägg till följande regel:
$IPT -A INPUT -p tcp -s
--dport 5500:6500 -j ACCEPTERA - Tillämpa iptables regler enligt följande:
# iptables-restore < /etc/iptables/iptables.rules
Det är allt.