Como Bloquear o Acesso ao Sistema, para Somente em rede Interna (Finalizado)

Ip fixo de quem? da net da empresa ou do cloud?? Se for da net da empresa problema resolvido, se não, tem que se obter o ip que net da empresa esta usando naquele momento.

No-ip não ajuda em nada??

Se o sistema fica nas nuvens, isso não ajuda em nada.

Se tiver uma máquina dentro da empresa que possa ficar ligada direta, coloque no agendador de tarefas dela para rodar um script a cada 15 minutos, que grave o ip da wan da empresa.

Uso essa solução a anos, e controlo quem acesse de dentro da empresa e quem acesssa de fora.

O que enviei acima você pega o IP do usuário e passa como parâmetro, assim retornará qual empresa administra a Internet, assim dá para bloquear.

Sinceramente,

O cliente alegar Segurança da Informação é bem complicado e se deseja segurança teria que ter pelo menos um IP Fixo na sua WAN e assim bastaria liberar o acesso ao sistema, no firewall do servidor na nuvem, para este endereço IP.

Se não pode ter um IP Fixo, a única saída viável é como o Haroldo reportou, coloque algum servidor na rede interna e este vai atualizando de tempo em tempo uma tabela do servidor com o endereço IP atual da WAN do cliente.

O mais fácil seria instalar as aplicações dentro do cliente, na rede local, e ai, no firewall da rede (sem firewall não tem segurança, ou seja, é pura balela) liberar os acessos externos.

O problema neste caso é se o acesso foi por celular ou de outro local que mude o IP toda hora. O administrador teria que ficar liberando os endereços para o acesso.

A solução para isto se chama VPN, que pode ser instalada em qualquer dispositivo, com IP dinâmico ou não e somente com as chaves configuradas o acesso externo é liberado.

A VPN também pode ser feita no servidor na nuvem e liberar acesso somente através dela, tanto para a rede local como qualquer dispositivo com a VPN configurada.

[]'s

Não falei em ler usando PHP.
http://tableless.com.br/file-api-trabalhando-com-arquivos-locais-usando-javascript/

Seria por upload né?

Bom seria fácil fazer com cookies, ai teve manutenção? eles te ligam você reativa, sem stress, faço isso.

Agora tem outro jeito se forem pcs windows e linux, pode ser fazer um utilitário em C++, ele vai funcionar iniciar com o sistema, ai ele vai pegar o IP externo da rede, e enviar
para sua hospedagem, pode gravar via FTP, na base com ODBC o que quiser, ai seu login vê os IPs liberados e o dia e libera acesso somente para esses IPs que foram liberados pelo
aplicativo local, você pode por data de validação nesses IPS, forçando o usuário autenticar usando o aplicativo todo dia, bom foi por ‘essas’ que aprendi C++ não podia ficar
só dependendo do PHP que só trabalha do lado do servidor e não no cliente.

Olhem isso:

http://stackoverflow.com/questions/3653065/get-local-ip-address-in-node-js
https://nodejs.org/api/os.html#os_os_networkinterfaces

Para isso vc tem que abrir um brecha na segurança do browser, coisa que eu jamais faria.

Aplicativo c++, um script php (app blank) para gravar o ip no sistema, não importa o método desde que tenha o ip de tempos em tempos atualizado no ambiente do sistema.

O ip interno da rede que estou não me diz se estou dentro da empresa ou não, posso estar em qualquer outra rede que até possua mascara semelhante a rede da empresa.

Haroldo,
Na sua sugestão em deixar uma máquina ligada ela estaria atualizando o IP da conexão no banco, este script foi feito em PHP, pelo SC?
Pois como tenho clientes com Mac, Windows e Linux, vou precisar adaptar esta sugestão!

Estou montando um exemplo e vou colocar aqui para todos e servir para os amigos que desejarem aprimorar.

Jailton-> A ideia é bom porém o problema é a manutenção pois tenho cliente que trabalha de Domingo a Domingo, e em 3 turnos e não posso ficar preso a esta manutenção, da parte do C++ posso começar a estudar porém tempo é uma coisa que para mim fica sendo a moeda mais cara srsrsrsr.

Vamos em frente estou buscando uma forma melhor e montando um exemplo modelo.

Uma aplicação blank, vc adiciona a url ao agendador de tarefas do windows.
Essa aplicação grava em uma tabela o ip da empresa.

Todo usuário que se logar no sistema você pega o ip dele, se for diferente do ip gravado na tabela quer dizer que o acesso é externo.

Para gravar no banco de dados no servidor na nuvem, o mesmo deve estar configurado para permitir acesso externo.

Se o problema inicial era segurança, este é um ponto que tornará o acesso ao banco de dados visível na internet. A não ser que o acesso seja restrito por IP. mas ai volta o problema de ser IP dinâmico.

Pensando mais um pouco, se a preocupação é segurança, rode dentro da empresa, ou tenha um IP Fixo para restrição por ele ou ainda adote a implantação de VPN, que rodará o sistema como se fosse internamente, dos dispositivos externos.

É um assunto bem delicado e deve ser bem pensado e implantado, pois de outra forma você poderá ter apenas uma sensação de segurança.

[]'s

Maurelio,

Me desculpe, mas acho que engana-se quanto a segurança.

O scriptpt php fica nas nuvens como qualquer outro script, por que há riscos de segurança aí?

http://meudominio/sistema/appblank/appblank.php?autentica=sfkdhfkj39839kdjf48hfh48nfjnfdsjhf84hrnjdjd <-- aqui vc pode verificar se o ip esta sendo trocado constantemente em intervalos de tempo muito pequeno, bane-se o ip e alerta o adminsitrador.

Onde isso pode expor a segurança??? expor o banco??? se isso acontece qualquer aplicação do sc pode expor o banco e a segurança quando estas estiverem nas nuvens…

Por que o assunto é delicado? Não vejo porque. Acho o assunto até bem simples. E mais, desenvolvemos para web não, então porque o sistema tem que ficar dentro da empresa, principalmente quando a tendência é se ter tudo nas nuvens.

Haroldo,

Quem pede desculpas sou eu.

Entendi que o script ficaria na empresa e este conectaria no banco de dados do servidor, na nuvem, e atualizaria o IP da empresa no banco. Para isto o mesmo precisaria ter o acesso externo liberado, senão nem o script php ou qualquer outra aplicação teria esta conexão fechada.

Como ficará no servidor, onde está a aplicação, o banco pode fica somente com acesso local.

Para acessar o banco de dados somente furando a aplicação e acessar as informações ou acessando o servidor diretamente, pois o mesmo não estará visível na internet.

Nas minhas instalações eu não tenho nenhum banco com acesso externo e onde preciso somente através de VPN.

Um pequeno mau entendido, mas é bom conversar sobre segurança. Nunca é demais.

Vamos aprendendo muito.

[]'s

estou terminando justamente isso…

ao tentar logar o sistema verifica o IP ou se é Adm, daí libera o acesso.

minha aplicação fica na nuvem e meu acesso é somente de tentro da empresa…

Me parece mais um caso de controle de acesso ( por horário e tipo de usuário ) que por rede.

Tentar solucionar um caso desses pelo ip vai cair nos privilégios de cada usuário , a confusão ocorre pelo fato de querer generalizar o acesso pelo ip da empresa ( que é dinâmico … )

Bom pra não ter que fazer malabarismos é só usar a função gethostname (), essa função trabalha em conjunto com a variável $_SERVER[“REMOTE_ADDR”] porém ela devolve o nome do cliente, como o php não tem como saber essa informação por não ter acesso à máquina em si ele usa como se fosse uma consulta reversa no ip que vem da variável $_SERVER[“REMOTE_ADDR”] e tenta recuperar o nome, assim se você usa um gateway pra distribuir a internet na sua empresa ou um servidor a função retornará o nome desse gateway, roteador, servidor.

Assim basicamente é só verificar se a conexão é proveniente do nome do seu gateway e validar o acesso.

Saulo,

Foi mais ou menos que eu fiz e estou testando, usei a ideia do Haroldo porém com alguns ajustes:

Relatório de desenvolvimento e testes:

1º O Cliente não tem uma máquina para ficar ligada como servidor e ficar autenticando a cada 15 minutos, neste caso colocamos nos computadores que ele tem como principal que ficam interno sempre dentro da empresa o programa No-IP para ficar autenticando.
Com isto eu vou saber qual o IP da rede interna dele.

2º No Cadastro de usuário eu tenho um campo que controla o previlégio do usuário se ele é Adminsitrador ou não para liberar o acesso de qualquer lugar.

3º Tenho um formulário dentro do sistema de configuração onde criei os campos :
a) Controla a autenticação do local de uso (tipo char) para S ou N
b) Informe o domínio para autenticação (Aqui eu coloco o domínio que o cliente tem no No-IP para autenticar)

4º controle do domńio no formulário Login
Com a função gethostbyname(variavel com o domínio) eu pego o domínio do formulário de configuração que cadastrei para que eu possa ter o IP do domńio que será autenticado para obter o IP da rede interna dele (WAN)

5ª controle do IP que esta acessando o sistema na WEB
Com a função $_SERVER[‘REMOTE_ADDR’] eu tenho o IP que esta acessando a minha aplicação na WEB, que esta se logando e ou tentando se logar.

6º Ficando assim:
$ip_dominio = gethostbyname($var_config_dominio);
$ip_local = $_SERVER[‘REMOTE_ADDR’];
Com isto eu tenho o IP da rede autenticado no No-IP que a máquina do cliente se autenticou e o IP da tentativa de se logar, faço uma comparação para saber se é a mesma rede ou não:
if (substr($ip_dominio,1,11) == substr($ip_local,1,11))
Assim fico sabendo que o IP da autenticação e o IP que esta tentando se logar faz parte da mesma rede para liberar e ou bloquear, caso for rede diferente eu vejo se o usuário que esta tentando se logar tem privilégio de ADM para liberar.

7º Caso o usuário não tiver o privilégio e ou a rede for diferente, eu gravo o log com o usuário, data e hora e o IP que esta tentando acessar para ter um controle das tentativas de acesso.

Com isto consegui resolver o problema, creio que podemos melhorar esta forma, mais no momento foi a mais simples e rápida que permite que só dentro da empresa seja acessado o sistema.

Obrigado a todos espero que estas informações possam ajudar também nossos amigos que possam estar com a mesma dificuldade e possa limitar os acessos.

Obrigado a todos.

Parabéns cara, é isso ai!