Protegendo aplicativos de canal par
Como outras associações no WinFX, a NetPeerTcpBinding
tem a segurança habilitada por padrão e oferece segurança baseada em transporte e em mensagem (ou ambos). Este tópico discute esses dois tipos de segurança. O tipo de segurança é especificado pela marca de modo de segurança na especificação de associação (SecurityMode
).
Segurança baseada em transporte
O Canal Par dá suporte a dois tipos de credenciais de autenticação para proteger o transporte, que exigem a configuração da propriedade ClientCredentialSettings.Peer
na ChannelFactory
associada:
Senha. Os clientes usam o conhecimento de uma senha secreta para autenticar as conexões. Quando esse tipo de credencial é usado,
ClientCredentialSettings.Peer.MeshPassword
precisa conter uma senha válida e, opcionalmente, uma instância deX509Certificate2
.Certificado. A autenticação de aplicativo específica é usada. Quando esse tipo de credencial é usado, você precisa usar uma implementação concreta de X509CertificateValidator em
ClientCredentialSettings.Peer.PeerAuthentication
.
Segurança baseada em mensagem
Usando a segurança da mensagem, um aplicativo pode assinar mensagens de saída para que todas as partes receptoras possam verificar se a mensagem é enviada por uma parte confiável e se a mensagem não foi adulterada. Atualmente, o Canal Par só dá suporte à assinatura de mensagem de credencial X.509.
Práticas Recomendadas
- Esta seção aborda as melhores práticas para proteger os aplicativos de Canal Par.
Habilitar a segurança com aplicativos de canal par
Devido à natureza distribuída dos protocolos de Canal Par, é difícil impor a associação de malha, a confidencialidade e a privacidade em uma malha sem segurança. Também é importante lembrar de proteger a comunicação entre os clientes e o serviço de resolvedor. No protocolo PNRP, use nomes seguros para evitar a falsificação e outros ataques comuns. Proteja um serviço de resolvedor personalizado habilitando a segurança na conexão que os clientes usam para entrar em contato com o serviço de resolvedor, incluindo a segurança baseada em mensagem e em transporte.
Usar o modelo de segurança mais forte possível
Por exemplo, se cada membro da malha precisar ser identificado individualmente, use o modelo de autenticação baseado em certificado. Se isso não for possível, use a autenticação baseada em senha seguindo as recomendações atuais para mantê-las seguras. Isso inclui o compartilhamento de senhas apenas com partes confiáveis, a transmissão de senhas usando um meio seguro, a alteração de senhas com frequência e a garantia de que as senhas sejam fortes (pelo menos, oito caracteres, incluir, no mínimo, uma letra maiúscula e minúscula, um dígito e um caractere especial).
Nunca aceitar certificados autoassinados
Nunca aceite uma credencial de certificado baseada em nomes de entidades. Observe que qualquer pessoa pode criar um certificado, e qualquer pessoa pode escolher um nome que você está validando. Para evitar a possibilidade de falsificação, valide os certificados com base na emissão de credenciais de autoridade (um emissor confiável ou uma autoridade de certificação raiz).
Usar a autenticação de mensagem
Use a autenticação de mensagem para verificar se uma mensagem veio de uma fonte confiável e se ninguém a violou durante a transmissão. Sem a autenticação de mensagem, é fácil para um cliente mal-intencionado falsificar ou adulterar as mensagens na malha.