Кирүү иштейт, PWD иштейт, анан LIST кардар баш тартканга чейин же башка маалымат режимине өткөнгө чейин илинип турат. Бул бөлүнүү — так белги: 21 портко башкаруу байланышы соо, ал эми маалымат байланышы каршы тарап жете албаган дареги же порту боюнча курулуп жатат. NAT да жасаган VPN дарбазасынын артында адаттагы күнөөкөр — пайдалуу жүгүндө 10.8.0.6 сыяктуу туннелдик даректи атаган FTP буйругу. Баштарды которуу бул мааниге эч качан тийбейт.

Андан ары — бул маани кайдан келет жана кайсы куту аны өзгөртүүгө укуктуу.

Сынган нерсе — пайдалуу жүк, туннел эмес

FTP маалыматтын акыркы чекитин башкаруу агымынын ичине коёт. Активдүү режимде кардар өз дареги жана порту менен PORT жөнөтөт, ал эми сервер ошол жупка кайра чалат. Пассивдүү режимде сервер 227 менен жуп кайтарат, ал эми кардар анын ордуна ошол жупка чалат.

Эки форма тең бир типтеги билдирүүнү алып жүрөт: ушул дарекке, ушул порт менен туташ. Бир гана IP жана TCP баштарын кайра жазган түзмөк билдирүүнү ошол бойдон калтырат, ошондуктан бир тарап туннелдин наркы тарабында гана бар дарекке жетүүгө аракет кылууну улантат. Башкаруу байланышы соо деп жарыялангандан кийин маалымат байланышы токтоп калат.

Үч режим, үч пайдалуу жүк

Төмөнкү таблица кайсы тарапка чалуу буйрулганын жана баштарды гана кайра жазган NAT буга эмне кыла аларын көрсөтөт.

Акыркы тилкени биринчи ишке ашпай калган нерсе катары окуңуз. Активдүү режимде жеке дарекке чалуучу — сервер, пассивдүү режимде — кардар, ал эми FTPSте пайдалуу жүк шифрленген текст, ошондуктан ортолук кутунун иштеген нерсеси андан да аз.

ModeValue in the control streamWho dials whomHeader-only NAT leaves
Active (PORT)client address and portserver dials the clienta server dialing an unreachable tunnel address
Passive (227)server address and portclient dials the servera client dialing an address it cannot route to
FTPSthe same values, inside TLSas aboveciphertext, so no rewrite happens at all

Жардамчыны которуу болуп жаткан жерге коюңуз

Linuxта пайдалуу жүктү кайра жазуды nf_conntrack_ftp жардамчысы жасайт. Ал башкаруу байланышын көзөмөлдөйт, келишилген портту үйрөнөт, маалымат агымы үчүн күтүү түзөт жана NAT кутусунда пайдалуу жүктүн ичиндеги даректи жана портту кайра жазат. Ал кардардын дарегин которгон түзмөктө гана жардам берет. Аны кардарга же агымды гана өткөрүп жиберген маршрутизаторго жүктөө сессияда эч нерсени өзгөртпөйт.

Бул үч буйрук модулдун бар-жогун, туташтырылганын жана сессия ачык турганда күтүүнүн бар-жогун көрсөтөт:

modprobe nf_conntrack_ftp
lsmod | grep nf_conntrack_ftp
conntrack -L expect | grep ftp

Модулду жүктөө аны туташтыруу менен бирдей эмес. 4.7ден баштап ядролор net.netfilter.nf_conntrack_helper=0 менен келет, ошондуктан жардамчы ачык эрежени күтөт, мисалы iptables -t raw -A PREROUTING -p tcp --dport 21 -j CT --helper ftp. Эгер өткөрүү аракети учурунда күтүүлөр тизмеси бош калса, текшериле турган нерсе — туташтыруу, модул эмес.

Пассивдүү режим: серверге эмнени жарыялоону айтыңыз

Пассивдүү режимди детерминдүү кылуу жеңилирээк, анткени серверге 227 жообуна эмнени коюуну айтууга болот. vsftpdде бул pasv_address, pasv_min_port жана pasv_max_port менен бирге; ProFTPD MasqueradeAddress жана PassivePorts колдонот. Аларды биринчи кезекте коюңуз, анткени туура жарыяланган дарек ошол тарапта бир нерсени кайра жазуу зарылдыгын жок кылат.

Андан кийин дал ошол порт диапазонун дарбазадан өткөрүңүз, мисалы -A FORWARD -i tun0 -p tcp --dport 30000:30100 -j ACCEPT, эреже сервер жарыялаганга дал келиши үчүн.

Эки жөндөө келишиши керек. 30000-30100ди жарыялоого буйрулган сервер, ал эми дарбаза 40000-40100ге уруксат берсе, эң пайдасыз түрдө ишке ашпай калат: башкаруу сүйлөшүүсү соо көрүнөт, ал эми ар бир маалымат байланышы өлөт. Башка нерсени оңдоодон мурун сандарды салыштырыңыз.

Эки бузулуу белгиси жана FTPS эмнени жок кылат

LISTте илинүү сессиянын биринчи маалымат байланышына көрсөтөт, ал жерде даректи кайра жазуу да, күтүү да иштеши керек. Иштеп турган LISTтен кийинки RETRде илинүү өткөрүүнүн өзүнө, башкача айтканда пассивдүү диапазонго же туннелдин MTUсуна көрсөтөт. Бул экинчи белги пайдалуу жүк маселеси эмес, жардамчынын жөндөөлөрү аны оңдобойт.

TLS үстүндөгү FTP жардамчы окуган пайдалуу жүктү жок кылат. Ортолук куту чече албаган PORT же PASV маанисин кайра жаза албайт, ошондуктан калган варианттар — TLSти бүтүргөн прокси, чектелген диапазондо жеткиликтүү даректи жарыялаган сервер же башка өткөрүү протоколу.

Текшерүүлөрдүн кыска тартиби

Симптомдон тышкары карай иштеңиз. PWD ийгиликтүү болгондо LIST ишке ашпай турганын ырастаңыз, PORT же 227 пайдалуу жүгүнүн ичиндеги даректи кармап алыңыз жана кайсы түзмөк ошол даректи которорун сураңыз. Жардамчыны ошол жерге туташтырыңыз, бир өткөрүү учурунда күтүүлөр тизмесин көзөмөлдөңүз, анан серверде пассивдүү режимди оңдоп, диапазонду дарбаза эрежесинде чагылдырыңыз.

Маалымат жолундагы бузулууну жапырт өткөрүү бузулуусунан өзүнчө кармаңыз, анткени алар сизди ар башка жөндөөлөргө алып барат.

Тектеш макалалар