RSS

segunda-feira, 10 de junho de 2013

Bloqueando o UltraSurf - [iptables + fail2ban]

[IPTables]
No seu script de firewall adicione a seguinte linha.

iptables -A FORWARD -d 65.49.14.0/24 -j LOG --log-prefix "=UltraSurf= "

Coloque essa regra antes da regra com o modulo state (-m state –state ESTABLISHED, RELATED). Se colocar depois os pacotes das conexões já estabelecidas não irão para o LOG e pode gerar falhas no bloqueio. A rede 65.49.14.0/24 é a primeira a ser contactada pelo UltraSurf quando ele é aberto, a regra acima apenas gera um LOG, não existe bloqueio do acesso.

[Fail2ban]
Instalação Ubuntu: apt-get install fail2ban

Depois de instalado vamos criar um arquivo chamado jail.local
 vi /etc/fail2ban/jail.local

[ultrasurf] 
enabled = true
filter = ultrasurf
port = all
banaction = iptables-ultrasurf
logpath = /var/log/syslog
maxretry = 6 
#Tempo em segundos que o IP fica bloqueado - 15 minutos.
bantime = 900 

Vamos criar o arquivo com a expressão regular que irá filtar o log do iptables.
vi /etc/fail2ban/filter.d/ultrasurf.local

[Definition]
failregex = (.*)=UltraSurf=(.*) SRC= 
ignoreregex = 

Criar o arquivo que irá executar o iptables para o bloqueio e desbloqueio.
vi /etc/fail2ban/action.d/iptables-ultrasurf.local

[Definition]

actionstart =  iptables -N fail2ban- 
                         iptables -A fail2ban- -j RETURN
                         iptables -I INPUT -j fail2ban- 
                         iptables -I FORWARD -j fail2ban- 

actionstop =  iptables -D FORWARD -j fail2ban- 
                         iptables -D INPUT -j fail2ban- 
                         iptables -F fail2ban- 
                         iptables -X fail2ban- 

actioncheck = iptables -n -L FORWARD | grep -q fail2ban- 
                         iptables -n -L INPUT | grep -q fail2ban- 

actionban =     iptables -I fail2ban- 1 -s -j REJECT 
actionunban = iptables -D fail2ban- -s -j REJECT 

[Init]
name = ultrasurf


[Enviar e-mail do bloqueio/desbloqueio]
Instalação Ubuntu: apt-get install mailutils ssmtp

Configuração do sSMTP



$ sudo vi /etc/ssmptp/ssmtp.conf

#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=user@gmail.com

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.gmail.com:587

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname
hostname=user@gmail.com

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES
UseSTARTTLS=YES
AuthUser=user
AuthPass=password


Teste de envio de e-mail:
$ sudo cat /etc/passwd | mailx -s "Senhas passwd" user@gmail

segunda-feira, 2 de maio de 2011

Tornando um Servidor de Arquivos e Impressoras Samba mais seguro

Existem dois níveis de segurança disponíveis para o protocolo de rede CIFS - Common Internet File system, user-level e share-level. A implementação security mode do Samba permite mais flexibilidade, oferecendo quatro maneiras de implementar segurança em nível de usuário e uma maneira de implementar nível de compartilhamento:

• security = user: requer que os clientes forneçam usuário e senha para conectar aos compartilhamentos. Contas de usuário do Samba são separadas das contas do sistema, mas o pacote libpam-smbpass irá sincronizar os usuários e senhas do sistema com o banco de dados de usuários do Samba.
• security = domain: este modo permite que o servidor Samba apareça para os clientes Windows como um Primary Domain Controller (PDC), Backup Domain Controller (BDC), ou um Domain Member Server (DMS).
• security = ADS: permite que o servidor Samba seja adicionado a um domínio do Active Directory como um membro nativo.
• security = server: este modo foi deixado de lado desde antes do Samba poder se tornar um servidor membro, e devido a algumas questões relacionadas a segurança não deve ser utilizado.
• security = share: permite que clientes se conectem a compartilhamentos sem informar um usuário e senha.

O modo de segurança que você optar irá depender de seu ambiente e do papel que o servidor Samba irá cumprir.

Security = User

Vamos reconfigurar o servidor de arquivos e impressão Samba, a partir de “Servidor de arquivos samba” e “Servidor de Impressão Samba”, para requerer autenticação.

Primeiro, instale o pacote libpam-smbpass que irá sincronizar os usuáriuos do sistema com os usuários do banco de dados do Samba:

sudo apt-get install libpam-smbpass

Se você escolheu a tarefa do Servidor Samba durante a instalação, o pacote libpam-smbpass já está instalado.
Edite /etc/samba/smb.conf, e na seção [share] mude:

guest ok = no

Finalmente, reinicialize o Samba para que as novas configurações entrem em efeito:

sudo /etc/init.d/samba restart

Agora quando estiver conectando aos diretórios ou impressoras compartilhados serão pedidos usuário e senha.

Se você optar por mapear um drive de rede sobre o compartilhamento você pode marcar o checkbox “Reconectar ao efetuar Logon”, que irá pedir para você digitar usuário e senha uma só vez, pelo menos até que a senha mude.

Segurança do Compartilhamento

Existem diversas opções disponíveis para aumentar a segurança para cada diretório compartilhado. Usanso o exemplo [share], esta seção irá abordar algumas opções comuns.

Grupos
Os grupos definem uma relação de computadores ou usuários que têm um nível comum de acesso a recursos particulares da rede e oferece um nível detalhado para controlador o acesso a tais recursos. Por exemplo, se o grupo qa contem os usuários freda, danika e rob e um segundo grupos support contem os seguintes usuários danika, jeremy e vincent em seguida, certos recursos da rede podem ser configurados para que o grupo qa seja acessível por freda, danika e rob, mas não por jeremy ou vincent. Desde que o usuário danika pertença a ambos os grupos qa e support, ela será capaz de acessar recursos de ambos os grupos, ao passo que todos os outros usuários terão acesso a recursos explicitamente permitidos ao grupo de que fazem parte.Por padrão o Samba procura por grupos locais do sistema definidos em /etc/group para determinar quais usuários pertencem a quais grupos. Para mais informações sobre como adicionar e remover usuários de grupos.Quando estiver definindo grupos no arquivo de configuração do Samba, /etc/samba/smb.conf, a sintaxe reconhecida é para preceder o nome do grupo com um símbolo de "@". Por exemplo, se você quiser definir um grupo chamado sysadmin em uma certa seção do arquivo /etc/samba/smb.conf, você deverá fazê-lo digitando o nome do grupo como @sysadmin.

Permissões de Arquivo
As Permissões de Arquivos definem direitos específicos que um computador ou usuário possui em determinado diretório, arquivo ou conjunto de arquivos. Tais permissões devem ser definidas editando o arquivo /etc/samba/smb.conf e especificando as permissões explícitas de um compartilhamento.
Por exemplo, se você definiu um compartilhamento Samba chamado share e deseja dar permissões read-only para um grupo de usuários chamado de qualidade, mas gostaria de permitir escrita para o compartilhamento pelo grupo chamado sysadmins e o usuário vicente, então você pode editar o arquivo /etc/samba/smb.confe adicionar as seguintes entradas sob o compartilhamento [share]:
read list = @qualidade
write list = @sysadmins, vicente

Outra possível permissão do Samba é declarar permissões administrativas para um determinado recurso compartilhado. Usuários que possuem permissões administrativas podem ler, escrever ou modificar qualquer informação contida no recurso em que as permissões foram concedidas ao usuário.
Por exemplo, se você quer dar permissões administrativas à usuária melissa ao compartilhamento de exemplo share, você deve editar o arquivo /etc/samba/smb.conf, e adicionad a seguinte linha abaixo da entrada [share]:

admin users = melissa

Após editar /etc/samba/smb.conf, reinicialize o Samba para que as alterações tenham efeito:

sudo /etc/init.d/samba restart

Para que as opções read list e write list funcionem, o modo de segurança do Samba não pode estar definido como security = share
Agora que o Samba foi configurado para limitar quais grupos possuem acesso ao diretório compartilhado, as permissões do sistema de arquivos devem ser atualizadas.

As permissões de arquivo tradicionais Linux não mapeiam bem com as ACLs (Listas de Controle de Acesso) do Windows NT. Por sorte as ACLs POSIX ACLs estão disponíveis nos servidores Ubuntu provendo controle de acesso mais refinado.

Por exemplo, para habilitar ACLs em um sistema de arquivos EXT3 /srv, edite /etc/fstab adicionando a opção acl:

UUID=66bcdd2e-8861-4fb0-b7e4-e61c569fe17d /srv ext3 noatime,relatime,acl 0 1

Então remonte a partição:

sudo mount -v -o remount /srv

O exemplo abaixo assume que /srv esteja em uma partição separada. Se /srv, ou o que quer que seja que você tenha configurado como caminho para seu compartilhamento fizer parte da partição / um reboot pode ser necessário.
Para realizar a configuração do Samba a seguir, serão dadas as permissões de ler, escrever e executar ao grupo sysadmins para /srv/samba/share, ao grupo qualidade serão dadas permissões de ler e executar, e os arquivos serão de propriedade da usuária melissa. Digite o seguinte em um terminal:

sudo chown -R melissa /srv/samba/share/

sudo chgrp -R sysadmins /srv/samba/share/

sudo setfacl -R -m g:qa:rx /srv/samba/share/

O comando setfacl abaixo dá permissões de execução para todos os arquivos no diretório /srv/samba/share, que você pode ou não querer.
Agora de um cliente Windows client você deve notar que as permissões estão implementadas. Veja as páginas de manual acl e setfacl para mais informações sobre as ACLs POSIX.

Perfil Samba AppArmor

O Ubuntu vem com o módulo de segurança AppArmor, que fornece controles de acesso obrigatórios. O perfil padrão do AppArmor para o Samba precisa ser adaptado às suas configurações.

Existem perfis padrão do AppArmor para /usr/sbin/smbd e /usr/sbin/nmbd, os binários do daemon the Samba, que são parte do pacote apparmor-profiles. Para instalar o pacote, digite a partir de um terminal:

sudo apt-get install apparmor-profiles

Este pacote contém perfis para diversos outros binários.
Por padrão para os perfis smbd e nmbd estão em queixar de modo que permita o Samba trabalhar sem modificar o perfil e apenas registrando erros. Para colocar o perfil smbd dentro do modo valer, o Samba terá que funcionar como esperado, o perfil terá de ser modificado para refletir em quaisquer diretórios que serão compartilhados.
Editar /etc/apparmor.d/usr.sbin.smbd adicionando informações para [share] a partir do servidor de arquivos, exemplo:

/srv/samba/share/ r,

/srv/samba/share/** rwkix,

Agora coloque o perfil em valer e recarregue-o:

sudo aa-enforce /usr/sbin/smbd

cat /etc/apparmor.d/usr.sbin.smbd | sudo apparmor_parser -r

Você agora deve ser capaz de ler, escrever e executar arquivos no diretório compartilhado como normais, e o smbd binário terá acesso somente aos arquivos e diretórios configurados. Certifique-se de adicionar entradas para cada diretório que você configurar no Samba para compartilhar. Além disso, todos os erros serão registrados para /var/log/syslog.

Fonte

segunda-feira, 14 de março de 2011

Atualizar a senha do Root do MYSQL

Parar o mysql:
killall mysqld

Iniciar sem as permissões:
/usr/local/bin/mysqld_safe --skip-grant-tables &

Acessar o mysql:
mysql -u root

mysql> update user set password = password('Digite sua senha aqui') where user='root';

segunda-feira, 9 de agosto de 2010

Asterisk - Instalação e Configuração.

O Asterisk é um software que disponibiliza uma central PBX digital, ou seja, uma central telefônica totalmente digital sobre IP. Além de recursos como URA, suporte a Call Center, salas de conferência, chamadas em espera e caixas postais e locais ou por e-mail, um servidor com o Asterisk é uma central telefônica digital completa. Integrando a telefonia convencional com a telefonia IP o Asterisk é o PBX de menor custo no mercado. O Asterisk pronto e funcional também pode ser conectado a rede VoIP com provedoresque terminam sistemas de telefonia no mundo inteiro.

 Instalação e Configuração do Asterisk PBX

- Baixe os pacotes asterisk, libpri e zaptel para o diretório /usr/src. Caso os pacotes esteja compactado (.tar.gz), descompacte-os com o comando

Comece pela Libpri:

# tar -zxvf libpri-1.2.2.tar.gz
# cd libpri-1.2.2
# make
# make install

Zaptel

# tar -zxvf zaptel-1.2.5.tar.gz
# cd zaptel-1.2.5
# make
# make install

Add-ons

# tar -zxvf asterisk-addons-1.2.2.tar.gz
# cd asterisk-addons-1.2.2
# make && make install

Sounds

# tar -zxvf asterisk-sounds-1.2.1.tar.gz
# cd asterisk-sounds-1.2.1
# make install

E finalmente, o ASTERISK.

# tar -zxvf asterisk-1.2.7.1.tar.gz
# cd asterisk-1.2.7.1
# make clean
# make
# make install
# make progdocs
# make samples

Configurações - extensions.conf

O arquivo extensions.conf é o responsável por criar as extensões ou ramais, nele criamos também caminhos genéricos como XXX para cada X um dígito, onde podemos usar a imaginação para solucionar as questões que precisamos.

[grupo1]
include => demo
exten => 100,1,Dial(SIP/numero1,25)
; SIP-É o tipo da conta / numero - O nome do usuário / 25-O tempo que vai chamar em segundos.
exten => 100,2,Hangup
exten => 200,1,Dial(SIP/ numero2,25)
exten => 200,2,Hangup
exten => 300,1,Dial(IAX2/ numero3,25)
exten => 300,2,Hangup

Configurações – sip.conf

O arquivo sip.conf armazena informações sobre contas de usuários de protocolo SIP as informações são simples como nome de usuário, bina, senha e qual grupo participam.

No exemplo abaixo estamos criando os usuários que receberam um número no extensions.conf.

[general] ; configurações básicas do protocolo
context=default ; Context padrão para recebimento de chamadas
bindport=5060 ; Porta UDP (A padrão é 5060)
bindaddr=0.0.0.0 ; Endereço IP para escutar (0.0.0.0 Escuta todos)
srvlookup=yes

[numero1]
type=friend ; tipo friend=faz e recebe chamadas, user=faz chamadas, peer=recebe chamadas.
callerid = \"numero1\" <100>
username=numero1 ;Nome do usuário para login
secret=123 ;Senha
host= dynamic ; se não tem ip fixo
nat=yes ; se está debaixo de nat
canreinvite=no ; no para não encaminhar chamadas
context=grupo1

[numero2]
type=friend
callerid = \"numero2\" <200>
username=numero2
secret=123
host= dynamic
nat=yes
canreinvite=no
context=grupo1

Configurações – iax.conf

O arquivo iax.conf armazena informações sobre contas de usuários de protocolo IAX2 as informações são simples como o arquivo de usuários SIP

No exemplo abaixo estamos criando os usuários que receberam um número no extensions.conf.

[general] ; configurações básicas do protocolo
bandwidth=low
jitterbuffer=no
forcejitterbuffer=no
tos=lowdelay

[numero3]
type=friend
context=grupo1
username=numero3
secret=123
qualify=yes ; verifica se o host está respondendo (está a menos de 20ms)


Para adicionar o serviço do Asterisk digite

# cd asterisk-1.2.7.1
# make config
# chkconfig –add asterisk

Para acessar o console, com o Asterisk rodando execute:

# asterisk -r

Utilize os comandos abaixo para recarregar as configurações novas:

asterisk*CLI> sip reload
asterisk*CLI> iax2 reload
asterisk*CLI> extensions reload
asterisk*CLI> quit

- Pronto. Agora é só configurar os arquivos de configuração do asterisk e montar o seu servidor VOIP. Para isso, acesse os sites:
www.asterisk.org
www.digium.com .

O Asterisk já está rodando com os ramais configurados, agora o próximo passo é configurar os SoftPhones.

quinta-feira, 5 de agosto de 2010

OpenVPN - Redes Privadas Virtuais com Certificado.

Versão atual do artigo: openvpn-2.1.1.tar.gz

Versão atual do artigo: lzo-2.03.tar.gz

- Descompactar e Instalar:
tar zxvf openvpn-2.1.1.tar.gz
cd openvpn-2.1.1
./configure
make
make install

tar zxvf lzo-2.03.tar.gz
cd lzo-2.03
./configure
make
make install

- Configurando o openssl. Dentro dele procure por [ CA_defaults ]

vi /etc/ssl/openssl.conf

[ CA_default ]
dir                         = /etc/openvpn
certs                      = $dir/certs
crl_dir                   = $dir/crl
database               = $dir/index.txt
new_certs_dir       = $dir/newcerts
certificate             = $dir/certs/ca.crt
serial                    = $dir/serial
crlnumber            = $dir/crlnumber
crl                         = $dir/crl.pem
private_key          = $dir/certs/ca.key
RANDFILE          = $dir/private/.rand

Saia do arquivo e salve com o comando :wq.

Agora dentro do diretório /etc/openvpn, crie o diretório "certs" e ccd com o comando:
mkdir certs
mkdir ccd
mkdir newcerts

E digite:
touch index.txt
echo 01 > serial

Criar o certificado e a chave. No diretório /etc/openvpn/certs, digite:
openssl req -nodes -new -x509 -keyout ca.key -out ca.crt -days 3650
(Complete com os dados do servidor/empresa)
openssl dhparam -out dh.pem 1024

 - Gerar o certificado do servidor:
openssl req -nodes -new -keyout servidor.key -out servidor.csr
(Complete com os dados do servidor/empresa)

 - Assinar o certificado:
openssl ca -out servidor.crt -in servidor.csr
(Complete com os dados do servidor/empresa)


 - Criar o arquivo de configuração da VPN.

vi /etc/openvpn/servidor.conf

# Geral
port 1194
proto udp
dev tun0
ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/servidor.crt
key /etc/openvpn/certs/servidor.key
dh /etc/openvpn/certs/dh1024.pem
keepalive 10 30
comp-lzo
max-clients 100
user nobody
group nobody
#persist-key
#persist-tun
verb 3
mute 10

# DHCP
server 10.10.0.0 255.255.255.0
#push "dhcp-option DNS 10.10.0.1"
#push "route-gateway 10.10.0.5"
push "dhcp-option DNS 10.1.1.54"

#route-up "route add 10.0.0.0 mask 255.0.0.0 10.10.0.5"
#route 10.0.0.0 255.0.0.0 10.10.0.5

push "route 10.1.1.0 255.255.255.0"
#Rede/Empresa2
route 10.2.1.0 255.255.255.0
#Rede/Empresa3
route 10.3.2.0 255.255.255.0
#Rede/Empresa4
route 10.4.1.0 255.255.255.0

# Cliente
client-to-client
client-config-dir /etc/openvpn/ccd/
ccd-exclusive
ifconfig-pool-persist /etc/openvpn/ipp.txt

# Log
status /var/log/openvpn-status.log
log /var/log/openvpn.log
log-append /var/log/openvpn-append.log

- Executar a VPN
 /usr/local/sbin/openvpn --config /etc/openvpn/servidor.conf --daemon
  

 Configuração do Cliente, WINDOWS:

openvpn.ovpn

client
dev tun
proto udp
remote IP 1194
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
ca ca.crt
cert certificado.crt
key certificado.key
comp-lzo
verb 3
mute 20