it-swarm-vi.tech

Cho phép FTP với IPTables

Kịch bản hiện tại của tôi liên quan đến việc cho phép các quy tắc khác nhau, nhưng tôi cần có thể truy cập ftp từ bất cứ đâu. HĐH là Cent 5 và tôi đang sử dụng VSFTPD. Tôi dường như không thể có được cú pháp chính xác. Tất cả các quy tắc khác hoạt động chính xác.

## 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

Sau đây là những quy tắc tôi đã thử.

##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

Đây là tài liệu tôi giới thiệu cho mọi người để họ có thể theo giao thức FTP: http://slacksite.com/other/ftp.html

  • Để thực hiện FTP ở chế độ hoạt động, bạn cần cho phép các kết nối đến TCP cổng 21 và các kết nối đi từ cổng 20.
  • Để thực hiện FTP ở chế độ thụ động, bạn cần cho phép các kết nối đến TCP cổng 21 và các kết nối đến một cổng được tạo ngẫu nhiên trên máy tính của máy chủ (bắt buộc phải sử dụng mô-đun conntrack trong bộ lọc mạng)

Bạn không có bất cứ điều gì nữa: chuỗi OUTPUT của bạn trong bài viết của bạn, vì vậy tôi cũng sẽ đưa nó vào đây. Nếu chuỗi OUTPUT của bạn là mặc định thả thì vấn đề này.

Thêm các quy tắc này vào cấu hình iptables của bạn:

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

Để hỗ trợ FTP chế độ thụ động, sau đó, bạn cần tải mô-đun ip_conntrack_ftp khi khởi động. Bỏ ghi chú và sửa đổi dòng IPTABLES_MODULES trong tệp/etc/sysconfig/iptables-config để đọc:

IPTABLES_MODULES="ip_conntrack_ftp"

Lưu cấu hình iptables và khởi động lại iptables.

service iptables save
service iptables restart

Để loại trừ hoàn toàn VSFTPD là một vấn đề, hãy dừng VSFTPD, xác minh rằng nó không nghe trên cổng 21 với "netstat -a" và sau đó chạy:

nc -l 21

Điều này sẽ bắt đầu nghe netcat trên cổng 21 và sẽ lặp lại đầu vào cho Shell của bạn. Từ một Máy chủ khác, TELNET đến cổng 21 của máy chủ của bạn và xác minh rằng bạn có kết nối TCP và bạn thấy đầu ra trong Shell khi bạn nhập kết nối TELNET.

Cuối cùng, mang VSFTPD sao lưu, xác minh rằng nó đang nghe trên cổng 21 và thử kết nối lại. Nếu kết nối với netcat hoạt động thì quy tắc iptables của bạn vẫn ổn. Nếu kết nối đến VSFTPD không hoạt động sau khi netcat không hoạt động thì có gì đó không đúng với cấu hình VSFTPD của bạn.

41
Evan Anderson

Hãy thử quy tắc này. Ghi chú: $EXTIP là địa chỉ IP bên ngoài của bạn cho máy chủ 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

Trong trường hợp của tôi, tôi đã thiếu mô-đun hạt nhân ip_conntrack_ftp. Nó cần phải được tải. Vì vậy, bạn có thể thử điều này:

modprobe ip_conntrack_ftp

Và cũng thêm ip_conntrack_ftp vào/etc/mô-đun để nó hoạt động sau khi khởi động lại

0
Kornel