Ret FTP-adgang fra Linux-klient-pc med firewall aktiveret
I dag vil jeg gerne dele min personlige erfaring med FTP-adgang i Linux. Takket være de nye styresystemer fra Microsoft, som jeg ikke finder egnede til daglig brug, skiftede jeg til Linux for nogle år siden. Jeg kører en FTP-server i mit hjemmenetværk, og jeg kunne ikke få adgang til den fra min klient-pc, der kører Linux som har firewall-regler til at blokere indgående forbindelser, dvs. INPUT-politikken er sat til REJECT i iptables. Her er hvordan jeg løste problemet.
Jeg antager, at OUTPUT-politikken er ACCEPT på både klient- og servermaskiner.
Løsning #1. Brug kernemodulet nf_conntrack_ftp
Kernemodulet nf_conntrack_ftp giver dig mulighed for automatisk at fjerne blokeringen af adgangen til den nødvendige port til FTP-serveren, hver gang du opretter en forbindelse. Det eneste krav til dette modul er følgende linje i dine iptables-regler (normalt er det /etc/iptables/iptables.rules) på klient-pc'en:
$IPT -A INPUT -i eth0 -m state --state RELATED, ETABLISHED -j ACCEPT
Der er eth0 er dit netværksenhedsnavn.
Dernæst skal du indlæse nf_conntrack_ftp, hvis den ikke er indlæst. Kør følgende kommando som root på klient-pc'en
# modprobe nf_conntrack_ftp
Hvis din server bruger en ikke-standardport (andre end port 21), så brug følgende kommando:
# modprobe nf_conntrack_ftp ports=din_port
Dette vil give en automatisk forbindelse med alle nødvendige porte mellem FTP-serveren og din klientsoftware. Dette virker, indtil du genstarter din pc.
For at gøre denne ændring permanent, skal du oprette en ny tekstfil, /etc/modules-load.d/conntrack_ftp.conf, og tilføje følgende linje til denne fil:
nf_conntrack_ftp
I tilfælde af ikke-standard serverport, skal du oprette en ekstra fil, /etc/modprobe.d/conntrack_ftp.conf med følgende indhold:
muligheder nf_conntrack_ftp ports=
Dette burde være nok.
Løsning #2. Brug et fast passivt portområde
Hvis du ikke kan bruge modulet nf_conntrack_ftp, kan du indstille et fast portområde for FTP-serversoftware og åbne det på klient-pc'en. For eksempel, her er, hvordan det kan gøres for vsftpd-appen.
- Tilføj følgende linjer i konfigurationsfilen for vsftpd, som normalt er /etc/vsftpd.conf:
pasv_min_port=5500. pasv_max_port=6500
Dette skal gøres på serversiden. Derefter skal du genstarte vsftpd.
- Tilføj følgende regel i dine iptables-regler (normalt er det /etc/iptables/iptables.rules) på klient-pc'en:
$IPT -A INPUT -p tcp -s
--dport 5500:6500 -j ACCEPT - Anvend iptables regler som følger:
# iptables-restore < /etc/iptables/iptables.rules
Det er det.