Adiciona automaticamente o IP público atual ao Grupo de segurança para permitir o tráfego em uma porta específica

4

Sempre que altero meu IP público, preciso adicionar o novo IP a Security group no AWS console para permitir o tráfego na porta 22.

Existe alguma maneira de automatizar isso? Quero dizer que em cada mudança de IP público, execute um script (no OSX) para adicionar o novo IP ao meu Security group para permitir o tráfego em port 22 .

Obrigado!

    
por emepe 15.03.2015 / 21:41

4 respostas

4

Eu acredito que existem várias maneiras de fazer isso. Mas posso compartilhar a maneira como venho fazendo isso há algum tempo usando o Python. Eu não tenho experiência com o OSX, mas eu suponho que vem pré-instalado com o Python, então você deve ser capaz de fazer isso. Uma ressalva, porém, eu tive que instalar o boto , que é uma interface Python para AWS para chamadas de API. Definitivamente, você também pode realizar a mesma coisa com EC2 CLI Tools .

As instruções de instalação do Boto podem ser encontradas aqui -

link

import boto.ec2
conn=boto.ec2.connect_to_region('us-east-1')
conn.authorize_security_group(group_name='my_sec_group', ip_protocol='tcp', from_port='22', to_port='22', cidr_ip='1.2.3.4/32')

Etapas -

Importar o módulo necessário
Conecte-se a qualquer região
Use authorize_security_group e especifique o nome do grupo de segurança, protocolo, para / da porta e seu IP.

    
por 15.03.2015 / 22:31
1

Você deve usar a VPN, que pode ser aberta para toda a Internet e SSH para seus servidores apenas através de VPN. Ele funcionará bem, a segurança é boa (se você conseguir lidar bem com seus certificados) e você não precisa detectar que seu IP foi alterado. E há outro benefício: você não quer permitir que todos os hotéis, estações de trem ou celulares estejam em trânsito.

Ou você pode simplesmente abrir a porta 22 para a Internet, é seguro se estiver usando chaves e tiver desativado a autenticação somente por senha.

    
por 29.09.2016 / 17:20
0

Acabei de montar um script que faz essa atualização automaticamente. Pode ser útil para os outros, embora tenha sido escrito apenas para uso pessoal:

import boto.ec2
import requests

LAST_IP_FILENAME = 'last_ip.txt'
AWS_REGION = '{your aws region}'
GROUP_NAME = '{the security group you wanna update}'
FROM_PORT = {from port}
TO_PORT = {to port}

AMAZON_IP_ENDPOINT = 'http://checkip.amazonaws.com/'

def get_last_ip():
    try:
        with open(LAST_IP_FILENAME, 'r') as fp:
            ip = fp.readline().strip()
    except:
        ip = None
    return ip

def get_connection():
    return boto.ec2.connect_to_region(AWS_REGION)

def get_security_group(conn, group_name):
    return [s for s in conn.get_all_security_groups() if s.name == group_name].pop()

def delete_ip(sg, ip):
    if not sg.revoke('tcp', FROM_PORT, TO_PORT, cidr_ip=ip):
        raise Exception('Removing ip from security group failed')

def get_current_ip():
    resp = requests.get(AMAZON_IP_ENDPOINT)
    resp.raise_for_status()
    return resp.content.strip() + '/32'

def add_new_ip(ip):
    if not sg.authorize('tcp', FROM_PORT, TO_PORT, cidr_ip=ip):
        raise Exception('Adding ip to security group failed')

def save_new_ip(ip):
    with open(LAST_IP_FILENAME, 'w') as fp:
        fp.write(ip + '\n')

if __name__ == '__main__':
    last_ip = get_last_ip()
    current_ip = get_current_ip()

    if last_ip == current_ip:
        print 'Last ip and current ip are the same.. abort.'
        exit(0)

    conn = get_connection()
    sg = get_security_group(conn, GROUP_NAME)
    if last_ip is not None:
        print 'Found old ip {}'.format(last_ip)
        delete_ip(sg, last_ip)
        print '    ..deleted successfully..'
    else:
        print 'No old ip was found..'

    print 'Current ip is {}'.format(current_ip)
    add_new_ip(current_ip)
    print '    ..updated successfully'
    save_new_ip(current_ip)
    
por 29.09.2016 / 15:16
0
O

link é uma ferramenta de linha de comando do nó para manter um grupo de segurança da AWS atualizado com seu endereço IP atual, por exemplo,

# install aws-access
npm install -g aws-access

# add current ip address to a security g
aws-access -g remote-working -r us-east-1
    
por 18.06.2018 / 00:25