Ir ao conteúdo
  • Cadastre-se

Firewall - Bloqueio porta 25 - Squid - Socorro...


Ursojr

Posts recomendados

Prezados Colegas,

Estou com um probleminha sério por aqui e se alguém puder me ajudar eu agradeço desde já.

Eu tenho um Servidor Linux com Red Hat instalado, com Webmail, Squid ...tudo em cima atualizado e funcionando beleza até adquirirmos uma solução da McAfee com Antivírus, Anti-Spyware, Anti-phishing, Anti-Spam ....Anti-tudo... e foi ai que começaram os problemas.

Efetuei todas as configurações no Firewall conforme orientação deles, fui orientado a restringir a porta 25 a um range de IP´s definidos por eles e bloquear a mesma porta 25 ( inbound ) entrada para o restante, isso para que nenhum spam acessasse direto meu servidor, e até ai, aparentemente tudo estava funcionando perfeitamente, os Spam´s sumiram completamente por alguns dias, porém em minha empresa temos diversos colaboradores e Diretores que viajam direto, e ao tentar acessar a Internet fora da empresa, fora da rede corporativa, usando outro provedor ( Aeroporto, Hotel, Lan house ou até mesmo em casa ) eles não conseguem mais enviar mensagens, apenas receber, ao tentar enviar através do Outlook ou do Webmail eles recebem um erro: Pude verificar que ao tentar acessar o smtp.do meu servidor ele recebia o erro: (Não foi possível conectar-se ao servidor. Assunto 'Fw: “xxxxxxxxxxxxxxxxxxx”, Conta: Tal, Servidor: 'smtp.xxxxxxxxxxxxx.com.br', Protocolo: SMTP, Porta: 25, Segura (SSL): Não, Erro de soquete: 10060, Nº do erro: 0x800CCC0E ) que é um erro de acesso negado na porta 25, obviamente porque ela estava fechada para conexões que não fossem as dos Ip´s indicados e restringidos pela McAfee, e como esles estão em outro provedor, logo possuem outro endereço IP

O que acontece é que essa solução funciona da seguinte forma, quando recebemos um e-mail, ele é direcionado a McAfee através do nosso MX Records e depois de limpo, ele é redirecionado novamente para nosso servidor, daí o range de IP´s na porta 25 indicados por eles. Alguém tem alguma solução para esse problema? Alguém já passou ou conhecesse alguém que enfrentou esse mesmo problema? Se alguém puder me dar uma força e me ajudar a configurar essa porta 25 para bloquear acesso mas deixar que as contas enviem mensagem eu agradeço muito. Valeu Abraço. Socorro..:(:eek::eek::(

Link para o comentário
Compartilhar em outros sites

Caro Ursojr, se você restringe no firewall a entrada de apenas alguns ip's para acesso na prota 25, então não existe problema nem solução, o único jeito seria liberar a porta 25 para todos (any) e instalar e configurar no red hat o spamassassin com o clamav, ou uma solução mais complicada seria inplementar uma openvpn configurando o servidor como bridge para sua rede e colocando uma rota estática para o servidor de email, assim ao se conectar na vpn esta rota faria com que todo o tráfego para o seu servidor seja transportado obrigatóriamente pela rede da empresa, liberando o acesso a porta sem precisar liberar a porta para todos, se tiver dúvidas de como configurar uma openvpn posta aí que eu te ajudo.

Link para o comentário
Compartilhar em outros sites

Claro que sim, é uma tarefa um pouco longa, mas eu vou tentar detalhar tudo aqui.

Sugiro a você utilizar o red hat para isso, na empresa onde trabalho eu instalei e configurei uma vpn no red hat enterprise linux4, e nunca nos dá problemas, mas chega de papo furado, mãos à obra:

Primeiro, baixe o pacote openvpn, ou utilize o apt-get para isso, no terminal digite:

#apt-get install openvpn

Pode ser que o apt “reclame” de algumas dependências do pacote, se for o caso, responda que sim a pergunta.

Após a instalação concluída, iremos criar uma C.A. (Autoridade Certificador), os certificados e chaves e o arquivo de configuração da OpenVPN.

O primeiro passo para nosso servidor se tornar uma C.A. é alterar o arquivo openssl.cnf, no rhel4, o arquivo encontra-se em /usr/share/ssl/openssl.cnf, se na sua distro não estiver no mesmo local digite #updatedb e em seguida #locate openssl.cnf, altere com seu editor preferido, aqui eu vou utilizar o vim.

#vim /usr/share/ssl/openssl.cnf

E altere as seguintes linhas:

Mais ou menos na linha 37 você irá encontrar a entrada:

dir = ./demoCA # Where everything is kept

Altere para:

dir = /etc/ssl/ca # Where everything is kept

Depois, mais ou menos na linha 43, altere a entrada:

certificate = $dir/cacert.pem # The CA certificate

Para:

certificate = $dir/ca.crt # The CA certificate

E mais ou menos na linha 46, altere:

private_key = $dir/private/cakey.pem# The private key

Para:

private_key = $dir/private/ca.key # The private key

Mais ou menos na linha 63, altere:

default_days = 365 # how long to certify for

Para:

default_days = 3650 # how long to certify for

Da linha 73 à linha 80, altere conforme abaixo:

De:

# For the CA policy

[ policy_match ]

countryName = match

stateOrProvinceName = match

organizationName = match

organizationalUnitName = optional

commonName = supplied

emailAddress = optional

Para:

# For the CA policy

[ policy_match ]

countryName = match

stateOrProvinceName = match

organizationName = match

organizationalUnitName = match

commonName = supplied

emailAddress = supplied

Na linha 120, altere:

countryName_default = GB

Para:

countryName_default = BR

Na linha 125,

de:

stateOrProvinceName_default = Berkshire

para:

stateOrProvinceName_default = SP (no seu caso SC)

Na linha 128, altere

de:

localityName_default = Newbury

para:

localityName_default = Sao Paulo (no seu caso Florianopolis)

Na linha 131,

de:

0.organizationName_default = My Company Ltd

para:

0.organizationName_default = Intersix Technologies (no seu caso coloque o nome da sua empresa)

E por último, na linha 138 altere,

de:

#organizationalUnitName_default =

para:

organizationalUnitName_default = VPN

Salve o arquivo e saia.

Agora iremos criar os diretórios necessários para as configurações que criamos, digite no terminal:

#mkdir –p /etc/ssl/ca

#mkdir /etc/ssl/ca/certs

#mkdir /etc/ssl/ca/newcerts

#mkdir /etc/ssl/ca/crl

#mkdir /etc/ssl/ca/private

#touch /etc/ssl/ca/index.txt

#echo 01 > /etc/ssl/ca/serial

#chmod -R 700 /etc/ssl/ca

Iremos agora criar o certificado/chave da C.A., digite no terminal:

#cd /etc/ssl/ca

#openssl req -nodes -new -x509 -keyout ca.key -out ca.crt -days 3650

Algumas informações de localidade e nome da empresa serão perguntadas, como já configuramos no arquivo openssl.cnf algumas resposta default, nas seguintes perguntas basta você teclar ENTER:

Country Name (2 letter code) (BR):

State or Province Name (full name) [sC]:

Locality Name (eg, city) [Florianopolis]:

Organization Name (eg, company) [nome da sua empresa]:

Organizational Unit Name (eg, section) [VPN]:

Common Name (eg, your name or your server's hostname) []: - aqui coloque o nome do seu servidor.

Email Address []: - e aqui coloque o email do responsável pelo servidor, no caso o seu email.

Pronto, o certificado e chave da C.A. foram criados, agora vamos movêlos para os diretórios configurados.

Mova a chave do certificado para dentro do subdiretório private em /etc/ssl/ca

#mv ca.key ./private

Agora criaremos o algoritmo usado para a troca de chaves criptográficas durante a execução do OpenVPN. Utilize no comando a criptografia que consta no arquivo openssl.cnf, no nosso caso 1024bits.

No terminal digite:

#openssl dhparam -out dh1024.pem 1024

E então criaremos o certificado de revogação, crl.pem, no terminal digite:

#openssl ca -gencrl -out crl.pem -config /usr/share/ssl/openssl.cnf

E finalmente, vamos gerar o certificado do servidor, no terminal digite:

#openssl req -nodes -new -keyout server.key -out server.csr

Mais uma vez, alguma informações deverão ser preenchidas, siga os mesmos passos da geração da C.A.:

Country Name (2 letter code) (BR):

State or Province Name (full name) [sC]:

Locality Name (eg, city) [Florianopolis]:

Organization Name (eg, company) [nome da sua empresa]:

Organizational Unit Name (eg, section) [VPN]:

Common Name (eg, your name or your server's hostname) []: - O mesmo informado no certificado da C.A.

Email Address []: - O mesmo informado no certificado da C.A.

A challenge password []: - A única diferença entre o certificado da C.A. e do servidor é aqui, informe uma senha.

Agora vamos assinar a chave do servidor com o certificado da C.A., no terminal digite:

# openssl ca -out server.crt -in server.csr

E responda ‘y’ para todas as perguntas.

Agora crie o diretório de configuração da openvpn, digite no terminal:

#mkdir /etc/openvpn

Se ocorrer o erro da tela dizendo que o diretório já existe não se preocupe.

Copie o certificado da CA, chave e certificado do servidor + protocolo DH gerados anteriormente para dentro do diretório /etc/openvpn:

#cp -p ca.crt /etc/openvpn

#cp -p server.key /etc/openvpn

#cp -p server.crt /etc/openvpn

#cp -p dh1024.pem /etc/openvpn

E vá para o diretório da OpenVPN:

#cd /etc/openvpn

Ajuste as permissões da chave do servidor para 600:

#chmod 600 server.key

E crie os seguintes links simbólicos:

#ln -s /etc/ssl/ca ./

#ln -s /usr/share/ssl/openssl.cnf ./

Agora criaremos o arquivo de configuração do servidor, com seu editor preferido crie o arquivo server.conf:

#vim server.conf

E inclua as seguintes linhas:

########server.conf##################

tls-server

port 1194 #não se esqueça de liberar esta porta no firewall

proto tcp

dev tap0

ca /etc/openvpn/ca.crt

cert /etc/openvpn/server.crt

key /etc/openvpn/server.key

dh /etc/openvpn/dh1024.pem

ifconfig-pool-persist ipp.txt

#server-bridge xxx.xxx.xxx.xxx(ip do servidor) xxx.xxx.xxx.xxx(máscara da rede) xxx.xxx.xxx.xxx(ip inicial da rede) xxx.xxx.xxx.xxx(ip final da rede) (Suponhamos que sua rede seja 192.168.0.0/24 e tiver um range 192.168.0.30 até 192.168.0.200 livre e o ip do seu servidor 192.168.0.1 com máscara 255.255.255.0, utilize o exemplo abaixo)

server-bridge 192.168.0.1 255.255.255.0 192.168.0.30 192.168.0.200

push "route-gateway (ip do gateway da sua rede)"

push "route (ip do server mail) (mascara do server) (ip do gateway da rede)"

client-to-client

keepalive 10 120

comp-lzo

persist-key

persist-tun

status /var/log/openvpn-status.log

log /var/log/openvpn.log

log-append /var/log/openvpn.log

verb 4

mute 20

tls-timeout 10

crl-verify /etc/ssl/ca/crl.pem

#############server.conf##########################

Salve o arquivo e saia.

Agora criaremos a tal bridge(ponte) entre a interface virtual da vpn e a interface real do servidor, baixe o pacote bridge-utils ou instale o pacote através do apt-get, em um terminal digite:

#apt-get install bridge-utils

Entre no diretório /etc, e crie o arquivo bridge-start com seu editor preferido:

#cd /etc

#vim bridge-start

Inclua as seguintes linhas:

#!/bin/bash

#################################

# Set up Ethernet bridge on Linux

# Requires: bridge-utils

#################################

# Define Bridge Interface

br="br0"

# Define list of TAP interfaces to be bridged,

# for example tap="tap0 tap1 tap2".

tap="tap0"

# Define physical ethernet interface to be bridged

# with TAP interface(s) above.

eth="eth0"

eth_ip="(coloque um ip válido para sua rede)"

eth_netmask="(máscara da sua rede)"

eth_broadcast="(broadcast da sua rede)"

for t in $tap;

do

openvpn --mktun --dev $t

done

brctl addbr $br

brctl addif $br $eth

for t in $tap;

do

brctl addif $br $t

done

for t in $tap;

do

ifconfig $t 0.0.0.0 promisc up

done

ifconfig $eth 0.0.0.0 promisc up

ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast

Salve e saia.

Torne este arquivo executável:

#chmod +x bridge-start

Agora vamos criar o arquivo bridge-stop, para quando precisar para o serviço, utilize o seu editor preferido para isso:

#vim bridge-stop

E inclua as seguintes linhas:

#!/bin/bash

####################################

# Tear Down Ethernet bridge on Linux

####################################

# Define Bridge Interface

br="br0"

# Define list of TAP interfaces to be bridged together

tap="tap0"

ifconfig $br down

brctl delbr $br

for t in $tap; do

openvpn --rmtun --dev $t

done

Salve, saia e torne o mesmo executável:

#chmod +x bridge-stop

Ainda no diretório /etc, altere o arquivo rc.local com seu editor preferido:

#vim rc.local

E inclua as seguintes linhas no final do arquivo:

#Inicia a bridge da OpenVPN

/etc/bridge-start

#Ativa compartilhamento de rede

echo 1 > /proc/sys/net/ipv4/ip_forward

#Escreve as regras de firewall da OpenVPN

/sbin/modprobe ppp_generic

/sbin/modprobe ppp_synctty

/sbin/modprobe n_hdlc

/sbin/modprobe tun

iptables -A INPUT -i tap+ -j ACCEPT

iptables -A FORWARD -i tap+ -j ACCEPT

iptables -A INPUT -i br+ -j ACCEPT

iptables -A FORWARD -i br+ -j ACCEPT

Salve e saia.

No terminal agora, digite:

#chkconfig openvpn on

E digite o comando ifconfig eth0

#ifconfig eth0

Anote o endereço mac da placa, são os números que vem depois da palavra HW no canto superior direito, uma sequêcia de 12 caracteres separados de dois em dois por dois pontos “:”, ex.:00:60:67:01:9B:29.

Edite o arquivo /etc/sysconfig/network-script/ifcfg-eth0.

#vim /etc/sysconfig/network-script/ifcfg-eth0

E no final do arquivo acrescente a string HWADDR=endereço mac, onde endereço mac são os números que foram anotados, digite igualzinho ao mostrado pelo comando acima, separados por dois pontos “:”, se no arquivo já contiver esta informção não será preciso alterar nada.

Salve e saia.

Se você reiniciar o servidor agora, a openvpn já estará em funcionamento, mas sem nenhum cliente válido ainda, pois os clientes precisarão de um certificado e chave assinados pela C.A. para poderem se conectar, então vamos criá-los.

Vamos criar um certificado/chave para um cliente, estes passos servem para cria todos os certificados/chaves de todos os clientes.

Entre no diretório /etc/ssl/ca.

#cd /etc/ssl/ca

Para criar o certificado/chave do cliente usaremos o comando abaixo:

#openssl req -nodes -new -keyout cliente.key -out cliente.csr

Onde:

cliente.key – nome da chave do cliente, pode ser o nome da pessoa quem vai usar, como joão.key ou ricardo.key.

cliente.csr – certificado csr do cliente, use o mesmo nome que foi utilizado na chave para facilitar sua visualização.

Mais uma vez, você terá que responder aquelas perguntinhas de localidade e nome da empresa, nas seguintes perguntas apenas tecle ENTER, conforme a criação dos certificados anteriores:

Country Name (2 letter code) (BR):

State or Province Name (full name) [sC]:

Locality Name (eg, city) [Florianopolis]:

Organization Name (eg, company) [nome da sua empresa]:

Organizational Unit Name (eg, section) [VPN]:

Mas em:

Common Name (eg, your name or your server's hostname) []: - Aqui utilize o mesmo nome que você usou na chave, neste exemplo foi “cliente”.

Email Address []: - Email do cliente.

A challenge password []: - digite uma senha para o certificado

Agora vamos fazer a C.A. assinar este certificado, no terminal digite:

#openssl ca -out cliente.crt -in cliente.csr

E responda “y” as perguntas sempre.

Pronto nosso primeiro certificado de cliente foi criado, agora copie o certificado da ca ca.crt, o protocolo dh dh1024.pem mais o certificado/chave e o certificado assinado do clente cliente.csr, cliente.key e cliente.crt para um disquete ou envie por e-mail para o cliente.

Se seus clientes usam o sistema da microsoft(Windows) aconselho a instalarem o cliente openvn-gui, digite no google openvpn-gui que você vai achar vários executáveis para baixar, instale-o nas máquinas clientes e copie todos os arquivos citados acima para a pasta C:\Arquivos de programas\OpenVPN\config (isso se você fez uma instalação default), e dentro deste diretório crie o arquivo client.ovpn, com o seguinte conteúdo:

client

dev tap

proto tcp

remote (ip externo do servidor)

port 1194

resolv-retry infinite

nobind

persist-key

persist-tun

ca "C:\\Arquivos de programas\\OpenVPN\\config\\ca.crt"

dh "C:\\Arquivos de programas\\OpenVPN\\config\\dh1024.pem"

cert "C:\\Arquivos de programas\\OpenVPN\\config\\roberto.crt"

key "C:\\Arquivos de programas\\OpenVPN\\config\\roberto.key"

comp-lzo

verb 4

mute 20

Salve e saia.

Repita estes passos para cada cliente que for se conectar remotamente, lembrando sempre de utilizar um nome diferente para cada um, se você fizer no mesmo esquema que eu faço, colocando o nome da pessoa no certificado fica mais fácil.

De volta ao servidor...

Revogando um certificado:

Se algum colaborador ou cliente se desligar da empresa e você quiser barrar a entrada dele na vpn, basta apenas revogar o certificado do mesmo.

Primeiro vamos copiar os arquivos revoke-full e vars do diretório /usr/share/doc/openvpn-2.0.9/easy-rsa/2.0/ para o diretório /etc/ssl/ca.

#cp /usr/share/doc/openvpn-2.0.9/easy-rsa/2.0/vars /usr/share/doc/openvpn-2.0.9/easy-rsa/2.0/revoke-full /etc/ssl/ca

Entre no diretório /etc/ssl/ca

#cd /etc/ssl/ca

Modifique o arquivo vars com seu editor preferido:

#vim vars

modificando a linha 15:

De:

export EASY_RSA="`pwd`"

Para:

export EASY_RSA="/etc/openvpn"

E modifique a linha 29:

De:

export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`

Para:

export KEY_CONFIG=”/usr/share/ssl/openssl.cnf”

Depois altere a linha 39:

De:

export KEY_DIR="$EASY_RSA/keys"

Para:

export KEY_DIR="$EASY_RSA/ca/"

E edite as ultimas linhas com a mesma DN utilizada no certificado da C.A.

Neste exemplo foram:

KEY_COUNTRY = BR

KEY_PROVINCE = SC

KEY_CITY = Florianopolis

KEY_ORG = nome da sua empresa

KEY_EMAIL = seu email

Ajuste conforme como foi criado na C.A., salve e saia do arquivo.

Agora torne os dois arquivos executáveis, no terminal digite:

#chmod +x revoke-full vars

Para revogar o certificado, primeiro deve-se executar o script vars e depois o revoke-full, assim:

#source ./vars

E então o script revoke-full seguido do nome do certificado, neste exemplo foi cliente, não precisa colocar extensão nenhuma.

#./revoke-full cliente

Pronto o certificado cliente e sua chave foram revogados, sendo inutilizados para conexão com esta OpenVPN.

Reinicie o servidor.

Agora toda vez que alguém estiver fora da empresa, basta se conectar na openvpn que estará dentro da rede da mesma, obtendo acesso a seus serviços.

Se tiver algum problema/dúvida com este meu tutorial, me manda uma mensagem que eu te envio um outro com algumas telas de exemplo.

Espero ter te ajudado, abrass.

Link para o comentário
Compartilhar em outros sites

Mais uma vez muito obrigado Ditador Nicastro, não sei nem como agradecer!

Já estou trabalhando na configuração dessa Open VPN, estou apanhando um pouquinho, mas sem luta não há vitória...

Muito obrigado mesmo e se pintar alguma dúvida sinistra pode deixar que te dou um grito!

Valeu e um grande abraço!

Claro que sim, é uma tarefa um pouco longa, mas eu vou tentar detalhar tudo aqui.

Sugiro a você utilizar o red hat para isso, na empresa onde trabalho eu instalei e configurei uma vpn no red hat enterprise linux4, e nunca nos dá problemas, mas chega de papo furado, mãos à obra:

Primeiro, baixe o pacote openvpn, ou utilize o apt-get para isso, no terminal digite:

#apt-get install openvpn

Pode ser que o apt “reclame” de algumas dependências do pacote, se for o caso, responda que sim a pergunta.

Após a instalação concluída, iremos criar uma C.A. (Autoridade Certificador), os certificados e chaves e o arquivo de configuração da OpenVPN.

O primeiro passo para nosso servidor se tornar uma C.A. é alterar o arquivo openssl.cnf, no rhel4, o arquivo encontra-se em /usr/share/ssl/openssl.cnf, se na sua distro não estiver no mesmo local digite #updatedb e em seguida #locate openssl.cnf, altere com seu editor preferido, aqui eu vou utilizar o vim.

#vim /usr/share/ssl/openssl.cnf

E altere as seguintes linhas:

Mais ou menos na linha 37 você irá encontrar a entrada:

dir = ./demoCA # Where everything is kept

Altere para:

dir = /etc/ssl/ca # Where everything is kept

Depois, mais ou menos na linha 43, altere a entrada:

certificate = $dir/cacert.pem # The CA certificate

Para:

certificate = $dir/ca.crt # The CA certificate

E mais ou menos na linha 46, altere:

private_key = $dir/private/cakey.pem# The private key

Para:

private_key = $dir/private/ca.key # The private key

Mais ou menos na linha 63, altere:

default_days = 365 # how long to certify for

Para:

default_days = 3650 # how long to certify for

Da linha 73 à linha 80, altere conforme abaixo:

De:

# For the CA policy

[ policy_match ]

countryName = match

stateOrProvinceName = match

organizationName = match

organizationalUnitName = optional

commonName = supplied

emailAddress = optional

Para:

# For the CA policy

[ policy_match ]

countryName = match

stateOrProvinceName = match

organizationName = match

organizationalUnitName = match

commonName = supplied

emailAddress = supplied

Na linha 120, altere:

countryName_default = GB

Para:

countryName_default = BR

Na linha 125,

de:

stateOrProvinceName_default = Berkshire

para:

stateOrProvinceName_default = SP (no seu caso SC)

Na linha 128, altere

de:

localityName_default = Newbury

para:

localityName_default = Sao Paulo (no seu caso Florianopolis)

Na linha 131,

de:

0.organizationName_default = My Company Ltd

para:

0.organizationName_default = Intersix Technologies (no seu caso coloque o nome da sua empresa)

E por último, na linha 138 altere,

de:

#organizationalUnitName_default =

para:

organizationalUnitName_default = VPN

Salve o arquivo e saia.

Agora iremos criar os diretórios necessários para as configurações que criamos, digite no terminal:

#mkdir –p /etc/ssl/ca

#mkdir /etc/ssl/ca/certs

#mkdir /etc/ssl/ca/newcerts

#mkdir /etc/ssl/ca/crl

#mkdir /etc/ssl/ca/private

#touch /etc/ssl/ca/index.txt

#echo 01 > /etc/ssl/ca/serial

#chmod -R 700 /etc/ssl/ca

Iremos agora criar o certificado/chave da C.A., digite no terminal:

#cd /etc/ssl/ca

#openssl req -nodes -new -x509 -keyout ca.key -out ca.crt -days 3650

Algumas informações de localidade e nome da empresa serão perguntadas, como já configuramos no arquivo openssl.cnf algumas resposta default, nas seguintes perguntas basta você teclar ENTER:

Country Name (2 letter code) (BR):

State or Province Name (full name) [sC]:

Locality Name (eg, city) [Florianopolis]:

Organization Name (eg, company) [nome da sua empresa]:

Organizational Unit Name (eg, section) [VPN]:

Common Name (eg, your name or your server's hostname) []: - aqui coloque o nome do seu servidor.

Email Address []: - e aqui coloque o email do responsável pelo servidor, no caso o seu email.

Pronto, o certificado e chave da C.A. foram criados, agora vamos movêlos para os diretórios configurados.

Mova a chave do certificado para dentro do subdiretório private em /etc/ssl/ca

#mv ca.key ./private

Agora criaremos o algoritmo usado para a troca de chaves criptográficas durante a execução do OpenVPN. Utilize no comando a criptografia que consta no arquivo openssl.cnf, no nosso caso 1024bits.

No terminal digite:

#openssl dhparam -out dh1024.pem 1024

E então criaremos o certificado de revogação, crl.pem, no terminal digite:

#openssl ca -gencrl -out crl.pem -config /usr/share/ssl/openssl.cnf

E finalmente, vamos gerar o certificado do servidor, no terminal digite:

#openssl req -nodes -new -keyout server.key -out server.csr

Mais uma vez, alguma informações deverão ser preenchidas, siga os mesmos passos da geração da C.A.:

Country Name (2 letter code) (BR):

State or Province Name (full name) [sC]:

Locality Name (eg, city) [Florianopolis]:

Organization Name (eg, company) [nome da sua empresa]:

Organizational Unit Name (eg, section) [VPN]:

Common Name (eg, your name or your server's hostname) []: - O mesmo informado no certificado da C.A.

Email Address []: - O mesmo informado no certificado da C.A.

A challenge password []: - A única diferença entre o certificado da C.A. e do servidor é aqui, informe uma senha.

Agora vamos assinar a chave do servidor com o certificado da C.A., no terminal digite:

# openssl ca -out server.crt -in server.csr

E responda ‘y’ para todas as perguntas.

Agora crie o diretório de configuração da openvpn, digite no terminal:

#mkdir /etc/openvpn

Se ocorrer o erro da tela dizendo que o diretório já existe não se preocupe.

Copie o certificado da CA, chave e certificado do servidor + protocolo DH gerados anteriormente para dentro do diretório /etc/openvpn:

#cp -p ca.crt /etc/openvpn

#cp -p server.key /etc/openvpn

#cp -p server.crt /etc/openvpn

#cp -p dh1024.pem /etc/openvpn

E vá para o diretório da OpenVPN:

#cd /etc/openvpn

Ajuste as permissões da chave do servidor para 600:

#chmod 600 server.key

E crie os seguintes links simbólicos:

#ln -s /etc/ssl/ca ./

#ln -s /usr/share/ssl/openssl.cnf ./

Agora criaremos o arquivo de configuração do servidor, com seu editor preferido crie o arquivo server.conf:

#vim server.conf

E inclua as seguintes linhas:

########server.conf##################

tls-server

port 1194 #não se esqueça de liberar esta porta no firewall

proto tcp

dev tap0

ca /etc/openvpn/ca.crt

cert /etc/openvpn/server.crt

key /etc/openvpn/server.key

dh /etc/openvpn/dh1024.pem

ifconfig-pool-persist ipp.txt

#server-bridge xxx.xxx.xxx.xxx(ip do servidor) xxx.xxx.xxx.xxx(máscara da rede) xxx.xxx.xxx.xxx(ip inicial da rede) xxx.xxx.xxx.xxx(ip final da rede) (Suponhamos que sua rede seja 192.168.0.0/24 e tiver um range 192.168.0.30 até 192.168.0.200 livre e o ip do seu servidor 192.168.0.1 com máscara 255.255.255.0, utilize o exemplo abaixo)

server-bridge 192.168.0.1 255.255.255.0 192.168.0.30 192.168.0.200

push "route-gateway (ip do gateway da sua rede)"

push "route (ip do server mail) (mascara do server) (ip do gateway da rede)"

client-to-client

keepalive 10 120

comp-lzo

persist-key

persist-tun

status /var/log/openvpn-status.log

log /var/log/openvpn.log

log-append /var/log/openvpn.log

verb 4

mute 20

tls-timeout 10

crl-verify /etc/ssl/ca/crl.pem

#############server.conf##########################

Salve o arquivo e saia.

Agora criaremos a tal bridge(ponte) entre a interface virtual da vpn e a interface real do servidor, baixe o pacote bridge-utils ou instale o pacote através do apt-get, em um terminal digite:

#apt-get install bridge-utils

Entre no diretório /etc, e crie o arquivo bridge-start com seu editor preferido:

#cd /etc

#vim bridge-start

Inclua as seguintes linhas:

#!/bin/bash

#################################

# Set up Ethernet bridge on Linux

# Requires: bridge-utils

#################################

# Define Bridge Interface

br="br0"

# Define list of TAP interfaces to be bridged,

# for example tap="tap0 tap1 tap2".

tap="tap0"

# Define physical ethernet interface to be bridged

# with TAP interface(s) above.

eth="eth0"

eth_ip="(coloque um ip válido para sua rede)"

eth_netmask="(máscara da sua rede)"

eth_broadcast="(broadcast da sua rede)"

for t in $tap;

do

openvpn --mktun --dev $t

done

brctl addbr $br

brctl addif $br $eth

for t in $tap;

do

brctl addif $br $t

done

for t in $tap;

do

ifconfig $t 0.0.0.0 promisc up

done

ifconfig $eth 0.0.0.0 promisc up

ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast

Salve e saia.

Torne este arquivo executável:

#chmod +x bridge-start

Agora vamos criar o arquivo bridge-stop, para quando precisar para o serviço, utilize o seu editor preferido para isso:

#vim bridge-stop

E inclua as seguintes linhas:

#!/bin/bash

####################################

# Tear Down Ethernet bridge on Linux

####################################

# Define Bridge Interface

br="br0"

# Define list of TAP interfaces to be bridged together

tap="tap0"

ifconfig $br down

brctl delbr $br

for t in $tap; do

openvpn --rmtun --dev $t

done

Salve, saia e torne o mesmo executável:

#chmod +x bridge-stop

Ainda no diretório /etc, altere o arquivo rc.local com seu editor preferido:

#vim rc.local

E inclua as seguintes linhas no final do arquivo:

#Inicia a bridge da OpenVPN

/etc/bridge-start

#Ativa compartilhamento de rede

echo 1 > /proc/sys/net/ipv4/ip_forward

#Escreve as regras de firewall da OpenVPN

/sbin/modprobe ppp_generic

/sbin/modprobe ppp_synctty

/sbin/modprobe n_hdlc

/sbin/modprobe tun

iptables -A INPUT -i tap+ -j ACCEPT

iptables -A FORWARD -i tap+ -j ACCEPT

iptables -A INPUT -i br+ -j ACCEPT

iptables -A FORWARD -i br+ -j ACCEPT

Salve e saia.

No terminal agora, digite:

#chkconfig openvpn on

E digite o comando ifconfig eth0

#ifconfig eth0

Anote o endereço mac da placa, são os números que vem depois da palavra HW no canto superior direito, uma sequêcia de 12 caracteres separados de dois em dois por dois pontos “:”, ex.:00:60:67:01:9B:29.

Edite o arquivo /etc/sysconfig/network-script/ifcfg-eth0.

#vim /etc/sysconfig/network-script/ifcfg-eth0

E no final do arquivo acrescente a string HWADDR=endereço mac, onde endereço mac são os números que foram anotados, digite igualzinho ao mostrado pelo comando acima, separados por dois pontos “:”, se no arquivo já contiver esta informção não será preciso alterar nada.

Salve e saia.

Se você reiniciar o servidor agora, a openvpn já estará em funcionamento, mas sem nenhum cliente válido ainda, pois os clientes precisarão de um certificado e chave assinados pela C.A. para poderem se conectar, então vamos criá-los.

Vamos criar um certificado/chave para um cliente, estes passos servem para cria todos os certificados/chaves de todos os clientes.

Entre no diretório /etc/ssl/ca.

#cd /etc/ssl/ca

Para criar o certificado/chave do cliente usaremos o comando abaixo:

#openssl req -nodes -new -keyout cliente.key -out cliente.csr

Onde:

cliente.key – nome da chave do cliente, pode ser o nome da pessoa quem vai usar, como joão.key ou ricardo.key.

cliente.csr – certificado csr do cliente, use o mesmo nome que foi utilizado na chave para facilitar sua visualização.

Mais uma vez, você terá que responder aquelas perguntinhas de localidade e nome da empresa, nas seguintes perguntas apenas tecle ENTER, conforme a criação dos certificados anteriores:

Country Name (2 letter code) (BR):

State or Province Name (full name) [sC]:

Locality Name (eg, city) [Florianopolis]:

Organization Name (eg, company) [nome da sua empresa]:

Organizational Unit Name (eg, section) [VPN]:

Mas em:

Common Name (eg, your name or your server's hostname) []: - Aqui utilize o mesmo nome que você usou na chave, neste exemplo foi “cliente”.

Email Address []: - Email do cliente.

A challenge password []: - digite uma senha para o certificado

Agora vamos fazer a C.A. assinar este certificado, no terminal digite:

#openssl ca -out cliente.crt -in cliente.csr

E responda “y” as perguntas sempre.

Pronto nosso primeiro certificado de cliente foi criado, agora copie o certificado da ca ca.crt, o protocolo dh dh1024.pem mais o certificado/chave e o certificado assinado do clente cliente.csr, cliente.key e cliente.crt para um disquete ou envie por e-mail para o cliente.

Se seus clientes usam o sistema da microsoft(Windows) aconselho a instalarem o cliente openvn-gui, digite no google openvpn-gui que você vai achar vários executáveis para baixar, instale-o nas máquinas clientes e copie todos os arquivos citados acima para a pasta C:\Arquivos de programas\OpenVPN\config (isso se você fez uma instalação default), e dentro deste diretório crie o arquivo client.ovpn, com o seguinte conteúdo:

client

dev tap

proto tcp

remote (ip externo do servidor)

port 1194

resolv-retry infinite

nobind

persist-key

persist-tun

ca "C:\\Arquivos de programas\\OpenVPN\\config\\ca.crt"

dh "C:\\Arquivos de programas\\OpenVPN\\config\\dh1024.pem"

cert "C:\\Arquivos de programas\\OpenVPN\\config\\roberto.crt"

key "C:\\Arquivos de programas\\OpenVPN\\config\\roberto.key"

comp-lzo

verb 4

mute 20

Salve e saia.

Repita estes passos para cada cliente que for se conectar remotamente, lembrando sempre de utilizar um nome diferente para cada um, se você fizer no mesmo esquema que eu faço, colocando o nome da pessoa no certificado fica mais fácil.

De volta ao servidor...

Revogando um certificado:

Se algum colaborador ou cliente se desligar da empresa e você quiser barrar a entrada dele na vpn, basta apenas revogar o certificado do mesmo.

Primeiro vamos copiar os arquivos revoke-full e vars do diretório /usr/share/doc/openvpn-2.0.9/easy-rsa/2.0/ para o diretório /etc/ssl/ca.

#cp /usr/share/doc/openvpn-2.0.9/easy-rsa/2.0/vars /usr/share/doc/openvpn-2.0.9/easy-rsa/2.0/revoke-full /etc/ssl/ca

Entre no diretório /etc/ssl/ca

#cd /etc/ssl/ca

Modifique o arquivo vars com seu editor preferido:

#vim vars

modificando a linha 15:

De:

export EASY_RSA="`pwd`"

Para:

export EASY_RSA="/etc/openvpn"

E modifique a linha 29:

De:

export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`

Para:

export KEY_CONFIG=”/usr/share/ssl/openssl.cnf”

Depois altere a linha 39:

De:

export KEY_DIR="$EASY_RSA/keys"

Para:

export KEY_DIR="$EASY_RSA/ca/"

E edite as ultimas linhas com a mesma DN utilizada no certificado da C.A.

Neste exemplo foram:

KEY_COUNTRY = BR

KEY_PROVINCE = SC

KEY_CITY = Florianopolis

KEY_ORG = nome da sua empresa

KEY_EMAIL = seu email

Ajuste conforme como foi criado na C.A., salve e saia do arquivo.

Agora torne os dois arquivos executáveis, no terminal digite:

#chmod +x revoke-full vars

Para revogar o certificado, primeiro deve-se executar o script vars e depois o revoke-full, assim:

#source ./vars

E então o script revoke-full seguido do nome do certificado, neste exemplo foi cliente, não precisa colocar extensão nenhuma.

#./revoke-full cliente

Pronto o certificado cliente e sua chave foram revogados, sendo inutilizados para conexão com esta OpenVPN.

Reinicie o servidor.

Agora toda vez que alguém estiver fora da empresa, basta se conectar na openvpn que estará dentro da rede da mesma, obtendo acesso a seus serviços.

Se tiver algum problema/dúvida com este meu tutorial, me manda uma mensagem que eu te envio um outro com algumas telas de exemplo.

Espero ter te ajudado, abrass.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...