익명 FTP 패시브 서버 설정. FTP server passive mode anonymous on AWS Ubuntu 20.04.2
# 인앱에서 외부 브라우저를 띄우기
어플 인앱에서 외부 브라우저로 띄우기 위해서
안드로이드는 url에 intent 사용하면 되고
아이폰에서는 FTP를 사용하여 safari를 띄운 뒤에 redirect를 하는 hacky한 방법을 사용합니다
아이폰에서는 FTP 프로토콜을 실행을 위해서 safari를 실행하는 걸 이용하는 원리입니다
하지만 인앱에서 막으면 이것도 실행되지 않습니다 - 에브리타임(everytime.kr)의 경우 막혀있습니다 ㅠㅠ
번개애비님의 블로그에 위의 방법이 기록되어 있고
송효진님께서 인앱브라우저 탈출링크 urlopen.link 에 서비스를 하고 계십니다
일반적으로는 urlopen.link(https://urlopen.link/)를 사용하면 될 거 같습니다
https://www.burndogfather.com/201
아이폰에서 필요했던 FTP 서버를 만들었던 기록을 남깁니다
# FTP server (passive mode, anonymous) 만들기 on AWS EC2 Ubuntu 20.04.2
1. vsftpd를 설치합니다
sudo apt-get update
sudo apt-get install vsftpd
2. vsftpd 설정을 변경합니다
이 부분이 힘들었습니다
passive mode,
anonymous는 읽기 가능, 쓰기 불가능 하게 만드는 게 목표
sudo vi /etc/vsftpd.conf
# /etc/vsftpd.conf
listen=YES
listen_ipv6=NO
anonymous_enable=YES
pasv_enable=Yes
pasv_min_port=40000
pasv_max_port=50000
anon_root=/var/ftp
pasv_address=1.2.3.4 # replace it your ip or dns
그리고 어려웠던 부분이 다음 3가지 설정입니다
(1) pasv_address=1.2.3.4. # replace it your ip or dns
(2) listen=YES
(3) listen_ipv6=NO
<문제 원인>
(1) pass_address
pass_address를 설정하지 않으면 private ip를 주기 때문에 접근이 불가능합니다
https://serverfault.com/questions/798758/passive-mode-issue-with-vsftpd-on-ubuntu-ec2/908372
(2,3) listen, listen_ipv6
pass_address 설정 이후에 ftp 연결을 해보면
227 Entering Passive Mode (0,0,0,0,184,169)
에서 (0,0,0,0,..) 으로 응답이 옵니다
위의 tuple에서 앞의 4자리는 ip v4이고 뒤의 두 자리는 포트입니다
(https://m.blog.naver.com/ssuyastory/100206765480)
즉, (184 * 256) + 169 = 47273 포트라는 뜻입니다
3. AWS security에서 포트를 열어줍니다
4. iptables에서도 포트를 열어줍니다
sudo iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 40000:50000 -j ACCEPT
5. 접속해보면
정상적으로 잘 동작하는 것을 확인할 수 있습니다
### 공부해야하는 것들
1. FTP active, passive mode
2. Linux iptables
https://sata.kr/entry/IPTables-5-IPTables-%EB%95%8C%EB%AC%B8%EC%97%90-FTP-%EB%94[…]C%A8%EA%B0%80-%EB%B0%9C%EC%83%9D%ED%95%9C%EB%8B%A4%EB%A9%B4-INPUT