|
Порядок расположения хостов в таблице важен. Есть два правила: a. Общие определения необходимо располагать как можно ниже. То есть host 10.0.1.1/32 должен быть расположен _выше_ чем subnet 10.0.1.0/24. Соответственно в самую последнюю строчку пишется что-то типа any. b. В случае, если по правилу a. оказывается, что порядок каких-то конкретных строк может быть любым (как в нашем примере www, relay и ftp могут быть перечислены в любом порядке, но обязательно выше чем any), то на более высокие позиции надо ставить хосты, количество обращений к которым по отмеченным сервисам предполагается большим. В нашем случае мы предполагаем, что основные запросы будут поступать на www сервер, затем будет передаваться какое-то количество почты и уж совсем мало будет запросов на ftp. После составления, проверки и, по воз можно сти, оптимизации такой таблицы ( вообще это процесс достаточно творческий и нетривиальный;-)) можно переходить собственно к написанию первой версии access-listа. Первая версия будет практически калькой нашей таблицы. ip access-list extended Firewall permit tcp any host www.qq.ru eq www permit tcp any host relay.qq.ru eq smtp permit tcp any host ftp.qq.ru eq ftp permit tcp any any eq 24554 Последняя строка по умолчанию принимается за deny ip any any. Фактически, построение первой версии access-listа закончено. Что мы делаем, чтобы продолжать развивать этот access-list? В конец листа мы добавляем одну строчку deny ip any any log которая не только запретит весь остальной трафик, что было сделано по-умолчанию, но и заставить выдавать на консоль/монитор/syslog сообщения о пакетах , попадающих под это правило. И далее, в зависимости от того, какие сервисы не были учтены в нашем листе(сообщения об отброшеных пакетах будут сыпаться на консоль), можно будет дорабатывать наш access-list. Вот примеры сообщений: %SEC-6-IPACCESSLOGP: list firewall denied tcp xxx.xxx.xx.xx(1418) -> %xxx.xxx.xxx.xx(23), 1 packet %SEC-6-IPACCESSLOGP: list firewall denied udp xxx.xxx.xxx.xxx(4000) -> %xxx.xxx.xxx.xx(1038), 1 packet %SEC-6-IPACCESSLOGP: list firewall denied udp xxx.xxx.xxx.xxx(53) -> %xxx.xxx.xxx.xx(1041), 1 packet %SEC-6-IPACCESSLOGP: list firewall denied udp xxx.xxx.xxx.xxx(53) -> %xxx.xxx.xxx.xx(1044), 1 packet %SEC-6-IPACCESSLOGP: list firewall denied udp xxx.xxx.xxx.xxx(53) -> %xxx.xxx.xxx.xx(1047), 1 packet %SEC-6-IPACCESSLOGP: list firewall denied udp xxx.xxx.xx.xx(49869) -> %xxx.xxx.xxx.xx(33456), 1 packet %SEC-6-IPACCESSLOGP: list firewall denied udp xxx.xxx.xx.xx(49869) -> %xxx.xxx.xxx.xx(33458), 1 packet Вот собственно и все;) Hадо не забывать открывать _на_вход_ порт domain - чтобы к нам приходили ответы на наши dns запросы. active ftp - это вообще отдельная песня. Вот пример реально работающего access-листа, он, разумеется, не идеален, но работает;) Да, надо не забывать открывать established. После знака ; - мой комментарии. =================== ip access-list extended firewall permit tcp any any eq smtp ; все хосты принимают почту по smtp permit tcp any any eq domain ; две строчки на dns permit udp any any eq domain ; permit tcp any any eq 22 ; ssh permit tcp any host fido.qq.ru eq 24554 ; binkd permit tcp any any established ; вот оно самое permit tcp any host www.qq.ru eq www ; www-сервера permit tcp any host images.qq.ru eq www permit tcp any host www.qq.ru range 8100 8104 ; для руской кодировки permit tcp any host images.qq.ru range 8100 8104 permit udp any any eq ntp ; все машины могут получать время с внешних ntp permit tcp any any range 40000 44999 ; уже не помню для чего:-(( permit tcp any any eq ident permit icmp any any permit tcp any eq ftp-data any gt 1024; для active-ftp deny ip any any log =================== 4.3>Q: Как сделать transparent-proxy ? >A: (DY) Все описано на http://squid.nlanr.net/Squid/FAQ/FAQ-17.html =========================================================== 5. Traffic-shape
|