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

quinta-feira, 27 de dezembro de 2018

Instalando QEMU-KVM virt-manager Ubuntu/Debian/MX Linux

Buenas, Dica rápida!

Instalando kvm com virt-manager para subir máquinas virtuais.

Pacotes necessários

#apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager vlan dnsmasq ebtables qemu-utils  gir1.2-spice-client-gtk-3.0

Alguns pacotes específicos como vlan é para subir as placas de rede virtual segmentadas por vlan, virt-manager é para gerenciar as VMs, os demais pacotes são necessários para que o sistema funcione bem.

Abs
Read More

terça-feira, 3 de outubro de 2017

Migrando Centos 4 5 6 do XenServer 6 para Vmware

Bom Dia,

Após um período sem publicar novos conteúdos voltei, felizmente estamos com uma demanda ótima de trabalhos, o que torna a vida pessoal mais conturbada.

Vamos ver algumas dicas para migrar o centos do xenserver para o vmware.

- Iniciar a live do centos e fazer um chroot do disco do Centos que migramos, normalmente a live já indica o destino para o chroot.

chroot /mnt/sysimage

Feito isso, certifique-se que a VM está com acesso a internet

- Vamos remover os pacotes relacionados com o xen
 rpm -qa | grep kernel-xen | xargs rpm -e
 rpm -qa | grep xen | xargs rpm -e

- Verifique se existir algum repositório em /etc/yum.repos.d/ com nomes do xen e delete os arquivos também.

- Instalar um kernel sem puro
yum install kernel

- Caso não tenha nenhum kernel tente reinstalar o kernel
yum reinstall kernel

Após instalar o kernel é preciso fazer alguns ajustes no grub.conf para que ele inicie o linux corretamente

vim /boot/grub/grub.conf

A entrada do menu deverá ficar parecida desta, claro que a versão do kernel poderá mudar..

title CentOS (2.6.18-419.el5.centos.plus)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-419.el5.centos.plus ro root=/dev/sda1
        initrd /initrd-2.6.18-419.el5.centos.plus.img


Após alterar a entrada no grub, vamos regravar para garantirmos

grub-install --recheck /dev/sda


Altere agora o arquivo /etc/inittab procure  "co:2345:respawn:/sbin/agetty xvc0 9600 vt100-nav
" e comente a linha, logo a baixo, deverá ter 6 linhas comentadas parecidas com as seguintes

#1:2345:respawn:/sbin/mingetty tty1
#2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6

Descomente as linas 1: 2: 3: não tem necessidade de liberarmos 6 ttys...

Altere o arquivo  /etc/modprobe.conf para o conteudo a seguir

alias eth0 pcnet32
alias scsi_hostadapter mptbase
alias scsi_hostadapter1 mptspi
alias scsi_hostadapter2 ata_piix 

Feito isso, reiniciei a VM, provavelmente ela irá iniciar 100%...

Read More

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

segunda-feira, 12 de dezembro de 2016

Controlando Sessão remota win 2012 R2

Bom Dia,

Uma dica rápida.

Até o 2008 Server, para controlar uma sessão do usuário era preciso habilitar na conta do usuário a controle remoto, e depois conectar no mesmo usando o gerenciador de tarefas em usuários conectados.

No Windows 2012 isso mudou, a forma mais rápida que encontrei para contornar a situação foi.

- Habilitar no usuário o controle remoto e interagir com a sessão, sem ele permitir ou não.

- Criado uma GPO para liberar o controle remoto sem a autorização do usuário
Configurações do Computador -> Modelos Administrativos -> Componentes do Windows -> Serviços de Área de Trabalho Remota -> Host de Sessão da Área de Trabalho -> Conexões
   A Opção a ser configurada é a "Definir Regras para o controle de sessão do usuário dos Serviços de Área de Trabalho Remota."

- Depois execute no menu iniciar via mstsc mesmo para gerenciar a sessão, exceto que é preciso informar o ID da sessão do usuário no servidor. Para saber o ID da sessão executa no CMD o "qwinsta"

mstsc /shadow:ID_SESSAO_USUARIO /control /noConsentPrompt



Forte Abraço, e uma ótima semana a todos.

Read More

quinta-feira, 17 de novembro de 2016

Lenovo Error 1962 - Xenserver

Buenas,

Erro 1962 ao dar boot pós instalação do XenServer.

- Boot Legacy
- Boot Secure disable
- Virtualization Enable

Para resolver é preciso iniciar o boot pelo CD, e não pressionar enter, digite menu.c32 , ele vai redirecionar para uma tela, onde tem várias opções, selecione a primeira opção "install", e pressione "tab" vamos editar as opções de instalação, antes dos caracteres "---" adicione o seguinte comando "disable-gpt" .

Imagens de exemplo.
- BOOT PELO CD, MENU.C32






- OPÇÃO PARA ADICIONAR ANTES DO "---"
Read More

quinta-feira, 10 de novembro de 2016

Configurando servidor NTP para Ubiquiti Unifi

Olá Caros leitores e leitoras.

Dei um tempo para novas postagens, devido dos afazeres que estão tomando muito de meu tempo, e também do ciclismo o qual participo de provas.

Recentemente precisei fazer a configuração de um servidor NTP para que as antenas do Unifi buscassem dele a data e a hora.

No meu caso tenho a controladora instalada em um Debian.

Para isso vamos criar um arquivo chamado config.properties

Primeiro é preciso acessr o linux da controladora, e ir a pasta onde ficará salvo este arquivo.

# cd /usr/lib/unifi/data/sites/default/

Em vermelho é o site padrão, onde esta o ambiente que desejamos configurar, para descobrir qual é o seu site padrão ao acessar a url da controladora a mesma informa qual é o nome do site...

https://192.168.30.9:8443/manage/site/default/devices/1/50/uap/performance

Também em vermelho destacado.

Primeiramente crie o arquivo
# touch config.properties


Feito isso é preciso editar o mesmo
# vim config.properties


Adicione a seguinte linha, pool.ntp.br é o dns dos servidores de NTP do Brasil.

config.ntp_server=pool.ntp.br

Salve o arquivo.

Porém é preciso fazer com que as antenas se provisionem novamente, para isso acesse algum ssid do seu wifi e ative o "Guest", aplique, aguarde ele replicar para as antenas, e depois desabilite o "Guest", isso irá replicar para elas as configurações.

Forte abraço a todos!


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, 16 de julho de 2015

Automatizando a instalação do Debian Jessie 8.1 com preseed

Buenas,

Mudando um pouco, já que o Centos ainda não esta dando suporte a ARM, esta consumindo muito recurso quando preciso poupar os mesmos (Tem projeto nascendo) então como na vida muitas vezes temos pequenos desvios...

Neste caso vamos ver como automatizar a instalação do Debian Jessie, porém o usuário somente particiona o disco, o restante é feito automaticamente.

Para isso, vamos baixar a ISO original ~650mb
# cd ~
# wget http://cdimage.debian.org/debian-cd/8.1.0/amd64/iso-cd/debian-8.1.0-amd64-CD-1.iso

Montar a ISO para poder copiar os arquivos
# mount -o loop debian-8.1.0-amd64-CD-1.iso /mnt
# mkdir ~/iso
# rsync -a -H --exclude=TRANS.TBL /mnt/ ./iso

Alterando o isolinux.cfg para iniciar a instalação automaticamente e carregar o arquivo preseed.cfg
# vim iso/isolinux/isolinux.cfg
O conteúdo do arquivo é este

default install
prompt 1
timeout 240
display message.txt
F1 message.txt

label install
    menu label ^Instalacao Servidor
    linux /install.amd/vmlinuz
    initrd /install.amd/initrd.gz
    append cdrom-detect/try-usb=true preseed/file=/cdrom/preseed.cfg locale=en_US keyboard-configuration/xkb-keymap=br-abnt2 languagechooser/language-name=English  countrychooser/shortlist=US DEBCONF_DEBUG=5 video=vesa:ywrap,mtrr vga=788 --- quiet

No arquivo message.txt no diretório iso/isolinux/message.txt é o texto que sera mostrado quando o CD iniciar seu boot..


Criando o arquivo preseed.cfg com o seguinte conteudo, esta dividido em grupos de configuração, praticamente ele é auto descritivo.

### USO GERAL
debconf debconf/priority string critical
unknown debconf/priority string critical
d-i debconf/priority string critical

### TECLADO E IDIOMA
d-i console-keymaps-at/keymap select br-abnt2
d-i debconf/language string en_US
d-i languagechooser/locale string en_US

d-i debian-installer/keymap select br-abnt2
d-i debian-installer/language string en
d-i debian-installer/locale string en_US

## OPERACOES COM O CD
d-i cdrom-checker/start boolean false
d-i cdrom-detect/load_media boolean false

### REDE
#d-i netcfg/link_wait_timeout string 1
#d-i netcfg/dhcp_timeout string 1
d-i netcfg/use_dhcp false
d-i netcfg/disable_dhcp boolean true
d-i netcfg/dhcp_failed note
d-i netcfg/choose_interface select eth0
d-i netcfg/hostname string servidor1
d-i netcfg/get_ipaddress string 10.10.10.1
d-i netcfg/get_netmask string 255.255.255.0
d-i netcfg/get_gateway string 10.10.10.1
d-i netcfg/get_nameservers string 10.10.10.1
d-i netcfg/confirm_static boolean true

### CONTA DO USUARIO
d-i passwd/root-login boolean true
d-i passwd/make-user boolean false
### Senha Padrao `printf "abc123!" | mkpasswd -s -m md5`
d-i passwd/root-password-crypted password $1$Gy43AnD3$TkVbQupeEhkrDN4llbPvr0

### USUARIO COMUN (CONTA DESABILITADE SOMENTE USAR ROOT)
d-i passwd/user-fullname boolean false
d-i passwd/username boolean false
d-i passwd/user-password boolean false
d-i passwd/user-password-again boolean false


### HORA
d-i clock-setup/utc boolean true
d-i time/zone string America/Sao_Paulo
d-i clock-setup/ntp boolean true
d-i clock-setup/ntp-server string pool.ntp.br


### PARTICIONAMENTO MANUAL SUPRIME CONFIRMACAO
d-i partman-auto/init_automatically_partition select Manual
d-i partman/confirm boolean true 
d-i partman/confirm_nooverwrite boolean true 

## DESABILITA O MIROR DOWNLOAD DE PACOTES DURANTE A INSTALACAO
d-i mirror/country string manual
d-i mirror/http/hostname string http.us.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string

### CONFIGURACOES DO ATP-GET
d-i apt-setup/use_mirror boolean false


### PACOTES EXTRAS QUE SERAM INSTALADOS
tasksel tasksel/first multiselect standard, ssh-server
d-i pkgsel/include string vim

### NAO ENVIA INFORMACOES REFERENTE A PACOTES UTILIZADOS
popularity-contest popularity-contest/participate boolean false

### INSTALA O GRUB
d-i grub-installer/only_debian boolean true
d-i grub-installer/bootdev string default

### TERMINA A INSTALACAO E REINICIA
d-i finish-install/reboot_in_progress note

## REMOVE O GATEWAY E O DNS PADRAO DA INSTALACAO
d-i preseed/late_command string  sed -i '/gateway/d' /target/etc/network/interfaces ; sed -i '/dns-nameservers/d' /target/etc/network/interfaces ; echo > /target/etc/resolv.conf


Após fazer todas alterações, salve este conteúdo dentro do arquivo iso/preseed.cfg .

Agora atualize o MD5 dos arquivos
# cd ~/iso
# md5sum `find -follow -type f` > md5sum.txt
# cd ..

Agora vamos criar a iso do nosso novo sistema
# genisoimage -o LinuxNovo.iso -r -J -no-emul-boot -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin -c isolinux/boot.cat ./iso

Feito, você criou uma ISO de instalação automática, ou quase automática...

Obs:. Na ultima linha d-i preseed/late_command eu posso rodar comandos de pós instalação, também pode ser criado um script para fazer estes ajustes, também pode fazer um chroot /target e rodar comandos na nova instalação, 
Obs2:. /target é a pasta onde esta montada a nova instalação, então tudo que for alterado dentro desta estrutura afeta diretamente a nova instalação

Fonte: https://www.debian.org/releases/stable/i386/apb.html
Fonte2: https://www.debian.org/releases/jessie/example-preseed.txt

Forte abraço a todos,
Marcos Carraro

Read More

quarta-feira, 8 de julho de 2015

Procurando conteúdo dentro de arquivo + mostrar nome do arquivo

Buenas,

Imagine a seguinte situação, você tem um projeto em /var/www/htmll/projeto1/ onde você precisa encontrar a palavra "conteudo_especial" porém você precisa saber em qual arquivo esta este conteudo.

Para isso o nosso querido linux é muito bom.

Vamos lá.

grep -H -r -i "conteudo_especial" .

Simples assim o -i é para olhar letras maisculas e minusculas, o -r é recursivo entra em cada pasta e procura, o -H vai mostrar o nome do arquivo que encontrou a palavra.

Forte abraço,
Marcos Carraro.
Read More

quarta-feira, 17 de junho de 2015

XenServer 6.5 - Adicionando Local Storage

Buenas,

O que veremos é a criação do localstorage na versão 6.5 do xenerver http://xenserver.org/ .

Primeira coisa é verificar as partições criadas...

# fdisk -l

WARNING: GPT (GUID Partition Table) detected on '/dev/cciss/c0d0'! The util fdisk doesn't support GPT. Use GNU Parted.


Disk /dev/cciss/c0d0: 500.0 GB, 500051402752 bytes
256 heads, 63 sectors/track, 60556 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes

           Device Boot      Start         End      Blocks   Id  System
/dev/cciss/c0d0p1   *           1       60557   488331447+  ee  EFI GPT


Perceba que ele tem apenas uma partição criada.... OK então você vai se perguntar mas como que uma VM de 12Gb não importa em um disco de 500GB? Logo fizemos um df para verificar o espaço utilizado do / "Não é surpresa que ele tenha 4Gb para a instalação" para mais informações http://xenserver.org/discuss-virtualization/virtualization-blog/entry/xenserver-root-disk-maintenance.html 

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/cciss/c0d0p1     4.0G  1.8G  2.0G  49% /
none                  299M   16K  299M   1% /dev/shm
/opt/xensource/packages/iso/XenCenter.iso
                       56M   56M     0 100% /var/xen/xc-install

Ok, mas cada os outros GB???? Simples assim, vamos listar as partições dentro da partição..

# fdisk -l /dev/cciss/c0d0p1 

Disk /dev/cciss/c0d0p1: 4293 MB, 4293936128 bytes
255 heads, 32 sectors/track, 1027 cylinders
Units = cylinders of 8160 * 512 = 4177920 bytes

This doesn't look like a partition table
Probably you selected the wrong device.

             Device Boot      Start         End      Blocks   Id  System
/dev/cciss/c0d0p1p1   ?      395160      448208   216435558+   7  HPFS/NTFS
Partition 1 does not end on cylinder boundary.
/dev/cciss/c0d0p1p2   ?      400983      640378   976730017   16  Hidden FAT16
Partition 2 does not end on cylinder boundary.
/dev/cciss/c0d0p1p3   ?           1           1           0   6f  Unknown
Partition 3 does not end on cylinder boundary.
/dev/cciss/c0d0p1p4            6153      119429   462167897    0  Empty
Partition 4 does not end on cylinder boundary.

Partition table entries are not in disk order


SHOW!!! Perceba que o  /dev/cciss/c0d0p1p3 esta marcado como unknown então vamos verificar o que ela tem...

# fdisk -l /dev/cciss/c0d0p3 

Disk /dev/cciss/c0d0p3: 491.4 GB, 491460402688 bytes
255 heads, 32 sectors/track, 117632 cylinders
Units = cylinders of 8160 * 512 = 4177920 bytes

Disk /dev/cciss/c0d0p3 doesn't contain a valid partition table


BINGO! Esta nesta partição os outros GB escondidos.....

Agora o que nos resta é criar o Storage Local.

Primeiro você precisa o UUID so servidor para isso...

# xe host-list
uuid ( RO)                : 2df79ee1-a6b3-49aa-b272-22c13fbf4573
          name-label ( RW): xenserver3.interno.local
    name-description ( RW): Default install of XenServer

Copie o UUID (RO) pois você ira utilizar na hora de criar o Local Storage...

# xe sr-create content-type=user type=lvm host-uuid=2df79ee1-a6b3-49aa-b272-22c13fbf4573 device-config-device=/dev/cciss/c0d0p3 name-label="DISCO LOCAL" 
723420df-5342-c398-5f7c-45d5116a6b71

Pronto, storage local criado se for utilizar ele como default storage marque ele como default via XenCenter ou por CLI.

# xe pool-list
uuid ( RO)                : ee00c29a-64ac-fc8e-13a5-40a0308db86b
          name-label ( RW): 
    name-description ( RW): 
              master ( RO): 2df79ee1-a6b3-49aa-b272-22c13fbf4573
          default-SR ( RW): <not in database>

# xe pool-param-set uuid=ee00c29a-64ac-fc8e-13a5-40a0308db86b default-SR=723420df-5342-c398-5f7c-45d5116a6b71

Pronto, esta montado o LocalStorge.


Frankenstein - Nome dado ao meu querido servidor de testes que segura a barra de tudo...
Read More

terça-feira, 5 de maio de 2015

Ativando ou Reativando plugins: Java / SilverLight no Google Chrome >= 42

Buenas,

Como todos sabem o GoogleChrome teria desativado alguns plugins como Java, SilverLight entre outros (http://info.abril.com.br/noticias/tecnologia-pessoal/2014/11/silverlight-java-unity-e-outras-extensoes-populares-serao-removidas-do-google-chrome.shtml)

Para resolver o problema a solução é simples, primeiro certifique-se de estar com o Plugin devidamente instalado, feito isso verifique se o mesmo esta ativo digitando na url do GoogleChrome "chrome://plugins" caso não estiver ative.

Ok, plugin ativo, vamos ativar o NPAPI (https://developer.chrome.com/extensions/npapi), para tal na url escreve "chrome://flags/#enable-npapi" e ative caso ela não estiver ativa.


- Não esta Ativa



- Agora esta Ativa
 Bom Proveito

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

quarta-feira, 25 de fevereiro de 2015

Resolver problema Download .zip com PHP Corrompendo + Limitando Velocidade de Download de Arquivo com PHP

Bom Dia,


Hoje finalizei um sistema e por incrível que parece por algum motivo estranho ele corrompia os downloads em zip, fazendo algumas buscas comentaram do mod deflat do apache, onde ele faz a compressão dos arquivos para melhorar a performance do site e ocupar menos banda (Para testes:  http://www.whatsmyip.org/http-compression-test/  ) .

Ok, então no meu .htaccess inseri a seguinte linha.

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript application/javascript application/ecmascript application/rss+xml
</IfModule>

Onde segundo ele deveria apenas compactar estes "mimes types", porém ele acabou compactando o .zip achei estranho, porém acabou resolvendo o problema, ainda fiquei "encucado" com o porque que ele compactou sendo que não declarei ele.

Download do zip resolvido é hora de ir para o php, onde vamos limitar a velocidade do download do usuário.

            // header para forçar download
            header('Content-Description', 'File Transfer');
            header('Pragma: public');
            header('Expires: 0');
            header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
            header('Cache-Control: private', false);
            header('Content-Type: application/octet-stream');
            header('Content-Disposition: attachment; filename="arquivo.zip"'); // Nome do arquivo
            header('Content-Transfer-Encoding: binary');
            header('Content-Length: ' . filesize('./upload/arquivo.zip'));
            header('Connection: close');
            // Metodo com limitacao de banda para 150k
            flush();
            $arqAberto = fopen("./upload/arquivo.zip", 'rb');
            while (!feof($arqAberto)) {
                echo fread($arqAberto, round(150 * 1024));
                flush();
                sleep(1);
            }
            fclose($arqAberto);


Forte abraço
Marcos Carraro.


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

quarta-feira, 7 de janeiro de 2015

Criando uma ISO Customizada do Centos 6.6 + Incluir pacote na ISO

Buenas, feliz ano novo que 2015 seja ótimo.

Hoje vamos ver como criar uma instalação personalizada do centos utilizando o Kickstart não vou explicar linha por linha do arquivo pois no site do Fedora existe um documento completo referente a ele.

1- Preparação do diretório, vamos trabalhar na home do usuário root, para isso.
# su root
# cd ~
# mkdir build

2 - Faça o download da ISO no site do centos
# cd ~
# wget http://centos.ufms.br/6.6/isos/x86_64/CentOS-6.6-x86_64-minimal.iso

3 - Monte a ISO e extraia o seu conteudo para  a pasta build
# mount -o loop CentOS-6.6-x86_64-minimal.iso /mnt
# cd /mnt
# tar -cf - . | (cd ~/build/ ; tar -xvpf - )
# umout /mnt

4 - Crie o arquivo Kickstart Obs:. Segue um kickstart bem simples
# vim ~/build/ks.cfg
=======================================================================

#
# Marcos Carraro - Kickstart
#
# SO: Centos 6.6 x64
# Desc: Centos minimal, ainda mais leve com pequenas alteracoes, criacao da estrutura dos arquivos em LVM\
#  ip default: 15.0.0.1/24 | senha root default: abc123! | No minimo 10gb de disco e 1gb de memoria
#
#

install
cdrom
lang pt_BR.UTF-8
keyboard br-abnt2
network --onboot yes --device eth0 --bootproto static --ip 15.0.0.1 --netmask 255.255.255.0 --noipv6 --hostname atomicserver
rootpw  --iscrypted $6$Dr2vTVfUFzXVwn.t$n2hGfw0pa/cv7W.e/z21glUPkMHZAlsVAfB/NFxWBCjQZlQPWQwQjs1L6kuzghRqYzjL5AghYuXSv/EoceYjO0
firewall --disabled
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone --utc America/Sao_Paulo


#
# Disco e particionamento
#
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto quiet"
#clearpart --all --initlabel --drives=sda
clearpart --all --initlabel

part /boot --fstype=ext4 --asprimary --size=256
part pv.202002 --grow --size=200

volgroup vg_disco --pesize=4096 pv.202002
logvol swap --name=lv_swap --vgname=vg_disco --size=1024
logvol / --fstype=ext4 --name=lv_tudo --vgname=vg_disco --size=1024
logvol /var  --fstype=ext4 --name=lv_var --vgname=vg_disco --size=1024

#
# Repositorio para instalar os pacotes
#
repo --name="CentOS"  --baseurl=file:///mnt/source --cost=100

#
# Desabilita alguns servicos
#
services --disabled=auditd,ip6tables,iptables,mdmonitor

#
# pacotes que serao instalados
#
%packages --nobase --excludedocs

#
# Instalar pacotes...
#
@core
perl
tcpdump
bc
vconfig
vim-common
vim-enhanced
traceroute
bind-utils

#
# Remover pacotes...
#
-selinux*
-libselinux*
-dhclient*
-mdadm*

%end

#
# Reinicia o servidor apos a instalacao
#
reboot

=======================================================================

5 - Instale o plugin do yum para baixar os pacotes
# yum install yum-plugin-downloadonly

6 - Baixe os pacotes que deseja incluir no nosso caso  o vim, traceroute, bind-utils, vconfig, bc
# yum install --downloadonly --downloaddir=~/build/Packages/ $(repoquery --requires tcpdump vim-common vim-enhanced bc vconfig traceroute bind-utils perl perl-libs)
# yum install --downloadonly --downloaddir=~/build/Packages/ tcpdump vim-common vim-enhanced bc vconfig traceroute bind-utils perl perl-libs

7 - Atualize o repositório da ISO.
# cd ~/build/
# createrepo -v --update -g `find repodata -iname *minimal*.xml` .

8 - Criar as entradas no menu de boot
# vim isolinux/isolinux.cfg
Adicione as seguintes linhas logo acima do "label linux"
Obs:. Lembre de remover o "menu default" da entrada do "lavel linux"

label AtomicServer
  menu label ^Instalacao do Centos Customizado
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=cdrom:/ks.cfg nomodeset

9 - Crie a iso
# cd ~/build
# mkisofs -joliet-long -z -T -o ../Centos-6.6-x64_Customizado.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -m TRANS.TBL .

10 - Instale ele.

Forte abraço
Marcos Carraro


Read More

domingo, 21 de dezembro de 2014

XenServer 6.4 + Windows 2012 Server + Lenovo T400 Erro Windows: C4

Buenas,

Tenho um Lenovo T400 que fiz dele meu LAB (bom e barato, com alguns ajustes bala!!!), porém ao instalar o Windows 2012 sever, ele retorna um erro..

Em algumas pesquisas na Internet encontrei que o problema é referente a uma proteção de memoria que na grande maioria dos computadores/servidores/notebooks esta presente, chama-se "Memory Protection", em outros hardwares pode ter outro nome como "no-Execution Memory Protection" mas todas com o mesmo intuito, de impedir que códigos maliciosos sejam executados na memoria, e sim o Windows 2012/ Windows 8 reclamam por esta feature não estar habilitada.

Meu ambiente é o Xenserver 6.4 (Mentira dele!!! Estou usando a versão open do xenserver em xenserver.org).

Para habilitar esta opção acesse a  "Bios", após vá em "Security", depois "Memory Protection", depois habilite a opção "Execution Prevention".

Feito isso salve as alterações e inicie o Sistema novamente.

Pronto, problema resolvido.

Agora bom proveito, e um forte abraço.


Marcos Carraro.
Read More

quarta-feira, 5 de novembro de 2014

Redirecionando saida do netstat + data e hora + log

Buenas,


watch -n 1 'netstat -patun | grep -i post | tee -a listando_conexoes.log; date | tee -a  listando_conexoes.log'


Onde:

watch -n 1 'COMANDO' -> repete o comando a cada 1 segundo.

netstat -patun | grep -i post | tee -a listando_conexoes.log; -> redireciona a saida do netsta para o arquivo listando_conexoes.log

date | tee -a  listando_conexoes.log -> Joga no fim da linha a data e hora



ABraços
Read More

quinta-feira, 23 de outubro de 2014

Sincronizar Senhas do AD (Active Directory) com qualquer outro serviço

Buenas,

Turma, sei que muitos já se perguntaram se é possível sincronizar as senhas dos usuários do AD com outros sistemas e até estes tempos a resposta sempre era NÃO.

Porém esse não vem de pessoas que não estava bem informadas, pois existe duas maneiras de sincronizar as senhas do AD com outros serviços.

Utilizando o ssod desenvolvido pela microsoft (com algumas alterações é possível utilizar ele com outras bases, porém é muito complexo, pois utiliza-se socket, 3DES, sha1, base64...), ou fazendo um "hook" que a microsoft chama de "Passoword Filter" na qual desenvolvi o "esqueleto", na verdade grandes empresas utilizam esta maneira para sincronizar as senhas tais como, Google, SAP, Red Hat, entre outras...

No meu github https://github.com/marcoscarraro/SyncPass tem o projeto.

Esta escrito em C que depois transforma-se em uma dll, lá também tem mais informações de como ativar ela, e alguns erros do compilador.

Porém esta DLL não esta fazendo nenhum insert em banco, nada, apenas jogando para um arquivo de texto, pois a ideia é montar o esqueleto, e o restante vem com as necessidades, com a base pronta adaptar para outros é barbada.

Links:
SSOD,
http://www.microsoft.com/en-us/download/details.aspx?id=2792
http://support.microsoft.com/kb/324542/pt-br

Password Filter,
http://msdn.microsoft.com/en-us/library/windows/desktop/ms721882(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/bb259958.aspx

SyncPass - Desenvolvido por Marcos Carraro (EU :P)
https://github.com/marcoscarraro/SyncPass


Forte Abraço
Marcos Carraro.
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

Posts que a turma mais esta lendo...

Posts que a turma mais esta lendo...

Marcos Carraro