quarta-feira, 20 de março de 2013

Instalando DHCP/Squid/Sarg no Ubuntu

Cenário:
  • eth0=192.168.0.2 → placa ligada à rede interna
  • eth1=IP_Dinamico → placa ligada à Internet

Instalar Gateway DHCP Server

Instalando pacotes necessários:

# apt-get install isc-dhcp-server

Configurações:

# vi /etc/default/isc-dhcp-server

INTERFACES="eth0"  #--- Adicionar placa de rede ligada ao DHCP Server


# vi /etc/rc.local

echo 0
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE  #--- Placa de rede ligada à Internet


# vi /etc/dhcp/dhcpd.conf

ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;

authoritative;
log-facility local7;

ignore client-updates;

option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.2;
option domain-name-servers 8.8.8.8, 8.8.4.4;
option domain-name "dominio.com.br";

subnet 192.168.0.0 netmask 255.255.255.0 {
interface eth0;
range 192.168.0.30 192.168.0.55;
}

host server01_wifi {
hardware ethernet 00:1d:0f:f3:56:48;
fixed-address 192.168.0.2;
}


Depois:

# echo "1" > /proc/sys/net/ipv4/ip_forward
# ifconfig eth0 192.168.0.2 netmask 255.255.255.0
# service isc-dhcp-server start


Instalar Squid no Ubuntu

Instalando pacotes necessários:

# apt-get install squid3

Configurações:

# vi /etc/squid3/squid.conf

http_port 3128 transparent
visible_hostname dominio.com.br
cache_mem 256 MB #--Tamanho do cache da RAM usado pelo squid
maximum_object_size 512 MB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /var/spool/squid3 2048 16 256
cache_access_log /var/log/squid3/cache.log
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280
acl manager proto cache_object
acl localhost src 127.0.0.1
acl localnet src 192.168.0.0/24
acl Safe_ports port 80 #http
acl Safe_ports port 21#ftp
acl Safe_ports port 443 563#https,snews
acl Safe_ports port 70#gopher
acl Safe_ports port 210#wais
acl Safe_ports port 280#http-mgmt
acl Safe_ports port 488#gss-http
acl Safe_ports port 591#filemaker
acl Safe_ports port 777#multiling http
acl Safe_ports port 901#swat
acl Safe_ports port 1025-65535#portas altas
acl purge method PURGE
acl CONNECT method CONNECT
acl SSL_ports port 443 563
##ACLS
acl sitesbloqueados url_regex -i "/etc/squid3/regras/dominiosbloqueados"
acl hora_manha time MTWHF 07:00-11:30
acl hora_tarde time MTWHF 14:00-19:00
acl hosts_macaddress arp "/etc/squid3/regras/macaddressbloqueados"
acl redelocal src 192.168.0.0/24
#ACL para bloquear skype
acl acl_url_im_skype url_regex ^((0|1[0-9]{0,2}|2[0-9]{0,1}|2[0-4][0-9]|25[0-5]|[3-9][0-9]{0,1}
)\.){3}(0|1[0-9]{0,2}|2[0-9]{0,1}|2[0-4][0-9]|25[0-5][3-9][0-9]{0,1})(:|/|$\?)
http_access allow manager localhost localnet
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
##Controle de acesso
http_access deny sitesbloqueados hora_manha
http_access deny sitesbloqueados hora_tarde
http_access deny CONNECT acl_url_im_skype
http_access allow localhost
http_access allow redelocal
http_access deny all
# Email do ADM Cache Squid
cache_mgr webmaster usuario@dominio.com.br
error_directory /usr/share/squid3/errors/pt-br


# mkdir /etc/squid3/regras

Obs.: dentro do diretório /etc/squid3/regras, criar os arquivos necessários para bloqueio de URLs.

Depois, reinicie o Squid:

# service squid3 start

Instalar Sarg no Ubuntu

Pacotes necessários para instalação:

# apt-get install sarg

Se necessário, instalar o Apache:

# apt-get install apache2
# service apache2 start


Configurações:

# vi /etc/sarg/sarg.conf

# TAG: Linguagem #language Portuguese
# TAG: Caminho para o arquivo Access.log

access_log /var/log/squid3/cache.log
# TAG: Graficos
graphs Yes
graph_days_bytes_bar_color Green
# TAG:itulos relatórios
title "Relatorio de Acessos a Internet"
# TAG: Visual
font_face Arial
header_color #666666
header_bgcolor #EEEEEE
header_font_size 9px
title_font_size 11px
background_color #FFFFFF
text_color #666666
text_bgcolor #FFFFFF
title_color #009999
#logo_image none
#logo_text ""
#logo_text_color #000000
#image_size 80 45
#background_image none
# TAG: Temporarios

temporary_dir /tmp/sarg
# TAG: Diretotio de Saida
output_dir /var/www/sarg

# TAG: Top Users
topuser_sort_field BYTES reverse
user_sort_field BYTES reverse
# TAG: URL Excluidas do Relatorio
exclude_hosts /etc/sarg/sarg.hosts
# TAG: Filtragem de Strings
#exclude_string /etc/sarg/sarg.strings
# TAG: Filtragem de Usuarios
#exclude_users /etc/sarg/sarg.users
# TAG: Formato de Data

date_format e
# TAG: Limite de Logs [0 = Sem limites]
lastlog 0
# TAG: Mostrar IP
user_ip Yes
# TAG: Mostrar Usuario
usertab /etc/sarg/sarg.usertab
# TAG: Gerando Relatorios
remove_temp_files Yes
index Yes
overwrite_report Yes
records_without_userid ignore
use_comma no
topsites_num 100
topsites_sort_order BYTES D
exclude_codes /etc/sarg/exclude_codes
max_elapsed 28800000
#report_typie topsites users_sites sites_users date_time denied auth_failures
site_user_time_date
long_url no
show_successful_message no
topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME
MILISEC %TIME TOTAL AVERAGE
topuser_num 0
download_suffix
"zip,arj,bzip,gz,ace,doc,iso,adt,bin,cab,com,dot,drv$,lha,lzh,mdb,mso,ppt,rtf,src,shs,sys,exe,dll,
mp3,avi,mpg,mpeg,rar,docx,xlsx,pptx,pdf,mp4,mkv,tgz,deb,rpm"


Criar arquivo para relacionar IP com usuário: /etc/sarg/sarg.usertab

Agendar no cron:

# crontab -e

SHELL=/bin/bash
MAILTO=usuario@dominio.com.br
01 00 * * * /usr/sbin/sarg-reports today
00 01 * * 6 /usr/sbin/sarg-reports weekly
00 03 01 * * /usr/sbin/sarg-reports monthly


Reiniciar o Squid:

# service squid3 reload

segunda-feira, 4 de março de 2013

Gerenciador de Conexões para terminal (não GUI) Comando ac


O resultado final foi o 'ac' ou Auto Connector , e seu uso é bastante simples, por exemplo:

Para criar uma conexão ssh:

  $ ac -a -n teste1 -i 10.0.0.1 -P 22 -u user -p senha123 -t ssh -c "Conexão de Teste"
  Adding: teste1,10.0.0.1,22,user,*****,ssh,Conexão de Teste,-X -C -o PreferredAuthentications=password,keyboard-interactive

Para listar todas conexões criadas:

  $ ac -ls
  NAME            IP / HOSTNAME   USER            TYPE    COMMENT
  teste1          10.0.0.1        user            ssh     'Conexão de Teste'

Para mostrar detalhes de uma conexão:

  $ ac -s teste1
  Connection Name:        teste1
  IP Address:             10.0.0.1
  Port Number:            22
  User Name:              user
  Passwd:                 *****
  Connection Type:        ssh
  Comment:                'Conexão de Teste'
  SSH OPTIONS:            '-X -C -o PreferredAuthentications=password'

Para conectar:

  $ ac teste1
  user@10.0.0.1's password:
  X11 forwarding request failed on channel 0
  user@10.0.0.1>
  user@10.0.0.1>logout
  Connection to 10.0.0.1 closed.
 
Além disso, é possível se conectar em cadeia, especificando várias conexões salvas o programa vai conectando de um nó a outro, até terminar a lista.
Também é possível alterar e remover conexões, salvar grupos de conexões (para conexão em cadeia), especificar uma chave ssh ao invés de senha, é possível que o script peça a senha interativamente para que não tenha que digita-la na linha de comando, e também clonar conexões.
Por enquanto o script suporta conexões ssh, sftp, ftp e telnet.
Abaixo mostro o help do comando com todas as suas opções:

Uso:

  ac [-a|-d|-x|-l|-h|-m|-s] [-n nome|-i ip|-P porta|-u user|-p password|
     -k ssh key_identity_file|-c commentario|-t tipo|-o ssh_options] [nome]

Para conectar a uma conexão já salva:

   ac < nome> [< nome_01>...< nome_N>]
Onde 'nome' e 'nome_XX' são os nomes de conexões salvas (Se mais de uma conexão é especificada, o script vai conectar ao primeiro nó, depois a partir desse nó vai conectar ao que segue, e assim por diante até acabar a lista.)

Adicionar / Salvar conexão:

  ac -a -n < nome> -i < ip> -u < usuario> -t < tipo>
    [-P < port_number>|-p < password>|-k < ssh_key_id_file>|-c < comment>]
-n < nome>
Nome da conexão a ser salva
-i < ip>
IP ou nome do host
-t < tipo>
Tipo de conexão, as seguintes são suportadas: 'ssh telnet ftp sftp'
-u < usuario>
Usuário no servidor remoto -P < porta> Número da porta (Se não especificado se usará a padrão para o tipo de conexão)
-p < password>
Senha para o usuario, se não especificada, ou se conter um hífen (-), então a senha será pedida (Opção não suportada com -k)
-k < key_id_file>
Chave de autorização SSH, opção não suportada com -p
-c < comentário>
Comentário para a conexão

Para deletar uma conexão salva:

  ac -x < nome> Nome da conexão ou do grupo para se deletar
(Caso a conexão pertença a um grupo, ela não será deletada)

Modificar uma conexão salva:

  ac -m < nome> [-n < novo nome>] [-i < ip>] [-u < usuario>] [-t < tipo>]
   [-P < porta>] [-p < password>] [-k < ssh_key_id_file>] [-c < comentário>]
< nome>
Nome da conexão a ser alterada
-n < nome>
Novo nome da conexão
-i < ip>
Novo IP ou nome do host
-t < tipo>
Novo Tipo de conexão, as seguintes são suportadas: 'ssh telnet ftp sftp'
-u < usuario>
Novo usuário no servidor remoto
-P < porta>
Novo número da porta (Se não especificado se usará a padrão para o tipo de conexão)
-p < password>
Nova senha para o usuario, se conter um hífen (-), então a senha será pedida (Opção não suportada com -k)
-k < key_id_file>
Nova Chave de autorização SSH, opção não suportada com -p
-c < comentário>
Novo Comentário para a conexão
(Todos parametros são opcionais, mas ao menos um deve ser especificado)

Para Duplicar / Clonar uma conexão salva:

   ac -d < nome> -n < novo nome> [-i < ip>] [-u < usuário>] [-t < tipo>]
    [-P < porta>] [-p < password>] [-k < ssh_key_id_file>] [-c < comentário>]
-n < nome>
Nome da conexão a ser salva
-i < ip>
IP ou nome do host
-t < tipo>
Tipo de conexão, as seguintes são suportadas: ssh telnet ftp sftp
-u < usuario>
Usuário no servidor remoto
-P < porta>
Número da porta (Se não especificado se usará a padrão para o tipo de conexão)
-p < password>
Senha para o usuario, se não especificada, ou se conter um hífen (-), então a senha será pedida (Opção não suportada com -k)
-k < key_id_file>
Chave de autorização SSH, opção não suportada com -p
-c < comentário>
Comentário para a conexão
(Todos parametros são opcionais, exceto < novo_nome>)

Mostrar conexões e configuração:

-lc
Lista conexões
-lg
Lista grupos
-lp
Lista preferencias

Mostrar detalhes de uma conexão ou grupo:

  ac -s < nome> [-e]  Onde nome é uma conexão ou grupo salvo
(Se utilizado com -e, as senhas serão mostradas)

Mostrar ajuda:

-h
Mostra essa ajuda e termina.
O script pode ser baixado em https://sourceforge.net/p/autoconnector

Procedimentos


#/* ac: Autoconnector
# *
# * ----------------------------------------------------------------------------
# * "THE BEER-WARE LICENSE" (Revision 42):
# * <saunite@gmail.com> wrote this file. As long as you retain this notice you
# * can do whatever you want with this stuff. If we meet some day, and you think
# * this stuff is worth it, you can buy a beer in return to André Saunite
# * (Thanks to Poul-Henning Kamp <phk@FreeBSD.ORG> for this amazing license)
# * ----------------------------------------------------------------------------
# *
# * ac -> Auto Connector (or André's Connector) :P
# *
# * This is a Terminal connection manager (no GUI), intended to be used with
# * your favorite Terminal application (Konsole, Gnome-Terminal, yakuake, and
# * so on) or to be used in machines with no GUI available.
# *
# * Creation date: 2012/09/06 # * Last change: 2012/10/03
# *
# * ----------------------------------------------------------------------------
# *
# * Installation Instruction
# *
# * For ac to run correctly, some perl modules need to be installed, in Debian
# * you can just install those packages:
# *
# * perl-modules
# * libcrypt-ecb-perl
# * libexpect-perl
# * libterm-readkey-perl
# * libcrypt-blowfish-perl
# *
# * In case you are using another system or prefere to install all via CPAN,
# * do the following:
# *
# * Enter cpan:
# *
# * $ sudo cpan
# *
# * Run the installation of the needed modules:
# *
# * install Expect
# * install Term::ReadKey
# * install Getopt::Std
# * install Crypt::Blowfish
# *
# * ----------------------------------------------------------------------------
Source: README, updated 2012-10-03

sexta-feira, 1 de março de 2013

SSH Conexao sem senha

Administrar servidores não é uma tarefa muito simples, e uma das tarefas mais difíceis é memorizar todos os usuários e senhas de acesso. Sorte que podemos contar com uma opção muito útil do SSH, a conexão via chave pública/privada.

Obs.: Para entender como funcionam as chaves públicas/privadas, sugiro a leitura deste artigo:


O primeiro passo é gerarmos as chaves. Este procedimento deve ser feito na máquina de onde será feita a conexão (cliente), para isso, vamos utilizar o seguinte comando:

Obs.: Usarei como exemplo o usuário "joao" para o cliente e "joao_servidor" para o servidor.

# ssh-keygen

Obs.: O tipo padrão para a criação da chave é RSA, porém, caso queira especificar o tipo da chave, basta adicionar ao comando o parâmetro: -t rsa

Depois de executar o comando acima, você será perguntado sobre o nome do arquivo, no nosso caso, deixaremos o padrão (/home/joao/.ssh/id_rsa) e vamos pressionar ENTER.

Logo depois você terá a opção de adicionar uma passphrase à sua chave, porém, toda vez que for conectar, será necessário digitar essa senha. No nosso caso, deixarei em branco para não precisar usar senha, sendo assim, basta pressionar ENTER duas vezes.

Pronto. Sua chave já foi gerada, para conferir basta entrar no diretório que escolhemos para salvar a chave (/home/joao/.ssh/id_rsa) e verificar se os arquivos "id_rsa" e "id_rsa.pub" foram criados.

Agora o que temos que fazer é passar a chave pública para o servidor SSH, porém, antes de mais nada, devemos verificar se no servidor há a pasta ".ssh" (o " . " indica que é um diretório oculto) dentro da HOME do usuário que usaremos para logar (no caso: joao_servidor), se não existir, devemos criar.

Depois do diretório criado, passamos o arquivo com o seguinte comando:

# scp /home/joao/.ssh/id_rsa.pub joao_servidor@server:/home/joao_servidor/.ssh

Pronto, o que tínhamos que fazer na máquina cliente já terminamos, agora devemos entrar no servidor SSH para terminarmos a configuração.

Já logado no servidor SSH, jogaremos nossa chave pública para o arquivo de autenticação:

# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

Pronto, agora podemos voltar para a máquina cliente e testarmos a conexão com o seguinte comando:

# ssh joao_servidor@servidor

Se tudo correr bem, você logará no servidor sem ter que digitar a senha.