nixp.ru v3.0

23 октября 2017,
понедельник,
13:00:37 MSK

DevOps с компанией «Флант»
myakuhin написал 10 декабря 2007 года в 11:40 (502 просмотра) Ведет себя неопределенно; открыл 1 тему в форуме, оставил 7 комментариев на сайте.

есть в офисе шлюз в интернет на FreeBSD,и на нем где то стоит запрет пользователям локалки забирать почту с внешних почтовых адресов со 110 порта, но нужно это убрать нашел скрипт ipfw, который делает правила файрвола, но там ничего такого не вижу вот он:

kldload ipfw

echo y | ipfw flush

sysctl net.inet.ip.forwarding=1

killall -KILL natd

natd -n extranet

INT_IF=«intranet»

EXT_IF=«extranet»

ipfw add 10 allow ip from any to any via vpn

ipfw add 99 allow tcp from any to any 22 in

ipfw add 98 allow tcp from me 22 to any out

ipfw add 100 deny ip from any to 192.168.0.0/16 in via $EXT_IF

ipfw add 2000 allow ip from me to any in

ipfw add 2001 allow ip from me to any out

ipfw add 1008 allow ip from me to 192.168.0.0/24 in via intranet

ipfw add 1009 allow ip from me to 192.168.0.0/24 out via intranet

ipfw add 10000 allow ip from any to any

где еще можно посмотреть?

с компов лок.сети даже нет возможности пинговать внешние сервера

Anarchist

Ну, для начала убедиться в том, что их у тебя режет ipfw.

Как убедиться? Просто:

# grep 110 /var/log/security
myakuhin

/var/log/security — там пусто, после попытке юзером получить почту

Anarchist
myakuhin
/var/log/security — там пусто, после попытке юзером получить почту

Совсем пусто?

Версия Фри (судя по правилам, похоже на что-то из серии 4.Х)?

Для четвёрки — не уверен относительно адресации вопроса:

ipfw вообще логи пишет? И что делает в скрипте '[natd’?

Пинги — протокол 'icmp’.

Причина — в ДНК, а точнее — в общей идеологии правил.

В таком формате правил логи писаться и не должны, что не есть правильно.

Растекаться мыслью по пространству здесь избыточно — для начала рекомендую ознакомиться с одной из достаточных идеологий построения пакетного фильтра FreeBSD.

ЗЫ: Какой-то я здесь слишком вежливый… Ну да ничего, завтра наверстаю :)))

myakuhin

а не может как то мешать запущенный почтовый сервер на этом шлюзе и pop3d

Anarchist
myakuhin
а не может как то мешать запущенный почтовый сервер на этом шлюзе и pop3d

А при чём здесь они, если ты подключаешься к совершенно другому адресу?

Иди изучать принципы настройки пакетного фильтра FreeBSD!

myakuhin
Anarchist
А при чём здесь они, если ты подключаешься к совершенно другому адресу?

Иди изучать принципы настройки пакетного фильтра FreeBSD!

Пришел изучат, первым же делом смотрю:

В /etc/rc.conf добавляется следующий блок:

firewall_enable=«YES»

…..

смотрю свой rc.conf — нет там такого параметра

Anarchist
myakuhin
Пришел изучат, первым же делом смотрю:

В /etc/rc.conf добавляется следующий блок:

firewall_enable=«YES»

…..

смотрю свой rc.conf — нет там такого параметра

Дык там речь идёт о 6.Х.

А ты так и не сказал, какая версия стоит у тебя.

m_yakuhin

фри у меня 5,4

Anarchist
m_yakuhin
фри у меня 5,4

Пятую версию не трогал, но 4.Х видел.

Итого: что у тебя в реале — понятия не имею.

В статье описан один из правильных вариантов.

Блок в /etc/rc.conf добавлять нужно. Формат — смотри в /etc/defaults/rc.conf.

У тебя он реально может быть прописан в /etc/rc.conf.local или /usr/local/etc/rc.conf.

Запуск файрволла применительно к пятёрке — не подскажу.

Но сначала разбирайся с правилами.

myakuhin

пересобрал ядро, чтобы работал divert, но всё равно нет доступа из локалки до внешних серверов на 110 порт. сейчас правила выглядят так:

gw# ipfw list

00010 allow ip from any to any via vpn

00015 allow icmp from any to any icmptypes 0,8,11

00020 allow udp from any 53 to any via extranet

00030 allow udp from any to any dst-port 53 via extranet

00040 allow tcp from any to any via intranet

00050 allow udp from any to any via intranet

00060 divert 8668 ip from 192.168.1.0/24 to any out via extranet

00070 divert 8668 ip from any to 195.195.195.195 in via extranet

00098 allow tcp from me 22 to any out

00099 allow tcp from any to dst-port 22 in

00100 deny ip from any to 192.168.0.0/16 in via extranet

02000 allow ip from me to any in

02001 allow ip from me to any out

65535 deny ip from any to any

extranet — это внешняя сет.карта

intranet — это вн. сет карта

Anarchist

Ты почто не разрешил передачу данных через loopback?

В данном формате (идеологии написания правил) in/out большого смысла не имеют (если имет вообще какой-нибудь смысл).

Не вижу желания элементарно проверить работу правил (’log’).

Не вижу правил, разрешающих прохождение пакетов в обратном направлении.

ЗЫ: Скоро начну разговаривать на русском производственном.

myakuhin

ладно, постараюсь не нарываться на русский производственный… но не могу понять что хотел сказать товарищ который изначально писал эти правила этим:

killall -KILL natd

natd -n extranet

еще просьба приведите пример этому

«Не вижу правил, разрешающих прохождение пакетов в обратном направлении.»

Anarchist
myakuhin
но не могу понять что хотел сказать товарищ который изначально писал эти правила этим:

killall -KILL natd

natd -n extranet

Пытаться найти логику в записях человека неопределённой (и это — в лучшем случае) степени компетентности — один из наиболее эффективных способов впустую убить время.

Именно поэтому цензура в том смысле, который на неё возлагался в середине XIX века («цензор» == «научный руководитель») является если не необходимой, то как минимум полезной вещью.

myakuhin
еще просьба приведите пример этому

«Не вижу правил, разрешающих прохождение пакетов в обратном направлении.»

Значит так: ты ещё раз внимательно перечитай статью. Особое внимание обращая на строки с указанием параметра 'LOG’.

Твоих задач я не знаю (кстати, сколько сетевых интерфейсов поднято на сервере?), но я бы рещал задачу следующим образом:

1. В /etc/rc.conf добавить:

gateway_enable="YES"

2. Правила примерно следующего вида (использую альтернативную описанной в статье идеологию):

add 100 allow all from any to any via lo0
add 200 allow ip from any to any via vpn
add 300 allow icmp from any to any icmptypes 0,8,11
add 400 allow udp from $MY_PRIVAT_NET to $MY_DNS_SERVER 53
add 450 allow tcp from $MY_PRIVAT_NET to $MY_DNS_SERVER 53
add 800 allow tcp from $MY_PRIVAT_NET to any established
add 810 allow tcp from any to $MY_PRIVAT_NET established
add 1000 allow tcp from $MY_PRIVAT_NET to any setup
add 2000 allow tcp from $MY_PRIVAT_NET 22 to any setup
add 8000 deny log tcp from any to $MY_PRIVAT_NET 20,21,22,23,53,80,110,137,138,139,443,563,8080,8888
65535 deny ip from any to any

Хотя пускать все пинги я бы поостерёгся.

Вместо divert может иметь смысл использовать squid.

И не зажимай номера!!!

m_yakuhin

на сервере стоят 2 сетевухи, наружу и внутрь, пользователи замечательно получают интернет через сквид, крутился еще почтовый сервер, но замучил спам… и я решил зарубить этот почтовый сервер, а все ящики перенести на хостинг туда где наш сайт, соответственно у пользователей в почтовых клиентах нужно прописать pop.peterhost.ru (хостинг) порт 110 вот и получилась проблема, что почтовый клиент не может соединиться с сервером. Думал что дело в ДНС, но вместо pop.peterhos.ru писал ип адрес — та же песня

Anarchist
m_yakuhin
на сервере стоят 2 сетевухи, наружу и внутрь, пользователи замечательно получают интернет через сквид, крутился еще почтовый сервер, но замучил спам…

Практически та же задача, которую я сейчас прорабатываю.

Закончу — предполагаю оформить в виде статьи.

m_yakuhin
и я решил зарубить этот почтовый сервер

А вот решение с перекладыванием всех проблем на чужого дядю я считаю неправильным.

m_yakuhin
а все ящики перенести на хостинг туда где наш сайт, соответственно у пользователей в почтовых клиентах нужно прописать pop.peterhost.ru (хостинг) порт 110

Для начала разберись с удалённым доступом туда с своей рабочей станции.

Защита передаваемой информации предусматривается?

m_yakuhin
вот и получилась проблема, что почтовый клиент не может соединиться с сервером. Думал что дело в ДНС, но вместо pop.peterhos.ru писал ип адрес — та же песня

Пинги этого хоста с твоей рабочей станции проходят?

Теперь понятнее. Поставь правила 800 и 810 из моего примера и приведи правило с номером 1000 к следующему виду:

add 1000 allow tcp from $MY_PRIVAT_NET to $pop3.peterhost.ru_ip 110 setup
myakuhin

так и не получается ничего… правила сделал такие:

add 100 allow all from any to any via lo0

add 200 allow ip from any to any via vpn

add 300 allow icmp from any to any icmptypes 0,8,11

add 400 allow udp from $MY_PRIVAT_NET to $MY_DNS_SERVER 53

add 450 allow tcp from $MY_PRIVAT_NET to $MY_DNS_SERVER 53

add 800 allow tcp from $MY_PRIVAT_NET to any established

add 810 allow tcp from any to $MY_PRIVAT_NET established

add 1000 allow tcp from $MY_PRIVAT_NET to any setup

add 2000 allow tcp from $MY_PRIVAT_NET 22 to any setup

add 8000 deny log tcp from any to $MY_PRIVAT_NET 20,21,22,23,53,80,110,137,138,139,443,563,8080,8888

65535 deny ip from any to any

но пока кроме log т.к. в ядре не поддерживается, нужно пересобирать ядро…

вообще такое ощущение что рабочие станции вообще не видят шлюз, видят только сквид, пинг с рабочих станций на внешние хосты не проходит… еще было подозрение, что IPFW вообще не работает, но когда убираю

allow ip from any to any

то интернет вообще пропадает и через squid…

поддержку log конечно включу в ядре, но думаю, что там бы ничего не появилось, т.к. (см.выше) явно рабочие станции не видят шлюз (хотя он указан у них в настройках tcp/ip)..

Есть подозрение на ДНС — на раб.станциях в настройках указан ип адрес контролера домена лок.сети W2K3 на котором поднят ДНС, может он нифига не работает…

myakuhin

и в $MY_DNS_SERVER указывать 192.168.1.2 — это комп. в локалке с поднятым днс или указывать днс сервер провайдера?

Anarchist
myakuhin
и в $MY_DNS_SERVER указывать 192.168.1.2 — это комп. в локалке с поднятым днс или указывать днс сервер провайдера?

Это тот DNS, который прописан на рабочих станциях.

Anarchist
myakuhin
так и не получается ничего… правила сделал такие:

add 100 allow all from any to any via lo0

add 200 allow ip from any to any via vpn

add 300 allow icmp from any to any icmptypes 0,8,11

add 400 allow udp from $MY_PRIVAT_NET to $MY_DNS_SERVER 53

add 450 allow tcp from $MY_PRIVAT_NET to $MY_DNS_SERVER 53

add 800 allow tcp from $MY_PRIVAT_NET to any established

add 810 allow tcp from any to $MY_PRIVAT_NET established

add 1000 allow tcp from $MY_PRIVAT_NET to any setup

add 2000 allow tcp from $MY_PRIVAT_NET 22 to any setup

add 8000 deny log tcp from any to $MY_PRIVAT_NET 20,21,22,23,53,80,110,137,138,139,443,563,8080,8888

65535 deny ip from any to any



ipfw show

Что говорит?

myakuhin
но пока кроме log т.к. в ядре не поддерживается, нужно пересобирать ядро…

Ядро настолько не GENERIC?!?

myakuhin
вообще такое ощущение что рабочие станции вообще не видят шлюз, видят только сквид, пинг с рабочих станций на внешние хосты не проходит…

Кстати, а через сквид по 110 порту их пускать низзя?

Строка про «gateway» в /etc/rc.conf присутствует?

myakuhin
еще было подозрение, что IPFW вообще не работает, но когда убираю

allow ip from any to any

то интернет вообще пропадает и через squid…

Смотри вывод ipfw show, читай статью и думай.

myakuhin
поддержку log конечно включу в ядре, но думаю, что там бы ничего не появилось, т.к. (см.выше) явно рабочие станции не видят шлюз (хотя он указан у них в настройках tcp/ip)..

Дык в рабочие правила эту опцию добавлять должно только на эатпе отладки нерабочих правил.

myakuhin
Есть подозрение на ДНС — на раб.станциях в настройках указан ип адрес контролера домена лок.сети W2K3 на котором поднят ДНС, может он нифига не работает…

Есть мнение, что DNS здесь определяющей роли не играет.