10.25.2012

Noções básicas - Cisco ZBF (Zone Based Firewall)

Este artigo tem como objetivo apresentar alguns conceitos teóricos básicos sobre o ZBF - Zone Based Firewall-. É apresentada uma configuração básica de uma ZBF num cenário muito simples (router com uma ligação à Internet), mas contudo suficiente para perceber os conceitos básicos. Refira-se que a Cisco aconselha vivamente a utilização desta tecnologia tendo mesmo deixado de desenvolver a antiga ferramenta para implementação mecanismos de firewall stateful num router - CBAC-. Dito isto, a aprendizagem e acompanhamento da evolução das ZBFs é totalmente aconselhável por parte de administradores Cisco. As ZBFs podem suportar (conforme a versão do IOS)

  • Firewall de estado ou Stateful inspection
  • Application inspection
  • Filtragem de pacotes
  • Filtragem de URLs
  • Firewall transparente
  • Suporte para VRF – Virtual routing and forwarding

Com as ZBFs as interfaces são colocadas em zonas. As zonas podem ter qualquer nome atribuído, sendo que nomes como inside, outside ou DMZ são os escolhidos normalmente. As políticas são especificadas contemplando qual o tráfego que pode ser originado e qual a ação que a firewall deve ter sobre o mesmo. Cada uma das situações requer uma política diferente.

Uma zona precisa de ser inicialmente criada e só depois se podem atribuir interfaces a essa zona. Uma interface apenas pode pertencer a uma zona, sendo que uma zona pode ter mais do que uma interface. Existe uma zona por defeito, a self zone, sendo esta uma zona lógica. Para cada pacote dirigido ao router este automaticamente o interpreta como direcionado para a self zone e inversamente o tráfego que sai do router é interpretado como saindo da self zone. Por defeito, todo o tráfego que sai da self zone é permitido, sendo que tal comportamento pode ser alterado. Para todas as restantes zonas criadas administrativamente, não é permitido tráfego entre interfaces de zonas diferentes, sendo apenas permitido se pertenceram à mesma zona.

Se pretendermos que o tráfego entre interfaces colocadas em zonas diferentes seja permitido, temos que criar uma política específica para tal, entrando em equação o conceito de zone pair. Um zone pair, é uma configuração onde é identificado tráfego com origem numa zona para um destino noutra zona. O administrador associa uma série de regras (policy) para esse zone pair, onde especifica o tipo de inspeção a realizar sobre o tráfego e aplica essa policy ao zone pair.

No nosso exemplo, vamos criar duas zonas (inside, outside) e atribuir a interface interna à inside zone e a interface externa à outside zone. Depois criaremos uma policy para inspecionar o tráfego gerado pelos utilizadores com destino à Internet (Cada ligação vai gerar uma entrada na stateful database da firewall do IOS e apenas o tráfego de retorno legitimado pela informação constante nessa base de dados será permitido. Todo o restante é bloqueado. Os conceitos de ZBF aproximam a tecnologia usada aos conceitos aplicados nas firewalls de 2ª e nalguns aspetos de 3 geração)

Num exemplo mais complexo, uma empresa que tenha três interfaces (interna, externa e DMZ), criará 3 zonas onde colocará cada uma das interfaces, inside, outsider e DMZ. Em comparação com o cenário anterior, será criado um zone pair adicional (outside para DMZ) e aplicada uma política que permita que utilizadores na Internet possam enviar tráfego para os servidores colocados na DMZ. Noutro artigo exploraremos uma configuração possível para o efeito.

A Cisco tem uma linguagem para criar as políticas C3PLCisco Common Classification Policy Language. O processo para criar uma policy tem 3 componentes:

  • Class maps: Identificam tráfego a ser inspecionado. Tal pode ser feito desde o Layer 3 ao Layer 7, incluindo tráfego originado por aplicações específicas. Podem referir acls para identificar tráfego assim como referir outros class maps. Um class map pode especificar que todos os match statemets têm que combinar (match-all) ou que basta uma condição de um match se verificar (match-any). Um class-map por default que albergue todo o tráfego que não é alvo de condições de verificação pode ser usado.
  • Policy maps: Acções a serem tomadas após inspeção do tráfego. As acções que podem ser tomadas são inspect (ordena stateful inspection dos tráfego), permit ( permite sem inspecionar), drop, ou log.
  • Service policies: Especifica onde é aplicada a policy, identificada por um policy map, num zone pair.

Se um policy map contém múltiplas ações baseadas em diferentes class maps, o policy map é processado do seu inicio até ao fim, aplicando as acões conforme o match do tráfego com as condições definidas nas class maps. Se nenhuma das condições se verificar, entra em vigor a ação por defeito. A default policy para o tráfego que pretende inicar-se numa zona com destino a outra é uma negação implícita, implicit deny . A exceção é o tráfego originado de e para a self zone, que é permitido por defeito. Reveja-se no quadro seguinte as ações que podem ser especificadas num policy map:

  • Inspect: Ativa mecanimos de firewall stateful sobre o tráfego, deve ser aplicado no tráfego gerado para a Internet.
  • Pass: Permite o tráfego sem criar mecanismos de inspeção. Poderá ser necessário para permitir determinados tipos de tráfego inbound e outbound.
  • Drop: Bloqueia o tráfego de circular entre os zone pairs
  • Log: Gera mensagens de log. Aplica-se geralmente no tráfego que foi bloqueado

Quando um router recebe um pacote, toma uma decisão sobre o roteamento, encaminhando o pacote para uma interface ou fazendo um drop caso não conheça nenhum destino. Com uma ZBF configurada, o router atentará às políticas definidas e à informação da stateful database. A tabela seguinte mostra o fluxo de tráfego entre várias interfaces de várias zonas, dependendo da configuração. Convém memorizar a informação constante na tabela para efeitos de troubleshooting de ZBFs. Refira-se que Ingress refere-se a tráfego a entrar uma interface e Egress refere-se a tráfego que sai de uma interface.

Interface Ingress (membro de uma zona) Interface Egress (membro de uma zona) Existe um Zone pair com uma policy aplicada Resultado
Não Não Não é relevante O trágefo é encaminhado
Não Sim (qualquer zona) Não é relevante O tráfego não é encaminahdo
Sim (zona A) Sim (zona B) Não O tráfego não é encaminhado
Sim (zona A) Sim (zona B) Sim A policy é aplicada

Se existe um zone pair que identifica tráfego entre duas zonas e a policy não está aplicada nesse zone pair, o comportamento por defeito é não encaminhar o tráfego como se nenhum zone pair existisse.

Uma configuração com recurso a ZBFs inclui os seguintes componentes:

  • Zonas
  • Interfaces que são membros dessas zonas
  • Class maps que identificam o tráfego
  • Policy maps que usam class maps para identificar o tráfego e que especificam as ações a tomar
  • Zone pairs que identificam um fluxo de tráfego unidirecional, a iniciar-se em dispositivos pertencentes a uma zona e roteados para outra interface pertencente a outra zona
  • Service policy, que associa um policy map a um zone pair.

Com isto em mente, vamos criar uma configuração que implemente uma ZBF num router com um acesso à Internet:

Zonas

Vamos criar uma zona para a rede interna (LAN) e outra zona para a conter a interface pública ou seja a internet. Podemos atríbuir qualquer nome à zona mas no presente exemplo optamos por inside para a LAN e outisde para a zona que se liga à Internet. Optou-se por colocar essa informação na descrição das zonas (comandos facultativos)

RTHOME(config)#zone security inside
RTHOME(config-sec-zone)#description LAN_PRIVADA
RTHOME(config-sec-zone)#exit
RTHOME(config)#zone security outside
RTHOME(config-sec-zone)#description INTERNET
RTHOME(config-sec-zone)#exit

Colocar as interfaces nas respetivas zonas

RTHOME(config)#interface vlan1
RTHOME(config-if)#zone-member security inside

exit
RTHOME(config)#interface vlan2
RTHOME(config-if)#zone-member security outside

exit

Vamos criar as Class maps que identificam o tráfego. Escolhemos aleatoriamente alguns protocolos para figurarem no exemplo. Obviamente, este passo exige um planeamento prévio sobre o que é pretendido ao nível das políticas e da segurança.

RTHOME(config)#class-map type inspect match-any OUT_TRAFFIC_INTERNET
RTHOME(config-cmap)#match protocol dns
RTHOME(config-cmap)#match protocol ftp
RTHOME(config-cmap)#match protocol tcp
RTHOME(config-cmap)#match protocol udp
RTHOME(config-cmap)#match protocol ssh
RTHOME(config-cmap)#match protocol smtp
RTHOME(config-cmap)#match protocol icmp
RTHOME(config-cmap)#match protocol http
RTHOME(config-cmap)#match protocol https

Vamos criar uma policy map que vai referenciar a class map previamente criada para identificar o tráfego. Após essa referência é configurada a ação a tomar.

RTHOME(config-pmap)#class type inspect OUT_TRAFFIC_INTERNET
RTHOME(config-pmap-c)#inspect

Criamos agora o zone pair que identifica o sentido (unidirecional do tráfego) e o sercice policy que referencia o Policy map previamente configurado.

RTHOME(config)#zone-pair security PRIVATE_LAN_TO_INTERNET source inside destination outside
RTHOME(config-sec-zone-pair)#service-policy type inspect INTERNET_TRAFFIC
RTHOME(config-sec-zone-pair)#exit
RTHOME(config)#

Obviamente que terá de ser configurado PAT no Router para permitir que os disporitivos da LAN acedema à Internet.

ip access-list standard ACL_NAT
RTHOME(config-std-nacl)#permit 192.168.1.0 0.0.0.255

RTHOME(config-std-nacl)#exit
RTHOME(config)#
RTHOME(config)#interface vlan1
RTHOME(config-if)#ip nat inside
RTHOME(config-std-nacl)#exit
RTHOME(config)#interface vlan2
RTHOME(config-if)#ip nat outside
RTHOME(config-if)#exit
RTHOME(config)#ip nat inside source list ACL_NAT interface Vlan2 overload

Este exemplo deve servir como base para entender os conceitos das ZBFs. Contudo a configuração mostrada funciona perfeitamente num equipamento doméstico ou um router de uma pequena empresa.

Para saber mais

Fonte: Cisco CCNA Security Official Cert Guide

10.24.2012

Manipulação de ficheiros - Windows

Existem 3 comandos principais para copiar ficheiros

  • copy: comando básico de cópia de ficheiros. Pode ser utilizado para agregar o conteúdo de vários ficheiros de texto num só.
  • xcopy: aumenta as potencialidades do comando copy permitindo a manipulação de subpastas
  • robocopy: o comando mais versártil, permite manipulação de estruturas de pastas e de permissões

Exemplos do comando copy:

Comando copy Comentários
c:\>copy test.txt test2.txt Cria o ficheiro test2.txt a partir do ficheiro test.txt
c:\>copy test1.txt+test2.txt testtotal.txt Cria o ficheiro testtotal.txt agregando os conteúdos de test1.txt+test2.txt.
c:\>copy *.txt total.txt Cria o ficheiro total.txt a partir de todos os ficheiros com a extensão txt na presente pasta
c:\data>copy *.* c:\arquivo Copia todos os ficheiros para a pasta arquivo

Comando xcopy Comentários
c:\>xcopy c:\data d:\data /s
c:\>xcopy c:\data d:\data\ /s
O switch /s copia todos os ficheiros, pastas e subpastas da origem para o destino. Usar "\" se a pasta de destino não existir. Não existindo, o sistema vai perguntar se pretende enviar os dados para um ficheiro ou pasta. Se escolher pasta, todos os dados são combinados num único ficheiro. Se escolher ficheiro, toda a esttutura de pastas é recriada.
c:\>xcopy c:\data d:\data\ /s /e O switch /e garante que as pastas vazias são copiadas
c:\>xcopy c:\data d:\data\ /s /e /t O switch /t apenas copia a estrutura de pastas sem copiar os ficheiros
c:\>xcopy c:\data d:\data\ /s /e /y O switch /y impede que o sistema pergunte se pretende escrever por cima de ficheiros existentes.

O robocopy tem mais funcionalidades que o xcopy, permitindo copiar a metadata associada com um ficheiro. A metadata é identificado com recurso a flags. As flags podem ser usadas com /copy para especificar a metadata a copiar.

robocopy (metadata flag) Comentários
c:\>robocopy c:\data d:\data\ /copy:d Flag de data (d). O d identifica a própria flag
c:\>robocopy c:\data d:\data\ /copy:da Flag de atríbuto (a), incluindo atríbutos como hidden ou read-only
c:\>robocopy c:\data d:\data\ /copy:dat
c:\>robocopy c:\data d:\data\
Flag com timestamps (t), incluido quando o ficheiro foi criado ou modificado. As flags d, a e t são uasadas por defeito. Assim sendo os comandos têm o mesmo efeito.
c:\>robocopy c:\data d:\data\ /copy:dats Flag de segurança (s) onde são contempladas as permissões NFTS
robocopy c:\data d:\data\ /copy:datso Flag de owner(o), que permite manter o dono original do ficheiro. Se não for usado o dono passa a ser o utilizador que executou o comando

Vejam-se alguns exemplos do comando robocopy para manipulação de pastas e ficheiros

Comandos robocopy Comentários
c:\>robocopy c:\data d:\data\ Copia todos os ficheiros para a drive d:. Não inclui pastas.
c:\>robocopy c:\data d:\data\ /s Copia todos os ficheiros e pastas e subpastas não vazias.
c:\>robocopy c:\data d:\data\ /e Copia todos os ficheiros, pastas e subpastas, incuido pastas vazias (note-se que não foi necessário incluir o switch /s
c:\>robocopy c:\data d:\data\ /e /purge O switch /purge elimina os ficheiros e pastas do destino que já não estejam na origem
c:\>robocopy c:\data d:\data\ /mir O switch /mir faz mirror de todo o conteúdo da origem no destino. Faz o mesmo que o comando do exemplo anterior.
c:\>robocopy c:\data d:\data\ /mov Copia todos os ficheiros para o destino eliminado-os da origem (mesmo que cortar e copiar). Não incui subpastas.
c:\>robocopy c:\data d:\data\ /move Similar ao comando anterior, inclui também todas as subpastas

O output do comando robocopy permite verificar quantos ficheiros e pastas foram copiados, ficheiros que não o foram, eventuais falhas e erros, etc.

Para verificar estas e outras opções existe uma ferramenta em modo gráfico muito boa. O Robocopy GUI. O robocopy deverá ser o comando por eleição a utilizar para manipulação avançada de copias de dados

10.23.2012

Introdução Linha de Comandos - Windows 2008

Pensa-se que os administradores de Windows apenas utilizam o ambiente gráfico. Em contraponto, um bom administrador de Linux raramente admitirá usar o GUI, não obstante a evolução notável que muitas ferramentas gráficas para Linux sofreram nos últimos anos (Refira-se que linha de comandos num sistema Linux é muito mais versátil, complexa e útil que a existente num sistema Windows). Esquecendo preconceitos, qualquer administrador de sistemas deverá pelo menos conhecer a linha de comandos não obstante a plataforma em que trabalha. Apresenta-se neste artigo uma introdução básica da linha de comandos tendo como pano de fundo o Windows 2008. Refira-se linha de comandos e não a  Windows PowerShell que é uma framework da Microsoft para execução de comandos, automatização de tarefas e possibilidade de usar extensivamente uma linguagem própria de scripting.

A linha de comandos encontra-se no Start menu no Windows 2008 por defeito. Caso não esteja poderá aceder-lhe fazendo Start >> digitar Cmd na Search Box >> Enter. Em alternativa Start >> All Programs >> Acessories >> Command Prompt

Se o logon no sistema for feito com a conta de administrador, a linha de comandos será executada em modo de administração. Caso o log on seja feito com outra conta, poderá aceder na mesma à linha de comandos mas com privilégios reduzidos. Para executar uma propmpt numa conta não administrativa com direitos de administração:
Botão direto do rato sobre da Command prompt >> Escolher “Run as administrator” e inserir credenciais.

Existem os seguintes atalhos básicos para o teclado

Cursor cima Evoca o último comando
Cursor baixo Evoca o próximo comando
Page Up Evoca o comando mais antigo digitado na sessão
Page Down Evoca o último comando digitado na sessão
Cursor esquerdo Move o cursor para trás um caracter
Cursor direito Move o cursor para a frente um caracter
CTRL+Cursor esquerdo Move o cursor para trás uma palavra
CTRL+Cursor direito Move o cursor para a frente uma palavra
Home Move o cursor para o ínicio da linha
End Move o cursor para o fim da linha
Esc Limpa a linha de comandos

O comando doskey guarda num buffer os últimos 50 comandos efetuados. Poderá usar o comando c:\doskey /history para ver os comandos, o comando c:\>doskey /listsize = 100 para alterar para 100 o número de comandos a guardar pelo buffer (Poderá alterar este parâmetro em modo gráfico com Botão direito na barra de título da linha de comandos >> Properties >> Buffer Size. Para ver mais opções para este comando ou qualquer outro, execute c:\doskey /? .

Uma função muito útil do comando doskey é a sua utilização para a criação de macros. Imaginemos que desejamos parar e iniciar um serviço muitas vezes, ou seja, executar os comandos sc stop netlogon e sc start logon. Podemos criar as macros com os comandos c:\>doskey stpnl = sc stop netlogon e c:\>doskey sttnl = sc start netlogon . Assim, cada vez que quisermos parar e iniciar o serviço bastará digitar c:\>stpnl e c:\>sttnl . Note-se que estas macros são armazenadas temporariamente, ou seja, quando fechar a prompt onde foram configuradas, desaparecem.

Pode copiar e colar texto da linha de comandos para o clipboard o comportamento difere se a opção Quik Edit Mode (Botão direito na barra de título da linha de comandos >> Properties >> Quik Edit Mode) está ativa. Caso esteja, basta selecionar o texto com o rato e digitar enter para o copiar. Se não estiver ativo, é necessário clicar com o botão direito do rato na linha de comandos>> Mark >> selecionar o texto com o rato e digitar enter para o copiar.

Os sistemas Windows não são case-sensitive como os sistemas Linux. Assim sendo os comandos RepAdmin /SyncAll  | Repadmin /syncall    | REPADMIN /SYNCALL são iguais. Para efeitos de legibilidade, na documentação os comandos quando contêm duas ou mais palavras costumam ter a primeira letra dessas palavras em maiúsculas.

Existem contudo algumas exceções. Nomeadamente quando se instalam ou adicionam serviços a um sistema Windows 2008 Server Core Edition é necessário respeitar maiúsculas e minúsculas. Por exemplo o comando c:\>start ocsetup dhcpservercore não funcionaria, sendo necessário executar c:\>start ocsetup DHCPServerCore para iniciar o processo de instalação do serviço de DHCP no servidor. A linha de comandos interpreta um espaço como a separação entre parâmetros.

Quando um parâmetro tem um ou mais espaços é necessário colocar aspas para o delimitar. Por exemplo, veja-se a sintaxe do comando que atribui um endereço IP a uma interface de rede: netsh interface ipv4 set address name = Name of NIC static ip address sub-net mask . Se o nome da interface de rede for Local area connection o comando a executar deverá ser:
C:\>netsh interface ipv4 set address name = "local area connection" static 192.168.1.15 255.255.255.0
Uma variável é um repositório com uma determinada informação.  As varáveis permitem aceder a essa informação e agilizar a construção dos comandos.
Se pretendermos ver a pasta de instalação do Windows:

C:\echo %systemroot%
C:\Windows

Variável Descrição
%programfiles% Caminho da pasta onde se encontram instalados os programas
%systemdrive% Caminho da diretoria root
%appdata% Caminho onde as aplicações instalam informação
%userdomain% Nome do domínio
%logonserver% Nome do controlador de domínio que validou a conta
%processor_architecture% Arquitetura do processador (32 ou 64 bits)
%allusersprofile% Localização do perfil da conta

Uma das grandes vantagens das variáveis é poderem ser utilizadas na construção de comandos. Por exemplo, para editarmos o ficheiro windowsupdate.log podemos executar o comando c:\notepad %systemroot%\windowsupdate.log
Podemos criar variáveis com o comando: [set variable-name = value] . Por exemplo C:\>set var1 = test , atríbui a string test à variável com o nome var1.
Podem-se modificar um comando com a adição de um switch. Um switch é precedido por um espaço e um traço “-“ ou barra “/” .  Por exemplo, para limpar a tabela de cache de DNS podemos usar os comandos c:\ipconfig /flushdns ou c:\ipconfig –flushdns . Curiosamente o comondo ipconfig/flushdns , sem espaço, funcionaria. Como tal não sucede em muitos comandos, aconselha-se a utilizar sempre espaços.

O comando dir lista diretorias. Para afinarmos uma pesquisa podemos usar wildcards que representam um ou mais caracteres.  Existem dois disponíveis na linha de comandos: o asterisco “*” que se refere a nenhum ou mais caracteres e o ponto de interrogação “? ” que apenas se refere a um único caractere. Vejam-se os exemplos:

Wildcard Descrição
C:\dir *.txt Lista todos os ficheiros com extensão txt
C:\>dir a* Lista todos os ficheiros que comecem com um a
C:\>dir a*.txt Lista todos os ficheiros que comecem com um a e tenham extensão txt
C:\>dir week?.txt Lista todos os ficheiros que comecem com week e tenham apenas mais um carater, com extensão txt

Para listar, na linha de comandos, quase todos os comandos disponíveis e uma breve descrição de cada um (alguns comandos avançados para funções muito específicas não surgem na listagem), basta executar o comando help.
Para obter informação mais detalhada sobre um comando em particular, usar o switch /? . Por exemplo, o comando ipconfig /? vai mostrar as opções disponíveis e um sucinta explicação de cada uma delas. Existe também a possibilidade de obter informação com a palavra help antecedida do comando Exemplo: c:\help dir . Contudo, para muitos comandos essa opção não devolve nenhum resultado. Assim sendo a opção /? é a mais aconselhável.
Convém perceber a notação utilizada para pode usufruir da informação devolvida pelos comandos help. Veja-se o quadro seguinte:

Notação Descrição Exemplo
Texto sem parêntesis ou chavetas. Itens que devem ser digitados tal como surgem ipconfig
[Texto com parêntesis retos] Itens opcionais echo[mensagem]. O comando echo mostra se a função está ou não ativa no sistema. O comando  echo %programfiles% devolve o conteúdo da variável
{Texto com chavetas} Escolher um dos itens requeridos gpupdate [/target:{computer | user}] . Se usar o switch /target deve fornecer o nome do computador ou do utilizador
| Barra vertical Exclusão mútua gpresult [/s system [/u username [/p [password]]]] [/scope scope] [/user targetusername] [/r | /v | /z] [(/x | /h) <filename> [/f]]   Se usar as opções /r ou /v não pode usar a opção /z
Itens que podem ser repetidos [winrm operation resource_uri [-switch:value[-switch:value] ...] [@{key=value[;key=value]...}]  Os pontos indicam que podem ser inseridos múltiplos parêmtros na mesma linha.

A linha de comandos mostra a atual localização. No caso de ter sido executada por um administrador, o caminho apresentado será c:\Windows\system32> .  Para editar um ficheiro noutra localização poderá simplesmente executar o comando c:\windows\system32>notepad c:\temp\meuficheiro.txt . Obviamente se o ficheiro se encontrar no mesmo sítio (caminho atual referenciado pela linha de comandos) não é necessário fornecer a localização .
Depreende-se que não foi necessário fornecer a localização do programa notepad para editar o ficheiro. Tal sucede porque o Windows sabe o caminho para o programa. O Windows server 2008 R2 tem na sua variável path os caminhos para c:\windows , c:\windows\system32 , c:\windows\system32\wbem e da powershell c:\windows\system32\windowspowershell\v1.0 se esta for instalada. Pode ver a path com os comandos c:\echo %path% e c:\>path .

Pode manipular a path com o comando c:\>path = c:\mypath que atribui para a atual sessão da linha de comandos a pasta c:\mypath , sendo que quando a sessão for encerrada cessa a atribuição. O comando c:\>path =  %path%;c:\mypath adiciona o novo caminho aos constantes na variável path. Quando encerrada a sessão, cessa a atribuição.

Vejamos uma lista simples de comandos:

  • dir texto*.* /s : Procura ficheiros que comecem com "texto". O switch /s faz com que a pesquisa seja feitas em todas as subdiretorias.
  • cd temp/fotos: Muda para a pasta especificada
  • cd .. : Move uma pasta para cima. Notar que tem um espaço entre cd e ..
  • cd \ : Move para a raiz da drive onde se encontra
  • md pasta1: Cria uma pasta com o nome pasta1
  • rd pasta1: Elimina a pasta mas sse estiver vazia
  • rd pasta /s /q: Elimina a pasta e todos os ficheiros e sub-diretorias (switch /s) sem pedido de confirmação (switch /q).

Refira-se pela sua importância os comandos de direcionamento de output > e >> com dois exemplos:

  • > : gpresult /z > grouppolicies.txt cria o ficheiro grouppolicies.txt adicionando-lhe o output do comando gpresult /z. Se o ficheiro já existir escreve por cima do mesmo.
  • >> : gpresult /z >> grouppolicies.txt adiciona o output do comando gpresult /z ao ficheiro não escrevendo por cima.