Instalando e configurando o FTP Server no Microsoft Azure


Olá Pessoal,

Vamos a mais um artigo, dessa vez vamos falar da instalação e configuração do FTP Server no Microsoft Azure, o objetivo do artigo é ser o mais simples possível, e claro que mantenha a qualidade e não comprometa o conteúdo.

Primeiro passo, conecte na máquina virtual (com Windows Server 2012 R2) que está hospedada no Microsoft Azure, em seguida abriremos o powershell como Administrador, depois executaremos o seguinte comando: Install-WindowsFeature Web-FTP-Server

image

Ao final da instalação será apresentada a mensagem abaixo, perbeca que a instalação foi feita com sucesso e não necessita de restart.

image

OBS¹: Lembrando que a instalação do FTP Server pode ser feita via GUI, preferi o powershell por ser mais prático.

Aproveitando que já estamos com o powershell aberto, digite: inetmgr e tecle <ENTER>, a janela de gerenciamento do IIS será aberta e é nela que vamos trabalhar algumas configurações de FTP Server. Após a instalação do FTP, vamos criar um site de FTP, seguindo o seguinte procedimento:

 

Com a pasta de sites selecionada, clique com o botão direito, depois Add FTP Site. Preencha todas as informações, como o nome do site de FTP e o caminho que será armazenado os arquivos, clique em Next.

image

Agora vamos fazer algumas configurações básicas do FTP, a principio por se tratar de um ambiente de laboratorio utilize as mesmas informações da imagem abaixo. Next.

image

Na próxima janela configuramos as opções de Autenticação e Autorização (Utilize as informações abaixo), Finish.

OBS²: As informações abaixo, caso seja configuração para o ambiente de produção, vai fazer com que qualquer um tenha acesso e possa fazer operações de escrita e leitura.

image

Pronto, FTP Server configurado, porém so pode ser acessador internamente, para tirarmos a prova real, podemos utilizar uma ferramebta muito conhecida pelos ITPRos, que é o telnet, aproveite a janela do powershel que está abertaw e digite o seguinte comando: telnet localhost 21

O que será apresentado a você tem que ser identico a janela abaixo:

image

Bom, tudo funcionado, porém eu quero que esse FTP esteja publicado externamente, bem simples, basta criar um endpoint para essa máquina virtual, acesse o portal do azure (http://manage.windowsazure.com), navegue até o menu Virtual Machines, clique na máquina virtual que foi utilizada para configurar o FTP, clique em Endpoint, na parte de baixo da janela, utilizaremos a opção Add –> ADD A STAND-ALONE ENDPOINT

image

Clique em Next, e siga as opções da imagem abaixo:

image

Clique em Finish e aguarde por alguns instantes até a configuração do endpoint, para testar seguimos a mesma lógica do teste interno, porém para que seja eficaz o teste deve ser feito de um computador fora do azure e utilizaremos o IP Público e/ou DNS para acessa-lo.

OBS³: Caso tenha problema para acessar o FTP de uma rede pública, certifique-se que a porta configurada no endpoint esteja liberada no firewall local do Window, para isso, abra o powershell e/ou prompt de comando como administrador e execute o abaixo e faça o teste novamente.

netsh advfirewall firewall add rule name=”FTP (non-SSL)” action=allow protocol=TCP dir=in localport=21

image

image

OBS4: O nome pode ser qualquer um, inclusive algum customizado, o protocolo é TCP, e um ponto importante é relacionado a public port e private port, onde public port é a porta que ficara aberta para a internet e a private port é a porta que configuramos internamente. Lembrando que a porta pode ser qualquer uma (diferente de 21), isso ajuda a mitigar ataques de força-bruta, por exemplo, que normalmente usam portas padrões de mercado. Aproveitando o gancho de segurança, ainda podemos disponibilizar esse FTP a partir de uma VPN Site-to-Site ou Cliente-to-Site, assim isolamos o FTP e acessamos de uma forma segura. Caso você não utilize uma VPN ou até mesmo um certificado SSL, lembre-se o trafego que acontece entre o client-server não é criptografado e pessoas mal intencionadas podem intercepetar os dados que estão sendo trafegados.

Até a próxima,

Erick Albuquerque | MVP
@_ealbuquerque | linkedin

Publicando externamente um site do IIS 8.5 no Azure


No último artigo falamos de como criar um site no IIS (Internet Informations Services) 8.5, para quem não leu, pode consultar neste link.

Lembrando que esses artigos estão sendo desenvolvido na plataforma em nuvem da Microsoft, o Microsoft Azure.

Hoje vamos aprender a como publicar para o mundo externo um site no Azure e quais as configurações que precisam ser feitas no IIS.

Quando criamos uma máquina virtual no Azure, é gerado uma URL no seguinte padrão nome.cloudapp.net.

image

É exatamente isso que vamos utilizar para publicar nossa aplicação, primeiramente vamos configurar o host header com o nome de DNS público que já foi gerado anteriormente quando criamos a máquina virtual. Para isso vamos abrir a console de gerenciamento do IIS 8.5:

– Pressione as teclas Window+R, na sequência digite:inetmgr e clique em OK.

– Clique com o botão direto em cima do website, e selecione Edit Bindings

image

– Selecione a opção semelhente da imagem abaixo e clique em Edit

image

– Vamos manter todas opções por enquanto com exceção do campo Host name que preencheremos com a URL da Máquina Virtual, na sequência clique em OK.

image

– No próximo passo, vamos configurar o endpoint na máquina virtual, basicamente criaremos um regra que vai permitir o acesso externo através da porta 80 para o nosso site dentro do IIS. Simplificando o endpoint, podemos entender que é um NAT (Network Address Translation). Outras possibilidades de configuração para esse site é o seguinte, para o acesso externo pode ser feito na porta 8085 (http://iisbrasil.cloudapp.net:8085), porém nossa porta interna configurada no IIS é 80!

Vamos a configuração:

Com o portal do Microsoft Azure aberto, selecione no painel ao lado esquerdo – Virtual Machine, no painel central clique na máquina virtual que está hospedado o seu site, ainda no painel central, selecione ENDPOINTS.

image

Clique em Add > Add a Stand-alone endpoint > Next

Em name, Selecione HTTP, automaticamente as informações serão preenchidas, veja:

image

Agora clique em Complete, e aguarde alguns instantes para que seja aplicado a configuração do endpoint na máquina virtual selecionada anteriormente.

Para validar a configuração é bem simples, acesse o navegador do seu computador local e entre com o endereço que vocês criaram, no nosso caso é o http://iisbrasil.cloudapp.net.

A tela inicial do IIS 8.5 será apresentada.

image

Uma outra maneira de validar se a configuração foi aplicada corretamente na máquina virtual é com o telnet que pode ser executado de qualquer dispositivo que tenha acessa a Internet e com o cliente de telnet.

Até a próxima.

Erick Albuquerque | MVP
@_ealbuquerque

Conheça as novidades no IIS 8.5


IIS 8.5

Na nova versão do Windows Server 2012, foram implementadas melhorias no IIS 8.5, confira abaixo:

Enhanced Logging

Com essa opção é possível registrar os campos personalizados do pedido ou resposta do cabeçalho, ou ainda  a partir de alguma variável do servidor.

Logging to Event Tracing

Com essa opção o administrador tem a opção de envio de informações de log do rastreador de eventos s para o Windows (ETW). Na versão anterior não era possível visualizar o LOG do IIS porque estava sendo utilizado pelo processo, e era demorado o processamento do LOG no disco, com essa opção é possível visualizar o LOG em tempo real.

Dynamic Website Activation

Quando existe um número muito alto de sites configurados, 100 ou maior por padrão, você utiliza essa opção para reduzir o tempo de inicialização do site e utilização de memória. Quando era inicializado um servidor de IIS, os sites eram automaticamente iniciado, e ao iniciar todos de uma vez o consumo de um site pode ser maior do que o normal, e por outro lado alguns não utilizam tantos recursos assim e não tinham muitos acessos.

Idle Worker Process Page-Out

Com essa opção é possível suspender um worker process ocioso ao invés de finaliza-lo. A vantagem de utilizar essa opção é para liberar recursos no servidor como Memória e CPU, até a versão anterior (8.0) era possível você finalizar um worker process após um tempo  ocioso, isso era ruim, pois quando tinha a primeira requisição o worker process era iniciado novamente, tornando mais lento o primeiro acesso.

Nós próximos artigos vamos entender como é ativado cada uma dessas funcionalidades novas.

Você conhece o HTTP.SYS?


Bom pessoal, após algum tempo sem escrever para vocês, hoje volto com um post curto, porém interessante para que vocês conheçam um pouco sobre a arquitetura do IIS, é um processo importante, e é preciso conhecer, pois alguns problemas podem ser tratados nesse nível.

O HTTP.SYS é conhecido como Hypertext Tranfer Protocol Stack, é implementado como driver em modo kernel na instalação do IIS. O HTTP.SYS escuta todas as requisições HTTP (Porta 80) que são enviadas para o IIS, ele possui alguns beneficios como:

  • Cache do modo kernel : Os pedidos de respostas em cache são servidos para o modo usuário sem que seja alterado o conteúdo.
  • Modo kernel pedido filas: Pedidos causam menos sobrecarga na mudança de contexto, pois o kernel encaminha solicitações diretamente para o processo correto, caso não tenha nenhum processo disponível para aceitar um pedido, a fila de que está em modo kernel mantém o pedido até que um processo de trabalho esteja disponivel.
  • Solicitação de pré-processamento e segurança de segurança.

 

A ideia para esse ano é falarmos muito sobre o IIS 8.5, e ajudar vocês administradores a conhecer melhor o produto e implementar da forma correta, pois acreditem o IIS não é apenas NNF (Next, Next, Finish).

Até breve,

Erick Albuquerque

Ferramenta de troubleshooting de requisições no IIS 7.5 e 8.0


Pessoal,

O PFE Guilherme Carnevale desenvolveu uma ferramenta para troubleshoting de requisições no IIS 7.5 e 8.0, abaixo estão listados os principais recursos, bem como o link para download, veja:

  • Listar conexões web atuais
  • Reciclagem de Application Pool
  • Tirar dump de processos W3WP.exe que não respondem (clicar com o botão direito sobre o nome do processo W3WP.exe)
  • Filtrar apenas conexões mais lentas que (5,10,20,30,40,50,60) segundos
  • Auto refresh a cada 3 segundos (opcional)
  • Salvar conexões em execução para arquivo CSV
  • Coleta de dados de performance (10 segundos de intervalo/ 1 minuto de intervalo)
  • Coleta de Network Monitor (dados de rede)
  • netstat / netstat com filtro por IP
  • netsh http (Comandos todos em tela visual)
  • Coleta de dados de diagnósticos avançado (Event trace for Windows – ETW)
  • APPCMD via modo visual
  • Criar e listar backups do IIS
  • Ferramenta do Performance Monitor com principais contadores do IIS
  • Atalhos para console do IIS, Services e CMD

5873.reqviewer

Clique aqui para fazer o Download do ReqViewer:

Instalando IIS 7.5 + FTP com powershell


Olá pessoALL,

Abaixo um dica bem interessante que pode ajudar no deploy automatizado de instalação do IIS 7.5 + FTP, apenas salientando que a instalação do IIS é a Default.

Import-Module servermanager
#Instalação default do IIS + FTP
Add-windowsFeature Web-Server, Web-WebServer, Web-Common-Http, Web-Static-Content, Web-Default-Doc, Web-Dir-Browsing, Web-Http-Errors, Web-Health, Web-Http-Logging, Web-Request-Monitor, Web-Security, Web-Filtering, Web-Stat-Compression, Web-Mgmt-Console, Web-Ftp-Server, Web-Ftp-Service, Web-Ftp-Ext

Para validar a instalação abra o browser e digite http://localhost.

Caso tenha necessidade de acrescentar mais alguma coisa na instalação do IIS, deixe um comentário!

Até a próxima.

Erick Albuquerque

Powershell – Script para monitorar eventos de crash/hang de Web Server


Este script pode ser executado tanto no servidor como na parte de cliente, copie o código abaixo e salve como monitorweb.ps1. Apenas salientando que o teste de “ping” é feito a cada 30 segundos, caso não tenha nenhuma resposta da url configurada ou se gerar alguma exceção o e-mail será enviado para sua caixa postal.

——————————————————————————————————————————————————–

function MonitorSite {

param($URL)
$emailFrom = “seuemail@test.com” #digita seu email
$emailTo = “seuemail@test.com” #digita seu email
$smtpServer = “mail.teste.com.br” #entre com o servidor de smtp
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
#$smtp.Credentials = New-Object System.Net.NetworkCredential(“sua conta de smtp”, “senha”);
#Caso seja necessário descomente a linha acima para entrar com as credenciais

trap{

“Failed. Details: $($_.Exception)”

$subject = “Exception Sent from PowerShell”

$body = “Fail`t`t” + “`t`t”+”Failed. Details: $($_.Exception)”

$smtp.Send($emailFrom, $emailTo, $subject, $body)

exit 1

}

$webclient = New-Object Net.WebClient

#some sites may refuse your test if the user agent is not explicit

# $webClient.Headers.Add(“user-agent”, “IE”)

$webclient.Credentials = [System.Net.CredentialCache]::DefaultCredentials

if($webclient.Proxy -ne $null) {

$webclient.Proxy.Credentials = `

[System.Net.CredentialCache]::DefaultNetworkCredentials

}

while (1 -eq 1)

{

$startTime = get-date

$webclient.DownloadString($URL) | Out-Null

$endTime = get-date

#should not slower than 120 seconds

if (($endTime – $startTime).TotalSeconds -ge 120)

{

” TimeOut. “

$subject = “Timeout Sent from PowerShell”

$body = “Timeout`t`t” + $startTime.DateTime + “`t`t” + ($endTime – $startTime).TotalSeconds + ” seconds”

$smtp.Send($emailFrom, $emailTo, $subject, $body)

}

else

{

“Success`t`t” + $startTime.DateTime + “`t`t” + ($endTime – $startTime).TotalSeconds + ” seconds”

}

#ping site every 30 seconds

sleep(30)

}

}

MonitorSite “http://localhost&#8221;

——————————————————————————————————————————————————–

Resultado:

 

Fonte: AsiaTech

 

Conheça as novidades do IIS 8.0


IIS 8

Após um pouco mais de um mês sem postar nenhum artigo, estamos de volta!! A ausência foi por um bom motivo, eu estava dedicando meu tempo para o projeto do Windows 8 Dicas (http://windows8dicas.com.br) , portal totalmente em Metro Style, com altas dicas de Windows 8 e Windows Server 2012.
Bom agora vamos focar neste artigo, que são as novidades do IIS 8 que veio juntamente com o lançamento do Windows Server 2012, veja abaixo em detalhes as novas features e as que foram melhoradas.

CPU Throttling

CPU Throttling permite que os clientes possam limitar a quantidade de CPU que cada site pode consurmir por CPU, isto é possível configurar por application pool, o que significa que cada site pode ter um limite diferente, se for pensar pelo lado do negócio, quem está comprando pode pagar mais por limites muito mais alto. Apenas salientando que o CPU Throttling não é uma reserva de recursos de CPU e sim uma maneira de limitar a utilização máxima de CPU.

Figura 1 – CPU Throttle

Multicore Scaling on NUMA Hardware
“Non-Uniform Memory Access (NUMA) é um desenho de memória de computador usado no multiprocessamento, onde o tempo de acesso de memória depende da localização de memória em relação a um processador. Sob NUMA, um processador pode acessar sua própria memória local mais rápido do que outros locais de memória, isto é, a memória local para outro processador ou memória compartilhada entre processadores. ”
Na versão anterior do IIS era possível alterar o número de núcleos no application pool para aumentar o desempenho, mas no entanto pode chegar a um ponto que o aumento de CPUs pode gerar degradação no desempenho, pois você pode estar usando recursos de outro recurso, com a implementação do NUMA no IIS 8 isto não ocorre, pois existe uma inteligência na distribuição dos recursos.


Figura 2 – Maximum Worker Processes

Centralized SSL Certificate Support: SSL Scalability and Manageability

Essa é uma das novidades, possibilita a centralização de certificados digitais, facilita o gerenciamento em um ambiente que possui milhares de certificados digitais, imagina o trabalho que esse povo tem para administratar certificados digitais servidor por servidor, complicado não? Para utilizar este novo recurso devemos seguir algumas regrinhas, que veremos nos próximos artigos.
Para habilitar este recurso é bem simples, é feito atráves do Server Manager, dentro das features do IIS 8, marque a caixa de Centralized SSL Certificate Support.


Figura 3 – Centralized SSL Certificate Support

IIS 8 FTP Logon Attempt Restrictions

Esta feature é muito interessante, pois é uma implementação a mais nos quesitos de segurança dentro do FTP. Funciona da seguinte forma, quando se configura um FTP a intensão é a troca de arquivos entre 2 pontos diferentes ou N pontos, e muitas vezes este serviço precisar ficar online, o que significa que muitos “hackerzinhos” irão tentar fazer ataques de brute force, primeiro irão testar o acesso na porta 21, tendo sucesso vão pegar um wordlist que tenha milhares de usuários e passwords e começaram a fazer ataques no FTP para tentar descobrir o usuário e senha. Está nova funcionalidade bloqueia tentativas de logon seguidos em um periodo X de tempo, por padrão está configurado como 4 tentativas em 30 segundos. Em próximos artigos veremos está funcionalidade no “live”.

Dynamic IP Address Restrictions

O módulo do Dynamic IP Address Restrictions já existia em outras versãoes do IIS (7 e 7.5), pórem era uma extensão do IIS, ou seja, era necessário fazer o download pelo WPI ou direto pelo site, no IIS 8 ja vem embutido, cabendo ao Administrador fazer a instalação e configurar conforme suas politicas de segurança, além de vim embutido com o IIS 8, foram criados mais alguns recursos, como: Filtragem de IP em modo proxy, ou seja, permite bloquear não somente endereços IPs, mas tambéms pelo cabeçalho “x-forwarded-for”. O Dynamic IP Address Restrictions trabalha de forma parecida com a funcionalidade acima (FTP), pórem o que ele vai bloquear são requests, em um espaço de tempo, ou seja, se eu tiver 20 requests em um periodo de 200ms, o IP será bloqueado! Nós próximos artigos veremos está funcionadade.

Bom pessoal, existe mais algumas outras funcionalidades, que abordaremos de forma prática, pois facilita o entendimento.
Obrigado pela leitura e até a próxima!

Erick Albuquerque | MVP, MCT, MCTS, MCSA, MCITP SA, MCITP EA
https://iisbrasil.wordpress.com | http://windows8dicas.com.br

Anunciado Web Deploy 3.0 Release Candidate!


Foi anunciado no dia 19/04/2012 o Web Deploy 3.0 RC (Release Candidate), está disponível para download nas versões x86/x64. Apenas salientando que ainda não está disponível no Web Platform Installer (WPI).

Bom vamos as novidades:

Publicação & Migração para o IIS 8

Com a chegada do Windows 8 (2012) veio o IIS 8.0, cheio de novos recursos, pensando nisto a Microsoft lançou o WebDeploy com pleno suporte a migração do IIS 6.0, 7.0 e 7.5 para o IIS 8.0.

Backup Automático

Uma das novidades mais interessantes é o backup automático, pois ele permite que seja feito o backup automaticamente a cada nova atualização do web site, ou seja, o Administrador/Desenvolvedor pública alguma coisa que não deveria e/ou algo que está com problemas em produção, através do Web Deploy você pode voltar ao estado anterior.. Apenas uma observação: O próprio desenvolvedor pode fazer isto não necessita do apoio do Administrador de Redes.

PowerShell Cmdlets

Nesta versão do Web Deploy foi lançado com 20 cmdlets, que são os comandos mais comuns utilizados por Administradores/Desenvolvedores  no dia a dia, mais detalhes sobres os comandos do Power Shell pode ser acessado aqui.

Parametrização Melhorada

Web Deploy suporta parametrização durante o tempo de implantação, veja mais.

 

-> Outras features:

Package Web sites and applications

Delegate deployment tasks to non-admins

Simplify deployment for administrators

Migration from IIS 6.0 and IIS7

Synchronization of IIS 6.0 / IIS 7/IIS8.0

Snapshot IIS 7.0 and above

Analysis of Dependencies on IIS 6.0 and above

Troubleshooting and Validation

Differential Synchronization

Easy Scripting through PowerShell

 

Erick Albuquerque | Microsoft MVP
MVP Profile | Twitter | Linkedin  | https://iisbrasil.wordpress.com