Artikel arkivet's artikelkategori: Program
Skriven av _logoz_ 2005-02-01 17:42 url: 

ProFTPD med TLS

1) Inledning
2) Enkel förklaring av TLS
3) Kontrollera om vi har OpenSSL installerat
4) Generera nycklar
5) Installation av ProFTPD 1.2.9
6) Konfiguration av ProFTPD 1.2.9
7) FTP-klienter och test av vår server
8) Slutord


1) Denna artikel kommer beskriva hur du sätter upp ProFTPD med stöd för TLS (Transport Layer Security) i Slackware 9.0. Om man driver en FTP-server som skickar okrypterad data innebär detta att om någon "sniffar", dvs. avlyssnar, trafiken som går mellan servern och en klient så kan han se vad som skickas (användarnamn, lösenord, vilka filer som skickas och dess innehåll). Detta är kanske inte att föredra i alla lägen, varvid man krypterar den data som överförs för att skydda sig mot dessa "sniffare".

2) TLS är en krypteringsmetod som tillhandahåller säkerhet vid överföring av data. TLS består av två protokoll, TLS Record Protocol och TLS Handshake Protocol. Handshake-protokollet handhar autentisiering mellan klient och server och talar om vilka nycklar och kryptering som ska användas etc. innan någon data överförs överhuvudtaget.

3) Det första vi måste göra är att kontrollera så att vi har OpenSSL installerat. Det gör vi enklast genom att skriva

openssl

Om vi har tur kommer det att ser ut såhär:

OpenSSL>

Om det gör det skriver vi version

OpenSSL> version

vilket kan ge utskriften

OpenSSL 0.9.7a Feb 19 2003

Jag kör i nuläget med ovan nämda version (vilket är default-versionen i Slackware 9.0). Man ska alltid se till att man har en bra uppdaterad version. Om du har en äldre kan du ladda hem en senare från http://www.openssl.org/source

4) Nu ska vi generera nycklar som vi ska använda för autentisiering. Detta gör vi enklast genom att skapa ett shell-skript.

vi makecert.sh

#!/bin/sh
echo "Skapar self-signed certificate och RSA Private Key"
echo "----------------------------------------------------------"

touch proftpd.pem
chmod 600 proftpd.pem
openssl req -new -x509 -nodes -days 365 -out proftpd.pem -keyout proftpd.pem

Nu ska vi göra vårt skript exekverbart.

chmod +x makecert.sh

Och nu kör vi det genom att skriva

./makecert.sh

5) Nu ska vi få igång ProFTPD! Om du redan har ProFTPD installerat så kontrollera att du har version 1.2.9 eller senare. Om du inte har det så kör pkgtool och avinstallera ProFTPD.

I nuläget kör jag med version 1.2.9rc2 av ProFTPD. Hämta hem källkoden från ProFTPDs FTP-site, ftp.proftpd.org/distrib/source/

wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.2.9rc2.tar.gz

Nu ska vi packa upp tar-filen

tar zxvf proftpd-1.2.9rc2.tar.gz

Nu ska vi köra configure-skriptet som ligger i proftpd-katalogen som nyss skapades när vi packade upp tar-filen.

./configure --with-modules=mod_tls

En massa text rabblas upp och när det är klart kör vi

make && make install

6) ProFTPD är nu installerat och nu ska vi editera proftpds konfigurations-fil som vi nu hittar i /usr/local/etc/proftpd.conf

Vi lägger till följande rader:

TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol TLSv1

# Are clients required to use FTP over TLS when talking to this server?
TLSRequired on

# Server's certificate
TLSRSACertificateFile /var vi har lagt proftpd.pem
TLSRSACertificateKeyFile /var vi har lagt proftpd.pem

# Authenticate clients that want to use FTP over TLS?
TLSVerifyClient off

7) Allt är klappat och klart och nu ska vi prova att logga in på vår server. Jag använder i Windows-miljö FlashFXP (www.flashfxp.com) som FTP-klient. Just nu kör jag version 2.1 och det fungerar bra. Jag har också testat Cute FTP Pro 3.0 och den har också fungerat bra. Vilken som är bäst får man avgöra själv tycker jag.

I FlashFXP trycker vi F4 för att få upp Site-manager:n och vi lägger till en ny site. Under General-tabben skriver vi in IP, användarnamn och lösenord. Innan vi trycker "Connect" går vi in på SSL-tabben där vi väljer "Auth TLS" och ser till att kryssboxarna "Secure File Listing" och "Secure File Transfers (Upload/Download)" är ikryssade. Nu tycker vi "Connect" och förhoppningsvis ser vi någonting i stil med detta:

220 ProFTPD 1.2.9rc2 Server (ProFTPD) [torkel.svetlana]
AUTH TLS
234 AUTH TLS successful
Negotiating SSL/TLS session...
SSL/TLS negotiation successful...
SSL/TLS connection using cipher EDH-RSA-DES-CBC3-SHA (168 bits)

8) Jag hoppas att ni har haft nytta av denna artikel. Jag är ganska ny på Linux och jag resonerar som så att "om jag fick det att funka, funkar det för andra också" och det är med den attityden jag har skrivit. Mycket av innehållet i artikeln är hämtat från en lathund hos FreeBSD.se men mycket information har jag även fått från kompisar och egna erfarenheter.