terça-feira, 22 de outubro de 2013

Como corrigir ou reparar problemas na inicialização (boot) do Windows 8

O Windows 8 recebeu uma boa quantidade de melhorias em diversos setores do sistema de comparado a seus antecessores. O gerenciamento de atualizações do sistema e os recursos de restauração e reparo são algumas dessas melhorias, contudo, a longa história de problemas de dual boot quando instalada diferentes versões do sistema em uma só máquina, problemas relacionados a MBR corrompida além de problemas variados no BCD é algo crônico nos sistemas da Microsoft, apesar da solução agora estar mais simples de ser resolvida do que nunca.
Sempre que nos deparamos com problemas na inicialização do sistema é algo extremamente desagradável, pois isso impede a utilização do computador e o acesso a dados e documentos importantes. Qualquer dual boot mal sucedido ou configuração inadequada na configuração de inicialização do computador pode ser fatal.
Como corrigir ou reparar problemas na inicialização boot do Windows 8

Como corrigir problemas na inicialização do Windows 8

Uma das maneiras mais simples de corrigir quaisquer problemas na inicialização do novo sistema da Microsoft é através do DVD de instalação ou um pendrive bootável do Windows 8. Aqui está o tutorialpara criar o pendrive bootável e no final desta página é possível baixar a ISO trial do Windows 8, suficiente para esta finalidade.
De posse com o DVD ou pendrive do Windows 8, inicie o computador com o pendrive ou o DVD como prioridade (isso pode ser feito através da configuração da BIOS sendo que muda de computador para computador), embora possa funcionar sem nenhuma configuração adicional na BIOS.
Assim que o instalador iniciar configure o idioma e o layout do teclado e clique em “Avançar”. Na tela conforme figura abaixo selecione a opção “Reparar o computador” ou “Repair you computer” no caso do sistema estar em inglês.
Como corrigir ou reparar problemas na inicialização boot do Windows 8
O próximo passo é escolher a opção “Solução de problemas” (Troubleshoot) e depois e “Opções Avançadas” (Advanced options).
corrigir problemas inicialização Windows 8
A primeira tentativa aqui é tentar a opção “Reparo Automático” (Automatic Repair).
Se isso resolveu seu problema, parabéns! Caso contrário, continue lendo:
Volte para as opções avançadas e escolha o “Prompt de Comando”. Indo para o caminho mais fácil para resolver o problema, digite os seguintes quatro comandos no prompt:
bootrec /fixmbr
bootrec /fixboot
bootrec /scanos
bootrec /rebuildbcd
problemas na inicialização do Windows 8
Recebida a confirmação reinicie a máquina.

O problema não foi resolvido. E agora?

Volte novamente ao Prompt de comando e tente o seguinte:
Digite o comando “bcdedit”. A lista de itens aparecerá no Gerenciador de Inicialização do Windows e no Windows Boot Loader. Procure por problemas no “Under Windows Boot Manager” e Under Windows Boot Loader”. Execute os seguintes três comandos para corrigir as configurações:
bcdedit / set {default} device partition = c:
bcdedit / set {default} osdevice partition = c:
bcdedit / set {bootmgr} device partition = c:
Se nenhuma dessas alternativas conseguiu resolver o problema, talvez o problema esteja parte física da máquina.
 

sexta-feira, 3 de junho de 2011

SQL - Inserir, alterar e excluir

Inserir, alterar e excluir dados com insert into, update e delete

Em SQL as instruções DML (Data Manipulation Language) são usadas para manipulação de dados e consiste nas operações de inserir dados (insert into), alterar dados (update) e excluir dados (delete). Inserir, alterar e excluir dados são consideradas operações essenciais e de grande aplicação nas operações com banco de dados.

insert into, update e delete são comandos da linguagem SQL e não dos bancos de dados, como o Oracle, SQL Server, Access ou MySQL. Isto significa que o aprendizado destes comandos tem enorme abrangência, pois você poderá usá-los em qulaquer banco de dados relacional, como os bancos acima citados.

Inserir dados com insert into

Para inserir linhas em uma tabela usamos o comando INSERT. Este comando faz parte das instruções DML (Data Manipulation Language) ou Linguagem de manipulação de dados.

Exemplo 1: Insert into em SQL Server e Access

INSERT INTO empregados(nome, data_nascimento, salario, cidade, estado)
VALUES('José','05/14/1965',1000,'Brasilia','DF')

Este mesmo exemplo deve ser tratado de forma diferente para o MySQL, pois o formato de data que ele opera é diferente do SQL Server. Veja como fica o mesmo exemplo para o banco MySQL.

Exemplo 1: Insert into em MySQL

INSERT INTO empregados(nome, data_nascimento, salario, cidade, estado)
VALUES('José','1965-15-14',1000,'Brasilia','DF')

No caso da coluna codigo_empregado nós não podemos usar o insert para tentar inserir um valor nesta coluna, pois a mesma foi criada com o argumento Identity, que faz a geração automática dos valores desta coluna.

Observe que as colunas do tipo texto (nome, cidade e estado) e a coluna do tipo data (data_nascimento) recebem os valores entre (aspas simples ou apóstrofo), porém, na coluna numérica (salário) o valor foi passado sem o uso de aspas simples.

No caso do MySQL a data tem o formado de ano, mês e dia.

Exemplo 2: SQL Server e Access

INSERT INTO empregados(nome, data_nascimento)
VALUES('João','12/15/1960')

Lembrando que o MySQL trata a data no formato ano-mes-dia, portanto devemos fazer esta alteração. Veja o mesmo exemplo para MySQL.

INSERT INTO empregados(nome, data_nascimento)
VALUES('João','1960-12-15')

Observe que não usamos todas as colunas da tabela empregados criada anteriormente, ou seja, você pode fazer um insert em apenas algumas colunas. Neste caso as demais colunas irão receber valores nulos.

Exemplo 3: SQL Server

INSERT INTO empregados(nome, data_nascimento, salario)
VALUES('Maria','22/06/1954',1420,52)

Em MySQL o exemplo fica assim:

INSERT INTO empregados(nome, data_nascimento, salario)
VALUES('Maria','1954-06-22',1420,52)

O exemplo acima causou um erro porque houve excesso de valores, ou seja, perceba que o valor 1420,52 tem uma vírgula e isto fez com que o banco de dados entendesse como sendo dois valores. Neste caso a vírgula deverá ser substituido por ponto, ao invés de usar 1420,52, use 1420.52.

Alterar dados com update

Para alterar linhas em uma tabela usamos o comando UPDATE. Este comando faz parte das instruções DML (Data Manipulation Language) ou Linguagem de manipulação de dados.

UPDATE empregados set nome='João da Silva',cidade='São Paulo' where codigo_empregado=2

No exemplo acima, alteramos o nome para João e a cidade para São Paulo, mas é importante observar que esta alteração só irá ocorrer onde o código do empregado for igual a 2.

A cláusula where é usada para criar um filtro, ou seja, para determinar quais as linhas serão afetadas.

CUIDADO: Se você não especificar a cláusula where as modificações serão aplicadas em todas as linhas da tabela.

Excluir dados com delete

Para excluir linhas em uma tabela usamos o comando DELETE. Este comando faz parte das instruções DML (Data Manipulation Language) ou Linguagem de manipulação de dados.

DELETE FROM empregados where codigo_empregado=1

CUIDADO: Se você não especificar a cláusula where todas as linhas da tabela serão excluídas.

No exemplo acima, será excluído a linha em que o código do empregado for igual a 1

A cláusula where é usada para criar um filtro, ou seja, para determinar quais as linhas serão afetadas.

Para excluir todas as linhas de uma tabela use o comando Delete como no exemplo a seguir:

DELETE FROM empregados
_________________________
Créditos deste artigo para: http://www.luis.blog.br


segunda-feira, 30 de maio de 2011

instalação de Firewall com Iptables utilizando Layer7

Introdução

O projeto Layer7 é um patch que permite ao Netfilter tratar a camada de aplicação. Em nosso caso, foi instalado especificamente para controlar MSN e transferência de arquivos pelo MSN. Porém ele trata muitos outros protocolos. Para conhecê-los melhor, basta acessar o link:
Existem diversos tutoriais na internet que tratam sobre esta instalação de Layer7 com Iptables, porém devido a atualização de versões, entre outros fatores, sempre é bom fazer uma revisão atualizando os dados e melhorando em alguns pontos. Este artigo tem por objetivo esta revisão. Toda e qualquer sugestão de melhoria é bem vinda.

Procedimentos de instalação

Caso queira baixar todos os pacotes necessários antes de iniciar, seguem os links diretos para download:
1. Instalar pacotes necessários (caso falte alguma dependência, basta instalar ou se preferir faça a instalação dos pacotes abaixo usando o aptitude):

# apt-get install libncurses5-dev kernel-package gcc

2. Criar diretório para armazenar pacotes:

# mkdir /opt/layer7
# cd /opt/layer7


3. Baixar e descompactar o pacote do projeto Layer7 (utilizei a versão 2.21):

# wget -c http://downloads.sourceforge.net/project/l7-filter/l7-filter%20kernel%20version/2.21/netfilter-layer7-v2.21.tar.gz?use_mirror=ufpr&ts=1278937632
# tar zxvf netfilter-layer7-v2.21.tar.gz

4. Baixar e descompactar o fonte do Kernel (utilizei a versão 2.6.25.2):

# cd /root/
# wget -c
ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.2.tar.bz2
# cd /usr/src
# tar jxvf /root/linux-2.6.25.2.tar.bz2


5. Aplicar o patch do Layer7 no novo kernel:

# cd /usr/src/linux-2.6.25.2
# patch -p1 < /opt/layer7/netfilter-layer7.v2.21/kernel-2.6.25-2.6.28-layer7-2.21.patch


6. Aproveitar configuração do kernel atual:

Caso queira usar as configurações do kernel atual no novo kernel, utilize os comandos abaixo. Provavelmente será necessário responder várias perguntas referentes a novos itens inclusos no novo kernel e que não existiam no atual. Para estas perguntas, caso não saiba as respostas, pressione então de fora a fora, pois depois você poderá rever as opções na próxima etapa).

# cp /boot/config-2.6[pressione o tab] /.config
# make oldconfig


7. Configurar o novo kernel:

# make menuconfig

Acesse os submenus como segue:

Networking
Networking options
Network packet filtering framework (netfilter)
Core Netfilter Configuration

Marque os módulos referentes ao Layer 7 (na dúvida marque todos os módulos). Volte 1 nível e entre no submenu:

IP: Netfilter Configuration

Marque o módulo "IPv4 connection tracking support (required for NAT)".
Marque o módulo "Full NAT" e demais sub-itens desse módulo.

Obs.: Em caso de instalar sem utilizar a configuração de kernel anterior, convém dar uma passada em todo o submenu de Networking afim de verificar se opções referentes a bridge, nat e afins estejam selecionadas.

Terminado, salve e saia.

8. Compilar o novo kernel e criar um pacote .deb do mesmo:

# make-kpkg -initrd kernel_image

Obs.: Caso esteja fazendo a atualização de um servidor remoto, por questões de segurança convém deixar este processamento em segundo plano.

# make-kpkg -initrd kernel_image &

Saia para tomar um merecido café, pois esta etapa demora um tempo considerável.

Obs.: A instalação manual também pode ser realizada, mas como se trata de Debian, não precisamos ficar "reiventando a roda", vamos gerar o pacote e deixar o dpkg fazer o resto. Mas caso queira fazer manualmente também funciona.

9. Instalar o novo kernel:

# dpkg -i ../linux-image-2.6.25[pressione TAB].deb

10. Reiniciar a máquina com o novo kernel:

# shutdown -r now

Obs.: Caso aconteça algum erro, dê boot com o kernel antigo e então remova este novo kernel para fazer melhorias.

# apt-get remove --purge linux-image-2.6.25.2

(para ver o nome correto do pacote faça: dpkg -l | grep linux-image)

11. Baixar o Iptables (utilizei a versão 1.4.0, pois as posteriores não obtive sucesso):

# cd /opt/layer7
# wget -c
http://www.netfilter.org/projects/iptables/files/iptables-1.4.0.tar.bz2

12. Descompactar o fonte e aplicar o patch:

# cd /opt/layer7
# tar jxvf iptables-1.4.0.tar.bz2
# cd iptables-1.4.0
# patch -p1 < /opt/layer7/netfilter-layer7-v2.1/iptables-1.4-for-kernel-2.6.20forward-layer7-2.21.patch
# chmod 755 extension/.layer7-test


13. Remover o Iptables antigo e instalar a nova versão:

# aptitude purge iptables
# make KERNEL_DIR=/usr/src/linux-2.6.25 BINDIR=/sbin LIBDIR=/lib
# make install KERNEL_DIR=/usr/src/linux-2.6.25 BINDIR=/sbin LIBDIR=/lib


Verificar se tudo correu bem:

# iptables -n -L
# iptables -n -L -t nat
# ls -l /lib/iptables/*layer7*


14. Baixar e instalar os pacotes de protocolos do Layer7:

# cd /opt/layer7
# wget -c
http://downloads.sourceforge.net/project/l7-filter/Protocol%20definitions/2009-05-28/l7-protocols-2009-05-28.tar.gz?use_mirror=ufpr&ts=1278938145
# tar zxvf l7-protocols-2009-05-28.tar.gz
# cd l7-protocols-2009-05-28
# make install
# ls /etc/l7-protocols/protocols


Dicas importantes a respeito do Layer7

Dica 1: Caso você já tenha o Layer7 funcionando e necessite apenas atualizar os protocolos suportados, basta fazer apenas o item 14, observando é claro o nome do novo arquivo de protocolos. O que acontece é apenas copiar os novos pacotes de protocolos em cima dos antigos. Então convém fazer um backup dos arquivos dos protocolos antigos.

Dica 2: Nem sempre todos os pacotes mais recentes envolvidos funcionam plenamente em conjunto, então observe as versões de kernel, iptables e layer7 compatíveis antes fazer as compilações.

_______________________________________________
CRÉDITOS PARA: Dorival Junior (http://www.vivaolinux.com.br/~dorivaljunior)

segunda-feira, 25 de outubro de 2010

ERR_ACCESS_DENIED personalizado

Veja como personalizar suas páginas de erros no seu proxy (squid)


Códigos para serem inseridos nos arquivos ERR_* templates
Esta lista descreve as TAGs que o Squid pode inserir nas mensagens:

%a - User identity
%B - URL with FTP %2f hack
%c - Squid error code
%d - seconds elapsed since request received (not yet implemented)
%e - errno
%E - strerror()
%f - FTP request line
%F - FTP reply line
%g - FTP server message
%h - cache hostname
%H - server host name
%i - client IP address
%I - server IP address (NP: upper case i)
%l - Local site CSS stylesheet. (Squid-3.1 and later) (NP: lower case L)
%L - contents of err_html_text config option
%M - Request Method
%m - Error message returned by external auth helper
%o - Message returned by external acl helper
%p - URL port \#
%P - Protocol
%R - Full HTTP Request
%S - squid default signature. (Squid prior to 3.1 automatically add unless %s is used.)
%s - caching proxy software with version
%t - local time
%T - UTC
%U - URL without password
%u - URL with password. (Squid-2.5 and later only.)
%W - Extended error page data URL-encoded for mailto links.
%w - cachemgr email address
%z - DNS server error message
%Z - Error message

Exemplo: ERR_ACCESS_DENIED
Localização: /usr/share/squid/errors/en-us

Fonte: http://wiki.squid-cache.org/Features/CustomErrors?highlight=%28faqlisted.yes%29

quarta-feira, 15 de setembro de 2010

Usando os Servidores do OpenDNS para Resolução de Nomes

Como utilizar em conexões com IP fixo

Utilizar o OpenDNS é muito fácil, mais fácil ainda se você utiliza uma conexão com IP fixo. Nesse caso, basta substituir os servidores DNS informados pelo seu provedor de acesso à internet pelos IPs do OpenDNS, os quais são:

Edite seu arquivo /etc/resolv.conf e adicione estes servidores

nameserver 208.67.222.222
nameserver 208.67.220.220

-----------------------
Fonte: http://www.guiadohardware.net/dicas/opendns.html

quinta-feira, 19 de agosto de 2010

Como bloquear audio e vídeo usando squid

Para bloquear audio e vídeo (stream) pesquisei na web e com a ajuda de vários tutoriais obtive sucesso seguindo os passos abaixo:

No arquivo /etc/squid/squid.conf insira as linhas abaixo antes das liberações

#acl bloqueio de extensõde ráos online / arquivos de streaming:
acl streaming rep_mime_type -i "/etc/squid/mimeaplicativo"
acl proibir_musica urlpath_regex -i "/etc/squid/audioextension"
http_reply_access deny streaming
http_reply_access deny proibir_musica

Ainda no arquivo SQUID.CONF, insira a seguinte linha de comando, isso para que o squid possa gerar os logs adequados.

log_mime_hdrs on


# vi /etc/squid/mimeaplicativo

application/vnd.audiograph
audio/32kadpcm
audio/3gpp
audio/amr
audio/amr-wb
audio/annodex
audio/basic
audio/flac
audio/g.722.1
audio/l16
audio/mid
audio/midi
audio/mp4a-latm
audio/mpa-robust
audio/mpeg
audio/mpegurl
audio/ogg
audio/parityfec
audio/prs.sid
audio/telephone-event
audio/tone
audio/vnd.cisco.nse
audio/vnd.cns.anp1
audio/vnd.cns.inf1
audio/vnd.digital-winds
audio/vnd.everad.plj
audio/vnd.lucent.voice
audio/vnd.nortel.vbk
audio/vnd.nuera.ecelp4800
audio/vnd.nuera.ecelp7470
audio/vnd.nuera.ecelp9600
audio/vnd.octel.sbc
audio/vnd.qcelp
audio/vnd.rhetorex.32kadpcm
audio/vnd.vmx.cvsd
audio/x-aiff
audio/x-gsm
audio/x-mpegurl
audio/x-ms-wax
audio/x-ms-wma
audio/x-pn-realaudio
audio/x-pn-realaudio-plugin
audio/x-realaudio
audio/x-scpls
audio/x-sd2
audio/x-wav
application/x-videolan
video/3gpp
video/annodex
video/dl
video/dv
video/fli
video/flv
video/gl
video/mp4
video/mp4v-es
video/mpeg
video/ogg
video/parityfec
video/pointer
video/quicktime
video/vnd.fvt
video/vnd.motorola.video
video/vnd.motorola.videop
video/vnd.mpegurl
video/vnd.mts
video/vnd.nokia.interleaved-multimedia
video/vnd.vivo
video/x-flv
video/x-la-asf
video/x-matroska
video/x-mng
video/x-ms-asf
video/x-ms-asx
video/x-msvideo
video/x-ms-wm
video/x-ms-wmv
video/x-ms-wmx
video/x-ms-wvx
video/x-sgi-movie


# vi /etc/squid/audioextension

\.aif$
\.aifc$
\.aiff$
\.asf$
\.asx$
\.avi$
\.au$
\.m3u$
\.med$
\.mp3$
\.m1v$
\.mp2$
\.mp2v$
\.mpa$
\.mov$
\.mpe$
\.mpg$
\.mpeg$
\.ogg$
\.pls$
\.ram$
\.ra$
\.ram$
\.snd$
\.wma$
\.wmv$
\.wvx$
\.mid$
\.midi$
\.rmi$


Crie um Shell Script para ficar analisando os logs que serão registrados no squid, assim você terá sempre seu arquivo de bloqueio atualizado.

# vi /etc/squid/checa.sh

# =================
# Script para atualizacao
# de Bloqueio de Radio/Video
# on-line
# Author: Leandro Moreira
# Date: 04-24-2009
set -x
# =================
# Variaveis
# =================
PERL="/usr/bin/perl"
AUDIO=`$PERL -p -e "s/\\\r/\r/g;s/\\\n/\n/g" /var/log/squid/access.log | egrep -v 'text/html|text/xml' | grep -i "Content-Type:" | sed 's/;/ /g' | awk '{ print$2 } ' | sort -u | grep audio > /tmp/audio`
VIDEO=`$PERL -p -e "s/\\\r/\r/g;s/\\\n/\n/g" /var/log/squid/access.log | egrep -v 'text/html|text/xml' | grep -i "Content-Type:" | sed 's/;/ /g' | awk '{ print$2 } ' | sort -u | grep video > /tmp/video`
# ======================/

cat /tmp/audio >> /etc/squid/mimeaplicativo
cat /etc/squid/mimeaplicativo | sort | uniq -c| awk '{print$2}' > /tmp/audio.tmp
cat /tmp/audio.tmp > /etc/squid/mimeaplicativo

cat /tmp/video >> /etc/squid/mimeaplicativo
cat /etc/squid/mimeaplicativo | sort | uniq -c| awk '{print$2}' > /tmp/video.tmp
cat /tmp/video.tmp > /etc/squid/mimeaplicativo



Mude o atributo do arquivo criado acima permitindo execução:
# chmod +x /etc/squid/checa.sh


Agora edite o arquivo /etc/crontab e insira os códigos abaixo:
1ª Linha - Agendei para rodar na cron a cada 5 minutos
2ª Linha - Atualizar o squid a cada hora

# vi /etc/crontab

*/5 * * * * /root/script.sh /var/log/script.log 2>&1
59 * * * * squid -k reconfigure



Reinicialize o cron, (service cron restart)


OBS: Complementando o bloqueio, adicione as seguintes regras em seu firewall:

#bloqueio da RADIO do UOL
iptables -A INPUT -d 0/0 -p tcp --dport 1935 -j DROP
iptables -A INPUT -d 0/0 -p udp --dport 1935 -j DROP
iptables -A FORWARD -d 0/0 -p tcp --dport 1935 -j DROP
iptables -A FORWARD -d 0/0 -p udp --dport 1935 -j DROP
#bloqueio da RADIO Bradesco
iptables -A INPUT -d 0/0 -p tcp --dport 29054 -j DROP
iptables -A INPUT -d 0/0 -p udp --dport 29054 -j DROP
iptables -A FORWARD -d 0/0 -p tcp --dport 29054 -j DROP
iptables -A FORWARD -d 0/0 -p udp --dport 29054 -j DROP



Créditos relevantes para:
http://www.mail-archive.com/debian-user-portuguese@lists.debian.org/msg124511.html

Como libero hosts no FIREWALL para não passar pelo proxy e ter acesso

Você pode criar uma regra na chain PREROUTING assim:




Essa regra deve vir antes da regra que redireciona as conexoes para o Squid... uma regra parecida com essa:



Talvez nao seja REDIRECT talvez seja DNAT porque o Firewall e o Proxy podem ser maquinas diferentes, isso depende de como esta ai.
Mas de qualquer maneira voce deve adcionar essa regra antes, porque senao nao tem efeito.


Créditos para: http://under-linux.org/f96/como-libero-hosts-no-firewall-para-nao-passar-pelo-proxy-ter-acesso-%5Bresolvido%5D-85433/