Здравейте, имам качен proftp сървър на един Slackware.
Въпросът ми е следния: При следните iptables правила:
:INPUT DROP [462:35730]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [47:6571]
-A INPUT -p tcp -m tcp --dport 20:21 -j ACCEPT
имам изключително бавен достъп до FTP сървъра и то само през cmd на Windows. Ако ползвам Windows Explorer като ftp клиент, след Logon прозореца не ми показва директориите в ftp-to: грешката е Connection Time Out.
По такъв начин конфигуриран firewall-a, към ftp сървъра могат да се правят само трансфери в active mode, демек клиента при връзване праща отворен порт и сървъра се връзва на този порт. Ако Windows Explorer-a е конфигуриран да работи в passive mode, резултатът е логичен. А защо се бави в active mode с command-line ftp клиента, не мога да кажа - вероятно причината е някаква друга (шейпинг някакъв примерно, досаден антивирусен софтуер на уиндоуса или кой знае какво).
По този начин конфигуриран firewall-a, имаш и друго неудобство: клиенти зад NAT няма да могат да осъществяват трансфери, защото при тях ползването на passive mode е задължително.
Четох малко из google и разбрах, че трябва да редактирам iptalbes правилата така::INPUT DROP [462:35730]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [47:6571]
-A INPUT -p tcp -m tcp --dport 20:21 -j ACCEPT
-A INPUT -p ALL -m state --state RELATED,ESTABLISHED -j ACCEPT
и да зареда следния модул: ip_conntrack_ftp
След което всичко се орпавя.
Причината е че по този начин, firewall-a инспектира всеки FTP пакет и ако види PORT... команда, ще разреши новата връзка (пакетите, които я иницират се водят RELATED). Така passive mode може да се случи.
Но искам да ви питам следното:
Тези related и established връзки (за всички протоколи и на всичи портове) не са ли проблем за сигуността?
Ами това е въпрос не толкова на firewall-a, колкото на FTP сървъра. Лошо написаните FTP сървъри, ще приемат всякакви PORT команди от клиентите и като резултат, ще позволят на лошите клиенти да ти bypass-ват firewall-a. Proftpd ако не се лъжа имаше опция, забраняваща такива волности и тя си е включена по дефолт.
А модулът conntrack_ftp до колкото разбрах, е за да може една ftp сесия да променя порта си без да се налага наново стартиране на връзката. Ако искам да мога с Windows Explorer да отварям ftp-to трябва да е зареден, т.e. за да се "раузват" директориите на ftp-то се използва друг порт?
FTP протокола ползва две връзки: контролна и такава за данни. По контролната минават командите и статус кодовете на резултатите. По връзката за данни минава всичко останало - файлове, включително и съдържания на директории. Когато се връзваш до сървъра, отваряш контролна конекция. Отварянето на връзката за данни е подробност, която обикновено се спестява на потребителите и се върши от клиента или сървъра. Както се досещаш, двете връзки използват различни двойки source/destination портове. Разликата между passive и active mode e най-вече в това кой иницира връзката за данни - клиента или сървъра.