{"id":307,"date":"2016-01-13T19:11:38","date_gmt":"2016-01-13T22:11:38","guid":{"rendered":"http:\/\/www.batori.com.br\/blog\/?p=307"},"modified":"2016-01-18T12:13:50","modified_gmt":"2016-01-18T15:13:50","slug":"administar-ssh-o-servidor-da-amazon-aws-de-varios-lugares-diferentes-com-mais-seguranca","status":"publish","type":"post","link":"http:\/\/www.batori.com.br\/blog\/administar-ssh-o-servidor-da-amazon-aws-de-varios-lugares-diferentes-com-mais-seguranca\/","title":{"rendered":"Administrar (SSH) o servidor da AWS de v\u00e1rios lugares diferentes com mais seguran\u00e7a"},"content":{"rendered":"<p>Para administrar um servidor, normalmente temos que abrir portas de comunica\u00e7\u00e3o no firewall de rede para permitir acesso administrativo por SSh ou Terminal Service.<\/p>\n<p>De acordo com as boas pr\u00e1ticas de seguran\u00e7a, devemos fechar o m\u00e1ximo de portas poss\u00edvel, deixando apenas as portas que s\u00e3o estritamente necess\u00e1rias.<\/p>\n<p>As portas administrativas s\u00e3o muito visadas por atacantes externos e at\u00e9 mesmo por atacantes internos. Se voc\u00ea verificar as tentativas de ataques nestas portas, poder\u00e1 ficar surpreso como s\u00e3o frequentes estas tentativas.<\/p>\n<p>Para aumentar a seguran\u00e7a do ambiente, segue a sugest\u00e3o de manter as portas TCP\/22 (SSH) e TCP\/3389 (Terminal Services) fechadas e abrir somente quando for conectar no servidor.<\/p>\n<p>Para viabilizar este procedimento, foi criado um script que abre a porta SSH no firewall, conecta no servidor via SSH e depois fecha a conex\u00e3o do firewall.<\/p>\n<p>Este script foi criado para executar este procedimento no Amazon Web Services (AWS):<\/p>\n<pre class=\"toolbar:1 lang:python decode:true \">#!\/usr\/local\/bin\/python3.3\r\n\r\nimport os, sys\r\nimport json\r\n\r\nprint(\"Getting your public IP... \")\r\nf = os.popen('curl -s http:\/\/www.servidor.com.br\/myIp.php') #Pega o IP que ir\u00e1 se conectar no servidor\r\nIP = f.read().strip()\r\nprint(IP)\r\nf.close()\r\n\r\nprint(\"Clear previous SSH rules in AWS... \")\r\nf = os.popen('aws ec2 describe-security-groups')\r\nsecurityGroups = json.load(f)\r\nf.close()\r\nfor sg in securityGroups[\"SecurityGroups\"]:\r\n    if sg[\"GroupId\"] == \"sg-00000000\": #Id do security group\r\n        for permission in sg[\"IpPermissions\"]:\r\n            if permission[\"ToPort\"] == 22:\r\n                for ip in permission[\"IpRanges\"]:\r\n                    cmd = \"aws ec2 revoke-security-group-ingress --group-name \" + sg[\"GroupName\"]\r\n                    cmd = cmd + \" --protocol \" + permission[\"IpProtocol\"] + \" --port 22 --cidr \" + ip[\"CidrIp\"]\r\n                    os.system(cmd)\r\n\r\nprint(\"Allow your IP in AWS... \")\r\nos.system(\"aws ec2 authorize-security-group-ingress --group-name nomeSecurityGroup --protocol tcp --port 22 --cidr \" + IP + \"\/24\")\r\n\r\nprint(\"Starting ssh session...\")\r\nos.system(\"ssh servidor.com.br\")\r\n\r\nprint(\"Remove your IP in AWS... \")\r\nos.system(\"aws ec2 revoke-security-group-ingress --group-name nomeSecurityGroup --protocol tcp --port 22 --cidr \" + IP + \"\/24\")\r\n<\/pre>\n<p>Esse script est\u00e1 em Python e usa API do AWS. Ele executa os seguintes passos:<\/p>\n<ol>\n<li>Obtem o IP que dever\u00e1 ser liberado no firewall (Security Group no AWS)<\/li>\n<li>Apaga qualquer regra que permita conex\u00e3o de SSH para o servidor<\/li>\n<li>Cria um regra permitindo o IP que vai acessar o servidor<\/li>\n<li>Abre uma sess\u00e3o SSH<\/li>\n<li>Apaga a regra criada no firewall (Security Group)<\/li>\n<\/ol>\n<p>Desta forma, diminuimos o risco de incidentes provocados por ataques de dicion\u00e1rios, for\u00e7a bruta e outros tipos de ataques na port SSH.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Para administrar um servidor, normalmente temos que abrir portas de comunica\u00e7\u00e3o no firewall de rede para permitir acesso administrativo por SSh ou Terminal Service. De acordo com as boas pr\u00e1ticas de seguran\u00e7a, devemos fechar o m\u00e1ximo de portas poss\u00edvel, deixando &hellip; <a href=\"http:\/\/www.batori.com.br\/blog\/administar-ssh-o-servidor-da-amazon-aws-de-varios-lugares-diferentes-com-mais-seguranca\/\">Continue lendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":125,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"_links":{"self":[{"href":"http:\/\/www.batori.com.br\/blog\/wp-json\/wp\/v2\/posts\/307"}],"collection":[{"href":"http:\/\/www.batori.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.batori.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.batori.com.br\/blog\/wp-json\/wp\/v2\/users\/125"}],"replies":[{"embeddable":true,"href":"http:\/\/www.batori.com.br\/blog\/wp-json\/wp\/v2\/comments?post=307"}],"version-history":[{"count":16,"href":"http:\/\/www.batori.com.br\/blog\/wp-json\/wp\/v2\/posts\/307\/revisions"}],"predecessor-version":[{"id":332,"href":"http:\/\/www.batori.com.br\/blog\/wp-json\/wp\/v2\/posts\/307\/revisions\/332"}],"wp:attachment":[{"href":"http:\/\/www.batori.com.br\/blog\/wp-json\/wp\/v2\/media?parent=307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.batori.com.br\/blog\/wp-json\/wp\/v2\/categories?post=307"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.batori.com.br\/blog\/wp-json\/wp\/v2\/tags?post=307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}