Страница 20 из 31

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-01 0:38:28
mlevel
Кто юзает round-robin(через prob & keep-state) в ipfw? Насколько правильно работает? Нет ли проблем с FTP passive? Стоит ли спрыгивать с PF nat?

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-09 12:40:21
BiJey
ADRE писал(а):
pom писал(а):Почему может не работать redirect_port ?
Все работает, ipfw nat работает, ipfw nat 1 show выводит адекватный результат, а порты не перебрасываются, ответа на них нет.
В какую сторону копать?
И кстати, в статье нет примера для ограничения доступа к перебрасываемым портам, при установке ограничений как для natd на порты вообще никого не пускает.
Поставьте на крайний случай логирование всех правил и посмотрите где режится... бывает что запихивает в lo0
все написал проще некуда, никаких ограничений, firewall_type=open
проброс порта не работает, но вот в статистике ipfw show видно что какието пакеты попадают под правило lo0.
как поченить проброску портов?

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-09 13:01:59
BiJey
Извеняюсь, оказалось каспер на локальном компе блочил 55500 порт

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-10 18:00:36
ADRE
BiJey писал(а):
ADRE писал(а):
pom писал(а):Почему может не работать redirect_port ?
Все работает, ipfw nat работает, ipfw nat 1 show выводит адекватный результат, а порты не перебрасываются, ответа на них нет.
В какую сторону копать?
И кстати, в статье нет примера для ограничения доступа к перебрасываемым портам, при установке ограничений как для natd на порты вообще никого не пускает.
Поставьте на крайний случай логирование всех правил и посмотрите где режится... бывает что запихивает в lo0
все написал проще некуда, никаких ограничений, firewall_type=open
проброс порта не работает, но вот в статистике ipfw show видно что какието пакеты попадают под правило lo0.
как поченить проброску портов?
natd после изменений в нем правил рестартовали?

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-14 4:57:39
Bayerische
Запутался в трёх соснах. Дано: машинка на FreeBSD питает интернетом локалку. IP динамический, DHCP.
rc.conf

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

defaultrouter="10.213.8.1"
hostname="server1"
inetd_enable="YES"
ifconfig_fxp0="dhcp"
ifconfig_nfe0="inet 192.168.1.1 netmask 255.255.255.0"
sshd_enable="YES"

firewall_enable="YES"	
firewall_nat_enable="YES"
firewall_script="/etc/firewall.script"	
gateway_enable="YES"	
firewall_nat_interface="fxp0"
firewall.script

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

#!/bin/sh

fwcmd="ipfw -q" 	#command ipfw 
LanIf="nfe0"		#Interface LAN
LanNet="192.168.0.0/16"		#LAN IP
LanIp=`ifconfig nfe0 | grep inet | awk '{print $2}'`
WanIf="fxp0"	#Interface WAN
WanIp=`ifconfig fxp0 | grep inet | awk '{print $2}'`

ipfw -q -f flush		

${fwcmd} add 200 check-state	
${fwcmd} add 300 allow all from any to me via ${LanIf} keep-state
${fwcmd} add 400  allow tcp from ${LanNet} to me 22 in via ${LanIf} keep-state

#NAT
${fwcmd} nat 1 config log if ${WanIf} reset same_ports
${fwcmd} add 500 nat 1 ip from ${LanNet} to any
${fwcmd} add 600 nat 1 ip from any to any via ${WanIf}  

${fwcmd} add 700 allow all from any to any

${fwcmd} add deny ip from any to any
1 проблема. После загрузки не срабатывает defaultrouter="10.213.8.1", нужно давать route add default 10.213.8.1 вручную.

2 проблема. В связи непонятно с чем NAT не работает даже после назначения маршрута по умолчанию, приходится перезапускать скрипт фаервола. Хотя, достаточно сделать ipfw nat 1 config log if fxp0 reset same_ports

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-14 13:51:27
Bayerische
Обе проблемы замечательно решены добавлением в rc.conf

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

synchronous_dhclient="YES" 
Google чудная штука, по обрывочным сообщениям допёр.
Вообще, где можно получить полную актуальную информацию о IPFW во FreeBSD 8.2? В Хэндбуке про kernel nat вообще ничего нет, а другие источники древнючие.

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-14 14:08:29
vadim64
man

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-14 15:07:33
Alex Keda
vadim64 писал(а):man
плохой ответ
принято отвечать

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

man чего-то-там
иначе ответ будет бесполезен

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-14 15:52:25
vadim64
man ipfw
там неебово инфы по кернел нату, терминус и Со неплохо перевели это в своей статье "Подробное руководство ipfw nat"

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-16 16:50:40
Bayerische
Проясните ситуацию.
1. Вот говорят, что во FreeBSD 8.x надо после правила NAT ставить

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

allow ip from any to any
и это так, если убрать правило, трафика нету. Но получается, что при наличии данной строки по дефолту всё на машине-роутере открыто. Что делать, как защитить машину?

2. Опция deny_in, как я понял, запрещает входить извне. Но у меня получается, что и так я не могу зайти. Для того, чтобы был доступен сервер, находящийся в локалке, надо делать портфорвардинг. Или..?

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-16 17:06:04
терминус_
В 8.2 уже не надо - там починили

deny_in влияет на трафик постуапющий через проход IN (входящий) - если нет дырки через redirect_port или от ранее установленно исходящей сессии, то не пропустит.

показывайте все ваши правила, а то непонятно что у вас куда непускает.

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-16 17:06:54
Bayerische
Сейчас вот так:

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

00200 check-state
00300 allow ip from any to me via nfe0 keep-state
00400 allow tcp from 192.168.0.0/16 to me dst-port 22 in via nfe0 keep-state
00600 nat 2 ip from any to any via ng0
00700 allow ip from any to any
65535 deny ip from any to any
nfe0 локальный интерфейс, ng0 VPN-овский.

Меня больше защита роутера интересует.

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-16 17:18:36
терминус_
Для того, чтобы был доступен сервер, находящийся в локалке, надо делать портфорвардинг. Или..?
То есть что надо то - надо из интернета иметь доступ к какому-то серверу в 192.168.1.x?
Тогда в настройках ната должен быть порт-форвардинг redirect_port.

Как я понял этот сервер имеет доступ ко всем в локальной сети и к нему есть доступ у всех?

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-16 17:42:17
Bayerische
Да, про redirect_port я уже понял. Сервер (роутер) доступен всем из локалки.
FreeBSD 8.2
В sysctl.conf net.inet.ip.fw.one_pass=1
Нужно закрыть доступ в локалку извне. deny_in нужен?
Нужно закрыть доступ к серверу из WAN. Сейчас при таком наборе правил всё отлично "простукивается". WTP, FTP, SSH не пробовал. Надо открыть только то, что надо, а получается, что всё нараспашку. ipfw по дефолту собран закрытым.

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-16 18:11:21
терминус_

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

${fwcmd} add 500 check-state
${fwcmd} add 600 allow all from me to any out via ${LanIf} keep-state
${fwcmd} add 700 allow tcp from ${LanNet} to me 22 in via ${LanIf}

${fwcmd} add 800 deny all from ${LanNet} to me in via ${LanIf}
${fwcmd} add 900 allow all from ${LanNet} to any in via ${LanIf}

${fwcmd} nat 1 config log if ${WanIf} reset same_ports deny_in
${fwcmd} add 1000 nat 1 ip from any to any via ${WanIf} 

${fwcmd} add 2000 deny ip from any to any

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-16 18:45:10
Bayerische
Правило 2000 закрывает всё.

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-16 19:27:52
Bayerische

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

${fwcmd} add 2000 deny ip from any to any
закрывает всё, а

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

${fwcmd} add 2000 allow ip from any to any
разрешает всё. Любые попытки играться обрывают связь.

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-17 9:02:55
vadim64
uname -a

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-17 10:46:31
Bayerische

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

FreeBSD server1 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Sun Mar  6 11:44:03 UTC 2011     root@server1:/usr/obj/usr/src/sys/SERVERKERN  i386

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-17 10:59:03
терминус_
Интереснааа... Что же это получается - они что не починили one_pass в 8.2? :st:

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-17 12:16:17
Bayerische
Кусочек ip_fw_pfil.c

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

	case IP_FW_NGTEE:
	case IP_FW_NETGRAPH:
		if (ng_ipfw_input_p == NULL) {
			ret = EACCES;
			break; /* i.e. drop */
		}
		ret = ng_ipfw_input_p(m0, dir, &args,
			(ipfw == IP_FW_NGTEE) ? 1 : 0);
		if (ipfw == IP_FW_NGTEE) /* ignore errors for NGTEE */
			goto again;	/* continue with packet */
		break;

	case IP_FW_NAT:
		/* honor one-pass in case of successful nat */
		if (V_fw_one_pass)
			break; /* ret is already 0 */
		goto again;

	case IP_FW_REASS:
		goto again;		/* continue with packet */
	
	default:
		KASSERT(0, ("%s: unknown retval", __func__));
	}

	if (ret != 0) {
		if (*m0)
			FREE_PKT(*m0);
		*m0 = NULL;
	}
	if (*m0 && mtod(*m0, struct ip *)->ip_v == 4)
		SET_HOST_IPLEN(mtod(*m0, struct ip *));
	return ret;
}
Вроде патч на месте :unknown:

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-17 12:48:53
Bayerische
Даже если так, что можно предпринять? Кроме запрещающих правил до NAT как ещё можно регулировать входящий трафик?

Вопрос помимо данной проблемы. Возможно ли сделать "инклюды" для шелл-скрипта фаервола? Хотелось бы завести отдельный файл, к примеру, для импорта базы спамеров, какеров, агрессивных пауков и прочих.

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-17 13:32:00
Bayerische
Попробовал по-всякому, доступ к серверу из вне ограничивается только до NAT. После всё попадает под Allow. Выходит, фаер работает в режиме Allow from all, как последнее рукописное правило.

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-17 13:58:48
dgh
что и deny_in в нате не работает?

Re: Подробное руководство по ipfw nat

Добавлено: 2011-03-17 14:00:29
Bayerische
dgh, не знаю, вроде работает, проверить не могу. У меня пошли входящие подключения на порты роутера после поднятия NAT.