pengembangan-web-mp-pd.com

Mengizinkan FTP dengan IPTables

Skenario saya saat ini melibatkan memungkinkan berbagai aturan, tetapi saya perlu ftp agar dapat diakses dari mana saja. OS adalah Cent 5 dan saya menggunakan VSFTPD. Sepertinya saya tidak bisa mendapatkan sintaks yang benar. Semua aturan lain berfungsi dengan benar.

## Filter all previous rules
*filter

## Loopback address
-A INPUT -i lo -j ACCEPT

## Established inbound rule
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

## Management ports
-A INPUT -s x.x.x.x/24 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/23 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -s x.x.x.x/23 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/23 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT

## Allow NRPE port (Nagios)
-A INPUT -s x.x.x.x -p tcp -m state --state NEW -m tcp --dport 5666 -j ACCEPT
-A INPUT -s x.x.x.x -p tcp -m state --state NEW -m tcp --dport 5666 -j ACCEPT

##Allow FTP

## Default rules
:INPUT DROP [0:0]
:FORWARD DROP
:OUTPUT ACCEPT [0:0]
COMMIT

Berikut ini adalah aturan yang sudah saya coba.

##Allow FTP
-A INPUT --dport 21 any -j ACCEPT
-A INPUT --dport 20 any -j ACCEPT

-A INPUT -p tcp --dport 21 -j ACCEPT
-A INPUT -p tcp --dport 20 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT


-A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 20 -j ACCEPT
-A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 21 -j ACCEPT

-A INPUT -s 0.0.0.0/0 -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -s 0.0.0.0/0 -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
26
IOTAMAN

Inilah dokumen yang saya referensikan kepada orang-orang sehingga mereka dapat mengikuti protokol FTP: http://slacksite.com/other/ftp.html

  • Untuk melakukan FTP mode aktif, Anda harus mengizinkan koneksi masuk ke TCP port 21 dan koneksi keluar dari port 20.
  • Untuk melakukan FTP mode pasif, Anda harus mengizinkan koneksi masuk ke TCP port 21 dan koneksi masuk ke port yang dibuat secara acak di komputer server (mengharuskan menggunakan modul conntrack di netfilter)

Anda tidak memiliki apa pun kembali: rantai OUTPUT Anda di pos Anda, jadi saya akan memasukkannya di sini juga. Jika rantai OUTPUT Anda adalah default-drop maka ini penting.

Tambahkan aturan ini ke konfigurasi iptables Anda:

iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT

Untuk mendukung FTP mode pasif, Anda perlu memuat modul ip_conntrack_ftp saat boot. Batalkan komentar dan ubah baris IPTABLES_MODULES di file/etc/sysconfig/iptables-config untuk membaca:

IPTABLES_MODULES="ip_conntrack_ftp"

Simpan konfigurasi iptables dan mulai ulang iptables.

service iptables save
service iptables restart

Untuk sepenuhnya mengesampingkan VSFTPD sebagai masalah, hentikan VSFTPD, verifikasi bahwa itu tidak mendengarkan pada port 21 dengan "netstat -a" dan kemudian jalankan:

nc -l 21

Ini akan mulai mendengarkan netcat pada port 21 dan akan menggaungkan input ke Shell Anda. Dari Host lain, TELNET ke port 21 server Anda dan verifikasi bahwa Anda mendapatkan koneksi TCP dan Anda melihat output di Shell ketika Anda mengetikkan koneksi TELNET.

Terakhir, bawa kembali VSFTPD, verifikasi bahwa ia mendengarkan pada port 21, dan coba sambungkan lagi. Jika koneksi ke netcat berhasil maka aturan iptables Anda baik-baik saja. Jika koneksi ke VSFTPD tidak berfungsi setelah netcat maka ada sesuatu yang salah dengan konfigurasi VSFTPD Anda.

41
Evan Anderson

Coba aturan ini. Catatan: $EXTIP adalah alamat IP eksternal Anda untuk server FTP.

-A INPUT -i $EXTIP -m state --state NEW,ESTABLISHED,RELATED -p TCP -s 0.0.0.0 -d $EXTIP --dport 21 -j ACCEPT
0
Matt

Dalam kasus saya, saya kehilangan modul kernel ip_conntrack_ftp. Perlu dimuat. Jadi Anda dapat mencoba ini:

modprobe ip_conntrack_ftp

Dan juga tambahkan ip_conntrack_ftp ke/etc/modules sehingga akan berfungsi setelah restart

0
Kornel