BEM VINDO AO BLOG DO MARCOS CARRARO CRIADOR DO "CARRARO DASHBOARD". MUITO MAIS QUE UM SIMPLES BLOG.
Mostrando postagens com marcador segurança. Mostrar todas as postagens
Mostrando postagens com marcador segurança. Mostrar todas as postagens

segunda-feira, 10 de julho de 2017

Criando um Servidor PXE para Iniciar arquivos ISO para AcronisTrueImage recover/backup

Bom Dia,

Documentando processo para servidor de PXE com boot de arquivos em .ISO de sistemas operacionais na rede, ideal para equipamentos que não disponham de leitores e ou seja preciso disponibilizar um boot por ISO para o suporte.

1 - Habilitar login do root por ssh
Comente a seguinte linha no arquivo /etc/ssh/sshd_config

# PermitRootLogin without-password


2 - Definir um IP para a interface ligada aos computadores da rede
# vim /etc/network/interfaces

auto eth1
iface eth1 inet static
address  10.255.255.1
netmask 255.255.255.0



3 - Instalar o DHCP necessário para distribuir os IPs para as máquinas com os parâmetros para boot.

# apt-get install isc-dhcp-server

Após instalar o DHCP, vamos fazer uma cópia de segurança do arquivo de configuração
# cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bkp

Feito este backup, vamos alterar o dhcpd.conf para habilitar o boot pela rede.
# vim /etc/dhcp/dhcpd.conf

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

subnet 10.255.255.0 netmask 255.255.255.0 {
  range 10.255.255.100 10.255.255.200;
  option broadcast-address 10.255.255.255;
  filename "pxelinux.0";
  allow booting;
  allow bootp;
}

4.0 - Ajustar diretórios
O diretório deve ficar conforme estrutura abaixo.

# mkdir -p /repositorio_imagens/boot/
# mkdir -p /repositorio_imagens/boot/pxelinux.cfg/
# mkdir -p /repositorio_imagens/boot/isos
# ln -s /repositorio_imagens/boot/isos/ /repositorio_imagens/isos
# touch /repositorio_imagens/boot/pxelinux.cfg/default

4.1 - Vamos instalar o TFTPD, que é o protocolo responsável por transferir os arquivos pelo PXE.
# apt-get install tftpd-hpa

Substitua o conteúdo do arquivo "tftpd-hpa" pelo seguinte arquivo

# vim /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -s /repositorio_imagens/boot/"

Onde "repositorio_imagens/boot" é um ponto de montagem de um disco de alguns terabytes que estarão armazenados todas minhas ISOS e imagens necessárias

5 - Vamos instalar o pxelinux que irá disponibilizar os arquivos necessários para montar a tela de boot

# apt-get install pxelinux syslinux

Vamos copiar os arquivos necessários para iniciar o menu do boot

# cp -vax /usr/lib/PXELINUX/pxelinux.0 /repositorio_imagens/boot/
# cp -vax /usr/lib/syslinux/modules/bios/ldlinux.c32 /repositorio_imagens/boot/
# cp -vax /usr/lib/syslinux/modules/bios/menu.c32 /repositorio_imagens/boot/
# cp -vax /usr/lib/syslinux/modules/bios/vesamenu.c32 /repositorio_imagens/boot/
# cp -vax /usr/lib/syslinux/modules/bios/libcom32.c32 /repositorio_imagens/boot/
# cp -vax /usr/lib/syslinux/modules/bios/libutil.c32 /repositorio_imagens/boot/
# cp -vax /usr/lib/syslinux/modules/bios/reboot.c32 /repositorio_imagens/boot/
# cp -vax /usr/lib/syslinux/modules/bios/poweroff.c32 /repositorio_imagens/boot/
# cp -vax /usr/lib/syslinux/memdisk /repositorio_imagens/boot/

6 - Agora vamos criar o arquivo responsável pelo menu e suas entradas para boot

# vim /repositorio_imagens/boot/pxelinux.cfg/default

UI vesamenu.c32
TIMEOUT 3600
PROMPT 0
MENU RESOLUTION 1024 768
MENU TITLE    PXE BOOT MENU
# Format is: MENU COLOR <Item> <ANSI Seq.> <foreground> <background> <shadow type>
MENU COLOR screen      0  #80ffffff #00000000 std      # background colour not covered by the splash image
MENU COLOR border      0  #ffffffff #ee000000 std      # The wire-frame border
MENU COLOR title       0  #ffff3f7f #ee000000 std      # Menu title text
MENU COLOR sel         0  #ff00dfdf #ee000000 std      # Selected menu option
MENU COLOR hotsel      0  #ff7f7fff #ee000000 std      # The selected hotkey (set with ^ in MENU LABEL)
MENU COLOR unsel       0  #ffffffff #ee000000 std      # Unselected menu options
MENU COLOR hotkey      0  #ff7f7fff #ee000000 std      # Unselected hotkeys (set with ^ in MENU LABEL)
MENU COLOR tabmsg      0  #c07f7fff #00000000 std      # Tab text
MENU COLOR timeout_msg 0  #8000dfdf #00000000 std      # Timout text
MENU COLOR timeout     0  #c0ff3f7f #00000000 std      # Timout counter
MENU COLOR disabled    0  #807f7f7f #ee000000 std      # Disabled menu options, including SEPARATORs
MENU COLOR cmdmark     0  #c000ffff #ee000000 std      # Command line marker - The '> ' on the left when editing an option
MENU COLOR cmdline     0  #c0ffffff #ee000000 std      # Command line - The text being edited
# Options below haven't been tested, descriptions may be lacking.
MENU COLOR scrollbar   0  #40000000 #00000000 std      # Scroll bar
MENU COLOR pwdborder   0  #80ffffff #20ffffff std      # Password box wire-frame border
MENU COLOR pwdheader   0  #80ff8080 #20ffffff std      # Password box header
MENU COLOR pwdentry    0  #80ffffff #20ffffff std      # Password entry field
MENU COLOR help        0  #c0ffffff #00000000 std      # Help text, if set via 'TEXT HELP ... ENDTEXT'

# OPCOES DE ESCOLHA MENU

LABEL GParted
MENU LABEL GParted
LINUX ../memdisk
INITRD ../isos/gparted-live-0.28.1-1-i686.iso
APPEND iso raw

LABEL memtest
MENU LABEL memtest86
LINUX ../memdisk
INITRD ../isos/memtest86+-5.01.iso
APPEND iso raw

LABEL discoLocal
MENU LABEL Disco Local
MENU DEFAULT
localboot

LABEL reiniciar
MENU LABEL Reiniciar
COM32 ../reboot.c32

LABEL desligar
MENU LABEL Desligar
COM32 ../poweroff.c32



7 - Baixar a ISO do memtest86
# cd /repositorio_imagens/isos
#  wget http://www.memtest.org/download/5.01/memtest86+-5.01.iso.zip
# apt-get instal unzip
# unzip memtest86+-5.01.iso.zip
# rm -rf memtest86+-5.01.iso.zip


8 - Baixar a ISO do GParted
# cd /repositorio_imagens/isos
# wget http://downloads.sourceforge.net/gparted/gparted-live-0.28.1-1-i686.iso

9 - Transfira a ISO do Acronis TrueImage para o diretório /repositorio_imagens/isos e criei a entrada no arquivo /repositorio_imagens/boot/pxelinux.cfg/default

LABEL acronisTrueImage
MENU LABEL AcronisTrue Image 
LINUX ../memdisk
INITRD ../isos/acronisTrueImage.iso
APPEND iso raw

9 - Preparação para fazer os backups e restores das imagens dos sistemas operacionais usando o AcronisTrueImage

Vamos utilizar o samba para fazer o leitura e transferência de arquivos para o servidor, poderíamos utilizar o NFS, porém a performance do mesmo fica minima coisa melhor que samba, então decidimos utilizar o samba.

# apt-get install samba

# mkdir -p /repositorio_imagens/imagens
# chmod 777 -R /repositorio_imagens/imagens

Altera o arquivo "/etc/samba/smb.conf" para o seguinte conteúdo

[global]
   workgroup = SUPORTE
   server string = Servidor de Backup e Restore
   netbios name = repositorio
   dns proxy = no
   log file = /var/log/samba/log.%m
   max log size = 1000
   syslog = 0
   panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   map to guest = bad user
   usershare allow guests = yes
   security = user
   guest account = nobody
   oplocks = false
   level2 oplocks = false
   fake oplocks = no
   locking = no
   posix locking = false
   strict locking = false
   kernel oplocks = no
   socket options = IPTOS_LOWDELAY TCP_NODELAY SO_SNDBUF=20480 SO_RCVBUF=20480
   os level = 2
   domain logons = no
   preferred master = no
   domain master = no
   veto files = /autorun.inf/*.pif/*.com/*.mp3/*.wav/*.pif/*.mpg/*.mpeg

[REPOSITORIO]
   path = /repositorio_imagens/imagens
   browseable = yes
   public = yes
   read only = no
   writable= yes
   create mask = 0777
   directory mask = 0777
   csc policy = disable




Read More

quinta-feira, 12 de maio de 2016

Engenharia reversa Shell Script compilado com SHC

Bom Dia,

Ando afastado do blog por alguns motivos particulares, e de estudos, desculpem-me, logo voltarei a postar mais material bacana.

Vamos lá, hoje tinha um script compilado, coisa antiga, sem o source, e precisava saber o que realmente ele fazia, foi então que precisei fazer um 'dump' para pegar o que ele executava.

Algumas pesquisas, algumas leituras, alguns testes, até chegar a este processo.

- Vamos na verdade iniciar o script porém logo em seguida vamos matar o mesmo, para pegar o que ficou na memória, e fazer esse 'DUMP'

- Vamos aumentar o tamanho do 'core' do linux para 1Mb
# ulimit -c 1000000

- Agora vem o pulo do gato, vamos executar o script, com um sleep de alguns microssegundos, e logo em seguida vamos matar ele mesmo $! , repare que nosso script tem o '.sh.x', isso não é regra, o script pode estar somente com '.sh', como sem nenhum ponto.

# ./script.sh.x & ( sleep 0.02 && kill -SIGSEGV $! )

Ao rodar o 'script' o sistema vai retornar um errro "[1]+  Segmentation fault      (core dumped) ./script.sh.x", vai ser criado um arquivo chamado "core.alguma_coisa" , dentro dele vai ter o conteúdo do script, porém vai estar bem poluído, para tal, vamos limpar o mesmo.

# cat core.alguma_coisa| strings

Agora você vai ter a saida em texto puro do script.

Lembrando, somente, utilize esse procedimento quando você é autor do binário, caso contrário estará violando as leis.

Forte Abraço Marcos Carraro.



Read More

quinta-feira, 12 de março de 2015

iptables + módulo time + conexões estabelecidas + conntrack

Buenas,

Montei recentemente na empresa uma rede para os funcionários somente acessarem a internet nos intervalos, porém meu proxy não esta configurado para tratar com as interceptações https, como os acessos serão feitos por mobile wpad não funcionária como esperado, a solução seria fazer o redirecionamento por iptables no qual cai na falta da configuração do proxy.

Solução, fazer um forward da rede funcionários para a rede externa somente nos horários, show, rápido fácil e focado.

iptables -A FORWARD -s 192.168.20.0/255.255.255.0 -m time --timestart 00:00:00 --timestop 11:55:00 --weekdays Sun,Mon,Tue,Wed,Thu,Fri,Sat -j DROP

iptables -A FORWARD -s 192.168.20.0/255.255.255.0 -m time --timestart 21:59:00 --timestop 23:59:00 --weekdays Sun,Mon,Tue,Wed,Thu,Fri,Sat -j DROP

iptables -A FORWARD -s 192.168.20.0/255.255.255.0 -m time --timestart 12:55:00 --timestop 21:00:00 --weekdays Sun,Mon,Tue,Wed,Thu,Fri,Sat -j DROP

Ok, fiz o teste show, as conexões com estado "new" fora desse horário é dropada, porém se o usuário acessa as 12:54 a conexão dele passa de "new" para "established", com isso ele teria esse canal fechado até o término da conexão por uma das partes.

Ali começou o problema, pois eu tinha que garantir que a conexão seria morta neste horário, pois o bem o iptables faz um rastreamento das conexões chamdo de conntrack, logo já tinha uma solução, apagar as entradas da rede no conntrack, assim eu faria com que a conexão solicita-se novamente o registro para o acesso, e como iria bater com a regra pois a conexão seria "new" o pacote seria dropado, tá feita a solução.

Para isso nada melhor que a crontab e um script.

Na crontab coloco para rodar alguns minutos depois do tempo final do intervalo para garantir que ninguém vai ficar de bobeira.

Lista as entradas da rede funcionários, sem repetir
# conntrack -L conntrack |  awk '{print $5}' | grep src=192.168.20. | sed -e "s/src=//g" | sort | uniq

Apaga a entrada
# conntrack -D -s 192.168.20.88


#!/bin/bash
conntrack -L conntrack |  awk '{print $5}' | grep src=192.168.20. | sed -e "s/src=//g" | sort | uniq |
    while read ip; do
        conntrack -D -s $ip > /dev/null
done



Read More

segunda-feira, 23 de fevereiro de 2015

Testando "throughput" de rede

Boa Noite,

Pessoal, hoje vamos ver como fazer um teste de carga na rede / servidor.

Partindo do princípio que você esteja usando Centos/Fedora instale no servidor e no cliente o pacote "iperf"

No servidor vamos colocar ele em modo de "escuta"

# Ip Servidor: 192.168.1.1
# iperf -s

Cliente
# iperf -c 192.168.1.1

Agora vamos aumentar o tamanho do buffer para 10mb, para fazer isso utilize o parâmetro "-w 10M" de 10M pode ser até 10G

Exemplos

# Ip Servidor: 192.168.1.1
# iperf -s -w 10M

Cliente
# iperf -c 192.168.1.1 -w 10M

Agora faça a leitura deste arquivo para otimizar alguns parâmetros do kernel para melhorar a rede
https://www.frozentux.net/documents/ipsysctl-tutorial/

Tem um link no digitalocean que não consigo encontrar que também tratava dos parâmetros de kernel era mais direto ao ponto.

Mais informações
https://iperf.fr/

Obs:. O ideal é antes de botar para funcionar os novos parâmetros é de salvar o valor default do mesmo, pois as vezes existe a melhora como pode piorar.

Bons Testes
Read More

sexta-feira, 19 de setembro de 2014

Criando pacotes RPM Centos 6.5 - 2

Buenas,

Continuidade de http://marcoscarraro.blogspot.com.br/2014/09/criando-um-repositorio-de-rpm-1.html

Então lá vamos nos criar os pacotes RPM.

Pacotes necessários
# yum install rpmdevtools

Vamos criar um usuário limpo para fazer a criação dos pacotes, para não puxar permissões especiais.
# adduser pacotes
# passwd pacotes

Logando no usuário
# su pacotes

Vamos criar a estrutura básica do RPM, o ideal é trabalhar sempre no ~ do usuário
# cd ~
# rpmdev-setuptree

Vai criar uma pasta chamada rpmbuild

Informações da estrutura criada.
BUILD é usado como espaço de rascunho para compilar realmente o software.
RPMS contém o RPM binário que o rpmbuild constrói.
SOURCES destina-se ao código-fonte.
SPECS contém seu arquivo ou arquivos spec— um arquivo spec por RPM que desejar construir.
SRPMS contém o RPM fonte construído durante o processo.

Ok, preparado o terreno, vamos criar a estrutura do nosso programa, a estrutura do programa pode ser /etc/programa , /usr/local/programa , /var/log/programa 

# mkdir -p pacote-1/opt/pacote/
# mkdir -p pacote-1/var/log/pacote/
# echo "Arquivo de testes" > ./pacote-1/opt/pacote/conteudo.conf

Depois da estrutura criada, os arquivos transferidos, é hora de compactar tudo, repare que vamos salvar dentro da pasta SOURCES.
# tar -czvf rpmbuild/SOURCES/pacote-1.tar.gz pacote-1/


Feito isso é a hora de criar o SPEC, esse cara é quem vai reger toda instalação.
# rpmdev-newspec rpmbuild/SPECS/pacote.spec

Utilize este arquivo pré elaborado por mim, ele é genérico, porém esta comentado referente ao que cada bloco ira fazer. Altere as demais informações, onde o Name é utilizado junto do Version, por isso criamos o pacote-1.tar.gz, também pode alterar as dependências do pacote, colocar ações pré instalação, pós instalação, pré desinstalação, pós desinstalação.


#
#  DESCRICAO DO PACOTE E CRIADOR
#
Name: pacote
Version: 1 
Release: 0
Summary: PACOTE ABC De testes
Group: APP
License: GPL
URL: http://marcoscarraro.blogspot.com

#
#  INFORMACOES DO PACOTE, E DEPENDENCIAS
#
Source0: %{name}-%{version}.tar.gz
BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-buildroot 
#Requires: httpd php php-common

#
#   DESCRICAO GERAL
#
%description
Pacote criado para testes

#
#   ACOES A SEREM TOMADAS
#   %pre,      %post,       %preun,       %postun
#   pre instal, post instal, pre uninstal, pos uninstal
%pre
echo "Instalando O pacote aguarde..."


%prep
%setup -q

#
#  EXECUTA A INSTALACAO, PODEMOS INCREMENTAR A MESMA
#
%install
mkdir -p %{buildroot}
cp -R * %{buildroot}

#
#  FAZ A LIMPEZA DA INSTALACAO
#
%clean
rm -rf %{buildroot}

#
#  TERMINA A INSTALACAO, PODEMOS APLICAR COMANDOS AQUI
#
%post
echo "Pacote Instalado com sucesso"

#
#  INDICA OS ARQUIVOS,PASTAS INSTALADOS, PARA SABER QUANDO FOR FAZER UM RPM -E
#
%files
%defattr(-,root,root,-)
/var/log/pacote
/opt/pacote/pacote.conf
/opt/pacote/

Abraços
Marcos Carraro
Read More

quinta-feira, 18 de setembro de 2014

Criando um repositório de RPM - 1

Buenas,

Começa aqui uma documentação para equalizar a estrutura linux.

A ideia é, montar um repositório de pacotes central, e recriar ISO do Centos pré configurado.

Porque, assim você pode homologar os pacotes antes que seus servidores baixem eles, ou deseja disponibilizar algum pacote recompilado...

Para isso é necessário que a máquina que vai conter todos RPM precisa ter os seguintes pacotes.
# yum install yum-plugin-downloadonly httpd createrepo

Primeiro vamos criar a estrutura básica para disponibilizar os pacotes.

# mkdir -p /var/www/html/repo/6/x86_64/pacotes 

Onde 6 é a versão do Centos, e onde x86_64 é a arquitetura dos pacoes no nosso caso é x64.

Criado a estrutura vamos baixar os pacotes que vamos disponibilizar no repositório.

# yum install --downloadonly --downloaddir=/var/www/html/repo/6/x86_64/base/ httpd httpd-tools php php-cli php-common php-mysql php-pdo php-gd 

Porém muitas vezes temos instalações super leves, minimalistas, então é necessário também disponibilizar além dos pacotes as dependências dos mesmos.

# yum install --downloadonly --downloaddir=/var/www/html/repo/6/x86_64/base/ $(repoquery --requires httpd httpd-tools php php-cli php-common php-mysql php-pdo php-gd  )

Ok, efetuado todos downloads, vamos criar o índice para que seja mais fácil do yum verificar se o pacote que ele precisa tem no nosso repositório.

# createrepo /var/www/html/repo/6/x86_64/pacotes

Pronto, agora já temos o repositório ativado, vamos criar o arquivo para o servidor utilizar o nosso repo.

[pacotes]
name= pacotes homologados
baseurl=http://repo.casa.local/repo/$releasever/$basearch/pacotes
gpgcheck=0


Pronto, o repositório esta criado, próximo post sera criando a ISO personalizada. e o outro post sera criando um pacote rpm.

Abraços
Marcos Carraro
Read More

sexta-feira, 8 de agosto de 2014

Jquery SHA1 + php + mysql + tcpdump = Login seguro

Salve Salve turma,

Tava fazendo umas brincadeiras, quando eu pude perceber que podemos ter problemas de seguranças em formulários que não são https e tem uma senha digitada.

Não vou demonstrar o php recebendo os valores, pois este não é o intuito.

- Primeiro uma pagina simples...

Formulário simples, onde envia para o php

<script type="text/javascript">
    $(document).ready(function() {
        $("#FormLogin").submit(function() {
            $.post('<?php echo site_url('login/logar'); ?>',
                    $(this).serialize(),
                    function(data) {
                        $("#retorno").html(data)
                    }
            );
            return false;
        });
    });
</script>

    <form class="form-signin" id="FormLogin" method="post" role="form">
        <h2 class="form-signin-heading logo_login"></h2>
        <h4 class="form-signin-heading">Extranet Dal Mobile LTDA</h4>
        <input name="usuario" type="text" class="form-control" placeholder="Usuário" required autofocus>
        <input name="senha" type="password" class="form-control" placeholder="Senha" required>
        <button class="btn btn-lg btn-primary btn-block" type="submit">Logar</button>
        <br>
        <div id="retorno"></div>    
    </form>




- Testando
[root@note-marcos upload]# tcpdump -i lo -vvv -l -A | grep -i admin

........usuario=admin&senha=123


- Como vai ficar

<script src="http://www.astronomy.ie/print/www.independent.ie/independent.ie/javascript/jquery.sha1.js%3Fv=3"></script>

<script type="text/javascript">
    $(document).ready(function() {
        $("#FormLogin").submit(function() {

            var pass = $.sha1($('input[name="senha"]').val()); // Pega o value do input e manda para a função
            $('input[name="senha"]').val(""); // Limpa o input da senha
            $('input[name="senha"]').val(pass); // Grava no input da senha a nova senha em sha1

            $.post('<?php echo site_url('login/logar'); ?>',
                    $(this).serialize(),
                    function(data) {
                        $("#retorno").html(data)
                    }
            );
            return false;
        });
    });
</script>

    <form class="form-signin" id="FormLogin" method="post" role="form">
        <h2 class="form-signin-heading logo_login"></h2>
        <h4 class="form-signin-heading">Extranet Dal Mobile LTDA</h4>
        <input name="usuario" type="text" class="form-control" placeholder="Usuário" required autofocus>
        <input name="senha" type="password" class="form-control" placeholder="Senha" required>
        <button class="btn btn-lg btn-primary btn-block" type="submit">Logar</button>
        <br>
        <div id="retorno"></div>    
    </form>


- Testando novamente 
[root@note-marcos upload]# tcpdump -i lo -vvv -l -A | grep -i admin

........usuario=admin&senha=40bd001563085fc35165329ea1ff5c5ecbdbbeef

Read More

quarta-feira, 18 de junho de 2014

Segmentando a rede Visitantes da rede principal

Segmentando a rede visitantes da rede principal.
Equipamentos.
Switch HP
Access Point Ubiquiti UNIFI ULR

Vlan
Vlan da visitantes 220
Configurações na Switch
No switch vamos configurar a porta onde este conectado o AP para usar a porta como tagged (trunk) com as vlans:  1 (Vlan default da rede), 220 (Vlan para a rede visitantes).
Também não podemos esquecer de configurar a porta onde esta conectado o servidor de DHCP e o Roteador para que eles possam enxergar esta rede, distribuir os IPs e fazer os roteamentos.

1 – Criando a VLAN
2 – Configurando a porta onde esta conectado o AP, selecione a VLAN desejada e coloque como “tagged” em outras palavras é “trunk”, as portas que participam da vlan 220 ficaram em verde, caso alguma porta fosse dedicada a esta VLAN ficaria em AZUL.
Feito esta alterações, clique em “apply” e depois no menu da esquerda Device->Configuration
Na aba “Save” clique no botão “Save Currente Settings”, pronto estamos com a switch configurada.
Vamos ao próximo passo configurar a interface com a VLAN no firewall.
Configurando Interface no Servidor
O arquivo de configuração deve ser cirado em  /etc/sysconfig/network-scripts/ (Familia RedHatLike), o nome fica
ifcfg-(Placa de rede com o cabo conectado na switch).(ID da vlan)
Exemplo: ifcfg-eth1.220
# cat /etc/sysconfig/network-scripts/ifcfg-eth1.220
VLAN=yes
DEVICE=eth1.220
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=192.168.10.1
NETMASK=255.255.255.0


Configurando DHCPD
 Primeiro, deve-se indicar quais interfaces estarão distribuindo os IPS, para isso altere o arquivo /etc/sysconfig/dhcpd.
# cat /etc/sysconfig/dhcpd
# Command line options here
DHCPDARGS=eth1 eth1.220

Arquivo dhcpd.conf
# cat /etc/dhcpd.conf
ddns-update-style none;
default-lease-time 259200;
max-lease-time 518400;
authoritative;
log-facility local7;

# REDE ADM
subnet 192.168.1.0 netmask 255.255.255.0 {
# --- default gateway
        option routers                  192.168.1.254;
        option subnet-mask              255.255.255.0;

        option domain-name-servers      192.168.1.253;
        option netbios-name-servers     192.168.1.253;
        option ntp-servers              192.168.1.253;
        option domain-name              "rede.interna";

        range 192.168.1.10 192.168.1.240;
        option broadcast-address 192.168.1.255;

ddns-update-style none;
default-lease-time 259200;
max-lease-time 518400;
authoritative;
log-facility local7;

#--------------------------------------------------------
# ips fixados
  host coletor1 {
hardware ethernet 00:23:68:E4:7F:78;
fixed-address 192.168.1.150;
   }
}
# REDE VISITANTES
subnet 192.168.10.0 netmask 255.255.255.0 {
# --- default gateway
        option routers                  192.168.10.1;
        option subnet-mask              255.255.255.0;

        option domain-name-servers      192.168.10.1;
        option domain-name              "rede.interna";

        range 192.168.10.10 192.168.10.90;
        option broadcast-address 192.168.10.255;
}

Configurando APs
Para isso tem que estar rodando o próprio programa da Ubiquiti. Então acesso o seu IP no navegador na porta 8443.
Vá em Wireless networks, supondo que você já tenha uma rede criada vamos configurar a VLAN.

Feito isso clique em “apply” e esta finalizado.




Forte Abraço
Marcos Carraro















Read More

quinta-feira, 3 de abril de 2014

NMAP vs CONFICKER

É velho, mas ainda existe, e por causa dele, fiquei numa blacklist.

Solução.

#sudo nmap -sC --script=smb-check-vulns --script-args=safe=1 -p445  -d -PN -n -T4  --min-hostgroup 256 --min-parallelism 64  -oA conficker_scan 192.168.1.0-254 > conficker

Na máquina atualizar o XP para o SP3, aplicar os FIX, e também http://brazil.kaspersky.com/recursos/combater-conficker 

O legal do NMAP é que o retorno dele é fácil detectar alguma máquina infectada.

Nmap scan report for 192.168.1.110
Host is up, received arp-response (0.0097s latency).
Scanned at 2014-04-03 16:32:49 BRT for 2s
PORT    STATE SERVICE      REASON
445/tcp open  microsoft-ds syn-ack
MAC Address: 00:1D:1A:03:6E:F8 (OvisLink S.A.)

Host script results:
| smb-check-vulns:
|   MS08-067: CHECK DISABLED (remove 'safe=1' argument to run)
|   Conficker: Likely INFECTED (by Conficker.C or lower)
|   regsvc DoS: CHECK DISABLED (add '--script-args=unsafe=1' to run)
|   SMBv2 DoS (CVE-2009-3103): CHECK DISABLED (add '--script-args=unsafe=1' to run)
|   MS06-025: CHECK DISABLED (remove 'safe=1' argument to run)
|_  MS07-029: CHECK DISABLED (remove 'safe=1' argument to run)
Final times for host: srtt: 9730 rttvar: 15146  to: 100000


Marcos Carraro
Read More

quarta-feira, 18 de dezembro de 2013

Quebrando paradigmas - Descobrir ip liberado do AirOS e também explorando falha do AirOS

Buenas,

Casa nova, cabo novo encontrado.... e ainda mais de rede, nada melhor do que passar alguns minutos verificando o que pode estar passando por ali...

De primeira instancia o cabo de rede plugado e o meu querido linux não pegava IP, ok mais do que previsto, proximo passo vamos verificar pois em AP provavelmente vai ter um HUB então HUB é burro e com isso qualquer pacote que for ou chegar na REDE devera gritar no HUB, com isso consigo pegar o IP...

Então bora rolar "# tcpdump -i etho -vvv" e adivinhem nada!!! Esta cabo esta direto ligado em um aparelho, mas que aparelho....

Então espere mais um pouco e mais um pouco...

Algumas linhas de tcpdump e então percebi que aparecia o NOME do router IP do mesmo...

"
23:15:32.622291 CDPv1, ttl: 120s, checksum: 376 (unverified), length 78
Device-ID (0x01), length: 20 bytes: 'NOME_DO_ROUTER'
Address (0x02), length: 13 bytes: IPv4 (1) 192.168.2.1 <-- IP do Router
Capability (0x04), length: 4 bytes: (0x00000001): Router
Version String (0x05), length: 9 bytes:
 XM.v5.3.3
Platform (0x06), length: 3 bytes: 'LM5'
unknown field type (0xff), length: 1 byte:

"

Então esperei mais um pouco e peguei o MAC deste cara...

O que eu fiz na verdade foi, setar o ip do router no meu notebook juntamente do MAC do router, com isso o trafego veio para a minha maquina, com isso o tcpdump rodando sempre, percebi que existia várias requisições de ARP para um determinado IP 192.168.2.2...

Então relacionei que o IP do host liberado era 192.168.2.2, show de boletas, já tinha o IP liberado, então setei o mesmo no notebook, adivinha... conseguia pingar o router, primeiro passo concluído,  agora so me restava saber se este IP também poderia ser um gateway... então adivinhe "route add default gw 192.168.2.1" e um ping "8.8.8.8" com resposta, isso é muito bom...

A partir disso vamos ver o que roda neste ip 192.168.2.1..

#nmap -sS 192.168.2.1

Existe uma porta 80 e um hardware possivelmente Ubquiti, opa então bora...

http://192.168.2.1

Show de bola, acessou, então eu sabia de tempos que tem uma falha no AirOS, revirei meus documentos e encontrei...

É uma manipulação de arquivos a partir da URL...

http://192.168.2.1/admin.cgi/cg.css

a parte /admin.cgi/cg.css é o arquivo que permite injetar comandos do tipo, ls, cd, cat.....

Alguns arquivos legais...

// Tem usuário e senha armazenados
cat /etc/default.cfg

Neste arquivo temos a senha default que é:
user: ubnt
senha: ubnt
SenhaCriptografada: users.1.password=VvpvCwhccFv6Q

O que eu fiz foi, efetuar o download do arquivo /tmp/system.cfg, alterar a senha, então efetuar upload novamente do arquivo.

Escrever as configurações do arquivo que eu efetuei upload e assim alterar a senha.
# cat /tmp/upload/system.cfg > /tmp/system.cfg

Aplicar a configuração no router com a minha senha, sem alterar a configuração do restante.
# cfgmtd -f /tmp/system.cfg -w && reboot


Abraços
Marcos Carraro
Read More

quinta-feira, 10 de outubro de 2013

Backup Postgresql Remotamente

Buenas,

Hoje lembrei-me que deveria fazer backup da pequena base do BI que esta no postgresql... então nada melhor do que por a mão na massa.

Meu servidor de backup é um ML110 onde já tem várias rotinas de Backup, sim eu não tenho um servidor de backup, não utilizo nenhum software de backup, e muito bem tenho meus scripts que até hoje nunca me deixaram na mão, com isso eu tenho uma maleabilidade dos backups tudo na mão, diferente dos programas que já me deixaram na mão, talvez por não saber utilizar ou, bueno vamos ao que interessa.

Pacotes necessários
Centos 6.4 x64

Download do repostitorio do postgresql
# rpm -Uvh http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm
# yum update

Vamos apenas instalar os binários básicos para a manutenção do banco remotamente.
#  yum install postgresql92 postgresql92-libs

Então já esta tudo instalado, não vou explicar como fazer o postgresql liberar o acesso remoto!

Comando para executar o bkp

# pg_dump -C -h IP_DO_SERVIDOR -U USUARIO_DO_DB DB_NAME > bkp.sql

Bueno, com isso já é possível executar o bkp do seu PostgreSQL...

abraços



Read More

sexta-feira, 4 de outubro de 2013

jquery disable ctrl key and disable right click mouse / Jquery desabilitar ctrl e botão direito do mouse

Buenas,

Alguns minutos desenvolvendo o script, os códigos são da tabela ascii

http://www.theasciicode.com.ar/ascii-printable-characters/lowercase-letter-a-minuscule-ascii-code-97.html



<script type='text/javascript'>
    function bloqueia_mouse_teclado() {

        // CTRL V v
        $(document).ready(function() {
            $(document).keydown(function(event) {
                if (event.ctrlKey == true && (event.which == '118' || event.which == '86')) {
                    event.preventDefault();
                }
            });
        });

        // CTRL C c
        $(document).ready(function() {
            $(document).keydown(function(event) {
                if (event.ctrlKey == true && (event.which == '97' || event.which == '67')) {
                    event.preventDefault();
                }
            });
        });

        // CTRL U u
        $(document).ready(function() {
            $(document).keydown(function(event) {
                if (event.ctrlKey == true && (event.which == '85' || event.which == '117')) {
                    event.preventDefault();
                }
            });
        });

        // CTRL A a
        $(document).ready(function() {
            $(document).keydown(function(event) {
                if (event.ctrlKey == true && (event.which == '65' || event.which == '97')) {
                    event.preventDefault();
                }
            });
        });

        // CTRL S s
        $(document).ready(function() {
            $(document).keydown(function(event) {
                if (event.ctrlKey == true && (event.which == '83' || event.which == '115')) {
                    event.preventDefault();
                }
            });
        });

        // CTRL X x
        $(document).ready(function() {
            $(document).keydown(function(event) {
                if (event.ctrlKey == true && (event.which == '88' || event.which == '120')) {
                    event.preventDefault();
                }
            });
        });

        // CTRL J j
        $(document).ready(function() {
            $(document).keydown(function(event) {
                if (event.ctrlKey == true && (event.which == '74' || event.which == '106')) {
                    event.preventDefault();
                }
            });
        });



        // Bloquear botão direito do mouse
        $(document).bind("contextmenu", function(e) {
            return false;
        });
    }


    bloqueia_mouse_teclado();
</script>
Read More

sexta-feira, 13 de setembro de 2013

Que tal bloquear os principais IPS atacantes do mundo???

O site é este
http://isc.sans.org/sources.html

O scripte é este.

cd /tmp
wget http://isc.sans.org/sources.html --quiet
if [ $? -ne 0 ]
then
 echo "Erro ao tentar efetuar download."
 exit 1
fi
for bad_ip in $(cat /tmp/sources.html |grep ipinfo |sed -e "s/.*ip\=\(.*\)\">.*/\1/g" | sed -e 's/^[0]*//' -e 's/\.[0]*/\./g')
do
 iptables -A INPUT -s $bad_ip -j DROP
done
rm /tmp/sources.html*
Read More

DDOS Do navegador??

Você sabe quantas conexões o seu navegador abre ao acessar um determinado site??? Não então conheça este belo sistema que mostra o ranking dos navegadores, suas conexões abertas...

http://www.browserscope.org/?category=network

Pergunta- Porque você deve ler e conhecer este site?
Resposta- Porque você vai montar algumas regras no seu Firewall nas quais deve saber que o minimo que um IP pode abrir de conexões apenas acessado seu site pode ser de 6 e pode chegar a 60, baseado nestes calculos você sabe que suas regras deveram ser altamentes 'perfumadas' para que nenhum usuário do IE9Mobile caia na sua malha fina.

leia também. http://marcoscarraro.blogspot.com.br/2013/09/que-tal-bloquear-os-principais-ips.html

Abraços Marcos Carraro.
Read More

terça-feira, 27 de agosto de 2013

DVR VID8 - Conectando Telnet - efetuando bkp

Buenas Galera,

Tenho um DVR da VID8 para suporte de 16 cameras, acredito que os procedimentos aqui citados são padrão para todos.

Todo equipamento deve ter um IP, se for rodar um NMAP no IP vai perceber que existe uma porta telnet aberta.

Então bora lá.

# telnet 192.168.1.120

// Vai solicitar usuário e senha
User: root
Pass: não existe apenas pressionar enter.

Ao logar é algum linux HiLinux muito seco, uma porcaria....

Precisei montar um diretório NFS no DVR, então já tenho o Centos configurado para NFS server.

No DVR para conectar ao NFS utilize.

# mount -t nfs -o nolock 192.168.1.1:/bkp /mnt

Porém para efetuar isso automaticamente percebi que a arquitetura do cara inicia um script chamado dvr.sh fica em /home/.

# cd /home/
# chmod 777 dvr.sh
# vi dvr.sh

// Insira
mount -t nfs -o nolock 192.168.1.1:/bkp /mnt

Efetue as alterações necessárias este script é carregado automaticamente ao iniciar o SO.

esc
:wq!

-----------------

O script de backup ficou assim.

ANO=`date +%Y`
DIA=`date +%d`
MES=`date +%m`

DIA=`expr $DIA - 1`
if [ $DIA -eq 0 ]; then
        MES=`expr $MES - 1`
        if [ $MES -eq 0 ]; then
                MES=12
                ANO=`expr $ANO - 1`
        fi
                DIA=`cal $MES $ANO`
                DIA=`echo $DIA | awk '{ print $NF }'`
fi

DIRETORIO_DST='/mnt/'
DIRETORIOS_SRC='/hdd*'

NOME_ARQ_BKP=`date +%d-%m-%Y`

mkdir $DIRETORIO_DST$NOME_ARQ_BKP

find $DIRETORIOS_SRC -iname "$ANO$MES$DIA*"  -exec mv {} $DIRETORIO_DST$NOME_ARQ_BKP \;


Abraços
Marcos Carraro.
Read More

quarta-feira, 8 de maio de 2013

Range de IPS de alguns serviços importantes no mundo de hoje!!!

Buenas,

- Facebook
69.171.224.0/24
74.119.76.0/24
204.15.20.0/24
66.220.144.0/24
69.63.176.0/24

- Myspace67.134.143.0/24
204.16.32.0/24
216.178.32.0/24
63.135.80.0/24

- Caixa200.201.160/20

- Hotmail64.4.0.0/18
207.46.0.0/16

- Skype64.4.23.0/24
65.55.223.0/24
111.221.74.0/24
111.221.77.0/24
157.55.56.0/24
157.55.130.0/24
157.55.235.0/24
157.56.52.0/24
213.199.179.0/24

Se alguém tiver mais IPs que sejam de serviços importantes e quiserem compartilhar...

Abraços
Read More

terça-feira, 2 de abril de 2013

Cursos Técnicos Escola INFOSERV


Escola Infoserv inicia cursos específicos nas áreas de:

Curso: Java Básico e Avançado
Carga Horária: 100 horas aulas
Dias e Horários: Sábados das 13:30 às 17:30
Início: 13/04/2013

Curso: Windows 2008 Server Módulo I e II
Carga Horária: 50 horas aulas
Dias e Horários:
 Segundas das 19 às 22
Início: 15/04/2013

Curso: Montagem e Manutenção
Carga Horária: 54 horas aulas
Dias e Horários: Segundas das 19 às 22
Início: 06/05/2013

Curso: Linux para Servidor Módulo I
Carga Horária: 40 horas aulas
Dias e Horários: Sextas das 19 às 22
Início: 28/06/2013

QUALIFIQUE-SE. INFOSERV A MELHOR ESCOLHA.
Bento  3452.7928 |  Barbosa 3461.3333
Farroupilha 3268.6633 |  Garibaldi 3462.3330
www.escolainfoserv.com.br
Read More

sexta-feira, 29 de março de 2013

Projeto ofuscador php

Buenas,

Sexta-feira santa, é dia de ficar em casa, então vamos fazer algo produtivo... dei inicio ao ofuscador, já temna web, algumas coisas online, que fazem isso, porém poucos sabem como realmente funciona o motor de ofuscação.

Segue o meu rascunho do projeto, fica aberto para melhorias.


Read More

sexta-feira, 22 de março de 2013

Animação demonstrando como funciona DNSSEC

Estava viajando na web, até que me deparei com um posto no blog.corujadeti.com.br com um vídeo de como funciona o dnssec, achei interessante publicar no meu blog para mais leitores.



Fonte: http://blog.corujadeti.com.br/video-explicando-o-funcionamento-do-dnssec/
Read More

sexta-feira, 16 de novembro de 2012

Centos + VLAN

Buenas Galera,

Uma dica rapida, para aqueles que falam que não podemos virtualizar firewall, dmz.....

O que é dmz???

É uma zona onde os seus servidores que tem contato direto com a internet devem permanecer, caso eles sofram alguma invasão o hacker, cracker não vai conseguir chegar até a sua rede, e se algum computador da sua rede for invadido, so vai conseguir acessar os serviços que você liberou no FW.

Uma ilustração dmz.


Hoje com a grande quantidade de servidores, não podemos ter uma switch dedicada para a DMZ, o mesmo servidor várias vezes hospeda outras tantas maquinas, e a nossa tarefa na empresa é de obter os melhores resultados utilizando ao máximo os equipamentos. Então surgiu a necessidade de criar a dmz para vlan.

Switch.

vlan_dmz - Tagged com ID 100




vlan Rede - Untagged ID 1





- Detalhe das portas
    Repare que as mesmas portas que dão suporte a minha rede, também participam da VLAN dmz, graças ao tag.



---------------------------------------------------

Feito a preparação da rede, vamos preparar o centos.

Se utilizar xenserver o mesmo já tem a opção de criar a nic com o id da vlan.

Fiz dos dois tipos, aqui vou explicar como se faz pelo Centos.

Verificando se o modulo esta ativo
# lsmod | grep 8021q

Para ativar
# modprobe 8021q

Configurando a eth.

eth0 - Participa da rede interna

# cat /etc/sysconfig/network-scripts/ ifcfg-eth0

DEVICE="eth0"
BOOTPROTO="static"
HWADDR="B6:48:E2:AE:5C:9A"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR="192.168.1.248"
NETMASK="255.255.255.0"
BROADCAST="192.168.1.255"
GATEWAY="192.168.1.254"





eth0.100 - Participa da DMZ
# cat /etc/sysconfig/network-scripts/ifcfg-eth0.100 # Repare que o .100 indica a ID da minha vlan
DEVICE="eth0.100" # Repetição do .100
VLAN="yes" # Tag que informa a utilização de VLAN
HWADDR="B6:48:E2:AE:5C:9A"
BOOTPROTO="static"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR="172.20.1.251"
NETMASK="255.255.255.0"

Muito fácil configurar VLAN no centos, apenas tem que prestar atenção para fazer a copia do arquivo de configuração da eth como a id.
cp ifcfg-eth0 ifcfg-eth0.100
Read More

Posts que a turma mais esta lendo...

Posts que a turma mais esta lendo...

Marcos Carraro