//

Guides

FreeBSD Cheat Page

FreeBSD Cheat Page for Commands

MODELO TCP/IP — CAMADAS, PROTOCOLOS E UNIDADES DE DADOS ======================================================== CAMADA PROTOCOLOS COMUNS UNIDADE O QUE CONTEM --------------------------------------------------------------------------- APLICACAO HTTP, HTTPS, FTP MENSAGEM dados do usuario SSH, TELNET, SMTP "GET /index.html" DNS, SNMP, NTP comandos, respostas IMAP, POP3, SIP TRANSPORTE TCP, UDP SEGMENTO porta origem SCTP (TCP) porta destino DATAGRAMA numero de sequencia (UDP) checksum dados da aplicacao REDE/INTERNET IP (v4, v6) PACOTE IP origem ICMP (ping, traceroute) (IP) IP destino IGMP (multicast) TTL IPsec protocolo (TCP=6) dados do segmento ENLACE/ Ethernet FRAME MAC origem DATALINK WiFi (802.11) (Ethernet) MAC destino PPP, VLAN (802.1q) ethertype (IPv4=0x0800) ARP * dados do pacote IP FCS (checksum) FISICA Cabo par trancado BITS sinais eletricos Fibra optica (fisico) sinais de luz Sinal radio WiFi frequencias de radio Coaxial * ARP opera entre enlace e rede — traduz IP para MAC =========================================================================== RELACAO ENTRE MAC, IP, ARP E FRAMES =========================================================================== MAC = endereco fisico da placa de rede. nao muda. gravado em hardware. formato: 00:1b:b9:c2:82:8c (6 bytes, hexadecimal) escopo: so vale dentro do segmento local (nao roteia) IP = endereco logico do host na rede. pode mudar (DHCP). formato: 192.168.0.10 (IPv4, 4 bytes) 2001:db8::1 (IPv6, 16 bytes) escopo: global, roteia pela internet inteira ARP = protocolo que traduz IP em MAC dentro da rede local pergunta: "quem tem 192.168.0.1? me diga seu MAC" resposta: "sou eu, MAC 54:47:cc:c9:3f:92" cache: tabela temporaria, expira (FreeBSD: ~20min) comando: arp -a FRAME = envelope da camada enlace. contem o pacote IP dentro. descartado e recriado a cada salto de roteador. PACOTE = envelope da camada rede. contem o segmento TCP dentro. viaja inalterado de ponta a ponta. SEGMENTO = envelope da camada transporte. contem os dados. TCP garante entrega e ordem. UDP nao garante. =========================================================================== COMO UM PACOTE HTTP VIAJA: FreeBSD → Google =========================================================================== APLICACAO cria: "GET /index.html HTTP/1.1" TRANSPORTE adiciona: porta origem 54321, porta destino 80 REDE adiciona: IP src 192.168.0.10, IP dst 142.250.79.46 ENLACE adiciona: MAC src 00:1b:b9:c2:82:8c MAC dst 54:47:cc:c9:3f:92 (MAC do gateway) [FreeBSD] --------frame 1--------> [roteador] ------frame 2------> [Google] MAC:seu→gateway MAC:gateway→proximo_salto IP: 192.168.0.10→142.250.79.46 IP: inalterado o tempo todo TCP: porta 54321→80 TCP: inalterado o tempo todo a cada roteador: - frame Ethernet e DESCARTADO - pacote IP e LIDO para decidir proximo salto - frame NOVO e criado com MACs do proximo trecho - pacote IP segue INTACTO ate o destino =========================================================================== ENCAPSULAMENTO — BONECA RUSSA =========================================================================== +------------------------------------------------+ | FRAME ETHERNET | | MAC src | MAC dst | ethertype | | +------------------------------------------+ | | | PACOTE IP | | | | IP src | IP dst | TTL | protocolo | | | | +------------------------------------+ | | | | | SEGMENTO TCP | | | | | | porta src | porta dst | seq | ck | | | | | | +------------------------------+ | | | | | | | DADOS DA APLICACAO | | | | | | | | "GET /index.html HTTP/1.1" | | | | | | | +------------------------------+ | | | | | +------------------------------------+ | | | +------------------------------------------+ | +------------------------------------------------+ | FCS (checksum do frame) | +------------------------------------------------+ =========================================================================== ICMP — O PROTOCOLO DO PING E TRACEROUTE =========================================================================== ICMP vive na camada de rede, junto com IP. nao tem portas. usado para diagnostico e controle. ping: envia ICMP Echo Request, espera Echo Reply traceroute: envia pacotes com TTL crescente (1,2,3...) cada roteador decrementa TTL quando TTL=0 o roteador descarta e manda ICMP Time Exceeded de volta — revelando seu IP TTL (Time To Live): contador de saltos. evita loops infinitos. cada roteador subtrai 1. chegou a 0: pacote descartado. valor tipico de saida: 64 (Linux/BSD) ou 128 (Windows) =========================================================================== @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ENDERECAMENTO IP — IPV4 E CIDR @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ################ ESTRUTURA DO ENDERECO IPV4 ################ 32 bits divididos em 4 octetos de 8 bits cada formato: xxx.xxx.xxx.xxx exemplo: 203.0.113.100 cada octeto: 2^8 = 256 valores possiveis (0 a 255) total de enderecos IPv4: 2^32 = 4.294.967.296 (~4,3 bilhoes) ################ CIDR — CLASSLESS INTER-DOMAIN ROUTING ################ notacao: endereco/prefixo exemplo: 203.0.113.100/26 o numero apos a barra indica quantos bits sao fixos (parte de rede) a barra nao significa divisao — e apenas um separador de notacao surgiu nos anos 90 para substituir a notacao verbosa de mascara: notacao antiga: 203.0.113.100 255.255.255.192 notacao CIDR: 203.0.113.100/26 (equivalente) ################ CALCULO DE HOSTS E MASCARA ################ bits livres = 32 - prefixo hosts = 2 ^ bits livres mascara = 256 - hosts (no ultimo octeto) exemplo /26: bits fixos: 26 bits livres: 32 - 26 = 6 hosts: 2^6 = 64 ultimo octeto em binario: 11000000 = 128+64 = 192 mascara: 255.255.255.192 exemplo /24: bits fixos: 24 (tres octetos completos reservados a rede) bits livres: 32 - 24 = 8 hosts: 2^8 = 256 (o octeto inteiro e seu) mascara: 255.255.255.0 ################ MASCARA EM BINARIO ################ /24 → 11111111.11111111.11111111.00000000 → 255.255.255.0 /25 → 11111111.11111111.11111111.10000000 → 255.255.255.128 /26 → 11111111.11111111.11111111.11000000 → 255.255.255.192 /27 → 11111111.11111111.11111111.11100000 → 255.255.255.224 /28 → 11111111.11111111.11111111.11110000 → 255.255.255.240 /29 → 11111111.11111111.11111111.11111000 → 255.255.255.248 /30 → 11111111.11111111.11111111.11111100 → 255.255.255.252 /31 → 11111111.11111111.11111111.11111110 → 255.255.255.254 /32 → 11111111.11111111.11111111.11111111 → 255.255.255.255 ################ TABELA DE PREFIXOS ################ prefixo bits livres hosts blocos mascara ------- ----------- ----- ------ --------------- /24 8 256 1 255.255.255.0 /25 7 128 2 255.255.255.128 /26 6 64 4 255.255.255.192 /27 5 32 8 255.255.255.224 /28 4 16 16 255.255.255.240 /29 3 8 32 255.255.255.248 /30 2 4 64 255.255.255.252 /31 1 2 128 255.255.255.254 /32 0 1 256 255.255.255.255 ################ BLOCOS DO ULTIMO OCTETO — EXEMPLO /26 ################ /26 divide o octeto em 4 blocos de 64 enderecos: 0 – 63 → rede 203.0.113.0/26 64 – 127 → rede 203.0.113.64/26 ← .100 cai aqui 128 – 191 → rede 203.0.113.128/26 192 – 255 → rede 203.0.113.192/26 para achar o bloco de um IP: divida o ultimo octeto pelo tamanho do bloco, arredonde para baixo exemplo: 100 / 64 = 1 (resto 36) → bloco comeca em 1x64 = 64 ################ ENDERECOS RESERVADOS EM CADA BLOCO ################ primeiro endereco = endereco da rede (nao atribuivel a hosts) ultimo endereco = broadcast (nao atribuivel a hosts) hosts uteis = total - 2 /30 → 4 enderecos, 2 uteis (link ponto-a-ponto) /29 → 8 enderecos, 6 uteis /26 → 64 enderecos, 62 uteis excecao /31: RFC 3021 permite uso em links ponto-a-ponto excecao /32: host route — representa uma unica maquina na tabela de rotas ################ OBSERVACOES ################ - o sistema binario usa base 2 (digitos 0 e 1) n bits = 2^n combinacoes possiveis - IPv4 esgotado desde 2011 (IANA) / 2019 (RIPE Europa) - IPv6 usa 128 bits: 2^128 = 340 undecilhoes de enderecos - NAT permite multiplos hosts compartilharem um IP publico e o principal motivo do IPv4 ainda estar em uso - CGNAT: NAT feito pela operadora em escala — seu roteador recebe um IP privado em vez de um IP publico @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ COMANDOS DE REDE - DIAGNOSTICO E DISCOVERY @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ################ INTERFACES E ENDERECOS ################ ifconfig # mostra todas as interfaces e IPs ifconfig em0 # mostra interface especifica ifconfig | grep inet # filtra so enderecos IPv4 ifconfig | grep inet6 # filtra so enderecos IPv6 prefixos de interfaces ifconfig interface-name inet IP-address netmask ifconfig em0 inet 203.0.113.250 255.255.255.0 ifconfig em0 inet 203.0.113.250/24 ifconfig em0 inet6 2001:db8::bad:c0de:cafe/64 :: sao zeros seguidos mas so pode usar 1 vez ################ CONECTIVIDADE ################ ping -c 4 8.8.8.8 # ping com 4 pacotes ping -c 1 -W 1 192.168.0.1 # ping rapido com timeout de 1s traceroute 8.8.8.8 # rota ate o destino traceroute6 ipv6.google.com # traceroute via IPv6 ################ DNS ################ host google.com # resolucao DNS simples host 8.8.8.8 # DNS reverso (IP -> nome) nslookup google.com # consulta DNS interativa drill google.com # alternativa ao dig no FreeBSD drill MX google.com # consulta registro especifico ################ PORTAS E SERVICOS LOCAIS ################ sockstat -l # todas as portas abertas e processos sockstat -l -p 80 # filtra porta especifica netstat -an # todas conexoes e portas netstat -an | grep LISTEN # so portas escutando netstat -rn # tabela de rotas netstat -w 5 -d # displays how many packets and bytes your system is processing ################ TABELA ARP- ARP (Address Resolution Protocol) é o mecanismo que traduz IP para MAC e a tabela é um cache temporário dessa tradução. IPv6 uses Neighbor Discovery Protocol (NDP) to map IPv6 addresses to MAC addresses. IPv6-only hosts will not show up in your ARP table, and IPv4-only hosts will not appear in the NDP table ################ (Criar tabela via Ping ou Nmap Antes) arp -a # todos os MACs conhecidos na rede arp -d 192.168.0.112 # remove entrada especifica do cache ################ NMAP - DISCOVERY ################ nmap -sn -PE --send-ip 192.168.0.0/24 # acha todos os hosts (ping) nmap -sn 192.168.0.0/24 # acha hosts via ARP nmap -Pn -F 192.168.0.1 # scan rapido sem ping ################ NMAP - PORT SCAN ################ nmap 192.168.0.1 # portas comuns nmap -p- 192.168.0.1 # todas as 65535 portas nmap -F 192.168.0.1 # 100 portas mais comuns nmap -p 80,443,22,21 192.168.0.1 # portas especificas nmap -Pn -p 8082,8083,8084,8085 192.168.0.112-115 # range de IPs ################ NMAP - IDENTIFICACAO ################ nmap -sV 192.168.0.1 # versao dos servicos nmap -O 192.168.0.1 # sistema operacional nmap -A 192.168.0.1 # tudo: OS, versao, scripts nmap -sV -oN resultado.txt 192.168.0.0/24 # salva resultado em arquivo ################ IP PUBLICO ################ curl ifconfig.me # mostra seu IP publico real curl -6 ifconfig.me # IP publico via IPv6 ################ FUNCOES NO ~/.shrc ################ # varre subnet e lista hosts com MAC e fabricante netscan() { SUBNET=${1:-192.168.0.0/24} nmap -sn -PE --send-ip --host-timeout 10s $SUBNET } alias www='cd /usr/local/www/apache24/data' #Alias para cd no diretorio web do Apache alias ll='CLICOLOR_FORCE=1 /bin/ls -AGlhiF | less -FR' #Alias para ls com cores e scroll alias la='CLICOLOR_FORCE=1 /bin/ls -AGlahiF | less -FR' #O mesmo mostrando ocultos trap 'fc -W' EXIT HUP TERM #Salva comandos do shell sh fechando abruptamente ou usar Ctrl+D @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ FIREWALL @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Comandos do dia a dia pfctl -sr Ver regras ativas pfctl -ss Ver conexões abertas (states) pfctl -si Status e estatísticas gerais pfctl -f /etc/pf.conf Recarregar regras sem reiniciar pfctl -nf /etc/pf.conf Testar sintaxe sem aplicar pfctl -d ⚠ Desativar PF imediatamente (emergência) Gerenciar IPs bloqueados (brute force) pfctl -t bruteforce -T show Ver IPs bloqueados pfctl -t bruteforce -T delete 1.2.3.4 Desbloquear um IP específico pfctl -t bruteforce -T flush Limpar toda a tabela @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ SHELL SH — ATALHOS @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Ctrl+A vai para o inicio da linha Ctrl+C interrompe o processo Ctrl+D EOF — encerra entrada ou sessao Ctrl+E vai para o fim da linha Ctrl+G bell — bipe do terminal (ASCII 7) Ctrl+H backspace (ASCII 8) Ctrl+I tab (ASCII 9) Ctrl+J linefeed Ctrl+L limpa a tela (igual a clear) Ctrl+R busca no historico — digita parte do comando Ctrl+U apaga a linha inteira Ctrl+W apaga a palavra anterior Ctrl+Z suspende o processo atual Alt+. repete o ultimo argumento do comando anterior @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ NAVEGACAO @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ cd / vai para a raiz do sistema cd ou cd ~ vai para o home do usuario cd /caminho caminho absoluto cd .. sobe um nivel cd ../.. sobe dois niveis cd - volta ao diretorio anterior (muito util!) pwd mostra o diretorio atual #### Tab — autocompletar #### ctrl + seta pro lado pula palavra cd /usr/lo<Tab> completa para /usr/local/ cd /usr/local/w<Tab> completa para /usr/local/www/ #### Historico history lista os ultimos comandos digitados !! repete o ultimo comando !ls repete o ultimo comando que comecou com "ls" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ COMANDOS @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ #### cat Le e exibe o conteudo de um arquivo. cat /var/log/messages mostra o arquivo inteiro cat arquivo.txt | grep "erro" filtra linhas (pode usar grep direto no arquivo) #### chfn Edita informacoes do usuario exibidas pelo finger. chfn celso ~/.plan e ~/.project tambem aparecem no finger #### cp / mv Copia ou move arquivos. cp arquivo.txt ../.. copia dois niveis acima cp arquivo.txt ../outra/ copia para pasta irma mv arquivo .. move para o diretorio pai mv arquivo arquivo2 renomeia arquivo ou pasta #### crontab Agenda tarefas recorrentes. NAO editar /var/cron/tabs/root diretamente. crontab -l lista as tarefas crontab -e edita Sintaxe: minuto hora dia mes dia_semana comando O * * * final significa "todo dia, todo mes, todo dia da semana". 0 */8 * * * /script.sh a cada 8h (0h, 8h, 16h) 0 */12 * * * /script.sh 2x por dia (0h e 12h) 0 */6 * * * /script.sh 4x por dia (0h, 6h, 12h, 18h) 0 3 * * 1 /script.sh toda segunda-feira as 3h Dias da semana: 0=dom 1=seg 2=ter 3=qua 4=qui 5=sex 6=sab #### dmesg Exibe mensagens do kernel geradas no boot. dmesg | less navega com espaco/q dmesg > /tmp/boot.log salva em arquivo #### export Define variavel de ambiente para a sessao. export EDITOR=ee define ee como editor padrao (em vez do vi) Para persistir, adicionar ao ~/.profile: EDITOR=ee; export EDITOR #### find Busca arquivos por nome, inode, etc. find / -inum 5 2>/dev/null acha arquivo pelo numero de inode find /home -inum 8138 -delete apaga pelo inode (util para nomes corrompidos) #### freebsd-update Atualiza o sistema base do FreeBSD. freebsd-update fetch baixa as atualizacoes freebsd-update install instala reboot freebsd-version confirma a versao apos reboot Versao atual: 14.3-RELEASE-p10 #### fsck Verifica e repara o filesystem. Usar em Single User Mode. No boot: escolher Single User, pressionar Enter no prompt do shell fsck -fy / verifica e corrige automaticamente #### grep Filtra linhas de texto por padrao. grep "erro" /var/log/messages busca em arquivo grep -i "erro" arquivo.txt ignora maiusculas/minusculas grep -r "palavra" /etc/ busca recursiva em diretorio grep -n "palavra" arquivo.txt mostra numero da linha grep -v "palavra" arquivo.txt mostra o que NAO tem a palavra grep -c "palavra" arquivo.txt conta quantas linhas encontrou #### htpasswd Cria ou atualiza senha do HTTP Basic Auth do Apache. htpasswd -B -c /usr/local/etc/apache24/.htpasswd Protegido -B = bcrypt (mais seguro) -c = cria arquivo novo #### locate The locate program searches a database for all pathnames which match the specified pattern. locate -i ignora case #### ls Lista arquivos e diretorios. ls -la listagem detalhada com arquivos ocultos ls -li inclui numero de inode (util com find -inum) ls .. lista o diretorio pai ll list customizado la list customizado mostra ocultos #### mail Le e-mails do sistema. mail abre caixa de entrada (/var/mail/root) mail -f le /root/mbox (e-mails ja lidos) Dentro do mail: h lista headers z / z- avanca/volta pagina de headers h5 vai direto ao header 5 U5 marca mensagem 5 como nao lida #### pkg Gerenciador de pacotes do FreeBSD. pkg update atualiza indice de pacotes pkg upgrade atualiza pacotes instalados pkg info dynamic_motd info de pacote ja instalado pkg search dynamic_motd busca no repositorio remoto #### ps Lista processos em execucao. ps aux | grep apache verifica se o Apache esta rodando #### smartctl Verifica saude do disco (SMART). smartctl -A /dev/ada0 | grep UDMA_CRC Monitora erros CRC — indica problema de cabo ou energia. Contador atual: 540. #### sockstat Mostra todas as portas abertas e conexoes ativas. sockstat -4 -l lista portas IPv4 em escuta #### su Muda para root no ambiente completo dele. su - #### tail Monitora o final de um arquivo em tempo real. tail -f -n 20 /var/log/messages ultimas 20 linhas, atualiza ao vivo tail -f /var/log/messages | grep "error" filtra so linhas com "error" #### talk / write Comunicacao entre usuarios logados no sistema. talk root chat interativo (requer que o outro aceite) write root envia mensagem diretamente no prompt do outro #### yes Ocupa o processador gerando carga (teste de CPU). yes > /dev/null imprime "y" infinitamente e descarta — usa 100% de um core @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ PIPES @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ O pipe | passa a saida de um comando como entrada do proximo. grep "error" /var/log/messages busca direta (sem cat) cat arquivo | grep "erro" equivalente, mas desnecessario aqui tail -f /var/log/messages | grep "error" monitora log ao vivo filtrando por "error" ps aux | grep apache verifica se o Apache esta rodando @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ FIGLET @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ figlet -c -f doom "FREEBSD" centralizado, fonte doom Fontes recomendadas: big, doom, slant, small, smslant, standard Loop para testar todas as fontes instaladas: for f in /usr/local/share/figlet/*.flf; do echo "=== $(basename $f .flf) ===" figlet -f "$f" "FREEBSD" done | less @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ TAREFAS ESPECIAIS @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ #### Apagar arquivo/diretorio por inode (nome corrompido) ls -li /usr/local/www/apache24/data/home descobre o inode find /usr/local/www/apache24/data/home -inum 8138 -delete #### Consertar filesystem (Single User Mode) No boot: escolher Single User, pressionar Enter no prompt do shell fsck -fy / #### Definir editor padrao permanentemente ee ~/.profile Adicionar a linha: EDITOR=ee; export EDITOR #### Monitorar erros de disco smartctl -A /dev/ada0 | grep UDMA_CRC

© Celso Ferrarini | [email protected]   |   English Português