Shared posts

16 May 13:45

Performing Blue/Green Deployments with AWS CodeDeploy and Auto Scaling Groups

by Jeff Levine

Jeff Levine is a Solutions Architect for Amazon Web Services.

Amazon Web Services offers services that enable organizations to leverage the power of the cloud for their development and deployment needs. AWS CodeDeploy makes it possible to automate the deployment of code to either Amazon EC2 or on-premises instances. AWS CodeDeploy now supports blue/green deployments. In this blog post, I will discuss the benefits of blue/green deployments and show you how to perform one.

The benefits of blue/green deployments

Blue/green deployment involves two production environments:

  • Blue is the active environment.
  • Green is for the release of a new version.

Here are some of the advantages of a blue/green deployment:

  • You can perform testing on the green environment without disrupting the blue environment.
  • Switching to the green environment involves no downtime. It only requires the redirecting of user traffic.
  • Rolling back from the green environment to the blue environment in the event of a problem is easier because you can redirect traffic to the blue environment without having to rebuild it.
  • You can incorporate the principle of infrastructure immutability by provisioning fresh instances when you need to make changes. In this way, you avoid configuration drift.

AWS CodeDeploy offers two ways to perform blue/green deployments:

  • In the first approach, AWS CodeDeploy makes a copy of an Auto Scaling group. It, in turn, provisions new Amazon EC2 instances, deploys the application to these new instances, and then redirects traffic to the newly deployed code.
  • In the second approach, you use instance tags or an Auto Scaling group to select the instances that will be used for the green environment. AWS CodeDeploy then deploys the code to the tagged instances.

So how do you set up your first blue environment? A best practice is to start with an in-place deployment. You can also start with an existing, empty Auto Scaling group.

An example of blue/green deployments

Let’s take a look at an example of how to use Auto Scaling groups to perform a blue/green deployment.

Overview

In the following figure, the example environment includes an Amazon EC2 instance that serves as a workstation for AWS CodeDeploy. A release manager or developer could use this workstation to deploy new versions of code. The blue environment consists of an Auto Scaling group that provisions two more instances to function as web servers. The web servers will initially contain the first version of an application and the AWS CodeDeploy agent. A load balancer directs traffic to the two web servers in a round-robin manner.

The release manager uses the workstation instance to push a new version of the application to AWS CodeDeploy and starts a blue-green deployment. AWS CodeDeploy creates a copy of the Auto Scaling group. It launches two new web server instances just like the original two. AWS CodeDeploy installs the new version of the application and then redirects the load balancer to the new instances. The original instances continue to be part of the original Auto Scaling group. They can be reattached to the load balancer, if needed.

Prerequisites for building the example

Here are the things you will need to build out this example.

  • An IAM user with permissions to use Amazon EC2, Amazon S3, Amazon VPC, AWS CodeDeploy, and AWS CloudFormation.
  • An AWS region and Availability Zone in which you can provision the environment.
  • An Amazon EC2 key pair.
  • Working knowledge of the aforementioned services and the AWS Management Console, and familiarity with connecting to an Amazon EC2 instance.

Other Considerations

You will incur charges from AWS for the use of the underlying AWS services in this example. The Amazon EC2 t2.micro instances and Amazon S3 storage might be covered under the AWS Free Tier, depending on your eligibility. The resources provided in this example are for training purposes. Be sure to consider the security needs of your organization when implementing techniques similar to those described in this blog post.

Step 1: Create the initial environment

  1. Download an archive containing the sample template from this location and save it in a convenient location.
  2. Sign in to the AWS Management Console and open the AWS CloudFormation console at https://console.aws.amazon.com/cloudformation/.
  3. If this is a new AWS CloudFormation account, click Create New Stack. Otherwise, click Create Stack.
  4. Under Upload a template to Amazon S3, click Choose File, choose the YAML file from the archive you downloaded, and then click Next.
  5. In Specify Details, in Stack name, type bluegreen.
  6. In AZName, select one of the Availability Zones. (In this blog post, I am using us-east-1a.)
  7. In BlueGreenKeyPairName, select the key pair to use.
  8. In NamePrefix, use the default value of bluegreen unless you are already running an application with a name that starts with bluegreen. The name prefix is used to assign name tags to the created resources. Click Next.
  9. On the Options page, click Next.
  10. Select the acknowledgement box to allow the creation of IAM resources, and then click Create. It will take CloudFormation about 10 minutes to create the sample environment. In addition to creating the infrastructure resources shown in the diagram, the CloudFormation template also sets up an AWS CodeDeploy application and blue/green deployment group.

Step 2: Review initial environment

  1. Look at the CloudFormation stack outputs. You should see something similar to the following. WorkstationIP is the IP address of the workstation instance. AutoScalingGroup and LoadBalancer are the DNS names created by CloudFormation for the Auto Scaling group and the Elastic Load Balancing load balancer.
  2. Copy the LoadBalancer value into your browser and browse to that link. The following application should be displayed. This PHP application queries the Amazon EC2 instance metadata. If you refresh the page, you will see the IP address and instance ID change in accordance with the round-robin load balancing algorithm.
  3. Go to the EC2 console and display the instances. You will see three running instances associated with this example: the workstation and the two web server instances created by the Auto Scaling group. The web server instances make up the blue environment.

Step 3: Deploy the new version of code

  1. Connect to the workstation instance at the address displayed in WorkStationIP. This instance is running the Ubuntu operating system, so the user name is ubuntu. After you sign in, you will see two directories. The scripts directory contains Bourne shell scripts. The newversion directory contains an update to the PHP application.
  2. Here is the PHP code for the new version in newversion/content/index.php. The only difference from the initially installed code is the application version number.
  3. Now look at the following scripts/pushnewversion.sh shell script. It uses the aws deploy push command to bundle the code and upload it to Amazon S3.
  4. Run the pushnewversion.sh script. You will see a message that tells you how to deploy the code with the AWS command line interpreter, but we will use the AWS CodeDeploy console to do this instead.
  5. Open the AWS CodeDeploy console at https://console.aws.amazon.com/codedeploy.
  6. Click the link for bluegreen-app. If you chose a name other than the default for NamePrefix, click that name instead. Expand Revisions. You will see the revision you just pushed from the AWS CodeDeploy workstation. Click Deploy revision.
  7. On the Create deployment page, select the bluegreen-app application and the bluegreen-dg deployment group. Leave all the other default values in place, and then click Deploy. AWS CodeDeploy will provision the Auto Scaling group and instances, deploy the code, set up health checks, and redirect traffic to the new instances. This process will take a few minutes. When the deployment is complete, the deployment should appear, as shown here. AWS CodeDeploy skips the termination of the original instances because of the settings in the deployment group.

Step 4: Review the updated environment

  1. Browse to the DNS name for the load balancer. You should see the new version of the application, as shown here. The application version has changed from 1 to 2, as expected.
  2. Go to the EC2 console and display the instances. You will see four instances that have been tagged by the Auto Scaling group and launch configuration. The instances with IP addresses 10.200.11.11 and 10.200.11.192 are the ones we saw before in the blue environment. The deployment process created the instances with IP addresses 10.200.11.13 and 10.200.22 that are now part of the green environment.
  3. Go to the Auto Scaling console. You will see that there are now two Auto Scaling groups, each of which has two instances. The Auto Scaling group whose names begins with CodeDeploy was created during the deployment process.

You have now successfully completed a blue/green deployment using AWS CodeDeploy.

Step 5: Cleanup

  1. Return to the session on the AWS CodeDeploy workstation.
  2. Run the scripts/cleanup.sh script. This will remove the deployment bundle and shut down the Auto Scaling groups.
  3. Go to the CloudFormation console, select the stack you created, and delete it.

Conclusion

AWS CodeDeploy enables developers to automate code deployments to Amazon EC2 and on-premises instances. The blue/green deployment option enables release managers to create a new production environment and makes it easier to roll back to the previous environment if problems arise. For more information about AWS CodeDeploy, see the AWS CodeDeploy documentation. You can get started in just a few clicks.

Enjoy life in the blue/green world!

05 May 01:40

Introducing Amazon CloudWatch Logs Integration for AWS OpsWorks Stacks

by Kai Rubarth

AWS OpsWorks Stacks now supports Amazon CloudWatch Logs. This benefits all users who want to stream their log files from OpsWorks instances to CloudWatch. This enables you to take advantage of CloudWatch Logs features such as centralized log archival, real-time monitoring of log data, or generating CloudWatch alarms. Until now, OpsWorks customers had to manually install and configure the CloudWatch Logs agent on every instance they wanted to ship log data from. Now, with the built-in CloudWatch Logs integration these features are made available with just a few clicks across all instances in a layer.

The OpsWorks CloudWatch logs integration is compatible with all Chef 11 and Chef 12 Linux stacks. To get started, simply click the new CloudWatch Logs tab in your layer settings screen. OpsWorks agent command logs, which include Chef recipe output, are enabled by default; to enable logging for custom log files, simply input an absolute path or file pattern for every log file you want shipped.

It’s that simple. OpsWorks creates log groups and log streams for you, and starts streaming your system and application logs within a few minutes.

For more information, see Using Amazon CloudWatch Logs with AWS OpsWorks Stacks in the AWS OpsWorks User Guide.

28 Apr 16:55

Artista Japonesa transforma antigas caixas em esculturas incríveis!

by Paula Muniz

De alguma forma, todo mundo vê uma caixa de papelão diferente. Algumas pessoas enxergam como unidade de armazenamento, os gatos vêem como uma casa perfeita, e a artista japonesa Monomi Ohno passou a ver como matéria prima de suas surpreendentes esculturas 3D!


Tudo começou durante seus estudos na Universidade de Artes de Osaka, onde decidiu se especializar em animação em 3D. No entanto, para obter o software necessário, custava uma grana preta. Então, em vez de gastar todo esse dinheiro, ela decidiu usar o esconderijo de caixas vazias da Amazon para melhorar suas habilidades de modelagem.
O resultado foi muito melhor do que ela poderia imaginar, e não é atoa! Dá uma olhadinha…

O post Artista Japonesa transforma antigas caixas em esculturas incríveis! apareceu primeiro em O Verso do Inverso.

26 Apr 16:33

A crise atingiu todos os setores

by Joe

Se nem a Globo tá pagando os Windows dela quem sou eu pra pagar né? Eu gosto quando aparece aquela mensagem VOCÊ PODE TER SIDO VÍTIMA DE PIRATARIA e eu fico com aquela cara de…

26 Apr 02:03

Motivos para o motorista do Uber adicionar a passageira bonita

by Joe

FOGE QUE DEU RUIM FILHONA.

A treta está apenas começando. Até isso tudo chegar na polícia vai ter muita bagunça ainda.

26 Apr 01:59

Segurança do Docker Swarm

by Cristiano Diedrich

Olá gente!

Com a grande ajuda do wsilva, estamos trazendo um post que levanta um ponto bem interessante do ambiente de Docker Swarm : Como deixar meu cluster mais seguro?

Existem diferentes forma de se fazer isso, algumas nativas, e outras envolvendo ferramentas de terceiros, nesse post replicaremos o post do Dumps Cerebrais, que aborda uma das formas nativas de se garantir maior segurança no cluster de Swarm. Vamos lá!

O Auto Locking

é uma das grandes funcionalidades adicionadas na versão 1.13.0 do Docker e presente nas novas versões 1.13.1, 17.03.0-ce, 17.03.1-ce e 17.04.0-ce (versões disponíveis até a data de publicação desse artigo).

Você deve estar se perguntando: “Versões 1.12, 1.13 e agora 17.03.x-ce? Que zona é essa?” Na verdade não é zona, é reorganização, na versão 1.13 uma das novidades foi a reorganização dos comandos no CLI, agora a Docker está reorganizando os release e versões. Ela lançou um novo ciclo de releases, renomeou as versões baseando-se em datas (ano e mês) e separou a parte open source, Docker CE (community edition) da parte proprietária com licensa e com planos de suporte da própria Docker, o EE (enterprise edition). Resumindo reorganização. Mas essa é uma história que podemos detalhar em outro artigo, nosso foco aqui será mostrar o que é e como funciona o Auto Locking

A motivação por trás do Auto Locking

Tanto a comunicação entre os nós do Swarm quanto os logs do Raft consensus são por padrão encriptados por chaves TLS que ficam nos discos das máquinas managers. Tá, mas o que isso quer dizer?

Vamos imaginar que uma máquina manager reinicia, tanto a chave TLS usada para a encriptação da comunicação entre os nós, quanto a chave TLS usada para encriptar os logs do Raft são carregados na sua memória. Isso por um lado é bom pois permite que um nó seja reiniciado sem intervenção humana e sistema continua funcionando normalmente. Por outro lado se alguém conseguir essas chaves seja por um backup que vaze ou disco corrompido essa pessoa vai conseguir acesso aos logs do Raft e também às informações sensíveis como onde estão rodando os serviços, às configurações de acesso dos serviços e inclusive aos secrets dessas aplicações rodando nesse cluster.

Como funciona o Auto Locking.

O auto locking é uma camada de proteção a mais e é super simples. Quando você iniciar ou atualizar um cluster Swarm passando a flag --autolock uma chave é gerada para encriptar as demais chaves, porém essa nova chave é responsabilidade nossa e deve ser mantida por nós, devs e operadores. Seja via password manager, seja guardando de cabeça (o que duvido), seja anotando em papel de pão.

Com o auto lock ativo se por um acaso a máquina reiniciar ninguém conseguirá rodar comandos nela sem antes desbloqueá-la e para desbloquear aquela chave de nossa responsabilidade será solicitada.

Podemos iniciar um cluster já utilizando a funcionalidade de auto lock:

$ docker swarm init --autolock
Swarm initialized: current node (drr4hrzngqoh90cpp0t5lnuv1) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-1-1infi7fei781xasqoh1q1k5i7p47ocvyptaoq1r6dmmp1bwz0p-e37ividr81a45qzhq9ptkb836 \
    192.168.65.2:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

To unlock a swarm manager after it restarts, run the `docker swarm unlock`
command and provide the following key:

    SWMKEY-1-nly8Gmulj+xuPwFF4ks4evN6OxdUtVFdD1QlIhdVvto

Please remember to store this key in a password manager, since without it you
will not be able to restart the manager.

Ou adicionar a um cluster já em produção:

$ docker swarm update --autolock
Swarm updated.
To unlock a swarm manager after it restarts, run the `docker swarm unlock`
command and provide the following key:

    SWMKEY-1-av+McYBAyjy6o1RMYsDqUsS8lkjH05t5HMnP7USjk+4

Please remember to store this key in a password manager, since without it you
will not be able to restart the manager.

Podemos perceber o token gerado nos dois casos, ambos começam com SWMKEY, essa é a chave que devemos guardar, ela não é persistida no cluster.

Se a máquina manager não estiver travada você consegue recuperar essa chave com seguinte comando:

$ docker swarm unlock-key
To unlock a swarm manager after it restarts, run the `docker swarm unlock`
command and provide the following key:

    SWMKEY-1-av+McYBAyjy6o1RMYsDqUsS8lkjH05t5HMnP7USjk+4

Please remember to store this key in a password manager, since without it you
will not be able to restart the manager.

Se a máquina estiver travada qualquer comando administrativo não será executado e vai retornar a seguinte mensagem:

$ docker node ls
Error response from daemon: Swarm is encrypted and needs to be unlocked before it can be used. Please use "docker swarm unlock" to unlock it.

Para mudarmos a key que destrava o Swarm usamos o seguinte comando:

$ docker swarm unlock-key --rotate
Successfully rotated manager unlock key.

To unlock a swarm manager after it restarts, run the `docker swarm unlock`
command and provide the following key:

    SWMKEY-1-ECkuyhW8Zgc9nZthmkMpZd5f+mxPuOEC5K6CyA89xNk

Please remember to store this key in a password manager, since without it you
will not be able to restart the manager.

Para ficar mais claro, o wsilva ainda gravou um vídeo, esse mesmo foi utilizado no meetup de docker em SP (grupo do qual ele ajuda a organizar), confere:

Bem bacana né? Então não deixe de utilizar, como visto é bem simples a sua configuração, se quiser ter certeza antes de sair colocando em produção, usa o Play-With-Docker para montar seu lab e testar, é uma ferramenta free e bem simples de se usar, através dela você pode subir todo seu ambiente, validar e depois disso colocar a mão na massa em seu ambiente, há obviamente uma limitação, que é o tempo de uso, mas garanto que facilita horrores 🙂 .

Então era isso, nos ajude divulgando o blog, e deixe suas dúvidas, elogios ou críticas nos comentários 😉 .

Grande abraço!

25 Apr 13:04

Escute os sons da guerra

by Carlos Tomé

Existem grupos que ajudam ex-soldados a superarem os seus traumas de guerra. A fundação David Lynch faz esse tipo de trabalho. A mensagem da campanha é (em uma tradução mais ou menos) "Existem sons que te levam de volta para guerra". O que as vezes é um simples som de uma porta batendo, para um soldado veterano, é uma lembrança de batalha.

O post Escute os sons da guerra apareceu primeiro em Sedentário & Hiperativo.

22 Apr 14:17

Agricultores querem "fazer root" em tratores da John Deere

by Dionatan Simioni
Quem imaginaria que um dia chegaríamos no patamar de ter que desbloquear tratores para trabalhar? Pois esta é a realidade de vários agricultores ucranianos que estão "crackeando" os tratores para...

Visite o site para ver o restando do artigo...
21 Apr 15:23

Manjaro-Architect – instalação do sistema sob medida

by Ricardo Ferreira

A distribuição Manjaro implementa uma nova forma de instalação por linha de comando, o Manjaro-Architect. O Manjaro-Architect é um instalador do tipo “netinstall”, que não fornece uma interface gráfica, por padrão, e todos os pacotes serão baixados da Internet durante a instalação.

Instalação do sistema sob medida

A capacidade de controlar ou ter conhecimento do que está sendo instalado no seu sistema Linux é uma característica fundamental dos softwares livres; que garantem a liberdade de poder usá-lo como desejar, tendo assim total controle do que existe ou não existe no seu sistema. Isso evita que seu sistema venha com programas, recursos e funções que você, talvez, nunca precise; e mesmo assim esteja consumindo recurso da sua máquina (hardware).

sobmedida

Quando se estar decidindo e escolhendo qual distribuição Linux será usada, pensa-se logo em garantir o que existe de melhor e mais novo nessa distro. Por outro lado, pode-se optar pela distribuição Linux de sua preferência (Ubuntu, Fedora, Debian e outros) e, pelo menos no início, “abrir mão” de todos as funcionalidades que venham por padrão. Isso garante uma instalação do Linux enxuta e totalmente personalizada – sob medida 😉

Para conseguir este tipo de instalação, a primeira coisa que deve ser feita é ter em mente o que realmente você irá precisar e usar no seu sistema (desde de ambiente gráfico a programas do cotidiano) e, posteriormente, instalar os softwares pretendidos 😉 #facavocemesmo

Manjaro-Architect

AVISO
Ferramenta em pleno desenvolvimento. Use-a por sua conta e risco!

O Manjaro-Architect é um instalador em modo texto, para usuários com algum conhecimento, que podem definir quase todos os aspectos que compõem o sistema que será instalado. Equivalente a uma edição mínima (conhecido como “netinstall“) em que tudo é baixado da Internet, conforme as suas necessidades 😉

Manjaro-Architect

Em comparação com a tradicional com o instalador gráfico padrão do Manjaro, o Calamares, o Manjaro-Architect, mesmo ainda em desenvolvimento, tem algumas vantagens:

– A mídia de instalação (disponível para 32 e 64 bits) é muito pequena. Neste caso, o download é de cerca de 500MB;
– Os pacotes instalados, conforme suas necessidades, serão os mais recentes;
– A mesma mídia de instalação pode ser usada para instalar qualquer ambiente de desktop;
– As opções para personalização são basicamente ilimitadas – você é livre para escolher o seu kernel, sistema de inicialização, ambiente de desktop (ou nenhum se preferir) e quaisquer outros pacotes;
– Muitas maneiras para configurar a instalação deixando o sistema a seu gosto 😉
– Se você quiser, você pode acessar todos os perfis pré-configurados das edições Manjaro existentes para instalar um ambiente de configuração idêntica com o que você obteria em sua ISO disponibilizada;
Mais aqui

Na Prática

A instalação com esta ferramenta requer mais tempo para configuração e download de pacotes. inclusive, requer um nível de compreensão maior, pois será preciso tomar várias decisões por conta própria, em vez de alguém ter feito isso para você de antemão. Além disso, não fornece um ambiente gráfico.

Se estiver pronto, baixe a ISO aqui. Eu recomendo testar no VirtualBox, mas se prefeir dê boot pelo CD ou Pendrive no seu PC.

Quando olhar uma tela como a mostrada abaixo, prossiga com a instalação, conforme vídeo presente no início do post ou diretamente no link.

uIK2lIr

20 Apr 17:29

Vulnerabilidade no Google Chrome e Firefox expõe a um tipo de Phishing muito difícil de ser detectado

by Ricardo Ferreira

Um pesquisador chinês da infosec descobriu, recentemente, um novo ataque do tipo “phishing” sendo um dos mais difíceis de detectar. Ele pode ser usado para enganar até mesmo os usuários mais cuidadosos na Internet. Ele alertou que os hackers podem usar uma vulnerabilidade conhecida nos navegadores Chrome e Firefox para exibir seus falsos nomes de domínio como sites de serviços legítimos, como Apple, Google ou Amazon para roubar credenciais de login ou financeiras e outras informações confidenciais de usuários.

Phishing

Phishing é uma técnica que cibercriminosos usam para enganar você a revelar informações pessoais, como senhas ou cartão de crédito, CPF e número de contas bancárias. Eles fazem isso enviando e-mails com links maliciosos ou direcionando você a websites falsos. Mensagens de Phishing parecem ser enviados por organizações legítimas como como Apple, Google, Amazon, uma agência do governo ou seu banco; entretanto, elas são falsas. Em 2014, estimou-se que o seu impacto econômico mundial foi de 5 mil milhões de dólares.

Exemplo Phishing

Exemplo de Phishing na Internet

Através de e-mails, por exemplo, essas mensagens podem vir disfarçadas por atualizações, validação ou confirmação de informações da sua conta, sempre dizendo que houve algum problema. Caso clique nos links, você pode ser redirecionado a um site falso e induzido a conceder informações sobre a sua conta, que podem resultar em roubos de identidade. Assim, essa técnica está inserida no conjunto de ações adotadas em Engenharia Social – cujo o objetivo é enganar um usuário, e explorar vulnerabilidades na segurança dos softwares e sistemas usados.

Confesso, antes de saber isso, sempre soube que a “melhor defesa” contra esses ataques de phishing é SEMPRE verificar a barra de endereços após a página ser carregada e confirmar se ela estar sendo trafegada por uma conexão HTTPS válida, no mínimo. Contudo, hoje (por enquanto) isso não é mais suficiente!

Verifique AQUI, se estiver usando o Chrome ou Firefox, e tire a prova :/

* Se o seu navegador estiver exibindo “apple.com” na barra de endereços protegida com SSL; e o conteúdo da página estiver vindo de outro servidor (não se preocupe, é apenas um servidor de amostra mantido para demonstrar a falha), seu navegador está vulnerável ao ataque “ataques de homógrafos“.

Phishing de domínios com caracteres especiais (IDNs)

Esse tipo de ataque é conhecido desde 2001, mas os navegadores lutam para evitar todas as formas para usá-lo. É um tipo de ataque spoofing onde um endereço de site parece legítimo, mas não é… Em resumo, um caractere ou conjunto de caracteres são substituídos, intencionalmente, por caracteres especiais do tipo Unicode.

Muitos caracteres Unicode, que representam alfabetos como o grego, cirílico e armênio em nomes de domínio internacionalizados, parecem o mesmo que letras latinas para o olho casual, mas são tratados de forma diferente por computadores com o endereço web completamente diferente. Essa representação é conhecida como Punycode.

translate

Do ponto de vista da segurança, domínios IDNs podem ser problemáticos porque muitos caracteres Unicode são difíceis de distinguir dos caracteres ASCII comuns. Por isso, no exemplo anterior, é possível registrar domínios como “xn--pple-43d.com”, que é equivalente a “аpple.com”. Pode não ser óbvio à primeira vista, mas “аpple.com” usa o cirílico “а” (U + 0430) ao invés do ASCII “a” (U + 0041). Isso é conhecido como “ataques de homógrafos”.

Os navegadores modernos possuem mecanismos para limitar os “ataques de homógrafos” de IDNs. Contudo, o mecanismo de proteção de homógrafos do Chrome (e do Firefox), infelizmente, falham se todos os caracteres forem substituídos por um caractere semelhante de uma única língua estrangeira. O domínio “аррӏе.com”, registrado como “xn--80ak6aa92e.com”, ignora o filtro usando apenas caracteres cirílicos.

Você pôde verificar isso na prova de conceito usando o Chrome ou o Firefox. Então, torna-se (quase) impossível identificar o site como fraudulento sem inspecionar cuidadosamente o URL do site ou o certificado SSL :(

Vulnerabilidade no Google Chrome e Firefox

Este bug foi comunicado, pelo pesquisador chinês, ao Chrome e Firefox no dia 20 de janeiro de 2017 e foi corrigido no tronco do Chrome 59 (atualmente na versão Canary) em 24 de março. A equipe do Chrome decidiu incluir a correção no Chrome 58, que deve estar disponível por volta de 25 de abril, próximo. O problema ainda não foi resolvido no Firefox!

Phishing-Unicode-Domains

Enquanto isso, milhões de usuários da Internet estão em risco deste sofisticado ataque de phishing, (quase) impossível de detectar :(

Correções (somente) no Firefox

Os usuários do Firefox podem diminuir sua exposição a esse bug indo nas configurações do navegador.

1. Digite about:config na barra de endereços e pressione ENTER.
2. Digite Punycode na barra de pesquisa.
3. As configurações do navegador mostrarão o parâmetro intitulado: network.IDN_show_punycode, clique duas vezes ou clique com o botão direito do mouse e selecione para alterar o valor de false para true;

Isto forçará o Firefox a sempre exibir domínios IDN em seu formulário Punycode, tornando possível identificar domínios maliciosos:

a502b06561524ec740ec6e8cb11fbd931f6fb219f42a0be6de275f97d44a514a

Infelizmente, não há configuração semelhante disponível no Chrome para desativar manualmente as conversões de URL Punycode. Assim, os usuários do Chrome têm que esperar pelas próximas semanas para receber o patch de segurança na versão Stable 58 (previso 25 de abril de 2017). Ou digitar a URL manualmente para evitar esse problema 😉

ATUALIZAÇÃO – 20/04/17

Correção no Chrome

O Google lançou a versão estável 58 com a correção para esse problema (CVE-2017-5060). Atualize-o imediatamente!


Via | TheHackerNews

19 Apr 02:09

Desvendando o editor Vim

by Victor Sprengel

Vim é um editor de texto poderoso e altamente configurável. Contudo, ele possui uma curva de aprendizado estranha – às vezes parece mais uma escada de degraus desiguais do que uma curva. O primeiro contato com ele é quase sempre de estranhamento.

Tudo isso é motivo suficiente para afastar os menos pacientes ou curiosos, mas não desista sem ao menos tentar junto a esse guia!

Há várias razões para o vim ter se tornado um editor famoso: Além de possuir uma comunidade forte – e cheia de truques nas mangas – há uma diferença notável na produtividade ao editar arquivos, principalmente para programadores. E não se engane, este não é só um editor com “alguns truques a mais”.

Este tutorial vem com um arquivo junto. Caso queira acompanhar e testar as dicas enquanto aprende, recomendo que faça o download do arquivo.

Atalhos e comandos

Vamos começar abrindo o editor:

Primeiro abra o terminal (OSX/Linux) ou o prompt(Windows). O simples comando vim abre o editor vazio (será necessário especificar onde salvar posteriormente). Alternativamente, vim vimtutorial.txt abre o arquivo de nome “vimtutorial.txt”.

É bem provável que a primeira impressão seja: “não consigo digitar!”. Bem, o vim possui alguns modos, e o que você pode fazer muda em cada um deles. Não se preocupe, logo você entenderá como eles funcionam.

Antes disso, vamos aprender como funcionam atalhos no vim. Uma das sacadas dos criadores foi tentar reduzir ao máximo o uso de modificadores como CTRL ou SHIFT (que de fato causam uma baita tendinite). Eles conseguiram isso com a distinção de modos, fazendo com que a maioria das teclas sejam um atalho.

De agora em diante, passe a testar os atalhos conforme forem apresentados, isso lhe dará familiaridade e conforto com o editor.

Antes de começar, tenha uma coisa em mente: muitos comandos do vim podem ser repetidos múltiplas vezes se digitarmos um número antes dele. Por exemplo: digite “10dd” e seu editor apagará as próximas dez linhas. Use isso a seu favor!

Para os que estão seguindo o arquivo-tutorial, tem um exemplo de uso desse comando no arquivo.

CUIDADO – há distinção entre letras maiúsculas e minúsculas no vim. Isto é, o comando r pode ser diferente do R. A tecla CAPSLOCK inverte o comportamento.

Preparado para começar com o vim? Então bora conhecer os seus modos.

Modo ‘normal’

Este é o modo no qual o vim inicia. Você identifica-o quando não há nenhuma informação no canto inferior esquerdo da tela:

Essa é a tela inicial quando não especificamos nenhum arquivo ao abrir o editor. Note que ele inicia no normal mode.

Ele serve para navegação e manipulação de texto. Nele você pode utilizar as setas, home e end para se mover. Segue o exemplo de alguns comandos muito utilizados:

  • dd: remove a linha atual (delete)
  • dt: remove tudo da linha que está entre seu cursor e a primeira ocorrência do caractere digitado logo em seguida. (delete ‘till)
  • x: recorta o caractere atual para colar depois (cross)
  • yy: copia a linha atual (yank)
  • p: cola o que está colado, o clássico paste
  • w: andar o cursor uma palavra (word)
  • b: volta o cursor uma palavra (back)
  • u: equivalente ao CTRL+z, ou seja, undo
  • CTRL+R: é o redo, ou seja, desfaz o undo

Note que, no geral, os comandos vem do nome das ações, o que ajuda muito a memorizar tudo.

Outra sacada dos criadores foi dar um jeito de manter a mão do programador sempre pelas letras. Assim, h, j, k e l podem ser usados como setas neste modo (esquerda, baixo, cima, direita).

Nesse modo você também pode digitar / (forward-slash) e digitar uma palavra ou até uma expressão regular. Essa é a busca.

Ao apertar enter, você poderá navegar pelos resultados com SHIFT+n e n (resultado anterior/próximo resultado). Use ESC para sair dela.

Caso esteja acompanhando com o arquivo-tutorial, experimente digitar “/palavras” e ver a busca em ação.

Note que a busca, por padrão, não destaca todas as palavras, mas apenas move o cursor. É claro que podemos mudar isso – um exemplo do quão configurável o vim é.

Modo ‘insert’

Esse modo é o mais procurado por iniciantes – o modo de escrita! Para acioná-lo basta apenas mover o cursor para o local desejado e então digitar a tecla i. Agora já podemos escrever! Veja:

Note que no canto inferior esquerdo aparece o INSERT, portanto, com este visual, pode editar seu arquivo à vontade.

Além do i, há outras alternativas de entrar neste modo. A diferença é o que acontece com o cursor um momento antes de você poder digitar:

  • A: move o cursor para o final da linha
  • I: move o cursor para o começo da linha
  • o: abre uma linha vazia abaixo da atual e move o cursor para ela
  • O: abre uma linha vazia acima da atual e move o cursor para ela

Legal, estamos digitando, mas como podemos, por exemplo, sair desse modo e voltar para o normal? Simples, basta apenas usar a tecla ESC! E é basicamente isso. Aproveite o momento para fazer o exercício descrito no arquivo.

Modo ‘visual’

Esse modo serve para selecionar e manipular texto. Nele podemos usar quase todos os comandos do modo normal, mas eles serão aplicados em toda a seleção.

Esse é o visual mode. Nós temos uma indicação no canto esquerdo inferior e o texto selecionado é destacado.

Um aviso: é necessário passar pelo modo normal sempre que você for trocar de modos. Por exemplo, se você está em insert e gostaria de ir para visual, é necessário usar ESC primeiro e partir daí. Isso vale para qualquer troca entre modos que não envolva o normal.

Inclusive, é considerado boa prática (e também mais conveniente) manter-se no modo normal se não estiver fazendo nada (idle).

Dito isso, veja os comandos para entrar no modo visual, e o tipo de seleção que eles proporcionam:

  • v: seleção caractere a caractere
  • V: seleção de linhas
  • CTRL+V: seleção de bloco

Você pode, por exemplo, selecionar várias linhas, copiar com y e colar em outro lugar com p.

Uma outra utilização do modo visual é o dobrar (folding) várias linhas em uma só. Por exemplo, para esconder as linhas de uma função que você não vai modificar no futuro próximo.

Para fazer isso selecione as linhas que você quer juntar temporariamente (é apenas um efeito visual) com V e digite zf. Depois, para desdobrar as linhas comprimidas, navegue o cursor até ela e pressione zo. Para treinar, siga o tutorial no arquivo.

Veja como o vim indica que ele comprimiu visualmente 12 linhas para uma só:

Modo ‘command-line’

Até agora conseguimos editar, navegar e selecionar texto no nosso arquivo. Mas não temos nenhuma pista de como salvar o arquivo ou fechar nosso editor.

Claro, podemos fechar o terminal, mas isso – além de inconveniente – não resolve o problema de salvar. Mas então, qual o atalho para cada uma dessas funções? Mais do que um atalho, certas ações precisam usar comandos. O modo que permite isso é o command-line:

Ao pressionar ‘:’ seu cursor existirá apenas no canto inferior esquerdo, onde você pode digitar e executar comandos com ENTER. O histórico pode ser navegado com as setas para cima e para baixo. Segue alguns comandos importantes:

  • w: salva o arquivo, pode opcionalmente colocar um nome em seguida para salvar no arquivo com este nome
  • q: sai do vim e volta para o terminal. Você pode usar q! para sair sem salvar
  • %s/padrão/substituto/opções: substituição
  • vs: abre na mesma tela o arquivo especificado, dividindo o espaço verticalmente
  • split: abre na mesma tela o arquivo especificado, dividindo o espaço horizontalmente

O comando de substituição merece mais atenção. Vamos começar com um exemplo: %s/antigaVariavel/novaVariavel/g. Ao executar esse comando, toda ocorrência de antigaVariavel será trocada por novaVariavel. Veja antes:

e depois:

O g no final indica global, ou seja, no arquivo todo. Você pode adcionar c (/gc) para que o editor pergunte, a cada ocorrência, se você deseja fazer a substituição:

Como na busca, tanto padrão quanto substituto podem ser expressões regulares, o que dá muito poder para o editor! Para treinar, existe um exercício no arquivo disponibilizado.

Uma funcionalidade interessante é que os splits podem ser feitos recursivamente, ou seja, o espaço da tela designado para um espaço pode ser dividido com outro arquivo. Vamos ver um exemplo (extremo) dessa característica:

Veja como os splits funcionam! Fica claro porque eu não recomendo que passe de 4 telas. Mas mesmo assim ainda não sabemos como lidar com tantas telas. Alguns atalhos nos ajudam com isso:

Para navegar entre cada tela (como um CTRL+TAB no browser), CTRL+w pode ser usado ao ser pressionado duas vezes seguidas. Alternativamente, você pode ir para uma direção com CTRL+w+h/j/k/l (esquerda, baixo, cima, direita). Por fim, para fechar um split, basta fechar o arquivo com :q.

Conclusão

Embora você já consiga abrir o seu (possívelmente) novo editor preferido e usá-lo, ainda existem muitos truques e configurações que dão mais poder ao usuário.

Do jeito que está ele é feio, não tem informações importantes à vista e ainda apresenta comportamentos estranhos. Ainda bem que, como você já deve ter adivinhado, tudo isso pode ser customizado de modo a atender suas necessidades e gostos.

O próximo passo é aprender a preencher o seu arquivo de configurações, o .vimrc. Há muitas configurações possíveis, e apenas com elas podemos tirar o máximo de todas features que você acabou de aprender. O ideal é pegar um .vimrc base e ir adicionando o necessário.

Por sua sorte, a comunidade do vim é bem forte e leal – e material para aprender é o que não falta. Além disso, aproveite e deixe o seu comentário sobre o que achou do vim.

Aprender uma ferramenta e suas features é sempre bacana, pois o nosso trabalho se torna cada vez mais produtivo, certo? Então que tal aprender alguns truques com o Eclipse IDE também?

Na Alura, temos o curso online de produtividade com o Eclipse IDE no qual aborda muitas das técnicas e dicas visando a produtividade com uma das ferramentas mais famosas entre os desenvolvedores Java. Na Caelum ele também é usado durante os cursos, assim como o Android Studio no curso de Android!

12 Apr 20:09

Hacker invade sistema e faz 156 sirenes de alerta dispararem em cidade dos EUA.

by noreply@blogger.com (Cláudio Florenzano)
Hacker invade sistema e faz 156 sirenes de alerta dispararem em cidade dos EUA. Foto: Dallas, Texas.
Autoridades de Dallas nos Estados Unidos afirmaram que todas as 156 sirenes da cidade foram disparadas por um hacker que conseguiu acessar o sistema sem autorização. O barulho preocupou os moradores e as linhas de emergência da cidade receberam 4,4 mil chamadas, o dobro do esperado para o horário. O caso ocorreu na madrugada de sexta para sábado (8 de Abril de 2017).

As sirenes são usadas pela cidade de Dallas para alertar cidadãos sobre emergências climáticas, tais como tornados.

O problema demorou cerca de 90 minutos para ser solucionado em definitivo. Durante esse período, as sirenes teriam sido acionadas 15 vezes, cada uma durando cerca de 90 segundos.

Segundo as autoridades, os bombeiros começaram a tratar do caso por volta das 0h30 de sábado (horário local), mas o invasor religava as sirenes toda vez que elas eram silenciadas pela equipe. Isso obrigou a cidade a desativar completamente o sistema por volta da 1h20. 

As autoridades dizem já ter encontrado a vulnerabilidade que permitiu a invasão e que pretendem religar o sistema de alerta até o próximo fim de semana. Acredita-se que a invasão tenha sido realizada por alguém localizado na cidade, já que a invasão teria exigido presença física próxima à rede das sirenes, mas ninguém foi acusado.

O prefeito da cidade classificou o episódio como "um ataque ao nosso sistema de notificação de emergência" e prometeu punir o responsável. Ele também disse que a cidade deve modernizar sua infraestrutura eletrônica.

Dallas é um município do estado do Texas e o 9ª mais populoso dos Estados Unidos, com aproximadamente 1,3 milhão de habitantes.

12 Apr 20:09

Algoritmo projeta uma nova casa para voce em até 3 dias úteis.

by noreply@blogger.com (Cláudio Florenzano)
Algoritmo projeta uma nova casa para voce em até 3 dias úteis.
Algoritmo projeta uma nova casa para voce em até 3 dias úteis.
Se você quer um escritório em casa, estúdio de pintura ou uma casa totalmente nova, existe uma série de opções no mercado, desde casas totalmente transportáveis até projetos modulares feitos por impressoras 3D.

No entanto, uma startup baseada em Los Angeles está oferecendo uma nova forma, mais rápida e mais barata, de montar um imóvel totalmente personalizado. Através de um algoritmo gerado por computador, eles são capazes de montar o projeto de um imóvel em até três dias úteis.

Ao contrário de outras empresas de imóveis pré-fabricados, que oferecem apenas algumas opções de projetos, a Cover utiliza um software que leva em conta as necessidades do cliente para conseguir montar o design do local.

A pessoa responde um questionário de 50 a 100 perguntas que envolvem temas sobre quantas pessoas cozinham na casa, quais equipamentos eletrônicos não podem faltar, entre outros. O software, então, otimiza o melhor local para a colocação de janela, levando em conta a ventilação e luz natural, para garantir eficiência energética.

Depois disso, ele apresenta centenas de projetos que satisfazem as exigências. Embora os projetos sejam um tanto minimalistas e modernos, com estruturas de aço aparente e paredes de vidro, o cliente pode fazer alterações para deixar o local do jeito que desejar.
12 Apr 11:54

Knock SSH :: Adicionando uma camada de segurança divertida para nossos serviços

by noreply@blogger.com (Matheus Fidelis)

Hoje vamos abordar um esquema bem divertido que conheci esses dias, o Knock.
O Knock funciona como uma camada extra de proteção para portas SSH e demais outros serviçes, pois é bem customizado. Nele iremos definir uma sequência fixa de portas, onde um cliente irá mandar pacotes, e caso a sequência for correta, o servidor irá executar uma, ou mais ações, como liberar ou fechar portas de serviços como o próprio SSH.

Configurando o Servidor

Instalando o Knock
$ sudo apt-get install knockd

Editando o arquivo de configuração do Knockd
$ vim /etc/knockd.conf 



Aqui vamos testar o openSSH e closeSSH. Aqui iremos definir uma sequencia de portas que iremos "bater" para abrir e outra sequencia que iremos fechar a nossa porta do SSH no IPTables.

Edite o arquivo knockd para definir qual placa de rede irá ficar responsável por responder as "batidas"

$ sudo vim /etc/default/knockd
# 1 = start
# anything else = don't start
# PLEASE EDIT /etc/knockd.conf BEFORE ENABLING
START_KNOCKD=1

# command line options
KNOCKD_OPTS="-i wlan0"

Agora nosso server já está configurado, e já está pronto para fazer nosso IPtables responder a nossa "senha secreta do clube do bolinha". Mas como informamos essa sequência, e por onde? Pra isso precisamos configurar nosso cliente.

Configurando o Cliente

Da mesma forma que instalamos no server, podemos tambem instalar no client.

Instalando o Knod
$ sudo apt-get install knockd

Abrir porta SSH

Agora vamos abrir a porta do SSH enviando uma série de pacotes para nossa sequência de portas que definimos. Nesse caso utilizamos as Default como ilustração, então é altamente recomendável que você as troque. 

$ knock 192.168.0.123 7000:tcp 8000:tcp 9000:tcp

Agora é só prosseguir com a conexão SSH normal.
$ ssh matheus@192.168.0.123


Terminei, agora preciso fechar a porta SSH

Vamos realizar o envio de pacotes para a segunda sequência que definimos. Isso irá fazer o Knock executar o comando de bloqueio da porta SSH
$ knock 192.168.0.123 9000:tcp 8000:tcp 7000:tcp


Espero ter ajudado! :)

12 Apr 02:00

Fish :: Navegando rapidamente entre diretórios com Fishmarks

by noreply@blogger.com (Matheus Fidelis)


Há um tempo fiz um post explicando a instalação do Fish Shell, uma shell voltada a produtividade que eu venho utilizando assiduamente em todos os computadores que eu tenho acesso (sério). E hoje eu venho trazer uma notinha rápida sobre um componente do Fish chamado Fishmark.

O Fishmark é um componente que se integra ao Fish Shell e te permite criar bookmarks em diretórios a sua escolha e te permite navegar até eles muito rápido. Ele é baseado no Bashmark, um outro projeto bem bacana que funciona da mesma forma porém para o Bash. Vale a pena dar uma olhada também

Git do projeto: https://github.com/techwizrd/fishmarks

Instalação Automática

$ curl -L https://github.com/techwizrd/fishmarks/raw/master/install.fish | fish


Instalação Manual

1. Clone o projeto para ~/.fishmarks
$ git clone http://github.com/techwizrd/fishmarks.git

2. Dê um source no arquivo para recarregar as configurações do Fish, ou inicie uma nova sessão
$ . ~/.fishmarks/marks.fish

# Ou

$ fish


Usage:


s <bookmark_name> - Salva o diretório atual com o nome de "bookmark_name"
g <bookmark_name> - Vai para o diretório com nome associado a "bookmark_name" (cd)
p <bookmark_name> - Printa o caminho do bookmark associado a "bookmark_name"
d <bookmark_name> - Deleta o bookmark
l - lista todos os bookmarks disponívels

Exemplo:




Espero ter ajudado :)
12 Apr 00:42

Thor enfrenta Hulk em novo trailer da Marvel

by Carlos Tomé

Sim, eu tenho um spoiler do trailer no título desse post. Sorry! Mas foi muita empolgação...

O post Thor enfrenta Hulk em novo trailer da Marvel apareceu primeiro em Sedentário & Hiperativo.

12 Apr 00:29

Duas ferramentas super simples para criar nossos próprios mapas mentais

by Denise Helena

O uso de ferramentas para trabalhar com mapas mentais pode vir a ser super útil em várias situações, principalmente se levarmos em conta seu potencial na hora de nos ajudar a memorizar informação e repesentá-la de uma forma bem visual. Veja abaixo duas intuitivas ferramentas para criar mapas mentais no navegador.

Bubbl.us

Imagen-730x421

Leia também: 2 FERRAMENTAS PARA CRIAR MAPAS MENTAIS DO NAVEGADOR

Sem dúvida, uma das vantagens mais interessantes sobre Bubbl.us é sua interface bem simples, que nos permite começar a criar mapas mentais sem precisar ter que superar uma curva de aprendizagem alta. Além disso, a ferramenta pode ser de utilidade quando quisermos contar com a colaboração de outras pessoas, já que permite que vários usuários trabalhem em um mesmo projeto. Tal como pode ver na imagem, os mapas mentais criados com Bubbl.us possuem um visual bastante atraente.

MindMapFree

Imagen21-730x362

Leia também: 2 FERRAMENTAS PARA CRIAR MAPAS PERSONALIZADOS ATRAVÉS DA INTERNET

Quem procura por uma alternativa simples na hora de criar mapas mentais desde o navegador, é possível que MindMapFree seja uma das melhores opções que podemos encontrar na Internet. Partindo de uma ideia central, MindMapFree nos permite adicionar tantas ramificações conforme precisamos para dar forma ao projeto em que estamos trabalhando. Por último, aproveitamos para destacar a possibilidade de trocar a fonte e inclusive, a cor das diferentes ramificações. Totalmente recomendada.

10 Apr 16:09

Morte à sessão! Entenda esse tal de stateless session com tokens

by Raphael Lacerda

Microservices pelo visto já é uma realidade, há inúmeros artigos falando sobre servidores, implementações, arquitetura. Daqui a pouco começam a surgir artigos falando mal ou que o conceito está morto. Enfim, você provavelmente já sabe o ciclo de vida de uma BuzzWord. Voltando, eu não consigo desassociar MicroServices de um outro conceito que já foi uma buzzword há um tempo atrás. REST.

Demorei anos para entender o conceito, algo que o Guilherme Silveira já falava lá em 2009 como hipermída (HATEOAS), 2010 como diminuir acoplamento, só fui compreender há pouco tempo. E um desses conceitos sempre foi para mim obscuro demais: RESTFul API, mais especificamente: ser stateless. Portanto, é esse conceito que eu vou tentar ajudar você a entender também.

Essa dúvida não é só minha: “como fugir da famosa Session em um contexto RESTFul API?“. Aposto que foi um dos primeiros conceitos que você aprendeu ao lidar com programação web, que existe a possibilidade de ter um espaço alocado no servidor para cada cliente e nele você pode guardar qualquer informação relevante para o atendimento deste. Então, surge esse conceito de RESTFul API e diz que sessão na verdade não é uma boa ideia?!?!?!?! Por que isso?

vamos puxar da raiz…

Segundo Roy Fielding, ser stateless é a capacidade que um servidor tem de processar requisições de um cliente sem precisar usufruir de nenhum dado já previamente guardado nele. Logo, o envio de dados ao servidor deve conter TODA informação necessária para ser compreendida e processada. Em suma, o estado quem mantém é o cliente e não o servidor.

Agora, novamente, por que isso?

algumas respostas para isso, mas uma delas poderia ser quanto à escalabilidade.

imaginando o cenário…

Se o servidor cai ou aumenta o número de clientes, qual seria a solução?
Ok, colocar mais um servidor e um load balancer na frente.

Agora temos um problema. O servidor 1 contém os dados do cliente, se ele cai você precisa redirecionar as requisições para o servidor 2 (ok, load balancer já faz isso). Além disso, você precisa também pegar todos os dados que estavam no servidor 1, passivá-los e transferí-los para o servidor 2. ANTES DELE CAIR!!!

Agora imagina que o seu load balancer possui um algoritmo que alterna as requisições entre servidores ao invés de fazer o stick session. A primeira é o servidor 1 que responde, a segunda é o servidor 2. E agora? A sessão do seu usuário tem que ficar trafegando entre servidores. Essa sincronia começa a ficar complicada.  Logo, talvez a melhor solução, seja simplesmente evitar o problema.
Aqui o peso de manter uma sessão no servidor começa a ser cobrado. O que você, eu e muuuuuuuuiiiiiiiittaaa gente acaba fazendo é simplesmente migrar o usuário para o servidor 2 sem os dados prévios. Ou seja, o usuário não “percebe” que o serviço não ficou disponível.

Perdemos aqui um item primordial, Escalabilidade horizontal. À medida que o número de clientes aumenta, são adicionados novos servidores para permitir que eles atendam à demanda crescente. E, de fato, é um pouco mais complicado de se implementar quando estamos em um arquitetura stateful.

Portanto, compreendemos o porquê de um sistema RESTFul ser totalmente stateless. As informações devem ficar no cliente e não no servidor. Por conseguinte, podemos aumentar o número de servidores e cada um será capaz de responder por novas requisições sem se preocupar em buscar dados anteriores, afinal, o cliente já vai fornecer as credenciais de quem ele é e outras informações adicionais.

frameworks podem e vão ajudar…

A resposta você provavelmente já sabe. Token! Já, inclusive, falamos sobre OAuth em um contexto MicroServices Rest. Uma outra solução seria o Json Web Token, que é um padrão aberto para representação das informações que duas partes (cliente e servidor) acordaram previamente. De fácil instalação, manipulação (fluent interface API), implementação em múltiplas linguagens (.NET, Java, Phyton) e inúmeros artigos falando sobre o tema.

O conceito básico é: você como usuário manda sua autenticação para o servidor. Ele valida e identifica seus papéis e gera um token com essas informações para o cliente guardar. (Cookie X HTML 5 web storage). Quando requisições são feitas ao servidor, o token é enviado e as informações são recuperadas.

Para isso o token deve ser assinado com uma chave, que deve ficar no servidor. Se você precisar subir mais servidores, eles devem ter a mesma chave.


//salvando a String em um arquivo, ele poderá ser compartilhado entre servidores.
 String chaveAsString = Base64.getEncoder().encodeToString(MacProvider.generateKey().getEncoded());

//recuperando a chave do arquivo
 SecretKey chave;
 String nextLine = new Scanner(file).nextLine();
 byte[] chaveEmBytes = Base64.getDecoder().decode(nextLine);
 chave = new SecretKeySpec(chaveEmBytes, SignatureAlgorithm.HS512.getJcaName());

Nosso famoso token…

Ao gerar o token você escolhe o conteúdo, algoritmo, tempo de expiração, dentre outros. O conteúdo precisa ser uma String, eu costumo parsear para Json.

public String gerar(Object objeto) {
   String objetoAsJson = new Gson().toJson(objeto);
   return Jwts.builder().setSubject(objetoAsJson).signWith(SignatureAlgorithm.HS512, chave).compact();
}

public <T> getConteudo(String token, Class<T> clazz) {
   try {
      String conteudo = Jwts.parser().setSigningKey(chave).parseClaimsJws(token).getBody().getSubject();
      return ((T) new Gson().fromJson(conteudo, clazz));
   }catch (io.jsonwebtoken.SignatureException | io.jsonwebtoken.ExpiredJwtException e) {
      throw new TokenInvalidoException(e);
   }
}

E o Logoff?

O token ficará válido pelo tempo definido no setExpiration. Todavia, o usuário pode invalidar o token antes do prazo (logout). Como fazer isso? A forma mais fácil seria apenas remover o token do cliente. Se ele está guardado em um Cookie, basta remové-lo.

Mas isso não resolve o problema de alguém ainda ter guardado o token em outro lugar e usá-lo para obter informações do servidor. O que nos leva a uma segunda solução: black list de tokens. Nesse contexto, teria que existir uma lista guardada em memória(Redis, MemCached, Bolt DB), compartilhada entre os servidores,  que seria consultada antes de cada requisição.

Houve essa discussão recentemente na nossa lista interna e com certeza esse é um dos pontos mais chatos, invalidar o token.

Por fim, uma outra decisão arquitetural que precisará ser discutida pela equipe é se todos os servidores vão saber descriptografar o token ou se existirá um servidor central responsável por essa abordagem. Prós e contras em ambas decisões como evitar espalhar código, ponto único de falha, requisições duplicadas (uma requisição sempre para o servidor de autenticação). E se o servidor de autenticação cair?????? E se a forma de lidar com o token precisar ser alterada??? Eu gostei bastante do JWT e achei mais fácil de lidar do que o OAuth. E você, já implementou sua API RESTFul totalmente stateless?

04 Apr 15:39

A sua casa precisa desses móveis

by Carlos Tomé

Já comprei uma cama dessas, dobrei ela e coloquei no bolso pra dormir no trabalho.

O post A sua casa precisa desses móveis apareceu primeiro em Sedentário & Hiperativo.

03 Apr 19:06

Kassab confirma lançamento de satélite brasileiro na primeira quinzena de abril.

by noreply@blogger.com (Cláudio Florenzano)
Kassab confirma lançamento de satélite brasileiro na primeira quinzena de abril.
Kassab confirma lançamento de satélite brasileiro na primeira quinzena de abril.
Agência Senado - O ministro da Ciência, Tecnologia, Inovações e Comunicações, Gilberto Kassab, confirmou aos senadores na quarta-feira (29 de Março de 2017) que o primeiro satélite geoestacionário brasileiro será lançado até o fim da primeira quinzena de abril, o que permitirá em breve a cobertura  de banda larga em 100% do território nacional. Ele participou de audiência pública da Comissão de Ciência e Tecnologia (CCT), presidida pelo senador Otto Alencar (PSD-BA).

O Satélite Geoestacionário de Defesa e Comunicações Estratégicas (SGDC) deveria ter sido enviado ao espaço na semana passada, mas uma greve geral na Guiana Francesa, de onde partiria o foguete, levou ao adiamento da operação.

O SGDC é o primeiro equipamento geoestacionário brasileiro de uso civil e militar. Com vida útil de 18 anos, custou R$ 2,7 bilhões e ficará a 36 mil quilômetros da terra. Além de cobrir todo o país com banda de alta capacidade, vai permitir o uso militar na proteção do mar territorial, da Amazônia e de toda a faixa de fronteira com os dez países sul-americanos vizinhos do Brasil.

- A banda larga vai alcançar qualquer distrito ou cidade do país, levando inclusão social e digital aos brasileiros. Além disso, o Ministério da Defesa terá banda larga para monitorar nossas fronteiras, além de haver disponibilidade para oferecer melhorias da qualidade dos serviços nos setores de educação e saúde - afirmou Kassab.

27 Mar 12:34

GoTTY – Compartilhe suas ferramentas de terminal Linux como uma aplicação web

by Ricardo Ferreira

GoTTY é uma ferramenta simples que transforma o terminal Linux como uma aplicação web. Permitindo que qualquer ferramenta ou script de terminal Linux, que possa ter, venham a ser “transformadas” em aplicações web.

Terminal Linux como uma aplicação web

O GoTTY usa o emulador de terminal hterm para executar um terminal baseado em JavaScript em navegadores web. Assim, ele fornece um servidor websocket que, simplesmente, transmite a saída do terminal (TTY) para os usuários na web. Desta maneira, você pode compartilhar e transformar as ferramentas do seu sistema Linux, ou algum programa via terminal, em aplicações web (veja a ferramenta em ação):

gotty-nano

Por padrão, o GoTTY não permite que os usuários, que usam o navegador web, enviem quaisquer comandos ou interações com o teclado; exceto o redimensionamento da janela do terminal. É possível que os usuários interajam com o terminal; desde que você permita! Contudo, aceitar a interação dos usuários remotos é perigoso para a maioria dos casos – permita com moderação 😉

Pode ser útil para mim?!

Esta ferramenta pode ser útil se você não quiser dar o acesso SSH a alguém, por exemplo. Basta saber qual a saída de comando que ele gostaria de ver, e executar esse comando em seu sistema local e permitir que ele veja em seu navegador web de qualquer lugar.

Ou, em um cenário acadêmico, onde precise disponibilizar ou exemplificar ferramentas de linha de comando para várias pessoas, simultaneamente. Ou pretende que outras pessoas editem o mesmo arquivo ou vejam arquivos de logs, por exemplo. Em resumo, você pode compartilhar qualquer comando Linux como uma aplicação web 😉

Mão na massa

AMBIENTE DE TESTES
Eu usei o openSUSE Tumbleweed para testar essa ferramenta. Não precisei instalar nenhum pacote como dependência. Acredito que na maioria das distribuições Linux também não precise 😉

Instalando

Faça o download, de um arquivo compactado, AQUI – conforme a arquitetura do seu sistema (32 ou 64 bits). No meu caso eu segui esses passos:

wget https://github.com/yudai/gotty/releases/download/pre-release/gotty_linux_amd64.tar.gz

Descompactar arquivo tar.gz:

tar zxvf gotty_linux_amd64.tar.gz

Pronto!!

Usando a ferramenta

AVISO
Todo o tráfego entre o servidor e os usuários NÃO são criptografados, por padrão.

O arquivo descompactado possui um arquivo binário chamado gotty. Para transformar as ferramentas do seu sistema Linux, ou algum programa via terminal, em aplicações web use os seguintes parâmetros:

gotty [options] [command>] [arguments…]

Assim, execute o gotty com seu comando preferido, com seus argumentos, e prossiga ao um navegador web. Por exemplo, caso queira ver os processos e recursos do seu sistema usamos o comando top:

./gotty top

Por padrão, o GoTTY inicia um servidor web na porta 8080. Abra a URL em seu navegador e verá o comando em execução como se estivesse sendo executado no seu terminal 😉

gotty-top

E mais… você pode compartilhar um arquivo editável pelo nano ou vim, por exemplo (primeira imagem como exemplo):

./gotty -w nano arquivo

Onde,

-w: Permite usuários interagirem no navegador web com o terminal do seu sistema (seja cuidadoso)

Além disso, o GoTTY permite estabelecer conexões seguras (TLS/SSL), desde que forneça os arquivos de certificados (–tls-crt, –tls-key e –tls-ca-crt) e permite que os usuários enviem parâmetros de execução diretamente pelo navegador web (http://example.com:8080/?arg=AAA&arg=BBB). Para mais funções, verifique a documentação oficial.

Por fim, alguns exemplos:

./gotty tail -f arquivo
./gotty du -h
./gotty nmap host
./gotty sh meuscript.sh

Questões de segurança

Para restringir o acesso de determinado usuário, você pode usar a opção -c para ativar uma autenticação básica. Com esta opção, os usuários precisam inserir o nome de usuário e a senha especificados para se conectarem ao servidor do GoTTY. Observe que as credenciais serão transmitidas entre o servidor e o usuário em texto plano (sem segurança). Para uma autenticação mais segura, considere um módulo de autenticação usando certificado SSL/TLS.

A opção -r é um pouco mais simples. Com esta opção, o GoTTY gera uma URL aleatória para que apenas as pessoas que conheçam a URL possam ter acesso ao servidor.

Para conexão segura (TLS/SSL), recomenda-se que você use a opção -t que habilita o TLS/SSL na sessão. Por padrão, o GoTTY carrega os arquivos crt e key colocados em ~/.gotty.crt e ~/.gotty.key. Você pode substituir esses caminhos de arquivo com as opções –tls-crt e –tls-key. Caso não tenha um certificado válido, você pode gerar um arquivo de certificado auto-assinado usando o openssl 😉

openssl req -x509 -nodes -days 9999 -newkey rsa:2048 -keyout ~/.gotty.key -out ~/.gotty.crt

Mais opções de customizações podem ser feitas em um arquivo que deve ser criado e localizado em ~/.gotty:

// Listen at port 9000 by default
port = "9000"

// Enable TSL/SSL by default
enable_tls = true

// hterm preferences
// Smaller font and a little bit bluer background color
preferences {
    font_size = 5,
    background_color = "rgb(16, 16, 32)"
}

Modelo do arquivo de configuração AQUI.

MAIS INFORMAÇÕES
GitHub Oficial
25 Mar 13:56

Saiba como copiar um único arquivo para múltiplos diretórios simultaneamente no Linux

by Ricardo Ferreira

Algo simples, mas você já deve ter se deparado com a situação… como copiar um único arquivo para múltiplos diretórios, simultaneamente? O caminho mais rápido e prático é realizar essa operação pelo terminal de comandos do Linux, pois com “comandos de atalhos” você reduz, significativamente, o tempo na realização das tarefas. Sendo assim, conheça a maneira mais fácil para, usando um único comando, copiar um arquivo para vários diretórios, simultaneamente, no Linux.

O comando mais usado para copiar arquivos é o ‘cp’. A maneira mais simples para usá-lo é:

cp [params] origem(ns) destino

Partindo da sintaxe básica do comando cp, para copiar um único arquivo para múltiplos diretórios, simultaneamente, será preciso executar um comando para cada diretório destino diferente:

cp /home/ricardo/arquivos/arquivo.txt /home/ricardo/arquivos/dir1
cp /home/ricardo/arquivos/arquivo.txt /home/ricardo/arquivos/dir2
cp /home/ricardo/arquivos/arquivo.txt /home/ricardo/arquivos/dir3

cp-3vezes-linuxdescomplicado

Agora, imagine se fossem 10 ou mais destinos (diretórios) diferentes?! :( Significa que você teria que digitar 10 ou mais vezes o comando cp!

Copiar um único arquivo para múltiplos diretórios simultaneamente

Para acabar com esse problema, você pode usar um conjunto de outros comandos que aliado ao comando cp tornam possível essa façanha 😉 Aliando o comando echo, um pipe, comando xargs junto com o comando cp resolve o problema:

echo /home/ricardo/arquivos/dir1 /home/ricardo/arquivos/dir2 /home/ricardo/arquivos/dir3 | xargs -n 1 cp -v /home/ricardo/arquivos/arquivo.txt

comando-cp-multiplos-diretorios

Onde, os caminhos para os diretórios (dir1, dir2, dir3 … ..dirN) são passados como entradas para o comando xargs que usa os parâmetros:

-n 1 – diz ao xargs para usar no máximo um argumento por linha de comando e enviar para o comando cp.
cp – usado para copiar um arquivo.
-v – permite mostrar os detalhes da operação de cópia.

Para saber mais sobre cada comando:

man cp
man echo
man xargs

Via | Tecmint

23 Mar 13:24

Vaga De Emprego

E você com diploma fazendo estágio por vale transporte HuAshUAsuhAsAHsUAsh

21 Mar 17:17

“Eu tô morrendo” versão remix

by Joe

Não tinha curtido muito o original mas acho que agora ficou daora:

Nada como um rockão nervoso pra deixar qualquer situação mais hardcore. Finalmente o menino está salvo.

18 Mar 22:27

Novo e sofisticado golpe no Gmail é capaz de roubar sua conta em segundos.

by noreply@blogger.com (Cláudio Florenzano)
Novo e sofisticado golpe no Gmail é capaz de roubar sua conta em segundos.
Novo e sofisticado golpe no Gmail é capaz de roubar sua conta em segundos.
Tudo Celular - Com a tecnologia praticamente onipresente no cenário cotidiano, os criminosos também precisam acompanhar o gradual aprimoramento dos sistemas em prol de viabilizarem seus ataques, através de conceitos sofisticados e precisos.

É por isso reportamos tantos golpes e novos malwares que aparecem veemente e acometem todos os ecossistemas, sejam eles voltados para PCs ou dispositivos portáteis.

Como o Android já assume a liderança com folga como a plataforma mobile mais utilizada do planeta, categoricamente o Gmail também mantém o papel mais importante na predileção dos usuários, visto que serviço compreende a própria natureza do robozinho do Google, o que resulta na maior base de usuários ativos – infelizmente este fator também compactua no interesse constante dos criminosos digitais.

Depois da empreitada que veio à tona ainda no início do ano, um novo e sofisticado golpe descoberto nesta semana pelos especialistas da Wordfence Security – empresa com foco em segurança da informação – ganhou destaque pelo conceito diferenciado implementado pelos hackers.

A Wordfence ressalta que o golpe em essência é inovador, apesar de ser baseado em um conceito relativamente antigo. A nova ação em suma utiliza um e-mail falso com um aspecto muito parecido com os padrões do próprio Google, compreendendo um anexo com um suposto PDF ou documento do Word.

Como o usuário está acostumado com esta tela, ele clica no arquivo em questão no intuito de conferir do que se trata, é aí que o estrago é feito.

Na verdade o “anexo” exibe uma imagem inerente ao e-mail com um link que direciona o usuário para um página idêntica à tela de login do Gmail, e quando o usuário pensa que foi desconectado da plataforma e insere novamente seus dados pessoais, todas as informações são enviadas para os criminosos.

Como visto na postagem de Tom Scott, o golpe por ora aparenta estar apenas em inglês e ainda não temos relatos de usuários brasileiros afetados com este embuste.

Os especialistas da Wordfence dão as dicas básicas de segurança para que os usuários fujam destas armadilhas.

A principal delas é sempre verificar o remetente e ter plena certeza que é um contato de confiança, não só pelo nome, mas também pelo endereço de e-mail – propriamente dito.

Nunca clique em links suspeitos, mesmo que a imagem em questão aparente ser inócua em um primeiro olhar.

Preze pela sua segurança e nunca forneça seus dados sigilosos em links suspeitos que direcionam para páginas de terceiros.
17 Mar 20:12

Intel doa US$ 250.000 ao FreeBSD, anuncia aproximação

by Augusto Campos

Doação corresponde a duas vezes e meia a contribuição que os membros Gold da Linux Foundation fazem a ela anualmente, mas me parece que a participação mais importante virá em termos de apoio ao desenvolvimento de suporte no FreeBSD a especificidades das plataformas Intel, incluindo itens como drivers e ferramentas relacionados a CPUs, produtos de rede, SSDs e mais.

Parabéns! Excelente notícia para o FreeBSD e para todos que se beneficiam do seu código aberto.

(via www.phoronix.com - “Intel To Increase Engagement With FreeBSD, Makes $250k Donation - Phoronix”)

O artigo "Intel doa US$ 250.000 ao FreeBSD, anuncia aproximação" foi originalmente publicado no site BR-Linux.org, de Augusto Campos.

17 Mar 18:13

O leão está de olho com o que você posta no Facebook!

by Rafaela Pozzebom

Já faz algum tempo que o Facebook e também outras redes sociais servem de meio de pesquisa para diversos setores, como empregatício, aposentadorias especiais, e agora, pasmem, também a Receita Federal.

Então, fique atento, caso sua declaração de Imposto de Renda diz que não possui nada, mas suas fotos do Facebook mostram o contrário, a notícia não é nada boa. A Receita Federal confirma que está analisando perfis online dos cidadãos para detectar possíveis distorções entre o declarado e a realidade.

Os supercomputadores do governo são responsáveis por receberem as declarações, sendo que analisam as informações e cruzam com os dados disponíveis do contribuinte para entender se há algo errado.

Continue a leitura...

17 Mar 15:01

Diversidade No Quartel

Pode se preparar que vai ter textão no facebook

15 Mar 00:24

Siga os conselhos desse pegador profissional

by Joe

Desde que as crianças pararam de ver TV Globinho e começaram a ver banheiras de nutella, é isso aí que temos na internet agora.

08 Mar 16:22

Marcas de uma treta

by Joe

Óbvio que foi um alce boxeador de CUBA que quebrou os vidros e pendurou o cartaz pra não desconfiarem, pois ele é procurado por estelionato.

Não eu não fumei nada não.