Questionário para Vaga de Suporte em Provedor
Remexendo uns emails antigos, encontrei esse questionário para uma vaga de suporte, que me foi enviado há alguns anos atrás. É interessante, porque lembro que algumas perguntas como AS, vlans e switch camada 3 eu não fazia a menor idéia do que era, e hoje já sei. Em compensação outras (como hldc e limpar estatísticas de interface, ambos em cisco) eu não sabia e continuo sem saber, :-) . De qualquer forma, achei o nível da maioria das perguntas válido para testar os conhecimentos em Linux e redes em geral. Coloco as respostas depois. (não vale colar!)
Redes
1 – Qual o seu nível de tcp/ip? Descreva alguns protocolos usados para vpn com suas portas.
2 – Você usaria tcp ou udp para uma vídeo conferência? Por quê?
3 – O que é um socket?
4 – Quais são os tipos de icmp mais utilizados além do 0 e 8? Cite 3.
5 – Quantos hosts e subredes podem existir na máscara 255.255.248.0?
6 – Já trabalhou com redes altamente segmentadas (diversas subredes pequenas e grandes)?
7 – Qual a diferença entre rede infraestrutura e ad-hoc?
8 – O que é um AS?
9 – O que é uma bridge?
Linux
1 – Qual o seu nível de linux? Descreva os serviços e deamons que já instalou e configurou.
2 – Conhece shell scripts? Já utilizou os comandos cat, echo, grep, sed, awk, cut e etc?
3 – Sabe configurar virtual hosts no apache?
4 – Qual comando para se verificar as conexões ativas em uma máquina?
5 – Quais os comandos para se verificar as rotas de uma máquina?
6 – Está familiar com o tcpdump? Qual opção do tcpdump se usa para mostrar os pacotes de uma determinada máquina?
7 – Conhece algum software de monitoramento de tráfego de links, nms e ids (um de cada)?
8 – Qual seu nível de sql? Select, update e etc.
9 - Que opção em uma regra do iptables especifíca conexões estabelecidas?
10 – O que deve ser configurado no /proc para que o linux faça forward de pacotes?
11 – Quais distros já administrou?
Ativos de rede (roteadores , switches e etc)
1 – Qual o seu nível de ativos de rede? Fale sobre os equipamentos que já administrou e configurou.
2 – Já utilizou vlan com switches de camada 3?
3 – É possível utilizar o protocolo ppp em um roteador cisco? E o hdlc?
4 – Qual comando mostras as estatísticas de uma interface?
5 – Qual comando limpa as estatísticas de uma interface?
Firewall Linux - iptables - Parte 3
Comandos, opções e módulos
Comandos:
Toda regra iptables tem obrigatoriamente um comando e opcionalmente um ou mais parâmetros.
Comandos (são sempre em letras maiúsculas). A maioria dos comandos exige o nome de uma chain, em outros isso é opcional, e finalmente para alguns utiliza-se apenas o comando em si.
Observação: dados entre chaves ( [xxx] ) especificam um valor opcional. Dados entre sinais de maior e menor ( <xxx> ) especificam um valor obrigatório. Acostume-se com esse padrão, pois ele é utilizado nas páginas de manual.
-A <chain>: Acrescenta uma regra ao final de uma chain.
-I <chain> [posição]: Insere uma regra em uma posição específica da chain. Caso a posição não seja informada, a regra será criada na posição 1.
-D <chain> [posição]: Deleta uma regra em uma chain. Existem duas formas de deleção: Repetindo o comando de inserção e trocando o -A/-I por -D ou deletando pelo número da regra na chain. Ex: "iptables -D INPUT 1" apaga a primeira regra da chain INPUT da tabela filter.
-L [chain]: Lista as regras. Se for informada uma chain específica, é listada apenas as regras daquela chain. Caso contrário, todas as chains são listadas. Para listar o número (ou posição) da regra dentro da chain, acrescente a opção "--line-numbers". Esse número é utilizado como referencia para as opções -I, -D e -R
-R <chain> <posição>: permite trocar uma regra com uma já existente na posição informada. Informa-se a regra atual através do nome da chain em que ela se encontra e sua posição dentro da chain (obtida com -L CHAIN --line-numbers) e a nova definição da regra.
-F <chain>: Esvazia a chain informada (apaga todas as suas regras). Caso não seja informada uma chain, todas as chains da tabela são esvaziadas.
-N <nova_chain>: Cria uma nova chain. Deve ser informado um nome que ainda não esteja em uso.
-X <nome_chain>: Apaga uma chain criada pelo usuário (com o comando -N). A chain precisa estar vazia e não ser referenciada por nenhuma regra.
-Z [chain]: Zera os contadores de pacotes e bytes de todas as chains, apenas da chain informada ou apenas de uma regra específica (informada pelo número) dentro de uma chain. Caso seja utilizado junto com -L o contador é zerado e exibido em seguida.
-P <chain> <política>: altera a política (POLICY) padrão de uma chain.
-E <nome_atual> <nome_novo>: renomeia uma chain criada com o comando -N
Opções/parametros:
Observações:
- De um modo geral, a ordem das opções não importa. No entanto, é comum escrever os comandos no formato dos exemplos desse artigo, pois facilita a leitura e compreensão da regra.
- Regras que não contém a opção "-j" não fazem nada com um pacote que combine com suas opções, mas contabilizam a sua passagem e podem servir para contabilidade de dados (geração de gráficos e relatórios, por exemplo).
- As opções -i, -o, -s, -d, --dport, e --sport (e possivelmente outras, confira a página de manual!) podem ser precedidas de um sinal de exclamação (!), que inverte seu significado.
-t <tabela> : Especifica em qual tabela (filter, nat ou mangle) o comando (que pode ser de criação/edição/exclusão/listagem de regras ou chains) será executado. Caso essa opção não seja informada, o comando é executado na tabela filter
Ex:
iptables -t nat -A PREROUTING ... # Cria uma regra na chain PREROUTING da tabela nat
iptables -t filter -A FORWARD ... # Cria uma regra na chain FORWARD da tabela FILTER
iptables -A FORWARD ... # Faz a mesma coisa que a regra anterior, observe para a tabela filter o "-t filter" é opcional.
iptables -t nat -L ... # Visualiza as regras em todas as chains da tabela nat
-n : não resolve endereços IP para nomes, acelerando a exibição dos dados na tela. Normalmente utilizado com o comando -L.
-v : modo verboso, aumenta a exibição de detalhes. Normalmente utilizado com o comando -L.
-x : não utiliza letras (abreviações) na contagem de bytes e pacotes. Normalmente utilizado com o comando -L.
Ex:
observe a saída do seguinte comando, primeiro sem a opção -x:
root:~ # iptables -nvL FORWARD | head -1
Chain FORWARD (policy DROP 6752K packets, 407M bytes)
root:~ # iptables -nvxL FORWARD | head -1
Chain FORWARD (policy DROP 6745998 packets, 407067635 bytes)
A contagem de bytes é a mesma, mas a saída sem -x é mais fácil de visualizar. Por outro lado, utilizando-se o -x facilita a criação de scripts para contabilidade de pacotes.
-p : permite especificar o protocolo desejado. O protocolo pode ser citado pelo nome ou pelo número. Veja a relação de nomes e números de protocolos no arquivo /etc/protocols. Para criar uma regra que bata com qualquer protocolo, coloque "all".
Ex:
iptables -A FORWARD -p udp ... # Cria uma regra utilizando o protocolo UDP na chain FORWARD da tabela filter
iptables -t nat -A PREROUTING -p tcp ... # Cria uma regra utilizando o protocolo TCP na chain PREROUTING da tabela nat
iptables -t nat -A POSTROUTING -p all ... # Cria uma regra combinando com qualquer protocolo na chain POSTROUTING da tabela nat
Observação:
- Ao utilizar "-p all", não se informa número de portas de origem/destino, porque nem todo protocolo utiliza o conceito de porta.
- Procure evitar ao máximo o uso indiscriminado de "-p all", pois acaba tornando seu firewall permissivo demais. Quando você não souber quais portas/endereços precisa liberar para que determinado serviço funcione, faça uma análise do tráfego com um analisador como o tcpdump (modo texto) ou o wireshark (modo gráfico).
- -s : permite especificar o endereço IP de origem. Se o valor for o endereço de um equipamento, basta colocar o endereço IP. Caso seja o endereço de uma rede, é necessário informar também a máscara de rede. Para especificar uma regra que bata com qualquer valor no endereço de origem, coloque 0/0. Para especificar uma regra que não bata com determinado endereço de origem, utilize a exclamação (!).
Ex:
iptables -A FORWARD -p udp -s 192.168.1.0/255.255.255.0 # Tabela filter, chain FORWARD, protocolo UDP, toda a rede 192.168.1.0 ...
iptables -A FORWARD -p udp -s 192.168.1.0/24 # Outra maneira de escrever a regra anterior
iptables -t nat -A PREROUTING -p tcp -s 192.168.1.213
iptables -A FORWARD -p tcp -s !192.168.5.220 ... # essa regra bate com qualquer endereço de origem, exceto o 192.168.5.220.
-d : Semelhante ao -s, porém especifica o endereço IP de destino.
Ex:
iptables -A FORWARD -p udp -d 192.168.1.0/255.255.255.0 # Tabela filter, chain FORWARD, protocolo UDP, toda a rede 192.168.1.0 ...
--sport : permite especificar a porta (tcp/udp) de origem.
Ex:
iptables -A FORWARD -p udp -d 192.168.1.0/24 --sport 25 ...
iptables -A FORWARD -p tcp -s 192.168.1.23 --sport 25 ...
--dport : permite especificar a porta (tcp/udp) de destino.
iptables -A FORWARD -p udp -d 192.168.1.0/24 --dport 25 ...
iptables -A FORWARD -p tcp -s 192.168.1.23 --dport 25 ...
-i : define a interface de rede por onde o pacote vai entrar.
Obs: só pode ser utiliza em chains relativas a entrada de pacotes na máquina, como INPUT, PREROUTING e FORWARD.
-o : define a interface de rede por onde o pacote vai sair.
Obs: só pode ser utiliza em chains relativas a saída de pacotes da máquina, como OUTPUT, POSTROUTING e FORWARD.
-j : Especifica para o TARGET (alvo) da regra, ou seja o que vai ser feito com o pacote que combine com a regra definida.
-m : permite o uso dos "match modules", que são modulos que extendem as funcionalidades do iptables. O iptables costuma já vir com um conjunto de módulos pré-instalados, e é possível instalar mais módulos, recompilando o iptables E o kernel. Abaixo uma lista com os principais módulos. Para ver quais sua distribuição possui, bem como a forma de utilização, veja a página de manual do iptables (man iptables):
- multiport: permite criar regras que combinam com mais de uma porta de origem ou destino. Nesse caso utiliza-se --sports ou --dports, respectivamente. As portas podem ser informadas no formato lista (por exemplo "--dports 22,23,25,110", que englobaria apenas para as portas citadas) ou no formato range (faixa de portas, "--sport 1:1023", que englobaria todas as portas entre 1 e 1023)
- mac: analisa o endereço de hardware (MAC address) de origem do pacote. Apenas pode ser utilizado em CHAINS de entrada (INPUT, FORWARDING, PREROUTING, etc).
- state: permite classificar a conexão quanto ao estado (NEW, INVALID, RELATED, ESTABLISHED, entre outros).
- limit: permite criar regras que trabalham baseadas em quantidade X tempo (1 por segundo, 5 por minuto, etc).
- iprange: permite informar um range de endereços IP de origem ou destino.
- string: procura por uma string (texto) dentro do pacote.
- time: cria regras com base na data/hora de chegada do pacote (a regra só é valida dentro do período de tempo especificado).
- tos: analisa o campo TOS (Type Of Service) do cabeçalho IP (normalmente utilizado para QOS).
- addrtype: analisa pacotes segundo o tipo (UNICAST, BROADCAST, LOCAL, etc).
- ah: combina com pacotes AH (authentication header) do IPsec.
- esp: combina com pacotes ESP do IPsec.
- comment: permite inserir comentários de até 256 caracteres em uma regra.
- connlimit: permite restringir a quantidade de conexões paralelas/simultâneas a um servidor por endereço IP ou range de endereços.
Comprimindo os Logs do JBOSS sem logrotate
Administro alguns servidores JBOSS que realizam o rotacionamento de logs sozinhos, porém eles não fazem a compressão dos arquivos de log. Como o próprio JBOSS cuida do rotacionamento, não encontrei um método de fazer o tratamento através do logrotate, como é feito normalmente. Ao invés disso, optei simplesmente por comprimir os arquivos.
Crie um arquivo com um nome sugestivo (ex: comprime_logs_jboss) dentro do diretório "/etc/cron.daily" com o seguinte conteúdo:
#!/bin/bash
#Fabiano Pires
#Caminho com os arquivos de log do JBOSS
CAMINHO="/opt/jboss-GA/server/default/log"
# Comprime arquivos server.log.*, exceto os que possuem a extensao ".gz"
find ${CAMINHO} \( -name 'server.log.*' -a -not -name '*.gz' \) | xargs gzip -9
Esse comando find enconrtra todos os arquivos server.log rotacionados (os meus ficam no padrão server.log.ANO-MES-DIA (ex: server.log.2011-11-29), exceto os que possuem a extensão ".gz" (que já foram comprimidos) e os envia para compressão com o comando gzip.
Ajuste a variável CAMINHO para apontar para o local onde ficam os arquivos de log do seu JBOSS. E não se esqueça de tornar o arquivo executável, com o comando chmod a+x comprime_logs_jboss.
Crie um arquivo com um nome sugestivo (ex: comprime_logs_jboss) dentro do diretório "/etc/cron.daily" com o seguinte conteúdo:
#!/bin/bash
#Fabiano Pires
#Caminho com os arquivos de log do JBOSS
CAMINHO="/opt/jboss-GA/server/default/log"
# Comprime arquivos server.log.*, exceto os que possuem a extensao ".gz"
find ${CAMINHO} \( -name 'server.log.*' -a -not -name '*.gz' \) | xargs gzip -9
Esse comando find enconrtra todos os arquivos server.log rotacionados (os meus ficam no padrão server.log.ANO-MES-DIA (ex: server.log.2011-11-29), exceto os que possuem a extensão ".gz" (que já foram comprimidos) e os envia para compressão com o comando gzip.
Ajuste a variável CAMINHO para apontar para o local onde ficam os arquivos de log do seu JBOSS. E não se esqueça de tornar o arquivo executável, com o comando chmod a+x comprime_logs_jboss.
Sistemas de arquivo em Linux embarcado
O Sérgio Prado publicou em seu site (http://sergioprado.org) dois artigos sobre sistemas de arquivos. Embora o artigo (assim como o próprio site) seja voltado para Sistemas Linux Embarcados, os artigos fazem uma boa cobertura sobre diversos sistemas de arquivos, além de tratar sobre assuntos como journaling, memórias flash e mais. Vale a leitura tanto para o iniciante em Linux como para o administrador experiente.
Links:
Parte 1: http://sergioprado.org/2012/02/22/sistemas-de-arquivo-em-linux-embarcado-parte-1/
Parte 2: http://sergioprado.org/2012/03/04/sistemas-de-arquivo-em-linux-embarcado-parte-2/
P.S.: Não sabe o que é Linux Embarcado? Basicamente são computadores com processadores ARM (semelhantes aos dos celulares), porém pequenos em tamanho e consumo de energia. Normalmente são voltados para aplicações específicas. Para maiores informações, vale dar uma olhadinha nesses sites:
Mini2440 (US$ 90,00)
http://www.evertonfreitas.com/?p=60
BeagleBoard (US$ 130,00)
http://beagleboard.org/hardware
BifferBoard, uma placa com processador x86 (US$ 50,00)
http://bifferos.co.uk/
Raspberry Pi, do tamanho de um cartão de crédito (US$ 25,00 - Aceito um de presente ;-) )
http://www.raspberrypi.org/
Links:
Parte 1: http://sergioprado.org/2012/02/22/sistemas-de-arquivo-em-linux-embarcado-parte-1/
Parte 2: http://sergioprado.org/2012/03/04/sistemas-de-arquivo-em-linux-embarcado-parte-2/
P.S.: Não sabe o que é Linux Embarcado? Basicamente são computadores com processadores ARM (semelhantes aos dos celulares), porém pequenos em tamanho e consumo de energia. Normalmente são voltados para aplicações específicas. Para maiores informações, vale dar uma olhadinha nesses sites:
Mini2440 (US$ 90,00)
http://www.evertonfreitas.com/?p=60
BeagleBoard (US$ 130,00)
http://beagleboard.org/hardware
BifferBoard, uma placa com processador x86 (US$ 50,00)
http://bifferos.co.uk/
Raspberry Pi, do tamanho de um cartão de crédito (US$ 25,00 - Aceito um de presente ;-) )
http://www.raspberrypi.org/
Assinar:
Postagens (Atom)