Виправити доступ до FTP з клієнтського комп’ютера Linux з увімкненим брандмауером
Сьогодні я хотів би поділитися своїм особистим досвідом використання FTP-доступу в Linux. Завдяки новим операційним системам від Microsoft, які я не вважаю придатними для щоденного використання, я перейшов на Linux кілька років тому. Я використовую FTP-сервер у своїй домашній мережі, і я не зміг отримати до нього доступ із запущеного клієнтського ПК Linux, який має правила брандмауера для блокування вхідних з’єднань, тобто політика INPUT має значення ВІДМІНИТИ в iptables. Ось як я вирішив проблему.
Я припускаю, що політика OUTPUT є ACCEPT як на клієнтських, так і на серверних машинах.
Рішення №1. Використовуйте модуль ядра nf_conntrack_ftp
Модуль ядра nf_conntrack_ftp дозволяє автоматично розблокувати доступ до необхідного порту для FTP-сервера щоразу, коли ви встановлюєте з'єднання. Єдиною вимогою до цього модуля є наступний рядок у ваших правилах iptables (зазвичай це /etc/iptables/iptables.rules) на клієнтському ПК:
$IPT -A INPUT -i eth0 -m стан --state ПОВ'ЯЗАНО, ВСТАНОВЛЕНО -j ПРИЙНЯТИ
Існує eth0 - це назва вашого мережевого пристрою.
Далі вам потрібно завантажити nf_conntrack_ftp, якщо він не завантажений. Виконайте наступну команду як root на клієнтському ПК
# modprobe nf_conntrack_ftp
Якщо ваш сервер використовує якийсь порт, відмінний від стандартного порту (окрім порту 21), скористайтеся такою командою:
# modprobe nf_conntrack_ftp ports=ваш_порт
Це забезпечить автоматичне з’єднання з усіма необхідними портами між FTP-сервером і клієнтським програмним забезпеченням. Це працює, поки ви не перезавантажите свій ПК.
Щоб зробити цю зміну постійною, вам потрібно створити новий текстовий файл /etc/modules-load.d/conntrack_ftp.conf і додати до цього файлу наступний рядок:
nf_conntrack_ftp
У разі порту сервера, який не за замовчуванням, вам потрібно створити додатковий файл /etc/modprobe.d/conntrack_ftp.conf з таким вмістом:
параметри nf_conntrack_ftp ports=
Цього має бути достатньо.
Рішення №2. Використовуйте фіксований діапазон пасивних портів
Якщо ви не можете використовувати модуль nf_conntrack_ftp, ви можете встановити фіксований діапазон портів для програмного забезпечення FTP-сервера та відкрити його на клієнтському ПК. Наприклад, ось як це можна зробити для програми vsftpd.
- У файлі конфігурації vsftpd, який зазвичай є /etc/vsftpd.conf, додайте такі рядки:
pasv_min_port=5500. pasv_max_port=6500
Це потрібно зробити на стороні сервера. Після цього вам слід перезапустити vsftpd.
- У свої правила iptables (зазвичай це /etc/iptables/iptables.rules) на клієнтському ПК додайте таке правило:
$IPT -A INPUT -p tcp -s
--dport 5500:6500 -j ПРИЙНЯТИ - Застосуйте правила iptables наступним чином:
# iptables-restore < /etc/iptables/iptables.rules
Це воно.