Ho creato un servizio (WCF) che funge da back-end per un DB. Per ora fa operazioni di base come INSERT, SELECT ecc. L'ho eseguito localmente ed ora è il momento di esporla a Internet e inserire 'produzione'. C'è una buona pratica per farlo? Tenete presente che questo servizio sarà ospitato su un PC come servizio Windows (non IIS). Questa è la prima volta che metto in produzione un servizio di Windows, quindi sono confuso nei dettagli, ma penso che questa sia l'idea principale:
-
Sul servizio: controlla gli errori di "rookie" come SQL Injection. Imposta le dimensioni massime dei messaggi a quelle marginalmente più alte del messaggio più grande che dovrebbe essere trasmesso dal mio servizio. Aggiornare anche il certificato X.509 autofirmato a uno emesso da una CA. (Dove si memorizza questo certificato? Localmente sul PC?)
-
Sul PC: software completamente patchato (sistema operativo, ecc.) e firewall di Windows con un insieme specifico di regole che consente il traffico solo sulle porte in uso (suppongo che il modo più sicuro per farlo sia usare lo strumento Windows) Consenti a un programma o a una funzione tramite Windows Firewall ?). Inoltre un antivirus aggiornato è in esecuzione.
-
Sulla rete: per il router di rete, porta in avanti le rispettive porte utilizzate (l'indirizzo di base è dichiarato come
http://localhost:8080
quindi suppongo la porta 80 per HTTP e 443 per HTTPS? Sto usando il livello di messaggio Sicurezza .) -
Precauzioni generali: registrazione completa dei messaggi sul servizio per analizzare il traffico e potenziali aggressori. Esegui anche un sistema di rilevamento delle intrusioni di rete come Snort in modo da poter dormire un po 'meglio la notte.
Mi manca qualcosa di ovvio?
Modifica
Sono nuovo di WCF e sto creando questi tipi di servizi in generale, quindi non sono sicuro di utilizzare la terminologia corretta.
Ho limitato il servizio impostando un limite superiore sul numero di chiamate, sessioni e ampli simultanei massimi; istanze (mi rendo conto che questo non protegge esplicitamente dagli attacchi HTTP, ma almeno il mio sistema non esaurirà la memoria e andrà in crash).
Per quanto ho capito, i metodi del mio servizio possono essere richiamati solo tramite un client SOAP con i contratti di servizio preconfigurati. Non sono sicuro che un aggressore possa ingaggiare questi contratti. Inoltre sembra che chiunque conosca l'indirizzo di base del mio servizio possa scaricare il riferimento del servizio e quindi avrà i contratti di servizio pronti. ( Risolto : disabilitando lo scambio di metadati)
Il bind che specifica la comunicazione tra endpoint è 'wsHttpBinding' con sicurezza a livello 'messaggio'.
La mia domanda è leggermente diversa, però, la configurazione di 1,2,3 e amp; 4 come sopra specificato compromettono la rete in cui è in esecuzione la macchina con questo servizio?