nat + ipfw

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
kingc
проходил мимо
Сообщения: 6
Зарегистрирован: 2007-03-14 6:40:09
Откуда: Тюмень

nat + ipfw

Непрочитанное сообщение kingc » 2007-03-14 7:07:13

Добрый день!
Настроен ipfw и nat, через nat осушествляется редирект некоторых портов на конкретные адреса, всё работает отлично, но влогах видно что какая-то дрянь пытается цепляться на "левые" порты, которые в настройках ipfw запрещены, вопрос для меня довольно таки интересный, можно ли после nat подвергнуть весь трафик идущий через nat на обработку и сопоставление правилам ipfw, т.е divert в ipfw прописан в самом конце предпоследним правилом осуществляющим редирект портов с локальных адресов во внешнюю сеть, если его поднять в верх то перед каким правилом в ipfw его нужно поставить и будет ли вообще эта проверка работать, а то насколько я знаю nat он для того и существует чтобы транслировать сетевые адреса, к примеру помимо фаервола, прокси и.т.п?
Есть конечно и ещё не мало интересных вопросов, но о них позже, надо с начало, этот вопрос обсудить ))))
Заранее спасибо!!!!!!!!!

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-03-14 9:08:15

я непонял... можно правила и дрянь из логов увидеть?
насчёт потом чё-то сделать - адреса-то уже внутренние. Напряжно :)))
Убей их всех! Бог потом рассортирует...

kingc
проходил мимо
Сообщения: 6
Зарегистрирован: 2007-03-14 6:40:09
Откуда: Тюмень

Непрочитанное сообщение kingc » 2007-03-14 9:52:30

lissyara ок, домой с работы прийду, и покажу логи, т.к на работе прокся не пускает shh через себя, но там на сколько я помню с внешних IP на порты 445, и ещё какие-то, соединения были разрешены, помимо тех, которые были разрешены, т.е те которые разрешеы и ешё "левые" адреса и "левые" порты, хотя странно я ведъ в настройках nat, прописал редирект портов на конкретный адрес, вообщем домой прийду и покажу настройки фаервола, nat-а и логи.

kingc
проходил мимо
Сообщения: 6
Зарегистрирован: 2007-03-14 6:40:09
Откуда: Тюмень

Непрочитанное сообщение kingc » 2007-03-14 19:54:28

как и обещал
var/log/security

Код: Выделить всё

Mar 17 10:59:39 89 kernel: ipfw: limit 10 reached on entry 63000
Mar 17 10:59:41 89 kernel: ipfw: 9101 Divert 8868 TCP 89.200.144.218:2741 85.15.162.4:2967 in via vr1
Mar 17 10:59:41 89 kernel: ipfw: 9101 Divert 8868 TCP 85.15.162.4:2967 89.200.144.218:2741 out via vr1
Mar 17 10:59:45 89 kernel: ipfw: 9101 Divert 8868 TCP 89.200.144.218:2741 85.15.162.4:2967 in via vr1
Mar 17 10:59:45 89 kernel: ipfw: 9101 Divert 8868 TCP 85.15.162.4:2967 89.200.144.218:2741 out via vr1
Mar 17 10:59:50 89 kernel: ipfw: 9101 Divert 8868 TCP 89.200.144.218:2741 85.15.162.4:2967 in via vr1
Mar 17 10:59:50 89 kernel: ipfw: 9101 Divert 8868 TCP 85.15.162.4:2967 89.200.144.218:2741 out via vr1
Mar 17 11:04:50 89 kernel: ipfw: 9101 Divert 8868 TCP 89.204.85.7:4258 85.15.162.4:135 in via vr1
Mar 17 11:04:50 89 kernel: ipfw: 9101 Divert 8868 TCP 85.15.162.4:135 89.204.85.7:4258 out via vr1
Mar 17 11:05:45 89 kernel: ipfw: 9101 Divert 8868 TCP 192.168.0.10:2303 213.219.248.100:2106 out via vr1
Mar 17 11:05:49 89 kernel: ipfw: 9101 Divert 8868 TCP 213.219.248.100:2106 85.15.162.4:2303 in via vr1
Mar 17 11:05:49 89 kernel: ipfw: limit 10 reached on entry 9101
85.15.162.4----это IP моего сервака (вымышленный)
думаю лимит надо поставить побольше 10 маловато
-----------------------------------------------------------------------------------------------------------
natd.conf

Код: Выделить всё

use_sockets     yes
same_ports      yes
port    8868
interface  vr1
redirect_port tcp 192.168.0.1:2106 2106
redirect_port tcp 213.219.248.100:2106 2106 
redirect_port tcp 213.219.248.100:7777 7777
NAT был настроен из-за того, что пользователи попросили сделать им, чтобы они могли играть в LineAge, адрес сервера игры  213.219.248.100 и соответственно порты, через которые она робит 2106(по-моему, порт авторизации) и 7777
-----------------------------------------------------------------------------------------------------------
ipfw

Код: Выделить всё

#!/bin/sh -
fwcmd="/sbin/ipfw"
################################################################
#Set these to your inside interface network and netmask and ip.
        iif='vr0'
        inet='192.168.0.0'
        imask='255.255.255.0'
        iip='192.168.0.1'
#Set these to your outside interface network and netmask and ip.
        oif='vr1'
        onet='85.15.162.1'
        omask='255.255.252.0'
        oip='85.15.162.4'
#######################################################################
  ${fwcmd} -f flush
#######################################################################
# Local
  ${fwcmd} add 101 allow all from any to any via lo0
  ${fwcmd} add 102 deny all from any to 127.0.0.0/8
  ${fwcmd} add 103 deny all from 127.0.0.0/8 to any
  ${fwcmd} add 104 deny icmp from any to any frag
  ${fwcmd} add 105 allow ICMP from any to any
########################################################################
#SSH allow
  ${fwcmd} add 201 allow tcp from any to any ssh
  ${fwcmd} add 202 allow tcp from any ssh to any
########################################################################
# anti spoofing #1
  ${fwcmd} add 301 deny all from any to 10.0.0.0/8 via ${oif}
  ${fwcmd} add 302 deny all from any to 172.16.0.0/12 via ${oif}
  ${fwcmd} add 303 deny all from any to 0.0.0.0/8 via ${oif}
  ${fwcmd} add 304 deny all from any to 169.254.0.0/16 via ${oif}
  ${fwcmd} add 305 deny all from any to 192.0.2.0/24 via ${oif}
  ${fwcmd} add 306 deny all from any to 224.0.0.0/4 via ${oif}
  ${fwcmd} add 307 deny all from any to 240.0.0.0/4 via ${oif}
#########################################################################
# anti spoofing #2
  ${fwcmd} add 401 deny all from 10.0.0.0/8 to any via ${oif}
  ${fwcmd} add 402 deny all from 172.16.0.0/12 to any via ${oif}
  ${fwcmd} add 403 deny all from 0.0.0.0/8 to any via ${oif}
  ${fwcmd} add 404 deny all from 169.254.0.0/16 to any via ${oif}
  ${fwcmd} add 405 deny all from 192.0.2.0/24 to any via ${oif}
  ${fwcmd} add 406 deny all from 224.0.0.0/4 to any via ${oif}
  ${fwcmd} add 407 deny all from 240.0.0.0/4 to any via ${oif}
############################################################################
#Deny inbound auth, netbios, ldap and Microsoft's DB protocol without logging.
  ${fwcmd} add 501 deny tcp from any to ${oip} 113 in via ${oif}
  ${fwcmd} add 502 deny tcp from any to ${oip} 139 in via ${oif}
  ${fwcmd} add 503 deny tcp from any to ${oip} 389 in via ${oif}
  ${fwcmd} add 504 deny tcp from any to ${oip} 445 in via ${oif}
############################################################################
#Deny some chatty UDP broadcast protocols without logging.
  ${fwcmd} add 601 deny udp from any 137 to any in via ${oif}
  ${fwcmd} add 602 deny udp from any to any 137 in via ${oif}
  ${fwcmd} add 603 deny udp from any 138 to any in via ${oif}
  ${fwcmd} add 604 deny udp from any 513 to any in via ${oif}
  ${fwcmd} add 605 deny udp from any 525 to any in via ${oif}
############################################################################
#Deny inbound NTP queries without logging.
  ${fwcmd} add 701 allow udp from any 123 to ${oip} in via ${oif}
  ${fwcmd} add 702 allow udp from ${oip} to any 123 out via ${oif}
##############################################################################
#Brodcasts are denied and not logged.
  ${fwcmd} add 801 deny all from any to 255.255.255.255
###############UDP-DNS################################
#Allow UDP-DNS
  ${fwcmd} add 901 allow udp from ${oip} to any 53
  ${fwcmd} add 902 allow udp from any 53 to ${oip}
###############ICMP#########################################################
#Allow ICMP
  ${fwcmd} add 1001 deny icmp from any to ${oip} in icmptypes 8
  ${fwcmd} add 1002 allow icmp from ${oip} to any out icmtypes 8
  ${fwcmd} add 1003 allow icmp from any to ${oip} in icmptypes 0
####OTHES#####################################################################
#Allow FTP(20,21), EMAIL(25), TCP-DNS(53), HTTP(80), HTTPS(443), POP3(110),
#GOPHER(70), WAIS(210)
##FTP########################################################################

  ${fwcmd} add 2001 allow tcp from any to ${oip} 20 in via ${oif}
  ${fwcmd} add 2002 allow tcp from ${oip} to any 20 out via ${oif}
  ${fwcmd} add 2003 allow tcp from any 21 to ${oip} in via ${oif}
  ${fwcmd} add 2004 allow tcp from ${oip} to any 21 out via ${oif}
  ${fwcmd} add 2005 allow log tcp from 192.168.0.0/24 to any 21 ${iif}
###############EMAIL######################################################
#Allow email
  ${fwcmd} add 3001 allow tcp from any 25 to ${oip}
  ${fwcmd} add 3002 allow tcp from ${oip} to any 25
###############TCP-DNS#####################################
#Allow TCP-DNS
  ${fwcmd} add 4001 allow tcp from ${oip} to any 53 via ${oif}
  ${fwcmd} add 4002 allow tcp from any 53 to ${oip} via ${oif}
#############HTTP##########################################################
#Allow HTTP
  ${fwcmd} add 5001 allow tcp from any 80 to ${oip} in via ${oif}
  ${fwcmd} add 5002 allow tcp from ${oip} to any 80 out via ${oif}
##############HTTPS#########################################################
#Allow HTTPS
  ${fwcmd} add 6001 allow tcp from any 443 to ${oip} in via ${oif}
  ${fwcmd} add 6002 allow tcp from ${oip} to any 443 out via ${oif}
##############POP3##########################################################
  ${fwcmd} add 7001 allow tcp from any 110 to ${oip}
  ${fwcmd} add 7002 allow tcp from ${oip} to any 110
##############GOPHER########################################################
#Allow GOPHER
  ${fwcmd} add 8001 allow tcp from any 70 to ${oip} in via ${oif}
  ${fwcmd} add 8002 allow tcp from ${oip} to any 70 out via ${oif}
##############WAIS############################################################
#Allow WAIS
  ${fwcmd} add 9001 allow tcp from any 210 to ${oip} in via ${oif}
  ${fwcmd} add 9002 allow tcp from ${oip} to any 210 out via ${oif}
##############################################################################
#Allow PROXY
##########################NAT#################################################
#Allow NAT
 ${fwcmd} add 9101 divert 8868 log tcp from any to any via ${oif}
 ${fwcmd} add 63000 allow log ip from any to any
Можно было конечно всё это и сократить например записать перечисленные порты в одну строчку, но и так пойдет, в следующийй раз сделаю в одну строчку.
-----------------------------------------------------------------------------------------------------------

Аватара пользователя
alex3
лейтенант
Сообщения: 872
Зарегистрирован: 2006-11-20 16:47:56
Откуда: Переславль
Контактная информация:

Непрочитанное сообщение alex3 » 2007-03-15 10:32:07

redirect_port tcp 192.168.0.1:2106 2106
redirect_port tcp 213.219.248.100:2106 2106
Я что-то не понял. С одного порта на 2 машины порт пробрасывается?
Если ipfw можно считать речью обычного человека, то pf - речь политика. За каждой ошибкой -ядерный песец.

kingc
проходил мимо
Сообщения: 6
Зарегистрирован: 2007-03-14 6:40:09
Откуда: Тюмень

Непрочитанное сообщение kingc » 2007-03-15 10:50:22

Често говоря помоему эта строчка лишняя
redirect_port tcp 192.168.0.1:2106 2106
но почему с такими настройками всё робит, по большому счёту, так можно делать или нет
redirect_port tcp 213.219.248.100:2106 2106
redirect_port tcp 213.219.248.100:7777 7777
??????????????
и почему из логов видно как на другие порты и другие адреса соединение было произведено? или может я ошибаюсь?

Код: Выделить всё

-----------------------------------------------------------------------------------------------------------
С локальными портами с локальных адресов всё понятно
Mar 17 11:05:45 89 kernel: ipfw: 9101 Divert 8868 TCP 192.168.0.10:2303 213.219.248.100:2106 out via vr1
-----------------------------------------------------------------------------------------------------------
но вот это, как объяснить ?
Mar 17 11:04:50 89 kernel: ipfw: 9101 Divert 8868 TCP 89.204.85.7:4258 85.15.162.4:135 in via vr1
Mar 17 11:04:50 89 kernel: ipfw: 9101 Divert 8868 TCP 85.15.162.4:135 89.204.85.7:4258 out via vr1
или это
Mar 17 10:59:50 89 kernel: ipfw: 9101 Divert 8868 TCP 85.15.162.4:2967 89.200.144.218:2741 out via vr1
-----------------------------------------------------------------------------------------------------------
по идеи должна работать проброска толька этих: 2106 и 7777 портов?

Аватара пользователя
alex3
лейтенант
Сообщения: 872
Зарегистрирован: 2006-11-20 16:47:56
Откуда: Переславль
Контактная информация:

Непрочитанное сообщение alex3 » 2007-03-15 10:55:57

Если у тебя 213.219.248.100 не в локалке, то редирект портов на него и нафиг не надо, в логах у тебя пишется работа ната, когда пользователи пытаются выйти в инет. и вообще что-то мне ipfw.conf больно подозрительный...в частности 63000 мне не нравится. Такое впечатление что дырочек у тебя много....
Если ipfw можно считать речью обычного человека, то pf - речь политика. За каждой ошибкой -ядерный песец.

kingc
проходил мимо
Сообщения: 6
Зарегистрирован: 2007-03-14 6:40:09
Откуда: Тюмень

Непрочитанное сообщение kingc » 2007-03-15 12:32:59

Действительно, а как их не будет когда всё разрешено, когда делаешь блокировать всё deny all ip from any to any, тогда он не пускает, пользователей через нат, прокся робит, а через nat не пускает, но прокся робит тоже, только после того, как разрешишь, на сервер диапазон входящих локальных портов, к примеру так ${fwcmd} add allow tcp from any 1000-3000 to ${iip} in via ${iif}
но перестает робить nat,
${iip} - внутрений IP сервера
${iip} -это внутренний интерфейс который смотрит в локалку, через который идет выход на проксю и nat

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-03-15 14:25:40

А нафига для LineAge входящие соединения?
Проброс портов так называемый?

Знаешь откуда знаю? У меня 5 чел через 1 комп играют, а вх. порт можно прокинуть только на 1 комп. Отсюда и вопросы выше.

Я полагаю, что нужно открыть наружу 2106, 7777 порты и какие-там нужны в ipfw. natd здесь не причём.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Непрочитанное сообщение schizoid » 2007-03-15 15:12:05

у мну пол сетки дома рубяццо в линейку, ниче не натиццо на линеечный адрес, просто в фаере порты открыл и все.
ядерный взрыв...смертельно красиво...жаль, что не вечно...

Аватара пользователя
alex3
лейтенант
Сообщения: 872
Зарегистрирован: 2006-11-20 16:47:56
Откуда: Переславль
Контактная информация:

Непрочитанное сообщение alex3 » 2007-03-15 15:28:44

to dikens
Статья? вот реальный пример потребности.
Ща попробую разобрать конфиг на основе вышенаписанного, поправишь ежли что?

Код: Выделить всё

#!/bin/sh - 
fwcmd="/sbin/ipfw" 
################################################################ 
#Set these to your inside interface network and netmask and ip. 
        iif='vr0' 
        inet='192.168.0.0' 
        imask='255.255.255.0' 
        iip='192.168.0.1' 
#Set these to your outside interface network and netmask and ip. 
        oif='vr1' 
        onet='85.15.162.1' 
        omask='255.255.252.0' 
        oip='85.15.162.4' 
# Other
        sshhosts = 'список внешних хостов, с которых разрешен доступ по ssh'
####################################################################### 
  ${fwcmd} -f flush 
####################################################################### 
# loopback
  ${fwcmd} add allow all from any to any via lo0 
  ${fwcmd} add deny all from any to 127.0.0.0/8 
  ${fwcmd} add deny all from 127.0.0.0/8 to any 
# ICMP
  ${fwcmd} add deny icmp from any to any frag 
  ${fwcmd} add allow ICMP from any to any 
######################################################################## 
#SSH allow 
  ${fwcmd} add allow tcp from ${sshhosts} to ${oip} ssh in via ${oif}
  ${fwcmd} add allow tcp from ${oip} ssh to ${sshhosts} out via ${oif} 
######################################################################## 
# anti spoofing #1 
  ${fwcmd} add deny all from any to 10.0.0.0/8 via ${oif} 
  ${fwcmd} add deny all from any to 172.16.0.0/12 via ${oif} 
  ${fwcmd} add deny all from any to 0.0.0.0/8 via ${oif} 
  ${fwcmd} add deny all from any to 169.254.0.0/16 via ${oif} 
  ${fwcmd} add deny all from any to 192.0.2.0/24 via ${oif} 
  ${fwcmd} add deny all from any to 224.0.0.0/4 via ${oif} 
  ${fwcmd} add deny all from any to 240.0.0.0/4 via ${oif} 
# Это классический антиспруфинг, выше - запрет серых сетей
  ${fwcmd} add deny all from ${inet}:${imask} to any via ${oif}
  ${fwcmd} add deny all from ${onet}:${omask} to any via ${iif} 
#########################################################################
#Deny inbound auth, netbios, ldap and Microsoft's DB protocol without logging. 
  ${fwcmd} add deny tcp from any to ${oip} 113 in via ${oif} 
  ${fwcmd} add deny tcp from any to ${oip} 139 in via ${oif} 
  ${fwcmd} add deny tcp from any to ${oip} 389 in via ${oif} 
  ${fwcmd} add deny tcp from any to ${oip} 445 in via ${oif} 
#############################################################################

#Deny some chatty UDP broadcast protocols without logging. 
  ${fwcmd} add deny udp from any 137 to any in via ${oif} 
  ${fwcmd} add deny udp from any to any 137 in via ${oif} 
  ${fwcmd} add deny udp from any 138 to any in via ${oif} 
  ${fwcmd} add deny udp from any 513 to any in via ${oif} 
  ${fwcmd} add deny udp from any 525 to any in via ${oif} 
############################################################################ 
#Deny inbound NTP queries without logging. 
  ${fwcmd} add allow udp from any 123 to ${oip} in via ${oif} 
  ${fwcmd} add allow udp from ${oip} to any 123 out via ${oif} 
############################################################################
#Deny telnet - обязательно
  ${fwcmd} add deny all from any to me telnet

#Brodcasts are denied and not logged. 
  ${fwcmd} add deny all from any to 255.255.255.255 
###############UDP-DNS################################ 
#Allow UDP-DNS 
  ${fwcmd} add allow udp from ${oip} to any 53 
  ${fwcmd} add allow udp from any 53 to ${oip} 
###############ICMP######################################################### 
#Allow FTP(20,21), EMAIL(25), TCP-DNS(53), HTTP(80), HTTPS(443), POP3(110), 
#GOPHER(70), WAIS(210) 
##FTP########################################################################
# Вот тут не уверен
  ${fwcmd} add allow tcp from any to ${oip} 20 in via ${oif} 
  ${fwcmd} add allow tcp from ${oip} to any 20 out via ${oif} 
  ${fwcmd} add allow tcp from any 21 to ${oip} in via ${oif} 
  ${fwcmd} add allow tcp from ${oip} to any 21 out via ${oif} 
  ${fwcmd} add allow log tcp from 192.168.0.0/24 to any 21 ${iif} 
#Конец "вот тут не уверен"
###############EMAIL###################################################### 
#Allow email (причем исходящая, входящая - хз)
  ${fwcmd} add allow tcp from any 25 to ${oip} 
  ${fwcmd} add allow tcp from ${oip} to any 25 
###############TCP-DNS##################################### 
#Allow TCP-DNS 
  ${fwcmd} add allow tcp from ${oip} to any 53 via ${oif} 
  ${fwcmd} add allow tcp from any 53 to ${oip} via ${oif} 
#############HTTP########################################################## 
#Allow HTTP (я думаю тут еще порты надо открыть, некоторые работают на портах 8080, 8081)
  ${fwcmd} add allow tcp from any 80 to ${oip} in via ${oif} 
  ${fwcmd} add allow tcp from ${oip} to any 80 out via ${oif} 
##############HTTPS######################################################### 
#Allow HTTPS 
  ${fwcmd} add allow tcp from any 443 to ${oip} in via ${oif} 
  ${fwcmd} add allow tcp from ${oip} to any 443 out via ${oif} 
##############POP3##########################################################
#Видимо для клиентов, берущих почту из внешки
  ${fwcmd} add allow tcp from any 110 to ${oip} 
  ${fwcmd} add allow tcp from ${oip} to any 110 
##############GOPHER######################################################## 
#Allow GOPHER 
  ${fwcmd} add allow tcp from any 70 to ${oip} in via ${oif} 
  ${fwcmd} add allow tcp from ${oip} to any 70 out via ${oif} 
##############WAIS############################################################ 
#Allow WAIS 
  ${fwcmd} add allow tcp from any 210 to ${oip} in via ${oif} 
  ${fwcmd} add allow tcp from ${oip} to any 210 out via ${oif} 
############################################################################## 
#Allow PROXY 
##########################NAT################################################# 
#Разрешаем доступ локалке, иначе они не смогут работать через нат
  ${fwcmd} add allow all from any to any via ${iif}
#Allow NAT 
 ${fwcmd} add divert 8868 tcp from any to any via ${oif} 
 ${fwcmd} add 63000 deny log ip from any to any
Внимание, это только прикидочный конфиг...
P.S.Эх, давно не брал я шашек в ркуи (С) Гоголь.
Если ipfw можно считать речью обычного человека, то pf - речь политика. За каждой ошибкой -ядерный песец.

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-03-15 16:03:00

Много исправлений в твоём получится. Реально. :-(

В выходные настраивал 2 канала в инет.(В первый раз) Настраивал, дабы заработало, сейчас переписал firewall (Ещё не тестировал). Буду в выходные тестить и баги ловить.
Имеется 2 канала в инет
1. Волга-Телеком (PPPoE и имеет стат. внешний IP-Адрес)
2. Сэнди. (через обычный лан интерфейс)

Ну кому интересно, пример фаера тут. Не идеализировал. Не всё сразу.

Код: Выделить всё

#!/bin/sh -

# Интерфейс нашей лок.сети
iflan="rl0"
# Интерфейс подключённый к Sandy
ifsandy="ed0"
# Интерфейс(ы), подключенный к Волга-Телеком
mytun="tun*"

# Все IP-Адреса нашей лок.сети
mylan="192.168.1.0/24"
# Пользователи, которым разрешен доступ в инет
users="192.168.1.0{1-254}"

# IP-Адреса DNS серверов Волга-Телеком (PPPoE)
dnsvt="213.177.96.1, 213.177.97.1"
# IP-Адреса DNS серверов Sandy
dnssandy="195.122.226.2, 10.240.240.240"
# Шлюз Sandy (Шлюз Волга-Телеком (PPPoE) будет установлен по умолчанию при подключении)
gwsandy="10.17.127.254"

# Пользователи, которым можно подключаться по SSH, пинговать наш сервер и доступ к monit
ssh_ip_users="82.208.77.66, 213.177.126.229"
# Порт на котором висит Radmin в нашей лок. сети
radminport="6666"

# NTP СЕРВЕРА
ntp="62.117.76.139,195.230.70.112,194.149.67.130,131.216.22.17,216.32.94.18,216.204.156.2"

##############################################################################################################
# 1 таблица, куда нельзя ходить через Волга-Телеком (Приватные сети и т.п.)
fwtable="/sbin/ipfw table"
${fwtable} 1 flush
NETS=" 0.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 169.254.0.0/16 192.0.2.0/24 204.152.64.0/23 224.0.0.0/3 "

for lan in ${NETS}
    do
        ${fwtable} 1 add $lan
    done

##############################################################################################################

fwcmd="/sbin/ipfw -q"
${fwcmd} -f flush
${fwcmd} pipe flush
${fwcmd} queue flush

##############################################################################################################

# Пускаем lo
        ${fwcmd} add pass all from any to any via lo0
# Входящий траффик из нашей сети на шлюз
        ${fwcmd} add skipto 5000 all from any to me in via ${iflan}
# Исходящий траффик от шлюза в нашу сеть
        ${fwcmd} add skipto 6000 all from me to any out via ${iflan}
# Входящий траффик из Интернета через Sandy, применяется NAT
# и адрес назначения всегда наш (Пользователям и шлюзу)
        ${fwcmd} add skipto 7000 all from any to me in via ${ifsandy}
# Исходящий траффик в интернет от шлюза, через PPPoE и Sandy
# Т.к. маршрутов несколько, придётся перехватывать нужный траффик и отправлять нужным маршрутом
        ${fwcmd} add skipto 8000 all from me to any out
# Входящий траффик из Интернета на шлюз, через PPPoE
# tun*, т.к. иногда туннель умирает напрочь и приходится его киллять(kill),после перезапуска туннель может измениться tun1,tun2,tun3
# default gateway тоже изменяется. :-(
        ${fwcmd} add skipto 10000 all from any to me in via ${mytun}
# Т.к. Nat есть ещё и на PPPoE, адрес назначения может быть не нашего сервера (т.е. не me)
# Входящий траффик из Интернета в нашу сеть, через PPPoE
# Разрешаем Radmin для Radmin пользователей (setup и established пакеты)
        ${fwcmd} add pass tcp from any to ${mylan} ${radminport} in via ${mytun}
# Разрешаем DNS Волга-Телеком
        ${fwcmd} add pass udp from ${dnsvt} 53 to ${mylan} in via ${mytun}
# Исходящий траффик из нашей сети в интернет, через PPPoE и Sandy
# Т.к. маршрутов несколько, придётся перехватывать нужный траффик и отправлять нужным маршрутом
        ${fwcmd} add skipto 11000 all from any to any out
# Всё остальное убиваем и пишем в log
        ${fwcmd} add deny log all from any to any

################################################################################

# Входящий траффик из нашей сети на шлюз
# Пропускаем траффик, с уже установленным соединением
        ${fwcmd} add 5000 tcp from ${mylan} to me in via ${iflan} established
# Разрешаем подключаться к след.TCP портам из нашей сети (ssh,www,smbd)
        ${fwcmd} add pass tcp from ${mylan} to me 22,80,139 in via ${iflan} setup
# Разрешаем след.UDP порты из нашей сети (ntp,nmbd)
        ${fwcmd} add pass udp from ${mylan} to me 123,137,138 in via ${iflan}
# Пропускаем ICMP, только нужные (ping)
        ${fwcmd} add pass icmp from ${mylan} to me in via ${iflan} icmptype 8,0
# Всё остальное убиваем и пишем в log
        ${fwcmd} add deny log all from any to any

################################################################################

# Исходящий траффик со шлюза в нашу сеть
# Пропускаем траффик, с уже установленным соединением
        ${fwcmd} add 6000 pass tcp from me to ${mylan} out via ${iflan} established
# Разрешаем след.UDP порты в нашу сеть (ntp,nmbd)
        ${fwcmd} add pass udp from me 123,137,138 to ${mylan} out via ${iflan}
# Пропускаем ICMP, только нужные (ping)
        ${fwcmd} add pass icmp from me to ${mylan} out via ${iflan} icmptype 0,8
# Всё остальное убиваем и пишем в log
        ${fwcmd} add deny log all from any to any

################################################################################

# Входящий траффик из Интернета через Sandy (Пользователи и шлюз)
# NAT in
        ${fwcmd} add 7000 divert natd all from any to any in via ${ifsandy}
# Пропускаем траффик, с уже установленным соединением
        ${fwcmd} add pass tcp from any to any in via ${ifsandy} established
# Пропускаем ICMP-только нужные
        ${fwcmd} add pass icmp from any to any in via ${ifsandy} icmptype 0
# Разрешённые UDP
        ${fwcmd} add pass udp from any 4000 to ${users} in via ${ifsandy}
# DNS
        ${fwcmd} add pass udp from ${dnssandy} 53 to any in via ${ifsandy}
# NTP (123 port)
        ${fwcmd} add pass udp from any 123 to me 123 in via ${ifsandy}
# Всё остальное убиваем и пишем в log
        ${fwcmd} add deny log all from any to any

################################################################################

# Исходящий траффик в интернет от шлюза, через PPPoE и Sandy.
# Волга-Телеком (PPPoE)
# Пропускаем траффик, с уже установленным соединением с определённых портов 80
        ${fwcmd} add 8000 pass tcp from me 80,2812 to any out via ${mytun} established
# SSH для нужных IP (Разрешаем работать по SSH)
        ${fwcmd} add pass tcp from me 22 to ${ssh_ip_users} out via ${mytun} established
# SSH для нужных IP (Разрешаем шлюзу подключение по SSH к другим серверам)
        ${fwcmd} add pass tcp from me to any 22 out via ${mytun}
# Пропускаем ICMP, только нужные коды и необходимые IP(ответы на ping)
        ${fwcmd} add pass icmp from me to ${ssh_ip_users} out via ${mytun} icmptype 0
# DNS Волга-Телеком
        ${fwcmd} add pass udp from me to ${dnsvt} 53 out via ${mytun}
# DNS Волга-Телеком (Будем пингом проверять связь)
        ${fwcmd} add pass icmp from me to ${dnsvt} out via ${mytun} icmptype 8

# Sandy
# NAT out
        ${fwcmd} add divert natd all from any to any out
# Пропускаем траффик, с уже установленным соединением
        ${fwcmd} add fwd ${gwsandy} tcp from me to any out
# Пропускаем ICMP
        ${fwcmd} add fwd ${gwsandy} icmp from me to any out
# NTP (123 port)
        ${fwcmd} add fwd ${gwsandy} udp from me 123 to ${ntp} 123 out
# DNS Sandy
        ${fwcmd} add fwd ${gwsandy} udp from me to ${dnssandy} 53 out
# Всё остальное убиваем и пишем в log
        ${fwcmd} add deny log all from any to any

################################################################################

# Входящий траффик из Интернета на шлюз, через PPPoE
# Пропускаем траффик, с уже установленным соединением
        ${fwcmd} add 10000 pass tcp from any to me in via ${mytun} established
# Разрешаем подключаться к след.TCP портам с определённых IP (ssh)
        ${fwcmd} add pass tcp from ${ssh_ip_users} to me 22,2812 in via ${mytun} setup
# Пропускаем ICMP, только нужные коды и необходимые IP(ping)
        ${fwcmd} add pass icmp from ${ssh_ip_users} to me in via ${mytun} icmptype 8
        ${fwcmd} add pass icmp from ${dnsvt} to me in via ${mytun} icmptype 0
# Разрешаем след.UDP порты
        ${fwcmd} add pass udp from ${dnsvt} 53 to me in via ${mytun}
# Прибиваем левый трафик
        ${fwcmd} add deny log all from table\(1\) to me in via ${mytun}
# Разрешаем подключаться к след.TCP портам всем
        ${fwcmd} add pass tcp from any to me 80 in via ${mytun} setup
# Всё остальное убиваем и пишем в log
        ${fwcmd} add deny log all from any to any

################################################################################

# Исходящий траффик из нашей сети в интернет, через PPPoE и Sandy
# Прибиваем левых пользователей
        ${fwcmd} add 11000 deny log all from not ${users} to any out
# Разрешаем Radmin для Radmin пользователей
        ${fwcmd} add pass tcp from ${mylan} ${radminport} to any out via ${mytun} established
# Разрешаем DNS Волга-Телеком
        ${fwcmd} add pass udp from ${mylan} to ${dnsvt} 53 out via ${mytun}
# NAT out
        ${fwcmd} add divert natd all from any to any out recv ${iflan}
# Пропускаем уже принятые на интерфейсе iflan и обработанные файрволом
        ${fwcmd} add fwd ${gwsandy} all from me to any out recv ${iflan}
# Всё остальное убиваем и пишем в log
        ${fwcmd} add deny log all from any to any

################################################################################

Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
alex3
лейтенант
Сообщения: 872
Зарегистрирован: 2006-11-20 16:47:56
Откуда: Переславль
Контактная информация:

Непрочитанное сообщение alex3 » 2007-03-15 16:15:20

красиво. Бум разбираться. Я просто skipto не пользуюсь. Может свой фаер оптимизирую...
P.S. Перефразируя: "Я знаю, что знаю мало, но не знаю, что знаю так мало" :)
Если ipfw можно считать речью обычного человека, то pf - речь политика. За каждой ошибкой -ядерный песец.

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-03-15 16:17:39

Если учесть, что под построением файрвола понимается, что не разрешено, то запрещено, написан прикольно. Т.к. делал первый раз, пришлось делать skipto, дабы не парится. Понимать проще для начала.

Это обходимо, нафига грузить natd?(У многих так:-)) Пользователями, которым доступ в инет запрещён.

Код: Выделить всё

# Прибиваем левых пользователей
        ${fwcmd} add 11000 deny log all from not ${users} to any out 
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

kingc
проходил мимо
Сообщения: 6
Зарегистрирован: 2007-03-14 6:40:09
Откуда: Тюмень

Непрочитанное сообщение kingc » 2007-03-15 21:27:36

Очень большая благодарность вам мужики, за понимание проблемы и оказанную помощь!!!!!!!!!!!!!!!!
Т.е я так понимаю можно вообще nat не использовать, а реализовать всё через fwd?
Посмотрел на вашем примере, как делаються таблицы в ipfw, только бы вот побольше инфы найти, т.к в манах и хэндбуках, которые я читал мне не удовалось найти информации по таблица и например по тому как реализовать в ipfw проверку по mac адресу, а не по IP, на этом форуме нашел похожие темы, но т.к сейчас уже поздно и так не высыпаюсь уже сколько дней, даже недель из-за желание понять всё в деталях и углублённо изучить IPFW, SQUID, NAT, NTP, SARG, FROX из этого списка :), хорошо настроил и работаю только SQUID и SARG, IPFW, поскольку- постольку, сам знал, что не идеальный конфиг у меня получился для первого раза и что надо переделывать, завтра буду терпеливо и вдумчиво переписывать firewall.conf (ipfw), учитывая во внимание ващи советы, и напутствия, щас для начала нужно написать полность работоспособный и по меркам зашищенности конфиг IPFW, затем буду мучаться, с остальными сервисами которые не хотят, на отрез работать, как им изначально положенно :) , как перепишу конфиг, предоставлю сюда, то что получилась, чтобы опытные посмотрели, а может, что и подсказали.
Заранее благодарен!

Аватара пользователя
alex3
лейтенант
Сообщения: 872
Зарегистрирован: 2006-11-20 16:47:56
Откуда: Переславль
Контактная информация:

Непрочитанное сообщение alex3 » 2007-03-16 9:25:46

гм.. присмотрелся к конфу Dikens. Вопрос - а где у тебя используется таблица, которую ты описываешь? косяк?
Если ipfw можно считать речью обычного человека, то pf - речь политика. За каждой ошибкой -ядерный песец.

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-03-16 10:54:47

alex3 писал(а):гм.. присмотрелся к конфу Dikens. Вопрос - а где у тебя используется таблица, которую ты описываешь? косяк?

Код: Выделить всё

# Прибиваем левый трафик
        ${fwcmd} add deny log all from table\(1\) to me in via ${mytun} 
10500 правило.
У ВТ нет приватных адресов, внутренних сетей и т.п. (В моём случае) Вот и блокирую. Часто что-то напридумывают и приходят левые IP. :-)

У Sandy есть своя сетка и приватные адреса, часть я знаю, часть нет, поэтому не блокирую пока ничего. Данных мало.
Да и на траф Sandy пофиг, там безлимитка.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
alex3
лейтенант
Сообщения: 872
Зарегистрирован: 2006-11-20 16:47:56
Откуда: Переславль
Контактная информация:

Непрочитанное сообщение alex3 » 2007-03-16 14:22:45

т.е. 1 - это имя/номер таблицы?
просто с таблицами тоже не работал
Если ipfw можно считать речью обычного человека, то pf - речь политика. За каждой ошибкой -ядерный песец.

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-03-16 14:23:44

alex3 писал(а):т.е. 1 - это имя/номер таблицы?
просто с таблицами тоже не работал
Ну да, номер
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.