Xeddin 0 Опубликовано: 2006-04-29 20:55:09 Share Опубликовано: 2006-04-29 20:55:09 Привет всем. Прошу помощи, т.к. я уже запарился. СТГ 2.4.8.6, FreeBSD 5.4. проинсталил, все ок вроде. Конфигуратор подключается, авторизатор подключается, скрипты ОнКоннект ОнДисконнект в файрвол встраивают свои записи, а инета нету. Может я ошибку в файрволе допустил ??? Помогите плз. Файрвол #!/bin/sh fwcmd="/sbin/ipfw" #natdcmd='/sbin/natd' ${fwcmd} -f flush oif="rl0" onet="192.168.0.0" omask="255.255.255.0" oip="192.168.0.10" iif="fxp0" inet="192.168.10.0" imask="255.255.255.0" iip="192.168.10.1" admip="192.168.10.161" #${natdcmd} -s -m -u -a 192.168.0.10 ${fwcmd} add 10 deny log icmp from any to any frag ${fwcmd} add 11 allow icmp from any to any ${fwcmd} add 15 pass udp from ${oip} to any 53 keep-state ${fwcmd} add 20 pass udp from any to ${oip} 53 keep-state ${fwcmd} add 25 pass udp from ${iip} to ${inet}:${imask} 53 keep-state ${fwcmd} add 30 pass udp from ${inet}:${imask} to ${iip} 53 keep-state ${fwcmd} add 100 pass all from any to any via lo0 ${fwcmd} add 200 deny all from any to 127.0.0.0/8 ${fwcmd} add 300 deny all from 127.0.0.0/8 to any ${fwcmd} add 400 deny log all from ${inet}:${imask} to any in via ${oif} ${fwcmd} add 500 deny log all from ${onet}:${omask} to any in via ${iif} ${fwcmd} add 600 deny log all from any to 10.0.0.0/8 via ${oif} ${fwcmd} add 700 deny log all from 10.0.0.0/8 to any via ${oif} ${fwcmd} add 800 deny log all from any to 172.16.0.0/12 via ${oif} ${fwcmd} add 900 deny log all from 172.16.0.0/12 to any via ${oif} ${fwcmd} add 1000 deny log all from any to 0.0.0.0/8 via ${oif} ${fwcmd} add 1010 deny log all from 0.0.0.0/8 to any via ${oif} ${fwcmd} add 1020 deny log all from any to 169.254.0.0/16 via ${oif} ${fwcmd} add 1030 deny log all from 169.254.0.0/16 to any via ${oif} #${fwcmd} add 1040 deny log all from any to 192.0.2.0/24 via ${oif} #${fwcmd} add 1050 deny log all from 192.0.2.0/24 to any via ${oif} ${fwcmd} add 1060 deny log all from any to 224.0.0.0/4 via ${oif} ${fwcmd} add 1070 deny log all from 224.0.0.0/4 to any via ${oif} ${fwcmd} add 1080 deny log all from any to 240.0.0.0/4 via ${oif} ${fwcmd} add 1090 deny log all from 240.0.0.0/4 to any via ${oif} #Authorizator Stargazer ${fwcmd} add 1100 allow udp from ${inet}:${imask} to ${iip} 5555 via ${iif} ${fwcmd} add 1101 allow udp from ${iip} to ${inet}:${imask} via ${iif} #Configurator Stargazer ${fwcmd} add 1102 allow log tcp from ${admip} to ${iip} 4444 via ${iif} ${fwcmd} add 1103 allow log tcp from ${iip} to ${admip} via ${iif} #SSH ${fwcmd} add 1104 allow tcp from ${admip} to ${iip} 22 via ${iif} ${fwcmd} add 1105 allow tcp from ${iip} to ${admip} via ${iif} ${fwcmd} add 1150 deny log ip from ${inet}:${imask} to ${iip} via ${iif} ${fwcmd} add 1151 deny log ip from ${inet}:${imask} to ${oip} via ${iif} ${fwcmd} add 1200 allow ip from me to any ${fwcmd} add 1200 allow ip from any to me ${fwcmd} add 50001 divert natd all from any to any via ${oif} #!!! ${fwcmd} add 50010 pass tcp from any to any out via ${oif} setup ${fwcmd} add 50011 pass tcp from any to any via ${oif} established OnConnect #Этот скрипт вызывается в момент, когда пользователь #спешно прошел авторизацию на сервере. Задача скрита - перестроить # #айрвол так, что бы пользователь получил доступ в интернет fwcmd="/sbin/ipfw" iif="fxp0" #Login #echo "$LOGIN" LOGIN=$1 #user IP IP=$2 #cash CASH=$3 #user ID ID=$4 ${fwcmd} add `expr $ID '*' 10 + 10000` allow ip from $IP to any ${fwcmd} add `expr $ID '*' 10 + 10001` allow ip from any to $IP #${fwcmd} add `expr $ID '*' 10 + 29000` fwd 127.0.0.1,3128 tcp from $IP to any 80 via ${iif} echo "`date +%Y.%m.%d-%H.%M.%S` connect $ID $IP $CASH" >> /var/stargazer/users/$LOGIN/connect.log echo "`date +%Y.%m.%d-%H.%M.%S` connect $LOGIN $IP $CASH" >> /var/stargazer/connect.log OnDisconnect # Этот скрипт вызывается в момент, когда пользователь # желает отключится от интернета или вышел таймаут у пользователя # и сервер сам отключает пользователя # Задача скрипта подобна задаче скрипта OnConnect - перестроить # файрвол так, что бы пользователю закрыть доступ в интернет fwcmd="/sbin/ipfw" iif="fxp0" # Login LOGIN=$1 #user IP IP=$2 #cash CASH=$3 #user ID ID=$4 ${fwcmd} delete `expr $ID '*' 10 + 10000` ${fwcmd} delete `expr $ID '*' 10 + 10001` echo "`date +%Y.%m.%d-%H.%M.%S` disconnect $ID $IP $CASH" >> /var/stargazer/users/$LOGIN/connect.log echo "`date +%Y.%m.%d-%H.%M.%S` disconnect $LOGIN $IP $CASH" >> /var/stargazer/connect.log З.Ы. Ядро собрано с option IPFIREWALL option IPFIREWALL_VERBOSE option IPFIREWALL_VERBOSE_LIMIT 100 option IPDIVERT Ссылка на сообщение Поделиться на других сайтах
denz 0 Опубліковано: 2006-04-30 08:28:03 Share Опубліковано: 2006-04-30 08:28:03 Смотри в сторону диверта, ни все тут так... И еще... в 5-ой ветке бсд по дефолту соберается ipfw2, а это значит что можа вот так (выборка ipfw show): 01230 3 234 deny ip from any to 172.195.65.1 dst-port 20,21,22,23,80,137,138,139,199,443,445,8080,8888 via xl0 и 00050 3949 517691 deny ip from 192.168.0.0/16,172.16.0.0/12,10.0.0.0/8 to any in via rl0 и так 01220 66979 6821124 allow ip from 63.63.202.0/27,63.63.63.14,63.63.63.222,63.63.48.43,63.63.173.9 to 63.63.202.8 dst-port 20,21,22,25,80,587,8020,8888 via rl0 Ссылка на сообщение Поделиться на других сайтах
Xeddin 0 Опубліковано: 2006-04-30 09:13:44 Автор Share Опубліковано: 2006-04-30 09:13:44 нужно ли в rc.conf включать natd ? И может в таком случае нужно настраивать по примеру настройки с ДИВЕРТ СОКЕТ ??? Ссылка на сообщение Поделиться на других сайтах
Max 0 Опубліковано: 2006-04-30 14:51:21 Share Опубліковано: 2006-04-30 14:51:21 для начала проверьте стоит ли у клиентов основной шлюз? Если да, то посмотрите tcpdump'ом на внешенем ифе какой трафик ходит, если трафика нет совсем, то дело в запрещающих правилах фаера, если есть пакеты из внутрненней сети, то пакеты не попадают в нат. Ссылка на сообщение Поделиться на других сайтах
Xeddin 0 Опубліковано: 2006-04-30 21:39:25 Автор Share Опубліковано: 2006-04-30 21:39:25 есть пакеты с моего IP на сайт, типа 192,168,10,161 -> www.rambler.ru, а вот обратно нету. Ссылка на сообщение Поделиться на других сайтах
Max 0 Опубліковано: 2006-05-01 04:22:12 Share Опубліковано: 2006-05-01 04:22:12 есть пакеты с моего IP на сайт, типа 192,168,10,161 -> www.rambler.ru, а вот обратно нету. Вот вам и ответ, пакеты не попадают в прямой нат, тоесть от вашей машины, а идут сразу в инет, добавте в фаер правило типа: ipfw a №№№№ divert natd ip from 192.168.10.161 to any out via (имя товоего внешнего интерфейса) К стати обязательно должен быть обратный диверт, типа ipfw a №№№№ divert natd ip from any to me in via (имя товоего внешнего интерфейса) Ссылка на сообщение Поделиться на других сайтах
XoRe 0 Опубліковано: 2006-05-02 17:00:16 Share Опубліковано: 2006-05-02 17:00:16 2Xeddin: Ответ прост, на правиле allow или deny пакет закончивает путь по фаерволлу на данном интерфейсе. Т.е. если пакет удовлетворяет правилу allow или deny, то дальше он фаерволлом не проверяется. Пакет пропускается на allow. Или отвергается на deny. У тебя в OnConnect создаются правила: ${fwcmd} add `expr $ID '*' 10 + 10000` allow ip from $IP to any ${fwcmd} add `expr $ID '*' 10 + 10001` allow ip from any to $IP Вот пакет от клиента на правиле 10000 + Х и проходит проверку фаерволом. А, если учесть, что пакет от клиента проверяется фаерволом 2 раза (при поступлении на внутренний интерфейс и при уходе с внешнего интерфейса), то фаерволл ему на обоих интерфейсах даст allow на правиле 10000 + Х. А natd у тебя делается на правиле ${fwcmd} add 50001 divert natd all from any to any via ${oif} Т.е. на правиле с номером 50001. Т.е. пакет от клиента, при выходе с внешнего интерфейса, до 50001 правила просто не доходит, заканчивая свой путь на правиле 10000 + Х. Вот у тебя с внешнего интерфейса шлюза и видны пакеты типа 192,168,10,161 -> www.rambler.ru. Шлюз честно исполняет свои обязанности шлюза, пересылает пакеты из одной сети в другую. Вариантов решения этого может быть много. Я бы посоветовал перестроить фаерволл полностью. Хотя можно попробовать просто в OnConnect заменить разрешающие правила на правила типа: ${fwcmd} add `expr $ID '*' 10 + 10000` allow ip from $IP to any via fxp0 ${fwcmd} add `expr $ID '*' 10 + 10001` allow ip from any to $IP via fxp0 Т.е. чтоб правило срабатывало только на внутреннем интерфейсе. Хотя нет. Надо ещё в конфиге фаерволла правилам: ${fwcmd} add 1200 allow ip from me to any ${fwcmd} add 1200 allow ip from any to me Дать номера, бОльшие 50001. Чтоб сначала исполнялся natd, а потом эти правила. Ссылка на сообщение Поделиться на других сайтах
Xeddin 0 Опубліковано: 2006-05-03 20:13:17 Автор Share Опубліковано: 2006-05-03 20:13:17 Сделал так: #!/bin/sh fwcmd="/sbin/ipfw" #natdcmd='/sbin/natd' ${fwcmd} -f flush oif="rl0" onet="192.168.0.0" omask="255.255.255.0" oip="192.168.0.10" iif="fxp0" inet="192.168.10.0" imask="255.255.255.0" iip="192.168.10.1" admip="192.168.10.161" #Authorizator Stargazer ${fwcmd} add 1100 allow udp from ${inet}:${imask} to ${iip} 5555 via ${iif} ${fwcmd} add 1101 allow udp from ${iip} to ${inet}:${imask} via ${iif} #Configurator Stargazer ${fwcmd} add 1102 allow log tcp from ${admip} to ${iip} 4444 via ${iif} ${fwcmd} add 1103 allow log tcp from ${iip} to ${admip} via ${iif} #SSH ${fwcmd} add 1104 allow tcp from ${admip} to ${iip} 22 via ${iif} ${fwcmd} add 1105 allow tcp from ${iip} to ${admip} via ${iif} ${fwcmd} add 1115 pass udp from ${oip} to any 53 keep-state ${fwcmd} add 1120 pass udp from any to ${oip} 53 keep-state ${fwcmd} add 1125 pass udp from ${iip} to ${inet}:${imask} 53 keep-state ${fwcmd} add 1130 pass udp from ${inet}:${imask} to ${iip} 53 keep-state ${fwcmd} add 10000 allow ip from 192.168.10.161 to any via fxp0 ${fwcmd} add 10001 allow ip from any to 192.168.10.161 via fxp0 ${fwcmd} add 15001 divert natd all from any to any via ${oif} #!!! ${fwcmd} add 20000 allow ip from me to any ${fwcmd} add 20001 allow ip from any to me все равно нифига нету. Уже пробовал ${fwcmd} add 10000 allow ip from 192.168.10.161 to any via fxp0 ${fwcmd} add 10001 allow ip from any to 192.168.10.161 via fxp0 ${fwcmd} add 15001 divert natd all from any to any via ${oif} #!!! ${fwcmd} add 20000 allow ip from me to any ${fwcmd} add 20001 allow ip from any to me во всех комбинациях. не получается. А что там XoRe говорил по поводу изменения файрвола в целом??? Может подкинешь примерчик ??? Мне что-то тяжело понять некоторые моменты прохождения пакетов. Вот как понимаю я: 1. 192.168.10.161 - > ya.ru - через внутренний интерфейс (правило 10000 разрешило) 2. НАТд хватает пакет, делает из него 192.168.0.10 -> ya.ru и отправляет через внешний интерфейс (правило 20000 разрешило) 3. ya.ru -> 192.168.0.10 через внешний интерфейс (правило 20001 разрешило) 4. НАТд хватает пакет, делает из него ya.ru -> 192.168.10.161 отправляет через внутренний интерфейс (правило 10001 разрешило) Может я что не так думаю ??? Ссылка на сообщение Поделиться на других сайтах
Max 0 Опубліковано: 2006-05-04 06:08:34 Share Опубліковано: 2006-05-04 06:08:34 2 натд не хватает! так как пакет вышел из фаера из-за 10000 правила. Ссылка на сообщение Поделиться на других сайтах
Xeddin 0 Опубліковано: 2006-05-04 14:40:56 Автор Share Опубліковано: 2006-05-04 14:40:56 2 натд не хватает! так как пакет вышел из фаера из-за 10000 правила. где именно вставить нуна? И еще, если использовать такие настройки, можно ли собирать ядро с option IPFIREWALL option IPFIREWALL_VERBOSE option IPFIREWALL_VERBOSE_LIMIT 100 option IPDIVERT или в случае сборки с этими опциями нужно по другому инсталить старгейзер и настраивать ???? Ссылка на сообщение Поделиться на других сайтах
XoRe 0 Опубліковано: 2006-05-04 23:04:39 Share Опубліковано: 2006-05-04 23:04:39 2Max: хавает, хавает ) Он же в 10000 правиле указал внутренний интерфейс. Значит при полете пакета на внешнем интерфейсе правило 10000 задеваться не будет. 2Xeddin: В целом рассуждения верные. Скажу так - когда пакет проходит через nat, у него меняется адрес источника при полете наружу и меняется адрес получателя при полете внутрь. Т.е. пакет 192.168.10.161 - > ya.ru на внутреннем интерфейсе будет "192.168.10.161 - > ya.ru". И на внешнем будет такой, пока не зайдет в natd. После ната он уже будет "192.168.0.10 - > ya.ru" И фаерволл его выпустит на 20000 правиле. А когда пакет придет от яндекса, он ДО правила с натом будет такой: "ya.ru - > 192.168.0.10". А после этого правила, он будет проходить цепочку правил дальше уже как "ya.ru - > 192.168.10.161". Поэтому правило 20001 работать не будет ни там, ни там. Оно нафик не нужно. Я бы даже сказал - его следует убрать, т.к. оно открывает все порты твоего компа с локалки и с интернета. Попробуй вместо правил 20000 и 20001 написать одно правило: ${fwcmd} add 20000 allow ip from any to not me И ещё - у тебя natd запущен? ) Ссылка на сообщение Поделиться на других сайтах
Xeddin 0 Опубліковано: 2006-05-05 04:20:35 Автор Share Опубліковано: 2006-05-05 04:20:35 натд запущен с ключем -n, а вот ${fwcmd} add 20000 allow ip from any to not me не помогает. Буду сегодня на работе на новой машине ставить, может дома какие-то закорючки =) Ссылка на сообщение Поделиться на других сайтах
XoRe 0 Опубліковано: 2006-05-05 06:25:14 Share Опубліковано: 2006-05-05 06:25:14 Попробуй настроить так, чтоб велись логи ipfw и логи natd. И покопайся в логах. Ссылка на сообщение Поделиться на других сайтах
Xeddin 0 Опубліковано: 2006-05-09 08:20:37 Автор Share Опубліковано: 2006-05-09 08:20:37 Ура, заработало. В чем была проблема, х.з., но файрвол теперь такой: #!/bin/sh fwcmd="/sbin/ipfw" natdcmd='/sbin/natd' ${fwcmd} -f flush oif="rl0" onet="192.168.0.0" omask="255.255.255.0" oip="192.168.0.10" iif="fxp0" inet="192.168.10.0" imask="255.255.255.0" iip="192.168.10.1" admip="192.168.10.161" ${natdcmd} -s -m -u -a 192.168.0.10 -l ${fwcmd} add 100 check-state ${fwcmd} add 200 deny log icmp from any to any frag ${fwcmd} add 210 deny log icmp from any to any in icmptype 5,9,13,14,15,16,17 ${fwcmd} add 300 pass all from any to any via lo0 ${fwcmd} add 310 deny all from any to 127.0.0.0/8 ${fwcmd} add 320 deny all from 127.0.0.0/8 to any #DNS ${fwcmd} add 330 pass udp from ${oip} to any 53 keep-state ${fwcmd} add 340 pass udp from any to ${oip} 53 keep-state ${fwcmd} add 350 pass udp from ${iip} to ${inet}:${imask} 53 keep-state ${fwcmd} add 360 pass udp from ${inet}:${imask} to ${iip} 53 keep-state #Web-server ${fwcmd} add 400 pass tcp from ${inet}:${imask} to ${iip} http,https via ${iif} ${fwcmd} add 1000 deny log all from ${inet}:${imask} to any in via ${oif} ${fwcmd} add 1010 deny log all from ${onet}:${omask} to any in via ${iif} # Authorizator Stargazer ${fwcmd} add 2000 allow udp from ${inet}:${imask} to ${iip} 5555 via ${iif} ${fwcmd} add 2010 allow udp from ${iip} to ${inet}:${imask} via ${iif} # Configurator Stargazer ${fwcmd} add 2020 allow log tcp from ${admip} to ${iip} 4444 via ${iif} ${fwcmd} add 2030 allow log tcp from ${iip} to ${admip} via ${iif} # SSH ${fwcmd} add 2040 allow tcp from ${admip} to ${iip} 22 via ${iif} ${fwcmd} add 2050 allow tcp from ${iip} to ${admip} via ${iif} # Deny all query to router ${fwcmd} add 2060 deny log ip from ${inet}:${imask} to ${iip} via ${iif} ${fwcmd} add 2070 deny log ip from ${inet}:${imask} to ${oip} via ${iif} ${fwcmd} add 10000 allow log ip from 192.168.10.161 to any via ${iif} ${fwcmd} add 10001 allow log ip from any to 192.168.10.161 via ${iif} # NAT ${fwcmd} add 25050 divert natd all from any to any via ${oif} #!!! # From me to ... ${fwcmd} add 25100 allow log ip from me to not me via ${oif} ${fwcmd} add 50000 pass tcp from any to any out via ${oif} setup ${fwcmd} add 50010 pass tcp from any to any via ${oif} established # Ping ICMP ${fwcmd} add 50020 pass icmp from any to any # SSH from World ${fwcmd} add 60000 pass tcp from any to ${oip} 22 via ${oif} P.S. Чего в нем еще не хватает для безопасности? Ссылка на сообщение Поделиться на других сайтах
XoRe 0 Опубліковано: 2006-05-09 10:43:04 Share Опубліковано: 2006-05-09 10:43:04 Имхо, правила избыточны. # Authorizator Stargazer ${fwcmd} add 2000 allow udp from ${inet}:${imask} to ${iip} 5555 via ${iif} ${fwcmd} add 2010 allow udp from ${iip} to ${inet}:${imask} via ${iif} # Configurator Stargazer ${fwcmd} add 2020 allow log tcp from ${admip} to ${iip} 4444 via ${iif} ${fwcmd} add 2030 allow log tcp from ${iip} to ${admip} via ${iif} Правило 2030 является частным случаем правила 2010. Ну и вообще конструкция ${iip} to ${inet}:${imask} означает "разрешить отправку пакетов от меня с любого порта". Сама по себе мысль правильная. Себе-же мы доверяем ) Но если оно идет сразу за правилом 2000, то логично предположить, что оно составляет с ним пару. так вот, для пары правила 2000 правило 2010, на мой взгляд, слишком общее. Хотя в принципе пох, главное чтоб работало ) Ссылка на сообщение Поделиться на других сайтах
Xeddin 0 Опубліковано: 2006-05-09 11:15:28 Автор Share Опубліковано: 2006-05-09 11:15:28 Имхо, правила избыточны. # Authorizator Stargazer ${fwcmd} add 2000 allow udp from ${inet}:${imask} to ${iip} 5555 via ${iif} ${fwcmd} add 2010 allow udp from ${iip} to ${inet}:${imask} via ${iif} # Configurator Stargazer ${fwcmd} add 2020 allow log tcp from ${admip} to ${iip} 4444 via ${iif} ${fwcmd} add 2030 allow log tcp from ${iip} to ${admip} via ${iif} Правило 2030 является частным случаем правила 2010. Ну и вообще конструкция ${iip} to ${inet}:${imask} означает "разрешить отправку пакетов от меня с любого порта". Сама по себе мысль правильная. Себе-же мы доверяем ) Но если оно идет сразу за правилом 2000, то логично предположить, что оно составляет с ним пару. так вот, для пары правила 2000 правило 2010, на мой взгляд, слишком общее. Хотя в принципе пох, главное чтоб работало ) так 2000 и 2010 по UDP протоколу, а 2020 и 2030 по TCP протоколу. Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас