Instituto de Tecnologia de Massachusetts. Curso de Aula nÂș 6.858. "Segurança de sistemas de computador". Nikolai Zeldovich, James Mickens. 2014 ano
Computer Systems Security Ă© um curso sobre o desenvolvimento e implementação de sistemas de computador seguros. As palestras abrangem modelos de ameaças, ataques que comprometem a segurança e tĂ©cnicas de segurança baseadas em trabalhos cientĂficos recentes. Os tĂłpicos incluem segurança do sistema operacional (SO), recursos, gerenciamento de fluxo de informaçÔes, segurança de idiomas, protocolos de rede, segurança de hardware e segurança de aplicativos da web.
Palestra 1: âIntrodução: modelos de ameaçasâ
Parte 1 /
Parte 2 /
Parte 3Palestra 2: âControle de ataques de hackersâ
Parte 1 /
Parte 2 /
Parte 3Aula 3: âEstouros de Buffer: ExploraçÔes e Proteçãoâ
Parte 1 /
Parte 2 /
Parte 3Palestra 4: âSeparação de PrivilĂ©giosâ
Parte 1 /
Parte 2 /
Parte 3Palestra 5: âDe onde vĂȘm os sistemas de segurança?â
Parte 1 /
Parte 2Palestra 6: âOportunidadesâ
Parte 1 /
Parte 2 /
Parte 3Palestra 7: âSandbox do Cliente Nativoâ
Parte 1 /
Parte 2 /
Parte 3Aula 8: âModelo de Segurança de Redeâ
Parte 1 /
Parte 2 /
Parte 3Aula 9: âSegurança de aplicativos da Webâ
Parte 1 /
Parte 2 /
Parte 3Palestra 10: âExecução SimbĂłlicaâ
Parte 1 /
Parte 2 /
Parte 3Aula 11: âLinguagem de Programação Ur / Webâ
Parte 1 /
Parte 2 /
Parte 3Aula 12: Segurança de rede
Parte 1 /
Parte 2 /
Parte 3 Hoje falaremos sobre segurança de rede, em particular, discutiremos um artigo de Stephen Bellovin intitulado "Uma retrospectiva de" Problemas de segurança no conjunto de protocolos TCP / IP "". Esse cara trabalhava na AT&T e agora trabalha na ColÎmbia. O interessante neste trabalho é que ele é relativamente antigo - tem mais de 10 anos e, de fato, esses são comentårios sobre um artigo publicado uma década antes em 1989.
Muitos de vocĂȘs perguntam por que estudamos isso se muitos dos problemas descritos lĂĄ foram resolvidos nas versĂ”es atuais do protocolo TCP.

Ă verdade que alguns dos problemas descritos por Stephen foram resolvidos e alguns continuam sendo problemas. Com isso em mente, vamos classificĂĄ-los e ver o que acontece. VocĂȘ pode se perguntar por que as pessoas nĂŁo resolveram todos esses problemas ao projetar o TCP? O que eles estavam pensando?
E isso nĂŁo estĂĄ claro. O que vocĂȘ acha? Por que o protocolo TCP nĂŁo possui a segurança necessĂĄria, considerando todas essas consideraçÔes? Alguma sugestĂŁo?
Aluno: Naquela Ă©poca, a Internet era um lugar muito mais ingĂȘnuo.
Professor: sim, foi literalmente uma citação do artigo desse cara. Sim, naquela Ă©poca em geral ... um conjunto de protocolos da Internet foi desenvolvido, penso, cerca de 40 anos atrĂĄs. Os requisitos eram completamente diferentes. Era apenas necessĂĄrio conectar um monte de sites relativamente ingĂȘnuos que se conheciam pelo nome a uma rede comum.
Eu acho que isso geralmente acontece em qualquer sistema que tenha sucesso - ele precisa de mudanças. Costumava ser um protocolo para um pequeno nĂșmero de sites, agora este protocolo cobre o mundo inteiro. E vocĂȘ nĂŁo sabe mais pelo nome de todas as pessoas conectadas Ă Internet. VocĂȘ nĂŁo pode ligar para eles se eles fizerem algo ruim e assim por diante.
Portanto, acho que essa histĂłria Ă© a mesma para muitos dos protocolos que estamos considerando. E muitos de vocĂȘs estĂŁo fazendo uma pergunta como: âque diabos esses caras estavam pensando? Isso Ă© tĂŁo falho! Mas, na realidade, eles projetaram um sistema completamente diferente, simplesmente o adaptaram Ă s necessidades modernas.
A mesma coisa, e a Internet, como vimos nas Ășltimas duas semanas, foi projetada para uma finalidade completamente diferente. Mas ele se expandiu e tivemos novas preocupaçÔes sobre como adaptar esse protocolo aos requisitos modernos.
Outra coisa aconteceu de repente: as pessoas tiveram que superestimar a gravidade do problema de segurança. Antes, vocĂȘ realmente nĂŁo entendia tudo o que deveria se preocupar, porque nĂŁo sabia o que o atacante era capaz de fazer com seu sistema.

Acho que, em parte, por esse motivo, serĂĄ interessante ver o que aconteceu com a segurança do TCP, o que deu errado, como podemos corrigi-lo e assim por diante. Como resultado, precisamos descobrir que tipos de problemas devem ser evitados ao desenvolver nossos prĂłprios protocolos, bem como o que constitui um pensamento adequado sobre ataques desse tipo. Como vocĂȘ sabe o que um invasor Ă© capaz de fazer em seu prĂłprio protocolo quando vocĂȘ o estĂĄ desenvolvendo para evitar essas armadilhas?
Ok, vamos deixar o preĂąmbulo de lado e falar sobre este artigo.
EntĂŁo, como devemos pensar em segurança de rede? Acho que poderĂamos começar com o primeiro princĂpio e tentar descobrir qual Ă© o nosso modelo de ameaça. EntĂŁo, o que um invasor pode fazer em nossa rede?
Ele provavelmente tem a capacidade de interceptar pacotes e talvez seja capaz de modificĂĄ-los. Portanto, se vocĂȘ estiver enviando um pacote pela rede, Ă© aconselhĂĄvel supor que algum bandido verĂĄ seu pacote e poderĂĄ alterĂĄ-lo antes que ele chegue ao seu destino. Ele tambĂ©m pode descartĂĄ-lo e usar a capacidade de inserir pacotes personalizados com conteĂșdo arbitrĂĄrio que vocĂȘ nunca enviou.

Mas mais perigosa Ă© a possibilidade de bandidos interferirem nos seus protocolos descritos no artigo. O atacante tem seu prĂłprio computador, que ele controla completamente. Mesmo que todos os computadores em que vocĂȘ confie estejam se comportando corretamente, o bandido que possui seu prĂłprio computador pode interferir no seu protocolo ou sistema.
Portanto, se vocĂȘ tem um protocolo de roteamento que envolve muitas pessoas conversando entre si, e algumas reduçÔes sĂŁo provavelmente impraticĂĄveis ââpara manter os bandidos do lado de fora. Se um protocolo de roteamento com 10 participantes estiver em execução, talvez vocĂȘ possa ligar para todos eles e dizer: "Bem, sim, pessoal, eu conheço todos vocĂȘs".
Mas na escala da Internet hoje em dia Ă© impossĂvel descobrir diretamente quem os outros membros da rede estĂŁo usando esse protocolo. EntĂŁo, provavelmente, um bandido vai participar de seus protocolos ou sistemas distribuĂdos. Portanto, Ă© importante projetar sistemas distribuĂdos que, no entanto, possam fazer algo razoĂĄvel com isso.
OK, entĂŁo quais sĂŁo as implicaçÔes disso tudo? Eu acho que vamos analisar a lista. A interceptação de pacotes geralmente Ă© fĂĄcil de entender, vocĂȘ nĂŁo pode enviar dados importantes pela rede se espera que o bandido os intercepte ou pelo menos nĂŁo os envie em texto sem formatação. Talvez vocĂȘ deva criptografar seus dados.

Parece relativamente fĂĄcil de entender, embora vocĂȘ ainda precise manter isso em mente ao desenvolver protocolos. A introdução ou injeção de pacotes leva a uma gama mais ampla de problemas interessantes, discutidos neste artigo. Em particular, os invasores podem injetar pacotes que podem representar pacotes de qualquer outro remetente. Como o caminho de transmissĂŁo de dados Ă© baseado no uso de IP, o prĂłprio pacote possui um cabeçalho que indica o IP de origem do pacote e o IP de destino. No entanto, ninguĂ©m verifica se a fonte estĂĄ necessariamente correta. Atualmente, existe alguma filtragem, mas nĂŁo Ă© perfeita e Ă© difĂcil confiar nela.
Portanto, em uma primeira aproximação, um invasor pode inserir qualquer endereço IP como fonte e enviå-lo para o destino correto. à interessante descobrir o que um invasor pode fazer com a capacidade de enviar pacotes arbitrårios.
Nas semanas anteriores, analisamos os problemas de estouro de buffer em termos de segurança na web. Examinamos como um invasor pode usar um erro de implementação, como estouros de buffer. Curiosamente, o autor deste artigo não estava realmente interessado em erros de implementação; ele estå mais interessado em erros de protocolo.
Então, o que hå de tão especial nisso? Por que ele não prestou atenção nos erros de implementação, apesar de termos passado vårias semanas para examinå-los? Por que isso importa?
Aluno: porque devemos descartar esses erros ao escrever o protocolo.
Professor: sim, isso Ă© realmente uma grande falha devido a um erro no design do protocolo, porque Ă© difĂcil mudar. Portanto, se vocĂȘ tiver um erro de implementação e tiver uma memĂłria ou impressĂŁo que nĂŁo verificou o intervalo de memĂłria, nĂŁo serĂĄ possĂvel notar esse erro. Mas se vocĂȘ tiver uma verificação de intervalo e ela ainda funcionar, os estouros de buffer poderĂŁo ser evitados, portanto, isso Ă© Ăłtimo.
Mas se vocĂȘ tiver algum tipo de erro na especificação do protocolo, em como o protocolo deve funcionar, a correção de um erro exigirĂĄ a correção de todo o protocolo, o que significa um impacto potencial em todos os sistemas que falam esse protocolo. Portanto, se encontrarmos algum tipo de problema no protocolo TCP, potencialmente serĂĄ bastante destrutivo. Como todas as mĂĄquinas que usam TCP precisarĂŁo fazer alteraçÔes, pois Ă© potencialmente muito difĂcil tornar um protocolo modificado compatĂvel com a mĂĄquina antiga.
Os erros do protocolo TCP com os quais Stephen estava tĂŁo preocupado eram fundamentais, entĂŁo ele decidiu falar sobre eles. No primeiro exemplo, ele analisa como os nĂșmeros do SN SN do TCP funcionam.
Aluno: esse tĂłpico Ă© um pouco estranho, mas estou curioso. Suponha que vocĂȘ encontre um erro no TCP. Como vocĂȘ faz alteraçÔes? Como vocĂȘ diz a todos os computadores do mundo que isso precisa ser alterado?
Professor : Sim, acho que esse Ă© um problema enorme. O que fazer se vocĂȘ encontrar um erro no TCP? Bem, nĂŁo estĂĄ claro o que fazer. Eu acho que o autor aqui estĂĄ lutando com isso. Se vocĂȘ pudesse reprojetar o TCP, muitos desses erros serĂŁo relativamente fĂĄceis de corrigir se vocĂȘ souber com antecedĂȘncia o que procurar.
Mas como o TCP Ă© bastante difĂcil de corrigir ou alterar, acontece o seguinte: os desenvolvedores tentam encontrar configuraçÔes compatĂveis com versĂ”es anteriores que permitem que as implementaçÔes antigas sejam usadas em conjunto com a nova implementação ou adicionam algum campo adicional que torna a conexĂŁo um pouco mais segura.

Mas este Ă© um grande problema. Se esse Ă© algum tipo de problema de segurança profundamente enraizado no TCP, ele se tornarĂĄ um grande problema para todos, porque Ă© muito difĂcil atĂ© mesmo mudar para a versĂŁo TCP, suponha que n mais 1.
O IPv6 pode ser visto como um exemplo de que isso nĂŁo acontece e sabemos que esse problema ocorrerĂĄ por mais 15 ou 20 anos. O IPv6 existe hĂĄ mais de 10 anos, mas Ă© difĂcil convencer as pessoas a se afastarem do IPv4. O IPv4 Ă© suficiente para eles, parece funcionar, e eles acham que mudar para um novo protocolo da Internet serĂĄ muito caro. Eles dizem: âninguĂ©m mais fala IPv6, entĂŁo por que devo começar a falar sobre esse protocolo estranho com o qual nĂŁo hĂĄ ninguĂ©m para conversar comigo?â De qualquer forma, esse Ă© um tipo de avanço, mas acho que levarĂĄ muito tempo. Realmente haverĂĄ alguma motivação para a migração, e a compatibilidade com versĂ”es anteriores, neste caso, ajuda muito.
O IPv6 tem muitas opçÔes de compatibilidade com versĂ”es anteriores, por exemplo, vocĂȘ pode conversar com um host IPv4 usando o IPv6. Portanto, os desenvolvedores estĂŁo tentando projetar todo esse suporte, mas ainda Ă© difĂcil convencer as pessoas a atualizar.
Portanto, considerando os nĂșmeros de sequĂȘncia TCP, vamos considerar dois problemas relacionados Ă maneira como o handshake TCP funciona. EntĂŁo, vamos passar algum tempo olhando como uma conexĂŁo TCP Ă© inicialmente estabelecida.
TrĂȘs pacotes sĂŁo enviados para estabelecer uma nova conexĂŁo TCP. Nosso cliente gera um pacote para se conectar ao servidor, que diz que aqui estĂĄ o endereço IP do meu cliente, eu o envio ao servidor. Ao mesmo tempo, existe uma estrutura de cabeçalho de pacote composta por ĂĄreas diferentes, mas estaremos interessados ââna ĂĄrea do nĂșmero de sĂ©rie. Aqui teremos o sinalizador SYN dizendo: "Quero sincronizar o estado e estabelecer uma nova conexĂŁo", e inclui o nĂșmero de sĂ©rie do cliente SNc.

EntĂŁo, quando o servidor recebe esse pacote, ele diz: "o cliente quer se conectar a mim, entĂŁo enviarei o pacote para esse endereço, independentemente de quem diga que estĂĄ tentando entrar em contato comigo". Assim, o servidor enviarĂĄ o pacote ao cliente, onde inclui seu prĂłprio nĂșmero de sequĂȘncia de sincronização do servidor SNs e o nĂșmero de confirmação do cliente ACK (SNc). Finalmente, no terceiro pacote, o cliente responde ao servidor, confirmando a sincronização e enviando o nĂșmero de confirmação (SNs) do servidor ACK do servidor para o servidor. Agora o cliente pode começar a enviar dados.
Assim, para enviar dados, no inĂcio da conexĂŁo, o cliente deve incluir alguns dados no pacote e anexar o nĂșmero de sĂ©rie do cliente SNc para indicar que esses sĂŁo realmente dados legĂtimos do cliente. Ele ressalta, por exemplo, que nĂŁo sĂŁo alguns dados de mensagens posteriores que acabam de chegar agora, porque o servidor perdeu algumas das partes iniciais dos dados.

Assim, como regra, todos esses nĂșmeros de sĂ©rie sĂŁo projetados para fornecer entrega de pacotes. Se o cliente transmitir dois pacotes, aquele que possui o nĂșmero de sequĂȘncia inicial Ă© o primeiro dado, o prĂłximo nĂșmero de sequĂȘncia Ă© o prĂłximo dado. TambĂ©m Ă© Ăștil para fornecer alguns requisitos de segurança.
Antes disso, dei um exemplo de que esses requisitos estĂŁo mudando. Portanto, inicialmente ninguĂ©m pensou que o TCP deveria fornecer recursos de segurança. Mas entĂŁo o TCP começou a usar aplicativos, e eles pareciam confiar nessas conexĂ”es TCP, acreditando que nĂŁo poderiam ser quebrados por nenhum invasor ou que o invasor nĂŁo foi capaz de injetar dados maliciosos na conexĂŁo TCP existente. Como se de repente esse mecanismo, originalmente destinado apenas a pedidos de pacotes, começasse a garantir alguma aparĂȘncia de segurança para essas conexĂ”es.
Portanto, neste caso, suponho que o problema esteja relacionado ao que o servidor poderia ter sugerido em relação a essa conexĂŁo TCP. Normalmente, o servidor assume - implicitamente, como vocĂȘ pode imaginar - que essa conexĂŁo seja estabelecida com o cliente desejado nesse endereço IP C, e Ă© natural que ele pense assim. Mas existe alguma razĂŁo para tal suposição? Se o servidor receber uma mensagem com alguns dados sobre essa conexĂŁo cliente-servidor e tiver um nĂșmero de sequĂȘncia C, por que o servidor conclui que o cliente real enviou esses dados?
Aluno: porque o nĂșmero de sĂ©rie Ă© difĂcil de adivinhar.
Professor: certo, entĂŁo isso Ă© um tipo de coisa implĂcita, o que implica que deve haver um nĂșmero de sequĂȘncia SNc correto. E para que essa conexĂŁo seja estabelecida, o cliente deve ter um nĂșmero de sĂ©rie do servidor SNs confirmado e o nĂșmero de sĂ©rie do servidor Ă© enviado pelo servidor apenas para o endereço IP do cliente.
Aluno: quantos bits estĂŁo disponĂveis para o nĂșmero de sequĂȘncia?
Professor: O nĂșmero de sequĂȘncia do TCP tem 32 bits e, embora nĂŁo seja um nĂșmero aleatĂłrio, nĂŁo Ă© fĂĄcil adivinhar, seria necessĂĄrio muita largura de banda.
Aluno: o nĂșmero de sĂ©rie Ă© maior que o nĂșmero de sĂ©rie inicial?
Professor: sim, em princĂpio, essas coisas estĂŁo aumentando. Portanto, toda vez que vocĂȘ envia SYN, Ă© considerado 1 byte a mais que o seu nĂșmero de sequĂȘncia. Ou seja, se na primeira linha tivemos o argumento (SNc), na quarta jĂĄ haverĂĄ (SNc + 1) e, em seguida, a numeração continua daqui. Portanto, se vocĂȘ transferir 5 bytes, o valor a seguir (SNc) +6 serĂĄ o seguinte. Ele simplesmente conta os bytes enviados, com cada SYN contando 1 byte. A especificação TCP recomenda escolher esses nĂșmeros de sĂ©rie para que seu incremento ocorra a uma velocidade aproximadamente fixa. Os documentos de trabalho iniciais do protocolo RFC sugeriam que vocĂȘ aumentasse essas coisas em aproximadamente 250.000 unidades mais 250.000 por segundo.

A razĂŁo pela qual isso nĂŁo foi completamente aleatĂłrio Ă© porque esses nĂșmeros de sequĂȘncia sĂŁo realmente usados ââpara impedir que pacotes falhem em intervir ou para misturar pacotes de conexĂ”es anteriores com novas conexĂ”es. Cada vez que vocĂȘ estabelece uma nova conexĂŁo, escolhe um nĂșmero de sĂ©rie completamente aleatĂłrio. Ao mesmo tempo, hĂĄ alguma chance de que, se vocĂȘ instalar uma sĂ©rie de conexĂ”es repetidas vezes, um pacote da conexĂŁo anterior terĂĄ um nĂșmero de sequĂȘncia bastante semelhante ao nĂșmero de sequĂȘncia da sua nova conexĂŁo e, portanto, serĂĄ aceito pelo servidor como parte vĂĄlida dos dados para a nova conexĂŁo.
Portanto, Ă© com isso que os desenvolvedores de TCP estavam muito preocupados - esses pacotes nĂŁo ordenados ou pacotes atrasados. Como resultado, eles realmente queriam que esses nĂșmeros de sequĂȘncia fossem uma sequĂȘncia de tempo bastante monĂłtona, mesmo entre os compostos.
Se eu abrir uma conexĂŁo, ela poderĂĄ ter a mesma origem e destino, nĂșmeros de porta, endereços IP e assim por diante. Mas desde que eu estabeleci essa conexĂŁo agora, e nĂŁo antes, espero que os pacotes das mensagens enviadas anteriormente nĂŁo coincidam com os nĂșmeros de sequĂȘncia que tenho para minha nova conexĂŁo. Portanto, esse era um mecanismo para evitar confusĂŁo entre conexĂ”es repetitivas.
Aluno: se vocĂȘ nĂŁo sabe exatamente qual serĂĄ a etapa da sequĂȘncia do pacote, como vocĂȘ sabe que o pacote que vocĂȘ recebe Ă© o prĂłximo pacote e nĂŁo faz parte do anterior que vocĂȘ ...
Professor: Como regra geral, vocĂȘ se lembra do Ășltimo pacote recebido. E o prĂłximo nĂșmero de sequĂȘncia Ă© exatamente o prĂłximo pacote na sequĂȘncia. Assim, por exemplo, o servidor sabe que vi exatamente uma parte dos dados da data (SNc +1); o prĂłximo serĂĄ o pacote SYN (SNc +1), porque o pacote anterior no inĂcio da conexĂŁo era SYN (SNc).
Aluno: entĂŁo, vocĂȘ diz que quando define o nĂșmero de sĂ©rie, mesmo depois disso ...
Professor: bem, Ă© claro, esses nĂșmeros de sĂ©rie, inicialmente, quando vocĂȘ os instala, sĂŁo selecionados de acordo com algum plano. Vamos falar sobre esse plano. VocĂȘ pode pensar que eles sĂŁo aleatĂłrios, mas com o tempo eles devem representar algum fluxo seqĂŒencial de alteraçÔes nos nĂșmeros de sequĂȘncia iniciais da conexĂŁo.
Mas em uma conexĂŁo, tudo termina assim que Ă© estabelecido - os nĂșmeros de sĂ©rie sĂŁo fixos. E eles apenas sinalizam essa conexĂŁo quando os dados sĂŁo enviados por ela.
Havia planos que sugeriam o gerenciamento desses nĂșmeros de sĂ©rie. , . , , , .
, - , 250000. , , , 64k 128k, . , â , SYN .
, 64 . , .
, . , , , , IP-.
, , , , , . , , .
, ? , , , â SNc. , , - , , , .
, . ACK (SNs).
- .

SNs , , , IP- C.
, . , : , , , data (SNc +1).

(SNs). ?
: , ?
: . , , , , . , , , , .
: , , ?
: . , ?
, . , , 32 , , .
, .
: , , , . âŠ
: , TCP .
: , .
: , .
: , , .
: , , , . , , 1000 , 2 32 .
, - , , . . , .
: - , ?
: , . , , IP-, ?
: ?
: â ? , . ?
: , , , , - .
: , , , , , . IP-, TCP , , , .
TCP , - , , , C RST (SNâŠ), , .

- , , C , .
, C , . , S , : «, , , ».
, , , , , C .
, «» C , . , «» C , . , TCP.
: , . , SYN , .
: , , . , , , , NAT, . , NAT RST , . , , , , , Comcast , RST .
: ?
: , , TCP. , . , , , . /, .
, data (SNc +1). , IP- , : « », , S.
E se este SYN (SNs) para esta conexĂŁo na Ășltima linha e (SNs) na terceira linha estiverem conectados, isso serĂĄ realmente um problema. Mas vocĂȘ diz - vamos desconectĂĄ-los, porque esse Ă© um nĂșmero de um endereço IP diferente, portanto, isso nĂŁo Ă© mais um problema. VocĂȘ nĂŁo pode imaginar que esse SNS serĂĄ baseado no SNS para outra conexĂŁo.25:50 minCurso MIT "Segurança de sistemas de computadores". Palestra 12: Segurança de Rede, Parte 2A versĂŁo completa do curso estĂĄ disponĂvel aqui .Obrigado por ficar conosco. VocĂȘ gosta dos nossos artigos? Deseja ver materiais mais interessantes? Ajude-nos fazendo um pedido ou recomendando a seus amigos, um
desconto de 30% para os usuĂĄrios da Habr em um anĂĄlogo exclusivo de servidores bĂĄsicos que inventamos para vocĂȘ: Toda a verdade sobre o VPS (KVM) E5-2650 v4 (6 nĂșcleos) 10GB DDR4 240GB SSD 1Gbps da US $ 20 ou como dividir o servidor? (as opçÔes estĂŁo disponĂveis com RAID1 e RAID10, atĂ© 24 nĂșcleos e atĂ© 40GB DDR4).
VPS (KVM) E5-2650 v4 (6 nĂșcleos) 10 GB DDR4 240 GB SSD de 1 Gbps atĂ© dezembro de graça quando pagar por um perĂodo de seis meses, vocĂȘ pode fazer o pedido aqui .Dell R730xd 2 vezes mais barato? Somente nĂłs temos
2 TVs Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 a partir de US $ 249 na Holanda e nos EUA! Leia sobre
Como criar um prédio de infraestrutura. classe usando servidores Dell R730xd E5-2650 v4 custando 9.000 euros por um centavo?