всегда был любителем строительства домов из кирпичей. Они всегда выглядят прочнее по сравнению с сегодняшними домами из дерева и пластика. Кирпич также добавляет чувство безопасности – кто попробует вломиться сквозь кирпичную стену в ваш дом?
Но меня всегда удивляет, не будет ли ваш дом еще более безопасным, если не только внешние стены, но и внутренние перегородки между стенами будут из кирпича? В конце концов, стены, сложенные из сухого раствора настолько хрупкие, что вы можете пробить, если будете достаточно злыми (и не боитесь немного боли), поэтому это неплохая идея сделать внутренние стены также из кирпича. Таким образом, если кто-то вломился в ваш дом, ему по-прежнему потребуется вломиться в каждую отдельную комнату, чтобы найти сейф, в котором вы храните свои драгоценности.
Многие корпоративные сети очень напоминают такую схему — вместо того, чтобы полностью положиться на брандмауэр на периметре сети (внешняя стена), они устанавливают брандмауэры на индивидуальные сервера и клиенты (комнаты), что предоставляет дополнительный уровень защиты от атаки. А в сетях, в которых стоят клиенты и сервера, которые работают под управлением операционной системы Windows XP и Windows Server 2003, не возникает вопроса какой брандмауэр использовать: Брандмауэр Windows (Windows Firewall). В конце концов, он бесплатен!
К несчастью установка брандмауэров на клиентах и серверах означает также дополнительные работы по управлению, но здесь нам могут помочь политики групп (Group Policy), касающиеся брандмауэра Windows (другая хорошая причина для установки брандмауэра Windows на компьютере вместо программного обеспечения сторонних производителей). Однако, через некоторое время вы захотите проверить или изменить конфигурацию брандмауэра Windows на некоторых компьютерах в результате каких-нибудь проблем, и в этом вам поможет утилита командной строки Netsh.exe.
Заставим это работать
Давай представим, что некто Bob настраивает компьютер с Windows Server 2003 SP1 для работы в качестве web и файлового сервера для внутренних нужд компании. Зная, что служба Windows Firewall/Internet Connection Sharing отключена по умолчанию, он откроет консоль служб (Services console) в окне администрирование (Administrative Tools) и изменит тип запуска (Startup Type) для этой службы на автоматический (Automatic), а затем запустит службу. Дальше лучше, но если он попытается открыть утилиту Windows Firewall из панели управления (Control Panel) он столкнется с сообщением, спрашивающим его, желает ли он запустить эту службу и указывающую, что ему необходимо перезагрузить его сервер, для того, чтобы изменения вступили в силу.
Во что бы то ни стало Bob теперь хочет подключить и настроить брандмауэр Windows на сервере, но неожиданно его вызывают по срочному делу. Он посылает быстрое электронное сообщение своему помощнику Mary с помощью BlackBerry, в котором сообщает: “Включи брандмауэр на сервере так, чтобы клиенты могли получить к нему доступ — заставь это работать” и выходит за дверь. К несчастью, его помощник работает сегодня из дома, но Bob не забыл включить Remote Desktop на новом сервере, поэтому Mary устанавливает соединение Remote Desktop Connection со своего компьютера с Windows XP SP2 и получает консоль удаленного сервера.
Что теперь? Mary может открыть панель управления (Control Panel) на удаленной машине и включить брандмауэр Windows, но не знает что именно необходимо на нем настроить. Bob торопился когда сказал “так чтобы клиенты могли получить к нему доступ”, но какие именно клиенты? А это важно, раз он хочет сделать это сегодня.
Вместо того чтобы искать в окне служб (Services console) дополнительные службы, которые мог подключить на машине Bob, Mary решает открыть командную строку на удаленной машине и выполнить другую задачу. Она начинает печатать следующую команду:
netstat –ano > netstat.txt
notepad netstat.txt
Затем она изучает содержимое файла netstat.txt, который она открывает с помощью блокнота (Notepad):
Active Connections
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 1664
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 696
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:1037 0.0.0.0:0 LISTENING 1000
TCP 0.0.0.0:1040 0.0.0.0:0 LISTENING 436
TCP 0.0.0.0:1045 0.0.0.0:0 LISTENING 1220
TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING 1780
TCP 127.0.0.1:1051 0.0.0.0:0 LISTENING 1856
TCP 172.16.11.182:139 0.0.0.0:0 LISTENING 4
TCP 172.16.11.182:1029 172.16.11.181:445 TIME_WAIT 0
TCP 172.16.11.182:1034 172.16.11.181:135 TIME_WAIT 0
TCP 172.16.11.182:1035 172.16.11.181:1025 ESTABLISHED 436
TCP 172.16.11.182:1039 172.16.11.181:1025 TIME_WAIT 0
TCP 172.16.11.182:1043 172.16.11.181:445 TIME_WAIT 0
TCP 172.16.11.182:1052 172.16.11.181:389 TIME_WAIT 0
TCP 172.16.11.182:1053 172.16.11.181:389 TIME_WAIT 0
TCP 172.16.11.182:1055 172.16.11.181:389 TIME_WAIT 0
TCP 172.16.11.182:1056 172.16.11.181:139 TIME_WAIT 0
TCP 172.16.11.182:1062 172.16.11.181:389 TIME_WAIT 0
TCP 172.16.11.182:1063 172.16.11.181:389 TIME_WAIT 0
TCP 172.16.11.182:1071 172.16.11.181:445 TIME_WAIT 0
TCP 172.16.11.182:1075 172.16.11.181:135 ESTABLISHED 436
TCP 172.16.11.182:1078 172.16.11.181:389 TIME_WAIT 0
TCP 172.16.11.182:1079 172.16.11.181:389 TIME_WAIT 0
С помощью него она узнает, что на сервере установлена служба HTTP, которая слушает по TCP по порту 80. Лучше убедиться, что эта служба действительно единственная, которая использует этот порт. Как она это сделает? Сперва, она обратит внимание на номер процесса (PID), связанный с этими портами, в нашем случае это — 1664. Затем, она введет следующую команду в командной строке:
tasklist /svc > svclist.txt
notepad svclist.txt
Затем она проверить содержимое файла svclist.txt, которое должно выглядеть так:
Image Name PID Services
========================= ======== ====================================
System Idle Process 0 N/A
System 4 N/A
smss.exe 260 N/A
csrss.exe 348 N/A
winlogon.exe 380 N/A
services.exe 424 Eventlog, PlugPlay
lsass.exe 436 HTTPFilter, Netlogon, PolicyAgent,
ProtectedStorage, SamSs
svchost.exe 644 DcomLaunch
svchost.exe 696 RpcSs
svchost.exe 748 Dhcp, Dnscache
svchost.exe 796 LmHosts, W32Time
svchost.exe 812 AeLookupSvc, Browser, CryptSvc,
dmserver, EventSystem, helpsvc,
lanmanserver, lanmanworkstation,
Netman, Nla, Schedule, seclogon, SENS,
SharedAccess, ShellHWDetection, TrkWks,
winmgmt, wuauserv, WZCSVC
spoolsv.exe 976 Spooler
msdtc.exe 1000 MSDTC
vmsrvc.exe 1120 1-vmsrvc
svchost.exe 1144 ERSvc
inetinfo.exe 1220 IISADMIN
svchost.exe 1288 RemoteRegistry
svchost.exe 1312 SrmSvc
vpcmap.exe 1420 VPCMap
svchost.exe 1664 W3SVC
svchost.exe 1780 TermService
alg.exe 1856 ALG
explorer.exe 972 N/A
vmusrvc.exe 1412 N/A
wuauclt.exe 2120 N/A
csrss.exe 2176 N/A
winlogon.exe 2204 N/A
rdpclip.exe 2452 N/A
explorer.exe 2556 N/A
wmiprvse.exe 2564 N/A
vmusrvc.exe 2648 N/A
cmd.exe 2724 N/A
tasklist.exe 2964 N/A
wmiprvse.exe 2988 N/A
Она проверит этот файл, найдя PID, который мы запомнили ранее и получит такую строку:
svchost.exe 1664 W3SVC
Эта строка подтверждает, что Bob установил IIS на сервере и настроил его для работы в качестве web сервера.
Теперь Mary должна включить брандмауэр Windows на компьютере и создать исключение для клиентов HTTP для доступа к нему. Т.к. она уже запустила командную строку на удаленной машине, она решает сделать это с помощью команды Netsh. Сначала, она просматривает конфигурацию брандмауэра Windows на сервере:
C:\>netsh firewall show opmode
Domain profile configuration (current):
——————————————————————-
Operational mode = Disable
Exception mode = EnableStandard profile configuration:
——————————————————————-
Operational mode = Disable
Exception mode = EnableLocal Area Connection firewall configuration:
——————————————————————-
Operational mode = Enable
В результате этой команды она убеждается в том, что брандмауэр Windows в настоящее время отключен, и его необходимо включить. Для того, чтобы сделать это Mary набирает следующую команду:
C:\>netsh firewall set opmode enable
Ok.
Теперь она добавляет исключение для порта службы HTTP:
C:\>netsh firewall add portopening TCP 80 HTTP enable subnet
Ok.
Для того чтобы проверить это, она временно сворачивает окно Remote Desktop Connection и открывает Internet Explorer и набирает http://172.16.11.182 в строке адреса, и вот что она получает в ответ (Рисунок 1):
Рисунок 1: Доступ к серверу с помощью HTTP
Теперь давайте взглянем, что еще запущено на сервере. Mary возвращается к файлу netstat.txt, показанному ранее. У нее вызывают интерес следующие строки:
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
TCP 172.16.11.182:139 0.0.0.0:0 LISTENING 4
В результате этого она заключает, что сервер настроен для работы в качестве файлового сервера с общими папками по следующим двум портам (и двумя другими, показанными ниже):
Другими словами, первые три порта для SMB по NBT (NETBIOS по TCP/IP), а последний порт (новый в Windows 2000 и выше) – для SMB напрямую по TCP/IP.
Итак, для того чтобы получить доступ к удаленному серверу, который работает в качестве файлового сервера, необходимо создать исключения для этих четырех портов в брандмауэре Windows. Для того чтобы сделать это, Mary набирает следующие команды в командной строке, открытой на рабочем столе удаленной консоли:
netsh firewall add portopening UDP 137 blah enable subnet
netsh firewall add portopening UDP 138 blah enable subnet
netsh firewall add portopening TCP 139 blah enable subnet
netsh firewall add portopening TCP 445 blah enable subnet
Удобство такого подхода заключается в том, что если она откроет брандмауэр Windows из контрольной панели (Control Panel) на рабочем столе удаленной машины, то исключения для File and Printer Sharing будут отображены как подключенные (рисунок 2):
Рисунок 2: File and Printer Sharing подключено на сервере
Mary может отображать общие папки на удаленном сервере просто кликнув на Start, затем на Run, набрав \\172.16.11.182 и кликнув на OK.
Заключение
Mary могла облегчить свою жизнь, настраивая брандмауэр Windows Firewall с помощью GUI вместо использования Netsh, т.к. она запустила сессию на удаленном рабочем столе, но не имела возможности изучить, как использовать Netsh, действительно полезную вещь для администратора!
Последнее замечание: перед тем как Мари завершит свою сессию RDC она должна набрать еще одну команду на сервере:
netsh firewall add portopening TCP 3389 blah enable any
Иначе она не смогла бы соединиться с удаленной машиной с помощью RDC, т.к. однажды включенный Windows Firewall блокирует сессию Remote Desktop по умолчанию!
www.windowsnetworking.com
Tags: cache, dns, domain, quote, Windows XP