Назад | Перейти на главную страницу

Почему порт 20 все еще заблокирован, когда я добавил его в Accept в iptables

Я пытаюсь открыть порты FTP на своем сервере. У меня на сервере уже установлен vsftpd. Однако я не могу связаться с сервером через порты 20 и 21.

Каким-то образом это позволяет мне сейчас получить доступ к порту 21.

Я запускаю Ubuntu 9.10 (Karmic) Я также запускал: modprobe ip_conntrack modprobe ip_conntrack_ftp

Ниже приведен iptables -L на моем сервере

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www
ACCEPT     tcp  --  anywhere             poseidon.valltek.com tcp dpts:ftp-data:ftp

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  poseidon.valltek.com  anywhere            tcp dpts:ftp-data:ftp

Я использовал www.ping.eu/port-chk/ для проверки порта. На всякий случай это была проблема с моей локальной машиной.

Спасибо.

Вы можете добавить ip_nat_ftp в свой список, а также убедитесь, что все загружается с помощью команды lsmod

Это домашний сервер от какого-то интернет-провайдера? если это так, у вас может быть общая проблема, когда обычно интернет-провайдеры блокируют порты с 1 по 1024 для своих домашних пользователей, поэтому они не создают домашние серверы (этот подход используется в нескольких странах afaik).

Если это не так, убедитесь, что вы также установили ip_forward.

sudo echo "1" > /proc/sys/net/ipv4/ip_foward

Межсетевой экран (iptables)

# Allow FTP connections @ port 21
iptables -A INPUT  -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT

# Allow Active FTP Connections
iptables -A INPUT -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT 

# Allow Passive FTP Connections
iptables -A INPUT -p tcp --sport 1024: --dport 1024:  -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1024: --dport 1024:  -m state --state ESTABLISHED -j ACCEPT 

Ты сказал Somehow it is allowing me to access port 21 at the moment.ты можешь что-нибудь скачать или загрузить? Если да, то это должно быть так, как показано ниже:

Активный FTP

В активном режиме FTP клиент подключается со случайного непривилегированного порта (N> 1023) к командному порту FTP-сервера, порту 21. Затем клиент начинает прослушивать порт N + 1 и отправляет FTP-команду PORT N + 1 FTP. сервер. Затем сервер снова подключится к указанному клиентом порту данных из своего локального порта данных, то есть порта 20.

С точки зрения серверного межсетевого экрана, для поддержки активного режима FTP необходимо открыть следующие каналы связи:

* FTP server's port 21 from anywhere (Client initiates connection)
* FTP server's port 21 to ports > 1023 (Server responds to client's control port)
* FTP server's port 20 to ports > 1023 (Server initiates data connection to client's data port)
* FTP server's port 20 from ports > 1023 (Client sends ACKs to server's data port)

Пассивный FTP

Чтобы решить проблему инициации сервером соединения с клиентом, был разработан другой метод для FTP-соединений. Это было известно как пассивный режим, или PASV, после команды, использованной клиентом, чтобы сообщить серверу, что он находится в пассивном режиме.

В пассивном режиме FTP клиент инициирует оба подключения к серверу, решая проблему брандмауэра, фильтрующего входящее соединение порта данных с клиентом с сервера. При открытии FTP-соединения клиент открывает два случайных непривилегированных порта локально (N> 1023 и N + 1). Первый порт связывается с сервером через порт 21, но вместо того, чтобы затем выдать команду PORT и разрешить серверу подключиться обратно к его порту данных, клиент выдает команду PASV. В результате сервер затем открывает случайный непривилегированный порт (P> 1023) и отправляет команду PORT P обратно клиенту. Затем клиент инициирует соединение от порта N + 1 к порту P на сервере для передачи данных.

С точки зрения серверного межсетевого экрана, для поддержки пассивного режима FTP необходимо открыть следующие каналы связи:

* FTP server's port 21 from anywhere (Client initiates connection)
* FTP server's port 21 to ports > 1023 (Server responds to client's control port)
* FTP server's ports > 1023 from anywhere (Client initiates data connection to random port specified by server)
* FTP server's ports > 1023 to remote ports > 1023 (Server sends ACKs (and data) to client's data port)