FTP bleskově


Zdravím,
dnes si v článku ukámeže jak v několika krocích zprovoznit FTP server s virtuálními uživately. Testováno na Linux Mint 18.2 Sonya. Použitý FTP server SW byl PureFTPd.

Instalace

sudo apt-get install pure-ftpd

Vytvoření systémového uživatele

sudo groupadd pure-ftpd
sudo useradd --no-create-home -g pure-ftpd -s /bin/false pure-ftpd
mkdir -p /home/ftp-users/vasek

Konfigurace Pure-FTPd

cd /etc/pure-ftpd/auth
sudo ln -s ../conf/PureDB PureDB
echo "no" > /etc/pure-ftpd/conf/PAMAuthentication
echo "no" > /etc/pure-ftpd/conf/UnixAuthentication

cat << EOF > /etc/pure-ftpd/conf/PureDB
/etc/pure-ftpd/conf/PAMAuthentication
EOF

#na základě nastavené konfigurace pak skript /etc/init.d/pure-ftpd sestaví volání binárky /usr/sbin/pure-ftpd
/usr/sbin/pure-ftpd -l puredb:/etc/pure-ftpd/pureftpd.pdb -E -8 UTF-8 -O clf:/var/log/pure-ftpd/transfer.log -u 1000 -J ALL:!aNULL:!SSLv3 -B

Vytvoření virtuálního uživatele

sudo pure-pw userdel vasek
sudo pure-pw useradd vasek -u pure-ftpd -d /home/vasek/ftp/
sudo pure-pw useradd host  -u pure-ftpd -d /home/vasek/ftp/host
sudo pure-pw mkdb

Užitečné příkazy pure-pw

#seznam virtuálních uživatelů
sudo pure-pw list

#změna hesla uživatele vasek
pure-pw passwd vasek -m

#informace o uživateli vasek
pure-pw passwd show vasek

Aplikace změn

sudo systemctl restart pure-ftpd

Kontrola funkčnosti FTP serveru

#na serveru
netstat -tulpn | grep :21
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN 
#test připojení
ftp localhost
vasek
heslo

Connected to localhost.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 1 of 50 allowed.
220-Local time is now 03:20 Server port: 21.
220-This is a private system - No anonymous login
220 You will be disconnected after 15 minutes of inactivity.
Name (localhost:sulc): vasek
331 User vasek OK. Password required
Password:
230 OK. Current directory is /
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Ladění

#sledování aktivity
sudo pure-ftpwho

#transakční log
sudo less /var/log/pure-ftpd/transfer.log
pentest-9-cx - vasek [10/Apr/2018:03:43:48 +0200] "PUT /home/ftp-users/vasek/test/f.1" 200 0
pentest-9-cx - vasek [10/Apr/2018:03:43:51 +0200] "PUT /home/ftp-users/vasek/test/f.2" 200 0
pentest-9-cx - vasek [10/Apr/2018:03:44:43 +0200] "PUT /home/ftp-users/vasek/test/f.3" 200 0

#systémový log
less /var/log/syslog
Apr 10 03:31:04 localhost pure-ftpd[9181]: Starting ftp server: Running:/usr/sbin/pure-ftpd -l puredb:/etc/pure-ftpd/pureftpd.pdb -E -8 UTF-8 -O clf:/var/log/pure-ftpd/transfer.log -u 1000 -J ALL:!aNULL:!SSLv3 -B
Apr 10 03:24:14 localhost pure-ftpd: (?@localhost) [INFO] New connection from localhost
Apr 10 03:24:27 localhost pure-ftpd: (?@localhost) [WARNING] Authentication failed for user [vasek]
Apr 10 03:24:27 localhost pure-ftpd: (?@localhost) [INFO] Logout.
Apr 10 03:24:29 localhost pure-ftpd: (?@localhost) [INFO] New connection from localhost
Apr 10 03:24:32 localhost pure-ftpd: (?@localhost) [INFO] vasek is now logged in

Základní FTP příkazy

Typy souborů Význam typu souboru
!ls vylistování souborů na lokálním serveru
prompt vypnutí/zapnutí interaktivního módu
bi binární mód
cd pohyb po FTP serveru
dir nebo ls listování na FTP server
pwd vypíše aktualní adresář na FTP serveru
mkdir vytvoří adresář na FTP serveru
lcd adresar pohyb na lokálním serveru
!cd vypíše aktuální adresář na lokálnim serveru
! pomocí vykřičníku lze zavolat shellový příkaz na localhostu