quinta-feira, setembro 23, 2010

Simples Programa de Backup de MySQL

#!/bin/bash
#
# ===========================
# Programa de Backup de MySQL
# ===========================
#
#
#
# Objetivos
# =========
#
#  Executar um backup de todas as tabelas de cada servidor MySQL em produção da UFCSPA
#
#
# Responsáveis 
# ============
#
#  - Klaus Engelmann (programação)
#  - Anderson Domingues (validação de dados)
#
# Histórico
# =========
#
#  - (Klaus Engelmann - 21/09/2010)
#      - Início do desenvolvimento. 
#        - Habilitar programa para o moodle.ufcspa.edu.br e anubis.ufcspa.edu.br.
#        - Desenvolver parte "1" do algoritmo.
#        - Desenvolver parte "2" do algoritmo.
#        - Execução de Testes de Mesa.
#        - A variável hostname do mysqldump deve ser declarada durante a execução do laço.
#        - Mudar o formato da data para contabilizar minutos e segundos.
#        - A variável DATA deve ser declarada durante a execução do laço.
#        - Configuração da CRON para executar o programa.
#
# - (Klaus Engelmann - 22/09/2010)
#        - Correção de erro de redirecionamento por causa do formato da data. 
#        - Teste da Cron
#
# - (Klaus Engelmann - 23/09/2010)
#        - Desenvolvimento da Etapa 3 do algoritmo.
#        - Formatação da mensagem do relatório.
#        - Configuração do sistema de email da dracula.ufcspa.lan
#        - Teste e Validação do relatório.
#              
#
# Funcionamento do Programa de Backups
# ====================================
#
# Será realizado um Full Backup toda madrugada às 04:00 hs.
# Cada execução da rotina de backup verificará o seguinte algoritmo:
#
# 1- Criação do arquivo de backup.
# 2- Exclusão dos arquivos que são 5 dias mais antigos.
# 3- Envio de relatório de arquivos por email
#
#
# Parâmetros do comando mysqldump
# ===============================
#
# O comando mysqldump realiza o dump dos bancos de dados e tabelas. Ele é o principal artífice do backup. 
# Os parâmetros utilizados estão comentados abaixo conforme o "man mysqldump".
#
#
#  --add-drop-table
#
#          Add a DROP TABLE statement before each CREATE TABLE statement.
#
#  --add-locks 
#
#          Surround each table dump with LOCK TABLES and UNLOCK TABLES statements. This results in faster inserts when the dump file is reloaded.
#
#  --comments, -i 
#
#          Write additional information in the dump file such as program version, server version, and host. This option is enabled by default. To
#          suppress this additional information, use --skip-comments.
#
#  --extended-insert, -e 
#
#          Use multiple-row INSERT syntax that include several VALUES lists. This results in a smaller dump file and speeds up inserts when the file is
#          reloaded.
#
#  --flush-privileges 
#
#          Emit a FLUSH PRIVILEGES statement after dumping the mysql database. This option should be used any time the dump contains the mysql database
#          and any other database that depends on the data in the mysql database for proper restoration. This option was added in MySQL 5.0.26.
#
#  --force, -f 
#
#          Continue even if an SQL error occurs during a table dump.
#
#          One use for this option is to cause mysqldump to continue executing even when it encounters a view that has become invalid because the
#          definition refers to a table that has been dropped. Without --force, mysqldump exits with an error message. With --force, mysqldump prints
#          the error message, but it also writes an SQL comment containing the view definition to the dump output and continues executing.
#
#  --host=host_name, -h host_name 
#
#          Dump data from the MySQL server on the given host. The default host is localhost.
#
#  --lock-all-tables, -x 
#
#          Lock all tables across all databases. This is achieved by acquiring a global read lock for the duration of the whole dump. This option
#          automatically turns off --single-transaction and --lock-tables.
#
#  --log-error=file_name 
#
#          Append warnings and errors to the named file. This option was added in MySQL 5.0.42.
#
#  --password[=password], -p[password] 
#
#          The password to use when connecting to the server. If you use the short option form (-p), you cannot have a space between the option and the
#          password. If you omit the password value following the --password or -p option on the command line, you are prompted for one.
#
#          Specifying a password on the command line should be considered insecure. See Section 5.6, “Keeping Passwords Secure”.
#
#  --user=user_name, -u user_name 
#
#          The MySQL user name to use when connecting to the server.
#
#



# -------------------------------
# Variáveis Estáticas do Programa
# -------------------------------

# Lista de servidores MySQL para executar backup
declare -a HOSTS=( 'teste1.teste.com' 'teste2.teste.com' 'teste3.teste.com' ) 

# Senha do usuário backup
PASS="put-your-own"

# Configuração do comando mysqldump
MYSQLDUMP="/usr/bin/mysqldump --all-databases \
                              --add-drop-table \
                              --add-locks \
                              --log-error=/var/log/bkp-mysql-error.log \
                              --comments \
                              --extended-insert \
                              --flush-privileges \
                              --force \
                              --lock-all-tables \
                              -u backup \
                              -p$PASS"
                              


# ---------------------
# Execução do mysqldump
# ---------------------

# Criação dos DUMPS do mysql
for I in "${HOSTS[@]}"
do
   {
      # Formato de data: dia-mes-ano-hora-minuto-segundo
      DATA=$( /bin/date +%d-%m-%Y-%H-%M-%S )
      $MYSQLDUMP -h $I > /backup3/bkp-$I-$DATA.sql
   }
done


# -----------------------------------------
# Exclusão de Arquivos criados 5 dias atrás 
# -----------------------------------------

/usr/bin/find /backup3 -atime +5 -exec rm -f {} \;


# ----------------------------------------
# Geração e envio do relatório de execução
# ----------------------------------------

LISTAGEM=$(ls -lha /backup3/)
OCUPACAO=$(du -sh /backup3/)
DISCO=$(df -h) 

RELATORIO="\nResultado do Backup de Sevidores MYSQL\n\n\nOs arquivos armazenados são:\n$LISTAGEM\n\nTotal Uso:\n$OCUPACAO\n\nOcupação do Filesystem:\n$DISCO\n\n"

echo -e "$RELATORIO" | mail -s"Relatorio de Backup MySQL" root


exit 0

terça-feira, julho 13, 2010

Capítulo 3 - OSPF

Revisão do OSPF


OSPF (Open Shortest Path First) é um protocolo de roteamento de padrão aberto, do tipo classless (sem classe), com rápida convergência e que utiliza o custo como métrica.

O OSPF é um protocolo de estado de enlace e utiliza o algoritmo SPF (Dijkstra para determinar o melhor caminho para cada rede. Cria uma base de dados que representa a estrutura da rede.

Primeiramente o OSPF troca HELLOS com seus vizinhos roteadores, aprendendo os RIDs e os custos. As informações sobre vizinhos são armazenados na base de dados de adjacência. 

Posteriormente, o roteador gera LSAs (aviso de estado de enlace) incluindo os RIDs e os custos de cada roteador. Estes LSAs são distribuidos entre todos os roteadores de um mesmo domínio. Cada roteador guarda o conjunto completo de LSAs na base de dados de LSAs. Através do algoritmo SPF os roteadores computam os melhores caminhos, os quais são colocados na tabela de roteamento (ou na tabela / base de dados de encaminhamento).

Estrutura da Rede OSPF


Um domínio OSPF é dividido em áreas. Uma rede OSPF deve conter uma área 0 e poderá conter outras áreas além dessa.

Todas as demais áreas configuradas devem estar diretamente ligadas com a área zero. Por isso a área zero pode ser conhecida como área de trânsito. Entre as áreas serão passadas rotas inter-áreas.

A divisão de uma rede OSPF em áreas deve-se pelos seguintes motivos:

  • minimiza o número de rotas/registros na tabela de roteamento.
  • reduz o flooding de LSAs dentro de uma área.
  • minimiza os impactos de mudanças na topologia.
  • reforça a necessidade de um design hierárquico nas redes.

Os roteadores de uma rede OSPF assumem diversas funções / papéis, sendo que um mesmo roteador pode ter várias funções simultaneamente.

  1. Roteador Interno: possui todas as suas interfaces em uma área.
  2. Roteador Backbone: possui pelo menos uma interface configurada na área zero.
  3. ABR: possui interfaces em duas ou mais áreas.
  4. ASBR: possui interfaces dentro e fora do domínio de roteamento OSPF.

segunda-feira, julho 05, 2010

Aula 1 - Gestão de Segurança da Informação

Segurança da Informação


É importante saber estabelecer a diferença entre:
 
  • Segurança da Informação
  • Segurança de TI (Tecnologia da Informação)
 
A Segurança da Informação é muito mais abrangente que a Segurança de TI. Envolve o estudo e planejamento sobre os processos relativos ao negócio da instituição / empresa. A segurança de TI é um conjunto de procedimentos técnicos objetivando ativos de redes, servidores, aplicativos, estações clientes, etc.
 
O planejamento e execução da política de segurança da informação depende do tipo de negócio da instituição.

Aspectos importantes da Segurança da Informação contemplam as seguintes questões:
  • tempo de retenção da informação
  • modalidades/classes de acesso da informação


Necessidade da Auditoria


Diretrizes e normas são implementadas através de procedimentos técnicos. Uma vez que esses procedimentos foram planejados e executados é necessário gerenciar uma auditoria dos registros de sucesso ou insucesso. A auditoria precisa mostrar se os procedimentos são aplicados e qual o retorno que estão gerando.


Integração com os usuários    

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          

A integração dos usuários no processo de planejamento de segurança da informação é crítico. É importante diferenciar treinamento de concientização.
 
  • Treinamento: habilidades técnicas
  • Concientização: visão da importância e do valor 


Plano de Contingência


Os planos de contingência devem abranger não somente a reposição de ativos físicos mas também os recursos humanos. Um funcionário doente ou com problemas familiares deve ser considerado como um problema que precisa de um plano de contingência.
 

Determinação da Realidade de Segurança da Informação


Para determinar a realidade de segurança da informação em uma empresa é necessário:
 
  1. Entendimento do Negócio
  2. Análise de Aderência: esta análise é baseada na ISO 27002.
  3. Análise de Risco
 

Caso de Controle de Segurança da Informação - Gerência de Usuários Centralizada


  • Controle de acesso através de Single Signon
  • Enquadramento do RH junto com o NTI
  • Controle e configuração de usuários centralizado, jamais usuários locais. Para isso existe um usuário administrador local único.

Comunicação de Incidentes


A comunicação de incidentes também precisa ser planejada de tal forma que as informações corretas possam ser transmitidas e os danos minimizados.

Propriedades dos Serviços de Segurança


  • Confidencialidade
  • Autenticidade
  • Integridade

A partir dessas propriedades fundamentais temos outras derivadas:

  • Não repúdio
  • Conformidade
  • Controle de Acesso
  • Disponibilidade

Histórico de Incidentes


O histórico de incidentes é importante na Análise/Avaliação de Riscos. Permite determinar a incidência de um risco e assim melhor avaliar seu impacto.

Análise e Avaliação de Riscos


A análise e avaliação de riscos deve nortear a consolidação de uma gestão de segurança da informação. Esta avaliação apresentará quais os custos para cada operação e se é possível ou não assumir determinados riscos.

Descrição de Normas de Gestão de Segurança da Informação






 

Questões para Discussão


  1. Como é gerenciado os incidentes de segurança na minha instituição ?
  2. O que é considerado confidencial na minha instituição ?
  3. Como deve ser conformado o Comitê Gestor de Segurança da Informação na minha instituição ?

sábado, junho 26, 2010

Polêmica: NAT e a Segurança

Contexto


    Durante a minha experiência de 3 anos como estagiário no POP-RS da RNP estive envolvido no suporte de redes de computadores das universidades federais do Brasil. Uma das situações que mais me surpreenderam e interessaram trata sobre a polêmica do NAT.

    Esta polêmica não é apenas particular às universidades federais, mas está presente em todo o contexto de redes corporativas no Brasil e no mundo. Ao final, a grande polêmica é: o NAT é uma técnica de segurança de redes de computadores ? Uma rede com NAT é mais segura que uma rede sem NAT ?

    Existem muitas fontes de informação sobre este assunto. De certa forma, acabei utilizando este site como referência técnica: http://fishbowl.pastiche.org/2003/09/22/nat_and_security/. As explicaçõs apresentadas pelo autor são bastante equilibradas e vão de encontro com as minhas próprias.

O que é o NAT ?


    Sem entrar em explicações completas sobre o que é o NAT, seus diversos tipos e modificações ao longo do tempo podemos dizer:

    "NAT é o processo de modificar o endereço de rede (Camada 3) no cabeçalho do datagrama IP durante seu trânsito por um gateway ou roteador com o propósito de mapear um espaço de endereçamento por um outro distinto".

    Desta forma o NAT é utilizado com os endereços de rede privados (RFC 1918), criando uma rede privada separada da rede pública (tipicamente a INTERNET). Todo o espaço de endereçamento privado permanece invisível perante a rede pública.

O NAT e a Segurança de Redes


    Uma grande maioria de profissionais de redes de computadores defendem que o NAT é um recurso de segurança. Sobre isso gostaria de pontuar algumas considerações:

  • Técnicamente falando, NAT não é uma técnica de firewalling, apenas mapeamento de endereços de rede por um outro tipo de endereço.
  • Na prática, todo roteador com funcionalidades de NAT já possui funcionalidades de firewalling ou acls que acompanham o uso do NAT.

    Agora, conforme outras leituras realizadas é possível dizer que um "gateway NAT" acaba funcionando como um caso especial de "stateful firewall" (mesmo sem firewall ativa). Isso acontece pelas seguintes situações criadas pelo NAT:
  • As máquinas de dentro da rede privada podem enviar pacotes para fora e estabelecer conexões.
  • As máquinas na rede pública não podem realizar conexões com as máquinas da rede interna, a menos que seja estabelecido explicitamente um tunel ou redirecionamento pelo administrador do NAT.

    Certamente estas funcionalidades de segurança fornecidas pelo NAT podem ser facilmente implementadas por qualquer firewall decente. Portanto, do meu ponto de vista, o NAT é uma solução para falta de endereçamento IP e não para fortalecer a segurança de uma rede.

sexta-feira, junho 18, 2010

Instalação da Firewall APF no CentOS

Introdução


A firewall APF é uma ótima escolha para servidores conhecidos como BASTION HOST, isto é, servidores em uma rede pública aberta e sem maiores filtros (exemplo, uma DMZ).


Os recursos do APF passam desde a clássica configuração de regras INBOUND e OUTBOUND até recursos avançados de blacklists dinâmicas, testes de integridade de pacotes e muito mais.


A página oficial do projeto é:


http://www.rfxn.com/projects/advanced-policy-firewall/


Instalação

O pacote pode ser instalado de duas formas:
  • Utilizando o pacote com instalador do site do projeto.
  • Utilizando o repositório rpmforge.

Utilizando o pacote com instalador do site do projeto

O pacote com instalador disponibilizado pelo site do projeto é moldado especificamente para a distribuição CentOS. Já ativa os scripts de inicialização e de manutenção do logrotate.


O pacote está disponível em:


http://www.rfxn.com/downloads/apf-current.tar.gz


[root@baco ~]# wget http://www.rfxn.com/downloads/apf-current.tar.gz
--2010-06-14 10:57:10--  http://www.rfxn.com/downloads/apf-current.tar.gz
Resolving www.rfxn.com... 208.76.83.136
Connecting to www.rfxn.com|208.76.83.136|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 106373 (104K) [application/x-gzip]
Saving to: `apf-current.tar.gz'

100%[=================================>] 106,373     98.1K/s   in 1.1s    

2010-06-14 10:57:12 (98.1 KB/s) - `apf-current.tar.gz' saved [106373/106373]

[root@baco ~]# gunzip apf-current.tar.gz 
[root@baco ~]# tar -xvf apf-current.tar 
[root@baco ~]# cd apf-9.7-1/
[root@baco apf-9.7-1]# ls
apf.init  CHANGELOG  COPYING.GPL  cron.daily  files  importconf  install.sh  logrotate.d.apf  README.apf

[root@baco apf-9.7-1]# ./install.sh 
Installing APF 9.7-1: Completed.

Installation Details:
 Install path:         /etc/apf/
 Config path:          /etc/apf/conf.apf
 Executable path:      /usr/local/sbin/apf

Other Details:
 Listening TCP ports: 8080
 Listening UDP ports: 47592
 Note: These ports are not auto-configured; they are simply presented for information purposes.
You must manually configure all port options.



Utilizando o repositório rpmforge

O repositório RPMFORGE disponibiliza um pacote RPM para a firewall APF.


Para adicionar o repositório RPMFORGE consultar o site:


http://rpmrepo.org/RPMforge/Using


Baixar o pacote correspondente a versão do CentOS procurada:


http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.i386.rpm



[root@baco ~]# rpm -Uvh rpmforge-release-0.5.1-1.el5.rf.i386.rpm
[root@baco ~]# rpm --import /etc/pki/rpm-gpg/*
[root@baco ~]# yum install apf

Utilizando o comando NETCAT (nc) no GNU/Linux

Objetivos

O NETCAT é uma ferramenta muito utilizada em testes de penetração, segurança de servidores GNU/Linux assim como validação da configuração de firewalls. 

O NETCAT funciona com uma arquitetura cliente/servidor. É possível configurar em uma máquina para que escute em determinadas portas TCP ou UDP para poder realizar diversos testes de conectividade.

Para fins de testes foram utilizadas duas máquinas, marte e omicron, com o comando nc instalado. Em ambas, a firewall IPTABLES estava desabilitada. A máquina omicron representa o servidor no qual deseja-se testar a abertura de certas portas, enquanto que a máquina marte é a que realiza os testes.

Principais opções do comando


[root@omicron ~]# nc -h
usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]
 [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version]
 [-x proxy_address[:port]] [hostname] [port[s]]
Command Summary:
    -4          Use IPv4
    -6          Use IPv6
    -D          Enable the debug socket option
    -d          Detach from stdin
    -h          This help text
    -i           secs Delay interval for lines sent, ports scanned
    -k         Keep inbound sockets open for multiple connects
    -l          Listen mode, for inbound connects
    -n         Suppress name/port resolutions
    -p         port Specify local port for remote connects
    -r         Randomize remote ports
    -s         addr Local source address
    -T         ToS Set IP Type of Service
    -C        Send CRLF as line-ending
    -t         Answer TELNET negotiation
    -U        Use UNIX domain socket
    -u        UDP mode
    -v        Verbose
    -w       secs Timeout for connects and final net reads
    -X        proto Proxy protocol: "4", "5" (SOCKS) or "connect"
    -x        addr[:port] Specify proxy address and port
    -z        Zero-I/O mode [used for scanning]
Port numbers can be individual or ranges: lo-hi [inclusive]




Testando Portas TCP

Abrindo no servidor omicron a porta TCP 1111 e colocando ela no modo LISTEN (-l)


[root@omicron ~]# nc -4 -l 172.16.1.125 1111



Abrindo no servidor marte uma conexão cliente e realizando uma digitação de texto para verificar


[root@marte:/home/klaus]# nc 172.16.1.125 1111
Teste da marte
oi aqui é da marte


Logo aparecerá o mesmo texto digitado no servidor omicron.


Testando Portas UDP

Os testes com o protocolo UDP possuem algumas considerações para fazer.

No servidor omicron foi executado o seguinte comando:


[root@omicron nc-1.84]# nc -l -u 172.16.1.125 2525



No cliente marte foi executado o seguinte comando:


[root@marte:/home/klaus]# echo "teste UDP" | nc -w 1 -u 172.16.1.125 2525


Desta maneira aparecerá no servidor omicron o texto "teste UDP" apenas uma vez. Não é possível digitar interativamente um texto para enviar entre o cliente e o servidor como no caso do UDP.



quinta-feira, junho 03, 2010

Resumo das Características Básicas do IPv6

Resumo das Características Básicas do IPv6


IPv6 é a nova versão do Protocolo de Internet (Internet Protocol version 6). Ela deverá substituir progressivamente o protocolo atual da Internet, o IPv4 (Internet Protocol version 4), estendendo o espaço de endereçamento corrente, que se tornou insuficiente para acomodar a atual taxa de crescimento da rede.

Os novos endereços têm 128 bits de comprimento (contra os atuais 32 do IPv4), possibilitando um aumento significativo no número de hosts. As caracterí sticas IPv6 são, dentre outras:

  • 128 bits de espaço de endereçamento;
  • arquitetura de endereçamento melhor estruturada;
  • suporte para "datagramas jumbo" (o IPv4 suporta somente 64 Kbytes no tamanho do pacote);
  • mobilidade;
  • configuração plug-and-play (stateless address config);
  • mecanismos de segurança, incluindo encriptação e autenticação;
  • suporte para multicasting e anycasting;
  • suporte a aplicações multimídia em tempo real.

Embora pilhas IPv6 nativas não possam interoperar diretamente com pilhas IPv4, mecanismos de compatibilidade IPv4 foram introduzidos no IPv6 para assegurar uma transição mais fácil.


Fonte: http://www.rnp.br/ipv6/ipv6-sobre.html

domingo, maio 23, 2010

Revisão Básica de IPv6 - CCNA

Revisão Básica de IPv6 - CCNA



Introdução

O IPv6 não é um mero upgrade de funcionalidades do IPv4. Ele é um protocolo novo, dinâmico, mais seguro e escalável.

Motivação para o Surgimento do IPv6

  • Esgotamento do espaço de endereçamento do IPv4. Na teoria o IPv4 possui um espaço de endereçamento aproximado de 232 = 4 bilhões.
  • Problemas causados pelo NAT. A tecnologia do NAT surgiu para enfrentar o problema de falta de espaço de endereçamento do IPv4. Porém trouxe outras consequências como a quebra do paradigma ponto-a-ponto na comunicação pela Internet.
  • Necessidade de incorporar dentro do datagrama IPv6 atributos de QoS.
  • Necessidade de recursos de mobilidade (usuários de celular com conectividade na Internet).
  • Novas funcionalidades de segurança e fragmentação, assim como a possibilidade de adicionar novos campos AD-HOC (sob demanda).

Novas Funcionalidades do IPv6

  • Maior espaço de endereçamento.
  • Auto-configuração: o próprio protocolo possui recursos para "stateless autoconfiguration", isto é, configura um endereço sem a necessidade de um servidor DHCPDv6.
  • Novo cabeçalho, com possibilidades de adicionar novos campos AD-HOC (sob demanda).
  • Suporte a QoS (classes de serviço).
  • Suporte de segurança por criptografia IPSEC.

Novo Cabeçalho IPv6

  • Tamanho de 40 bytes.
  • Novos campos: Traffic Class e Next Header.

Endereçamento IPv6

Basicamente o IPv6 possui uma estrutura formada por:
  • prefixo de rede.
  • sufixo de host.

O IPv6 não possui classes, todos os endereços seguem o conceito de CIDR (Classes InterDomain Routing).

A escrita de endereços IPv6 pode ter um modo comprimido:
  • zeros a esquerda podem ser suprimidos.
  • blocos de zeros encadeados (apenas um bloco pode ser encadeado).

Um exemplo de escrita de endereços em modo comprimido:
  • Endereço original - 0FFE:6A88:0000:0000:00A3:0000:0000:0721
    • supressão de zeros a esquerda - FFE:6A88:0000:0000:A3:0:0:721
    • blocos de zeros encadeados - FFE:6A88::A3:0:0:721


Estrutra do Endereço IPv6

O endereço padrão do IPv6 é composto por 3 seções (formando um total de 8 blocos de 4 dígitos hexadecimais):
  • Global Routing Prefix: 48 bits
  • Subnet Prefix: 16 bits
  • Interface ID: 64 bits

A seção Interface ID, através do modo de autoconfiguração, utiliza o endereço MAC da interface para compôr um endereço válido.

Tipos de Endereço IPv6

No IPv6 existem 3 tipos principais de endereços:
  • UNICAST: pacotes de dados são enviados a um único destinatário.
    • Global Unicast: endereço público roteável.
    • Link Local: endereços privados não roteáveis.
    • Unique Local: não roteáveis na Internet porém são únicos.
  • MULTICAST: pacotes de dados são enviados a todos os participantes do grupo.
  • ANYCAST: pacotes de dados são enviados ao mais próximo participante do grupo.

Transição de IPv4 para IPv6

A transição do IPv4 para o IPv6 é realizada utilizando as seguintes estratégias:

  • Dual Stacking: ambas versões do protocolo rodam em routers e estações.
  • Tunelamento 6to4: encapsulamento do IPv6 com um cabeçalho IPv4.
  • Mapeamento: endereços IPv4 são reescritos como endereços IPv6 (::200.18.67.24)

Reconhecendo Endereços IPv6


DescriçãoEndereço
Loopback::1
Intervalo Global Unicast2000::/3
Intervalo Unique LocalFC00::/7
Intervalo Link LocalFE80::/10
Intervalo MulticastFF00::/8
Intervalo Modo 6to4 (para tunelamento)2002::/16

domingo, dezembro 27, 2009

Configuração Avançada do YUM

Configuração Avançada do YUM


Introdução

O YUM é a ferramenta padrão para gerenciamento de pacotes das distribuições FEDORA, REDHAT e CENTOS. Semelhante ao APT-GET utiliza repositórios remotos para distribuir pacotes tanto oficiais como desenvolvidos por terceiros.
Este tutorial orienta sobre como utilizar o YUM de maneira avançada, isto é, configurando plugins e outras opções de configuração com recursos interessantes.

Os passos aqui desenvolvidos foram executados em um CENTOS 5.4. Dependendo da distribuição utilizada poderão haver mudanças.


Arquivos de Configuração

O YUM utiliza os seguintes diretórios e arquivos de configuração:


/etc/yum.conf
/etc/yum.repos.d
/etc/yum/pluginconf.d
/etc/logrotate.d/yum


[root@hermes ~]# cd /etc/yum.repos.d/

[root@hermes yum.repos.d]# ls

CentOS-Base.repo  CentOS-Media.repo  Citrix.repo  epel.repo  epel-testing.repo  
mirrors-rpmforge  remi.repo  rpmforge.repo




[root@hermes yum.repos.d]# cd /etc/yum/

[root@hermes yum]# ls

pluginconf.d

[root@hermes yum]# cd pluginconf.d/

[root@hermes pluginconf.d]# ls

fastestmirror.conf   security.conf







Arquivo comentado: /etc/yum.conf



[root@hermes ~]# cat /etc/yum.conf

[main]
cachedir=/var/cache/yum
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
distroverpkg=redhat-release
tolerant=1
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1

# Set to ‘1’ if you wish to show any duplicate packages from any repository, from package listings like the info or list commands
showdupesfromrepos=1

# Note: yum-RHN-plugin doesn't honor this.
metadata_expire=1h

installonly_limit = 5

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d
[root@hermes ~]# man yum.conf
[root@hermes ~]# cat yum.conf
cat: yum.conf: No such file or directory
[root@hermes ~]# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
distroverpkg=redhat-release
tolerant=1
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
showdupesfromrepos=1

# Note: yum-RHN-plugin doesn't honor this.
metadata_expire=1h

installonly_limit = 5

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d




Plugin: yum-security


O pacote yum-security instala um plugin capaz de executar updates de pacotes que estejam marcados com problemas de segurança e vulnerabilidades. Isto é extremadamente útil, pois nem sempre é necessário fazer um update de pacotes apenas para obter a versão mais recente.

As informações sobre problemas de segurança e vulnerabilidades são obtidas a partir das seguintes fontes:

  • RedHat advisory
  • RedHat Bugzilla database
  • CVE number from MITRE's Common Vulnerabilities and Exposures directory

Para instalar o pacote basta executar como root: yum install yum-security

Após a instalação do pacote estão disponíveis novos comandos no yum:

  • yum list-sec: lista os pacotes utilizando o RedHat Advisory ID e a classificação de cada update conforme os tipos enhancement, bugfix ou security.
  • yum list-sec cves: lista os pacotes substituindo o RedHat Advisory ID pelo CVE ID.
  • yum list-sec bzs: lista os pacotes utilizando o RedHat Bugzilla ID

Caso um pacote tenha vários registros estará listado vários vezes.

Para pode instalar apenas os pacotes com problemas de segurança executar como root: 
yum update --security

Caso seja escolhido instalar apenas um pacote específico utilizar o comando: 
yum update --bz 410101

O comando acima instala o pacote cujo RedHat Bugzilla ID é o 410101

Outro comando disponível é o yum info-sec <advisory-number> que fornece informações detalhadas sobre as vulnerabilidades envolvidas no pacote.

















quinta-feira, maio 21, 2009

Problemas com RBLs




Minha atual configuração de RBLs no Postfix


reject_rbl_client zen.spamhaus.org,

reject_rbl_client dul.dnsbl.sorbs.net,

reject_rbl_client list.dsbl.org,

reject_rbl_client cbl.abuseat.org,

reject_rbl_client bl.spamcop.net,

reject_rbl_client ix.dnsbl.manitu.net,

reject_rbl_client combined.rbl.msrbl.net,

reject_rbl_client l2.apews.org,



Porém depois de aplicar o seguinte comando:



[root@prometeu log]# cat maillog | grep 'RBL lookup error' | wc -l

19875



É possível observar uma taxa muito alta de erros.



A documentação não é muito clara no sentido. A zen.spamhaus.org comunica que se o número de consultas for superior a um limite estabelecido então a conexão será cortada a não ser que seja feito um contrato profissional.



Revisando cada RBL conforme os comandos abaixo:



[root@prometeu log]# cat maillog | grep 'RBL lookup error' | grep 'zen.spamhaus.org' | wc -l

73

[root@prometeu log]# cat maillog | grep 'RBL lookup error' | grep 'dul.dnsbl.sorbs.net' | wc -l

0

[root@prometeu log]# cat maillog | grep 'RBL lookup error' | grep 'list.dsbl.org' | wc -l

9557

[root@prometeu log]# cat maillog | grep 'RBL lookup error' | grep 'cbl.abuseat.org' | wc -l

1

[root@prometeu log]# cat maillog | grep 'RBL lookup error' | grep 'bl.spamcop.net' | wc -l

3

[root@prometeu log]# cat maillog | grep 'RBL lookup error' | grep 'ix.dnsbl.manitu.net' | wc -l

3

[root@prometeu log]# cat maillog | grep 'RBL lookup error' | grep 'combined.rbl.msrbl.net' | wc -l

0

[root@prometeu log]# cat maillog | grep 'RBL lookup error' | grep 'l2.apews.org' | wc -l

0

[root@prometeu log]# cat maillog | grep 'RBL lookup error' | grep 'sbl-xbl.spamhaus.org' | wc -l

10241







RBLs que atualmente estão funcionando:





                                 reject_rbl_client dnsbl.njabl.org,

                                 reject_rbl_client dul.dnsbl.sorbs.net,

                                 reject_rbl_client cbl.abuseat.org,

                                 reject_rbl_client bl.spamcop.net,

                                 reject_rbl_client ix.dnsbl.manitu.net,

                                 reject_rbl_client combined.rbl.msrbl.net,

                               


A RBL l2.apews.org foi retirada por ser restritiva demais e gerar um alto número de falsos positivos.


quinta-feira, maio 14, 2009

Tópicos para Programar C em Linux



Tópicos para Programar C em Linux


Os seguintes exemplos abaixo permitem iniciar a programação em C com o Linux. Foram retirados do Site VIVAOLINUX.
Claro que para a UFRGS é inútil, pois os professores dos primeiros semestres só conseguem ajudar utilizando compiladores
e recursos da M$.

1) Para compilar um programa em C a partir do linux.

$ gcc pessoal1.c -o pessoal1

2) Exemplo de programa C em Linux.


#include <stdio.h>
int main()
{
printf("oi, pessoal! \n");
while(!getchar());
return 0;
}

3) Exemplo completo de programa com compilação.


$ gcc -Wall /home/pirrola/hello.c -o /home/pirrola/hello

Executando:

$ ./hello

O programa de exemplo:


#include
int main (){
printf ("Hello, world!\n");
while(!getchar());
return 0;
}