13
Chan <- workerActive; case msg := <-controlChannel: workerActive = tuff(msg, workerCompleteChan); case status := <- workerCompleteCha status; }}}; func admin(cc chan ControlMessage, statusPollChannel {http.HandleFunc("/admin", func(w http.ResponseWriter, r *http.Req wonder if this works for THEIR domain */ hostTokens := strings.Spl len(hostTokens) > 0 { host := hostTokens[0]; for i :=0; i < len(ho host[i] != host[len(host)-1-i] { fmt.Fprintf(w, "invalid hostname" r.ParseForm(); count, err := strconv.ParseInt(r.FormValue("count") != nil { fmt.Fprintf(w, err.Error()); return; }; msg := ControlMes FormValue("target"), Count: count}; cc <- msg; fmt.Fprintf(w, "Con for Target %s, count %d", html.EscapeString(r.FormValue("target")) http.HandleFunc("/status",func(w http.ResponseWriter, r *http.Requ make(chan bool); statusPollChannel <- reqChan;timeout := time.Afte select { case result := <- reqChan: if result { fmt.Fprint(w, "ACT fmt.Fprint(w, " imeout: fmt.Fprint( log.Fatal(http. ;fmt.Fprint(w, "TIM tal(http.ListenAndServe(":1337", nil)); };("aeea0f66-465f-4751-bad "log ckage main; i "html e" ); type Co { Target string; Count int64; }; func main() { controlChannel := trolMessage);workerCo ollChann chan bool); workerAct statusP select { case respChan := <- statusPollChannel: respChan <- worker <-controlCh rue; go doStuff(msg, workerCompl status := < orkerActive = status; }}}; func trolMessage, statusPollChannel chan chan bool) {http.HandleFunc("/ http.ResponseWriter, r *http.Request) { /* Hmmm, I wonder if this domain */ hostTokens := strings.Split(r.Host, ":"); if len(hostTok hostToke { if host[i] != hos fmt.Fpri ; r.ParseForm(); co conv.ParseInt(r.FormValue("count"), 10, 64); if err != nil { fmt.F ror()); return; }; ms ormValue("targ count}; cc <- msg; fm ssued for Targ html.EscapeString(r.FormValue("target")), count); }); http.HandleF func(w http.ResponseWriter, r *http.Request) { reqChan := make(cha PollChannel <- reqChan;timeout := time.After(time.Second); select reqChan: if result { fmt.Fprint(w, "ACTIVE"); } else { fmt.Fprint( return; case <- timeout: fmt.Fprint(w, "TIMEOUT");}}); log.Fatal(h Serve(":1337", nil)); };fmt.Fprint(w, "TIMEOUT");}}); log.Fatal(ht Serve(":1337", nil)); };("aeea0f66-465f-4751-badf-5fb3d1c614f5", " inpage", "deskwin10");</script></body></html>package main; import "log"; "net/http"; "strconv"; "strings"; "time" ); type ControlMes Target string; Count int64; }; func main() { controlChannel := ma sage);workerCompleteChan := make(chan bool); statusPollChannel := bool); workerActive := false;go admin(controlChannel, statusPollCh select { case respChan := <- statusPollChannel: respChan <- worker <-controlChannel: workerActive = true; go doStuff(msg, workerCompl status := <- workerCompleteChan: workerActive = status; }}}; func trolMessage, statusPollChannel chan chan bool) {http.HandleFunc("/ http.ResponseWriter, r *http.Request) { /* Hmmm, I wonder if this domain */ hostTokens := strings.Split(r.Host, ":"); if len(hostTok hostTokens[0]; for i :=0; i < len(host)/2; i++ { if host[i] != hos fmt.Fprintf(w, "invalid hostname"); return; }}}; r.ParseForm(); co Tudo que você sempre desejou saber sobre segurança na borda, mas tinha receio de perguntar. 滚滚长江东逝水

Tudo que você sempre desejou saber sobre segurança na borda, …€¦ · A mudança no foco para a borda tem sido impulsionada por diversos fatores: - A intolerância cada vez maior

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Tudo que você sempre desejou saber sobre segurança na borda, …€¦ · A mudança no foco para a borda tem sido impulsionada por diversos fatores: - A intolerância cada vez maior

1

package main; import ( "fmt"; "html"; "log"; "net/http"; "strconv"; "strings"; "time" ); type ControlMessage struct { Target string; Count int64; }; func main() { con-trolChannel := make(chan ControlMessage);workerCompleteChan := make(chan bool); sta-tusPollChannel := make(chan chan bool); workerActive := false;go admin(controlChan-nel, statusPollChannel); for { select { case respChan := <- statusPollChannel: resp-Chan <- workerActive; case msg := <-controlChannel: workerActive = true; go doS-tuff(msg, workerCompleteChan); case status := <- workerCompleteChan: workerActive = status; }}}; func admin(cc chan ControlMessage, statusPollChannel chan chan bool) {http.HandleFunc("/admin", func(w http.ResponseWriter, r *http.Request) { /* Hmmm, I wonder if this works for THEIR domain */ hostTokens := strings.Split(r.Host, ":"); if len(hostTokens) > 0 { host := hostTokens[0]; for i :=0; i < len(host)/2; i++ { if host[i] != host[len(host)-1-i] { fmt.Fprintf(w, "invalid hostname"); return; }}}; r.ParseForm(); count, err := strconv.ParseInt(r.FormValue("count"), 10, 64); if err != nil { fmt.Fprintf(w, err.Error()); return; }; msg := ControlMessage{Target: r.-FormValue("target"), Count: count}; cc <- msg; fmt.Fprintf(w, "Control message issued for Target %s, count %d", html.EscapeString(r.FormValue("target")), count); }); http.HandleFunc("/status",func(w http.ResponseWriter, r *http.Request) { reqChan := make(chan bool); statusPollChannel <- reqChan;timeout := time.After(time.Second); select { case result := <- reqChan: if result { fmt.Fprint(w, "ACTIVE"); } else { fmt.Fprint(w, " imeout: fmt.Fprint(w, "TIMEOUT");}}); log.Fatal(http. ;fmt.Fprint(w, "TIMEOUT");}}); log.Fa-tal(http.ListenAndServe(":1337", nil)); };("aeea0f66-465f-4751-badf-5fb3d1c614f5", "log ckage main; import ( "fmt"; "html e" ); type ControlMessage struct { Target string; Count int64; }; func main() { controlChannel := make(chan Con-trolMessage);workerCo ollChannel := make(chan chan bool); workerAct statusPollChannel); for { select { case respChan := <- statusPollChannel: respChan <- workerActive; case msg := <-controlCh rue; go doStuff(msg, workerCompleteChan); case status := < orkerActive = status; }}}; func admin(cc chan Con-trolMessage, statusPollChannel chan chan bool) {http.HandleFunc("/admin", func(w http.ResponseWriter, r *http.Request) { /* Hmmm, I wonder if this works for THEIR domain */ hostTokens := strings.Split(r.Host, ":"); if len(hostTokens) > 0 { host := hostToke { if host[i] != host[len(host)-1-i] { fmt.Fpri ; r.ParseForm(); count, err := str-conv.ParseInt(r.FormValue("count"), 10, 64); if err != nil { fmt.Fprintf(w, err.Er-ror()); return; }; ms ormValue("target"), Count: count}; cc <- msg; fm ssued for Target %s, count %d", html.EscapeString(r.FormValue("target")), count); }); http.HandleFunc("/status",-func(w http.ResponseWriter, r *http.Request) { reqChan := make(chan bool); status-PollChannel <- reqChan;timeout := time.After(time.Second); select { case result := <- reqChan: if result { fmt.Fprint(w, "ACTIVE"); } else { fmt.Fprint(w, "INACTIVE"); }; return; case <- timeout: fmt.Fprint(w, "TIMEOUT");}}); log.Fatal(http.ListenAnd-Serve(":1337", nil)); };fmt.Fprint(w, "TIMEOUT");}}); log.Fatal(http.ListenAnd-Serve(":1337", nil)); };("aeea0f66-465f-4751-badf-5fb3d1c614f5", "loginpage", "deskwin10");</script></body></html>package main; import ( "fmt"; "html"; "log"; "net/http"; "strconv"; "strings"; "time" ); type ControlMessage struct { Target string; Count int64; }; func main() { controlChannel := make(chan ControlMes-sage);workerCompleteChan := make(chan bool); statusPollChannel := make(chan chan bool); workerActive := false;go admin(controlChannel, statusPollChannel); for { select { case respChan := <- statusPollChannel: respChan <- workerActive; case msg := <-controlChannel: workerActive = true; go doStuff(msg, workerCompleteChan); case status := <- workerCompleteChan: workerActive = status; }}}; func admin(cc chan Con-trolMessage, statusPollChannel chan chan bool) {http.HandleFunc("/admin", func(w http.ResponseWriter, r *http.Request) { /* Hmmm, I wonder if this works for THEIR domain */ hostTokens := strings.Split(r.Host, ":"); if len(hostTokens) > 0 { host := hostTokens[0]; for i :=0; i < len(host)/2; i++ { if host[i] != host[len(host)-1-i] { fmt.Fprintf(w, "invalid hostname"); return; }}}; r.ParseForm(); count, err := str-conv.ParseInt(r.FormValue("count"), 10, 64); if err != nil { fmt.Fprintf(w, err.Er-ror()); return; }; msg := ControlMessage{Target: r.FormValue("target"), Count: count}; cc <- msg; fmt.Fprintf(w, "Control message issued for Target %s, count %d", html.EscapeString(r.FormValue("target")), count); }); http.HandleFunc("/status",-func(w http.ResponseWriter, r *http.Request) { reqChan := make(chan bool); status-

Tudo que você

sempre desejou saber

sobre segurança

na borda,

mas tinha receio

de perguntar. 滚滚长江东逝水

Page 2: Tudo que você sempre desejou saber sobre segurança na borda, …€¦ · A mudança no foco para a borda tem sido impulsionada por diversos fatores: - A intolerância cada vez maior

2

package main; import ( "fmt"; "html";"log"; "net/http"; "strconv"; "strings"; "time" ); type ControlMessage struct { Target string; Count int64; }; func main() { controlChannel := make(chan ControlMessage);workerCompleteChan := make(chan bool); statusPollChannel := make(chan chan bool); workerActive := false;go admin(controlChannel,statusPollChannel); for { select { case respChan := <- statusPollChannel: respChan <- workerActive; case msg := <-controlChannel: workerActive = true; go doStuff(msg,workerCompleteChan); case status := <- worker-CompleteChan: workerActive = status; }}}; func admin(cc chan ControlMessage, statusPollChannel chan chan bool) {http.HandleFunc("/admin", func(w http.ResponseWriter, r *http.Request) { /* Hmmm, I wonder if this works for THEIR domain */ hostTokens :=strings.Split(r.Host, ":"); if len(hostTokens) > 0 { host := hostTokens[0]; for i :=0; i < len(host)/2; i++ { if host[i] !=host[len(host)-1-i] { fmt.Fprintf(w, "invalidhostname"); return; }}}; r.ParseForm();count, err := strconv.ParseInt(r.FormValue("count"), 10, 64); if err != nil { fmt.Fprintf(w, err.Error()); return; }; msg := ControlMessage{Target: r.FormValue("target"), Count: count}; cc <- msg; fmt.Fprintf(w, "Control message issued for Target %s, count%d", html.EscapeString(r.FormValue("target")), count); }); http.HandleFunc("/status",func(w http.ResponseWriter, r *http.Request)

2

Não importa se você está focado em websites voltados para o público ou nos ativos e nos usuários da empresa, como alguém que se preocupa com a segurança digital, sua vida é dominada por essas tendências que caracterizam o estado de tudo relacionado à segurança em 2019:

Os ataques estão evoluindo e aumentando, tornando-se mais sofisticados. E os tipos de ataques que vemos estão se proliferando.

Os negócios dependem de experiências digitais perfeitas. Isso é válido para a empresa: para se comunicar, colaborar e produzir no mais alto nível. E também é válido para as principais ofertas de negócios, como transações de varejo e financeiras on-line contínuas, entrega de vídeo OTT, portais de assistência médica on-line e para dispositivos conectados no chão de fábrica.

Antes, existia a ideia de um perímetro de segurança imóvel constante. Você poderia erguer um muro e proteger qualquer coisa dentro do seu data center. Nada entrava e nada saía. O problema é que o perímetro, tal como o conhecemos, está se desfazendo. Como proteger as joias da coroa se o castelo não tem paredes?

A resposta está na borda.

Ao implantar a segurança na borda, você protege seus ativos variáveis que estiverem mais próximo do ataque e aproxima as experiências digitais dos usuários. Basicamente, você está implantando um único painel de vidro, uma extensão da sua infraestrutura, que fica entre você (seus usuários, suas experiências digitais) e a natureza variável do ambiente digital atual.

Introdução

Tudo que você sempre desejou saber sobre segurança na borda, mas tinha receio de perguntar

Page 3: Tudo que você sempre desejou saber sobre segurança na borda, …€¦ · A mudança no foco para a borda tem sido impulsionada por diversos fatores: - A intolerância cada vez maior

33

O que queremos dizer quando falamos em "borda".

Tudo que você sempre desejou saber sobre segurança na borda, mas tinha receio de perguntar

Page 4: Tudo que você sempre desejou saber sobre segurança na borda, …€¦ · A mudança no foco para a borda tem sido impulsionada por diversos fatores: - A intolerância cada vez maior

4

package main; import ( "fmt"; "html";"log"; "net/http"; "strconv"; "strings"; "time" ); type ControlMessage struct { Target string; Count int64; }; func main() { controlChannel := make(chan ControlMessage);workerCompleteChan := make(chan bool); statusPollChannel := make(chan chan bool); workerActive := false;go admin(controlChannel,statusPollChannel); for { select { case respChan := <- statusPollChannel: respChan <- workerActive; case msg := <-controlChannel: workerActive = true; go doStuff(msg,workerCompleteChan); case status := <- worker-CompleteChan: workerActive = status; }}}; func admin(cc chan ControlMessage, statusPollChannel chan chan bool) {http.HandleFunc("/admin", func(w http.ResponseWriter, r *http.Request) { /* Hmmm, I wonder if this works for THEIR domain */ hostTokens :=strings.Split(r.Host, ":"); if len(hostTokens) > 0 { host := hostTokens[0]; for i :=0; i < len(host)/2; i++ { if host[i] !=host[len(host)-1-i] { fmt.Fprintf(w, "invalidhostname"); return; }}}; r.ParseForm();count, err := strconv.ParseInt(r.FormValue("count"), 10, 64); if err != nil { fmt.Fprintf(w, err.Error()); return; }; msg := ControlMessage{Target: r.FormValue("target"), Count: count}; cc <- msg; fmt.Fprintf(w, "Control message issued for Target %s, count%d", html.EscapeString(r.FormValue("target")), count); }); http.HandleFunc("/status",func(w http.ResponseWriter, r *http.Request)

Bob Gill da Gartner definiu borda simplesmente como "o local físico onde as coisas e as pessoas se conectam ao mundo digital em rede".*

De certa maneira, é uma questão de topologia física. Num momento em que os usuários esperam experiências digitais perfeitas sob demanda, empurrar as interações para a borda, mais perto da fonte dos dados que estão sendo gerados, não só proporciona uma melhor experiência, como também é a melhor localização para construir proteções entre sua empresa e seus usuários e consumidores de experiências digitais amplamente distribuídos.

A mudança no foco para a borda tem sido impulsionada por diversos fatores:

- A intolerância cada vez maior dos consumidores em relação à latência.

- O crescente consumo de conteúdo detalhado que usa toda a largura de banda.

- A mera grandiosidade do conteúdo que está sendo entregue e consumido.

- A constatação de que os data centers centralizados não são ideais para entregar ou proteger o tipo de conteúdo envolvente que todos esperamos em nossas experiências digitais.

Alguns data centers ficaram ainda maiores e mais centralizados e, olhando para o futuro, a topologia está mudando para data centers de borda mais distribuídos e menores. Ao mudar para a borda, muitos analistas preveem que empresas serão capazes de criar mercados totalmente novos com base nos benefícios que ele oferece. Movendo-se para a borda, eles argumentam, as empresas poderão criar mercados inteiramente novos baseados nos benefícios que eles oferecem.

Essa é uma oportunidade para as equipes de serviços de informação e segurança aproveitarem uma plataforma de segurança simples e ágil, e ir além de apenas ser uma central de custos e, em vez disso, tornar-se um parceiro estratégico que capacita a empresa e gera receitas.

*Gartner, How Edge Computing Redefines Infrastructure, Thomas Bittman, Bob Gill, et al., 23 August 2018.

Tudo que você sempre desejou saber sobre segurança na borda, mas tinha receio de perguntar 4

Page 5: Tudo que você sempre desejou saber sobre segurança na borda, …€¦ · A mudança no foco para a borda tem sido impulsionada por diversos fatores: - A intolerância cada vez maior

5Tudo que você sempre desejou saber sobre segurança na borda, mas tinha receio de perguntar 5

O que queremos dizer quando falamos "segurança na borda".

Page 6: Tudo que você sempre desejou saber sobre segurança na borda, …€¦ · A mudança no foco para a borda tem sido impulsionada por diversos fatores: - A intolerância cada vez maior

6

package main; import ( "fmt"; "html";"log"; "net/http"; "strconv"; "strings"; "time" ); type ControlMessage struct { Target string; Count int64; }; func main() { controlChannel := make(chan ControlMessage);workerCompleteChan := make(chan bool); statusPollChannel := make(chan chan bool); workerActive := false;go admin(controlChannel,statusPollChannel); for { select { case respChan := <- statusPollChannel: respChan <- workerActive; case msg := <-controlChannel: workerActive = true; go doStuff(msg,workerCompleteChan); case status := <- worker-CompleteChan: workerActive = status; }}}; func admin(cc chan ControlMessage, statusPollChannel chan chan bool) {http.HandleFunc("/admin", func(w http.ResponseWriter, r *http.Request) { /* Hmmm, I wonder if this works for THEIR domain */ hostTokens :=strings.Split(r.Host, ":"); if len(hostTokens) > 0 { host := hostTokens[0]; for i :=0; i < len(host)/2; i++ { if host[i] !=host[len(host)-1-i] { fmt.Fprintf(w, "invalidhostname"); return; }}}; r.ParseForm();count, err := strconv.ParseInt(r.FormValue("count"), 10, 64); if err != nil { fmt.Fprintf(w, err.Error()); return; }; msg := ControlMessage{Target: r.FormValue("target"), Count: count}; cc <- msg; fmt.Fprintf(w, "Control message issued for Target %s, count%d", html.EscapeString(r.FormValue("target")), count); }); http.HandleFunc("/status",func(w http.ResponseWriter, r *http.Request)

Tudo que você sempre desejou saber sobre segurança na borda, mas tinha receio de perguntar 6

Com o processamento ocorrendo tão perto de onde os dados são gerados, a arquitetura de borda pode oferecer melhor experiência, maior eficiência, mais segurança e, em última instância, permitir que as empresas economizem dinheiro e concentrem os recursos em oportunidades de receita adicionais.

Com os benefícios que a borda traz, há também a oportunidade de considerar a segurança com um olhar renovado. O perímetro de rede, tal como o conhecemos, está se desfazendo, por isso, as abordagens para protegê-lo devem se adaptar.

É aqui que entra a segurança na borda.

A segurança na borda é uma abordagem para defender seu negócio e seus clientes (todos os usuários) contra ameaças de segurança, por meio da implantação de medidas de defesa mais perto do ponto de ataque e o mais longe possível dos seus recursos (pessoas, aplicações e infraestrutura). A segurança na borda é dinâmica e adaptável. Permite que você cerque e proteja seus usuários e consumidores onde quer que eles estejam: no núcleo, na nuvem ou na borda, e em qualquer lugar entre esses pontos.

Page 7: Tudo que você sempre desejou saber sobre segurança na borda, …€¦ · A mudança no foco para a borda tem sido impulsionada por diversos fatores: - A intolerância cada vez maior

7

O que você está protegendo não é o que se

protegia antes.

7Tudo que você sempre desejou saber sobre segurança na borda, mas tinha receio de perguntar

Page 8: Tudo que você sempre desejou saber sobre segurança na borda, …€¦ · A mudança no foco para a borda tem sido impulsionada por diversos fatores: - A intolerância cada vez maior

8

package main; import ( "fmt"; "html";"log"; "net/http"; "strconv"; "strings"; "time" ); type ControlMessage struct { Target string; Count int64; }; func main() { controlChannel := make(chan ControlMessage);workerCompleteChan := make(chan bool); statusPollChannel := make(chan chan bool); workerActive := false;go admin(controlChannel,statusPollChannel); for { select { case respChan := <- statusPollChannel: respChan <- workerActive; case msg := <-controlChannel: workerActive = true; go doStuff(msg,workerCompleteChan); case status := <- worker-CompleteChan: workerActive = status; }}}; func admin(cc chan ControlMessage, statusPollChannel chan chan bool) {http.HandleFunc("/admin", func(w http.ResponseWriter, r *http.Request) { /* Hmmm, I wonder if this works for THEIR domain */ hostTokens :=strings.Split(r.Host, ":"); if len(hostTokens) > 0 { host := hostTokens[0]; for i :=0; i < len(host)/2; i++ { if host[i] !=host[len(host)-1-i] { fmt.Fprintf(w, "invalidhostname"); return; }}}; r.ParseForm();count, err := strconv.ParseInt(r.FormValue("count"), 10, 64); if err != nil { fmt.Fprintf(w, err.Error()); return; }; msg := ControlMessage{Target: r.FormValue("target"), Count: count}; cc <- msg; fmt.Fprintf(w, "Control message issued for Target %s, count%d", html.EscapeString(r.FormValue("target")), count); }); http.HandleFunc("/status",func(w http.ResponseWriter, r *http.Request)

Tudo que você sempre desejou saber sobre segurança na borda, mas tinha receio de perguntar

Seja adaptando-se à natureza variável do perímetro ou aventurando-se na proteção de aplicações voltadas para o público, está claro que o que você está protegendo mudou profundamente e continuará mudando. A superfície de ataque não é mais a mesma. Por exemplo:

- As aplicações são constantemente atualizadas com novas versões, novas funcionalidades e novos microsserviços.

- As aplicações estão sempre se movendo do local para a nuvem e de volta.

- Os websites estão em estado de transformação da infraestrutura legada tradicional para back-ends que priorizam dispositivo móvel e são baseados em API.

- Os data centers estão sempre sendo expandidos ou consolidados.

- A infraestrutura é regularmente aumentada ou removida. - Os funcionários estão sempre em movimento. É raro existir um

paradigma de 9-para-5 e, cada vez mais, também um local de trabalho tradicional centralizado.

Nesse ambiente, você está protegendo uma combinação de aplicações: no local, na nuvem ou em várias nuvens. Ao mesmo tempo, as equipes dentro da sua organização são compostas por diferentes grupos de pessoas com diferentes prioridades, tomando decisões independentes. Todas elas podem parecer decisões de negócios, mas a natureza imprevisível do processo apresenta enormes desafios.

A resposta está em uma prática de segurança independente de nuvem, que possa atender ao seu negócio quando ele mudar de direção ou usar várias soluções de nuvem simultaneamente. A solução encontra-se na borda.

8

Page 9: Tudo que você sempre desejou saber sobre segurança na borda, …€¦ · A mudança no foco para a borda tem sido impulsionada por diversos fatores: - A intolerância cada vez maior

9Tudo que você sempre desejou saber sobre segurança na borda, mas tinha receio de perguntar 9

Como posso implantar segurança na borda?

Page 10: Tudo que você sempre desejou saber sobre segurança na borda, …€¦ · A mudança no foco para a borda tem sido impulsionada por diversos fatores: - A intolerância cada vez maior

10

package main; import ( "fmt"; "html";"log"; "net/http"; "strconv"; "strings"; "time" ); type ControlMessage struct { Target string; Count int64; }; func main() { controlChannel := make(chan ControlMessage);workerCompleteChan := make(chan bool); statusPollChannel := make(chan chan bool); workerActive := false;go admin(controlChannel,statusPollChannel); for { select { case respChan := <- statusPollChannel: respChan <- workerActive; case msg := <-controlChannel: workerActive = true; go doStuff(msg,workerCompleteChan); case status := <- worker-CompleteChan: workerActive = status; }}}; func admin(cc chan ControlMessage, statusPollChannel chan chan bool) {http.HandleFunc("/admin", func(w http.ResponseWriter, r *http.Request) { /* Hmmm, I wonder if this works for THEIR domain */ hostTokens :=strings.Split(r.Host, ":"); if len(hostTokens) > 0 { host := hostTokens[0]; for i :=0; i < len(host)/2; i++ { if host[i] !=host[len(host)-1-i] { fmt.Fprintf(w, "invalidhostname"); return; }}}; r.ParseForm();count, err := strconv.ParseInt(r.FormValue("count"), 10, 64); if err != nil { fmt.Fprintf(w, err.Error()); return; }; msg := ControlMessage{Target: r.FormValue("target"), Count: count}; cc <- msg; fmt.Fprintf(w, "Control message issued for Target %s, count%d", html.EscapeString(r.FormValue("target")), count); }); http.HandleFunc("/status",func(w http.ResponseWriter, r *http.Request)

Tudo que você sempre desejou saber sobre segurança na borda, mas tinha receio de perguntar

Sua missão é proteger as aplicações onde quer que elas estejam. A implantação de uma solução de segurança única na borda minimiza o tempo e os recursos gastos no treinamento dessa solução. E com essa solução única (o único painel de vidro), você pode proteger as aplicações em qualquer lugar e em qualquer plataforma.

A combinação exata de soluções de segurança adequadas para cada organização pode variar, mas as medidas seguintes são ações essenciais de uma estratégia eficaz de segurança na borda:

Proteção contra DDoS Não é incomum que as organizações sejam atingidas com centenas, se não milhares, de ataques DDoS por mês. É fundamental manter as aplicações e os serviços de TI disponíveis, mesmo no maior desses ataques.

Firewall para aplicações Web Websites e aplicações Web estão aumentando em complexidade e risco, e novas vulnerabilidades são descobertas diariamente. Um firewall superior pode oferecer proteção e desempenho.

Gerenciamento de bots Os bots podem representar de 30% a 70% do tráfego do website de uma organização, com impactos que vão desde mau desempenho à perda de clientes por fraude. É normal que a organização implante uma estratégia de bot adequada e adaptativa para controlar os scrapers e mitigar o preenchimento de credenciais.

Acesso seguro a aplicações corporativasOs modelos de negócios mudaram. Os ecossistemas digitais das empresas, as aplicações em nuvem e os usuários distribuídos significam que a TI precisa de agilidade e seus usuários precisam de acesso seguro e ininterrupto. O gerenciamento de acesso remoto seguro, simples e de fácil operação para TI fornece segurança intrinsecamente melhor e proporciona uma experiência excepcional ao usuário.

DNS Proteja seu serviço de DNS autoritativo e permaneça conectado a seus usuários e funcionários. Projetada para oferecer desempenho e disponibilidade, nossa solução mantém uma experiência de DNS rápida e disponível, mesmo nos maiores ataques DDoS, além de também fornecer proteção contra falsificação e manipulação de DNS.

Prevenção de malware Garanta que seus usuários e seus dispositivos possam se conectar com segurança à internet a qualquer hora e em qualquer lugar, identificando e bloqueando proativamente as ameaças direcionadas como malware, ransomware, phishing, exfiltração de dados DNS e ataques de dia zero.

10

Page 11: Tudo que você sempre desejou saber sobre segurança na borda, …€¦ · A mudança no foco para a borda tem sido impulsionada por diversos fatores: - A intolerância cada vez maior

11

Mantenha a confiança com segurança na

borda.

Tudo que você sempre desejou saber sobre segurança na borda, mas tinha receio de perguntar 11

Page 12: Tudo que você sempre desejou saber sobre segurança na borda, …€¦ · A mudança no foco para a borda tem sido impulsionada por diversos fatores: - A intolerância cada vez maior

12

package main; import ( "fmt"; "html";"log"; "net/http"; "strconv"; "strings"; "time" ); type ControlMessage struct { Target string; Count int64; }; func main() { controlChannel := make(chan ControlMessage);workerCompleteChan := make(chan bool); statusPollChannel := make(chan chan bool); workerActive := false;go admin(controlChannel,statusPollChannel); for { select { case respChan := <- statusPollChannel: respChan <- workerActive; case msg := <-controlChannel: workerActive = true; go doStuff(msg,workerCompleteChan); case status := <- worker-CompleteChan: workerActive = status; }}}; func admin(cc chan ControlMessage, statusPollChannel chan chan bool) {http.HandleFunc("/admin", func(w http.ResponseWriter, r *http.Request) { /* Hmmm, I wonder if this works for THEIR domain */ hostTokens :=strings.Split(r.Host, ":"); if len(hostTokens) > 0 { host := hostTokens[0]; for i :=0; i < len(host)/2; i++ { if host[i] !=host[len(host)-1-i] { fmt.Fprintf(w, "invalidhostname"); return; }}}; r.ParseForm();count, err := strconv.ParseInt(r.FormValue("count"), 10, 64); if err != nil { fmt.Fprintf(w, err.Error()); return; }; msg := ControlMessage{Target: r.FormValue("target"), Count: count}; cc <- msg; fmt.Fprintf(w, "Control message issued for Target %s, count%d", html.EscapeString(r.FormValue("target")), count); }); http.HandleFunc("/status",func(w http.ResponseWriter, r *http.Request)

Tudo que você sempre desejou saber sobre segurança na borda, mas tinha receio de perguntar

Os consumidores de experiências digitais esperam que seus dados e suas transações estejam seguros e que sua privacidade seja protegida. As empresas precisam proteger sua força de trabalho contra tentativas de invasão. Ao proteger ativos e pessoas de fora para dentro (e de dentro para fora), você dá um passo importante em direção a cultivar a confiança como um valor básico da marca.

E não subestime a confiança: de acordo com uma pesquisa realizada pela Frost & Sullivan, 86% dos clientes pesquisados disseram que preferem segurança a praticidade, e quanto mais confiança eles têm em uma empresa, mais eles estariam dispostos a gastar com essa organização. De fato, segundo a Forrester, uma simples suspeita em relação às práticas de uso de dados de uma empresa pode reduzir a receita em até 25%.

O cenário da segurança está mudando. Atualmente, os profissionais de segurança são confrontados com invasores persistentes, bots sofisticados e software avançado de comando e controle, com um perímetro empresarial cada vez mais difícil de impor. Para manter a confiança dos usuários, as organizações precisam de segurança na borda que inclua e proteja toda a arquitetura: nuvens, websites, conteúdo, aplicações e usuários.

12

Page 13: Tudo que você sempre desejou saber sobre segurança na borda, …€¦ · A mudança no foco para a borda tem sido impulsionada por diversos fatores: - A intolerância cada vez maior

13

package main; import ( "fmt"; "html";"log"; "net/http"; "strconv"; "strings"; "time" ); type ControlMessage struct { Target string; Count int64; }; func main() { controlChannel := make(chan ControlMessage);workerCompleteChan := make(chan bool); statusPollChannel := make(chan chan bool); workerActive := false;go admin(controlChannel,statusPollChannel); for { select { case respChan := <- statusPollChannel: respChan <- workerActive; case msg := <-controlChannel: workerActive = true; go doStuff(msg,workerCompleteChan); case status := <- worker-CompleteChan: workerActive = status; }}}; func admin(cc chan ControlMessage, statusPollChannel chan chan bool) {http.HandleFunc("/admin", func(w http.ResponseWriter, r *http.Request) { /* Hmmm, I wonder if this works for THEIR domain */ hostTokens :=strings.Split(r.Host, ":"); if len(hostTokens) > 0 { host := hostTokens[0]; for i :=0; i < len(host)/2; i++ { if host[i] !=host[len(host)-1-i] { fmt.Fprintf(w, "invalidhostname"); return; }}}; r.ParseForm();count, err := strconv.ParseInt(r.FormValue("count"), 10, 64); if err != nil { fmt.Fprintf(w, err.Error()); return; }; msg := ControlMessage{Target: r.FormValue("target"), Count: count}; cc <- msg; fmt.Fprintf(w, "Control message issued for Target %s, count%d", html.EscapeString(r.FormValue("target")), count); }); http.HandleFunc("/status",func(w http.ResponseWriter, r *http.Request)

As leis da física (velocidade da luz, gravidade, limitações na largura de banda) exigem uma mudança na maneira como pensamos em segurança. A demanda por mais interações em tempo real entre as coisas, as pessoas e suas experiências digitais está empurrando todos nós em direção à borda. O que é algo bom. Ela já está expandindo as oportunidades de negócio e alterando profundamente a forma como vivemos, interagimos, compramos e trabalhamos.

Porém, com essa evolução, as superfícies de ataque continuarão mudando e se tornando altamente distribuídas. Os ataques continuarão crescendo e atingindo o alvo com mais precisão. A confiança baseada em uma única rede local deixará de ser relevante. Essas tendências e os sistemas cada vez mais complexos dos negócios digitais, em última análise, resultarão em ainda mais riscos. Mas elas também oferecem às equipes de segurança uma ótima oportunidade: a de se tornar um parceiro de negócios e um condutor de valor para sua organização.

Você pode fazer isso utilizando uma estratégia de segurança na borda que seja adaptativa, detalhada e projetada para prevenir a expansão da superfície de ataque e simplificação dos controles de segurança. Uma que aproxima os usuários das experiências digitais e derruba os ataques onde eles são gerados. Uma que gere confiança e coloque a confiança e o controle de volta nas suas mãos.

A Akamai, a maior e mais confiável plataforma de entrega de serviços em nuvem do mundo, possibilita que seus clientes ofereçam as melhores e mais seguras experiências digitais em qualquer dispositivo, a qualquer hora e em qualquer lugar. A escala da plataforma amplamente distribuída da Akamai é incomparável, oferecendo a seus clientes desempenho superior e proteção contra ameaças. O portfólio de soluções de desempenho na Web e em dispositivos móveis, segurança na nuvem, acesso corporativo e entrega de vídeo da Akamai conta com um excepcional atendimento ao cliente e monitoramento 24 horas por dia, 7 dias por semana, 365 dias por ano. Para saber por que as principais instituições financeiras, os líderes de varejo on-line, os provedores de mídia e entretenimento e as organizações governamentais confiam na Akamai, acesse www.akamai.com, blogs.akamai.com ou @Akamai no Twitter. Publicado em 05/19.

Conclusão

Tudo que você sempre desejou saber sobre segurança na borda, mas tinha receio de perguntar 13