
[ Home | Liste | F.A.Q. |
Risorse | Cerca... ]
Archivio: Novembre 2002 ml@sikurezza.org Soggetto: Realizzare un server sicuro per carte di credito Mittente: BlueRaven Data: 13 Nov 2002 18:43:31 -0000
Ciao a tutti, cerco di spiegare in poche parole quel che devo fare: l'azienda per cui lavoro sta realizzando una applicazione per la prenotazione online di stanze d'albergo. Come certamente saprete, quando prenotate una stanza in un albergo, e' d'uso fornire la propria carta di credito a garanzia del pagamento. Per tutta una serie di motivi che non vi sto a spiegare - chi fosse interessato mi contatti pure in privato - nessuno, ripeto nessuno dei sistemi classici (Banca Sella, Telepay e company) e' adatto a fare cio' che voglio. Mi trovo pertanto a dover gestire in prima persona un elenco di carte di credito, da memorizzare su un server e da consultarsi attraverso un'interfaccia web. Fermo restando che e' una pazzia (e l'ho gia' fatto presente, dotandomi di liberatoria), avrei bisogno di qualche consiglio per quanto riguarda la realizzazione tecnica del tutto. La macchina che fungera' da server ha installata una Debian stable ridotta all'osso, con il kernel ricompilato per supportare il solo hardware e le funzionalita' strettamente necessarie e che provvedo personalmente ad aggiornare ogni qualvolta esce un security advisory relativo a un pacchetto installato. Per quanto riguarda i servizi, la macchina sta dietro un firewall che espone all'esterno solo le porte strettamente necessarie. Gli unici servizi che girano sono un ssh, un Apache con supporto PHP e un MySQL. Il database non e' accessibile via TCP/IP, l'unica interfaccia e' un socket locale. L'utente root e' dotato di password forte e ho impostato delle ACL in modo che solo un utente apposito, senza privilegi amministrativi, possa interagire col database. Il PHP e' configurato in modo che non si possano aprire file al difuori della webroot di proprieta' altrui, neanche tramite la creazione di un symlink (SymLinksIfOwnerMatch impostato in Apache dalla / in giu'). Sto gia' verificando se posso aggiungere anche il safe mode e fornire cosi' un ulteriore livello di protezione (purtroppo, l'applicazione per la consultazione non la realizzo io). La configurazione di Apache e' minimale, giusto quel che basta per offrire l'interfaccia web per la consultazione, il tutto in SSL a 128 bit e chiave RSA a 1024 bit. Infine, l'accesso ssh e' possibile solo ed esclusivamente con autenticazione a chiave pubblica/privata a 1024 bit, tutte le altre forme di autenticazione sono esplicitamente disabilitate. Mi sembra una discreta base di partenza, ma mi piacerebbe sapere se secondo voi ho trascurato qualcosa e/o se ci sono alternative migliori. Ora, i punti principali che mi preoccupano sono: a. poiche' le pagine web degli alberghi risiedono, fisicamente, su un altro server ed e' qui che vengono raccolti i dati delle carte di credito, sempre in SSL ovviamente, ho il problema di spedire questi dati al server di backoffice per gli albergatori (quello sopra descritto). La macchina, infatti, sta nella stessa DMZ di tutte le altre e ce ne sono anche alcune in housing che non amministro io direttamente. L'unico modo di dare un grado di sicurezza decente mi sembra utilizzare una qualche forma di crittografia tra le due macchine, in modo da costruire una specie di mini VPN interna alla DMZ. Il problema principale e' che non posso semplicemente fare una query remota sul database (che non ascolta sull'interfaccia di rete), quindi dovrei scrivermi anche una piccola utility che non faccia altro che prendere i dati che arrivano dal tunnel crittato e li traduca in una query SQL attraverso il socket. Sapete se esiste qualcosa che lo faccia gia' e che sia ragionevolmente sicuro? Per quanto riguarda il tunnel, esistono una pletora di soluzioni, dal semplice ssh fino a FreeS/WAN. Avete consigli e/o esperienze? Non mi serve una descrizione dettagliata, poi con l'implementazione me la vedo io, solo qualche dritta. b. la memorizzazione dei dati sul server. Premetto che la finestra temporale di disponibilita' dei dati e' abbastanza stretta (una settimana al massimo, dopodiche' vengono cancellati), ma volevo ugualmente trovare un modo per evitare di memorizzarli in chiaro. L'archivio non sara' molto grande, stimo che al massimo saranno presenti una trentina di numeri alla volta. Se fosse necessario, sono anche disposto a rinunciare a MySQL e usare qualcosa di alternativo. Non so, pensavo a un archivio DBM che risiede su una partizione criptata che viene decriptata al volo quando c'e' una richiesta o cose del genere. Avete qualche consiglio in proposito? Vi ringrazio in anticipo per ogni suggerimento: ho cercato con cura in Rete (si', Koba, anche sugli archivi della lista! :-P) ma sembra che io sia l'unico pazzo su questa Terra a non affidarsi ad un sistema esistente (ma non dipende da me). Ovviamente, se servono piu' info, rimango in ascolto. -- BlueRaven There are only 10 types of people in this world... those who understand binary, and those who don't. ________________________________________________________ http://www.sikurezza.org - Italian Security Mailing List
[ Home | Liste | F.A.Q. |
Risorse | Cerca... ]
www.sikurezza.org - Italian Security Mailing List
(c) 1999-2005