Cho phép FTP với IPTables


26

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

1
đã sửa định dạng của bạn để nó có thể đọc được.
Avery Payne

Tôi giả sử bạn đang sử dụng Rackspace? hướng dẫn có lỗ hổng đó. Chỉ cần làm theo hướng dẫn của @Evan Anderson.
Andres SK

Câu trả lời:


41

Đâ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 cổng TCP 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 cổng TCP 21 và các kết nối đến tới 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ẽ dội lại đầu vào vỏ 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 sẽ thấy đầu ra trong vỏ 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.


Cảm ơn bạn đã giúp đỡ, những gợi ý bạn đưa ra cho chế độ thụ động đã khắc phục vấn đề của tôi. Tôi đánh giá cao sự giúp đỡ.
IOTAMAN

Khởi động lại iptables sẽ xóa sạch mọi thay đổi bạn đã thực hiện nếu bạn không đặt IPTABLES_SAVE_ON_STOP thành "có".
Kevin M

@Kevin: Hoàn toàn, một điểm tốt! > mỉm cười <Tôi sẽ bỏ một chỉnh sửa về điều đó ngay bây giờ.
Evan Anderson

@ GLB03: Không vấn đề gì. Tôi sống với Máy chủ Lỗi ...> cười <
Evan Anderson

Câu trả lời này không hiệu quả với tôi, vì vậy đối với bất kỳ ai khác có vấn đề này, tôi sẽ chỉ ra rằng điều này (và cũng mở cổng đầu vào / đầu ra 21) đã làm việc với tôi: linuxquestions.org/questions/linux-security-4 / ... -
ehsanul

0

Hãy thử quy tắc này. Lưu ý: $EXTIPlà đị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

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.