Страница 1 из 1

SSH через putty и применение правил ipfw

Добавлено: 2006-11-19 19:58:48
jeweller
Вообщем ситуация такая вхожу на сервер (FreeBSD 6.1) через ssh-клиента Putty.
Правлю ручками файрвольный скрипт /etc/rc.fire и кульминационый момент: если я его запускаю то теряю конект к серверу, пока руками сервер не ребутну. Если запускаю rc.fire с консоли то все нормально, правила очищаются затем применяются новые по списку в скрипте. Как мне быть и как побороть этого зверя.. :twisted: Есть подобный глюк и на версии FREEBSD 5.3. Пишет ошибку в /var/log/messages sshd[542]: fatal: write Failed: Permision denied.
А вот на более старой версии FREEBSD 4.7 этот rc.fire скрипт запускается применяет правила и сижу дальше работаю.

Помогите кто чем может.

Добавлено: 2006-11-19 20:07:39
Alex Keda
на конце имени скрипта, при запуске, добавить &

Добавлено: 2006-11-19 20:13:02
jeweller
lissyara писал(а):на конце имени скрипта, при запуске, добавить &
причем тут уход процеса в тень?
у меня файрволл пытается применить правила без перезагрузки, но так как он по умолчанию отпинывает все пакеты, он и пинает cci и уже здесь висит пока его не ребутнешь.

Добавлено: 2006-11-19 20:15:20
jeweller
Тут народ англоязычный вообще в корне меняет правила rc.firewall.
Добовляет режимы в rc.conf firewall_quiet="YES" и пишут что все должно работать после ребута с этими правилами и файрволл не затыкает весь сервер а применяет правила и сервер работает дальше, как будто с консоли их запустили.
Но в моей ситуации почему-то все нет так. Все перепробовал, однозначно все запирается

Добавлено: 2006-11-19 20:17:57
Alex Keda
чтобы ты достучасться мог до сервера.
========
советую перед перезагрузкой, применив правила своим методом, сделать ipfw show и понять, почему оно так, и зачем нужен &
Я обычно делаю так:

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

sh /etc/rc.firewall > /dev/null &

Добавлено: 2006-11-19 20:22:05
jeweller
lissyara писал(а):чтобы ты достучасться мог до сервера.
========
советую перед перезагрузкой, применив правила своим методом, сделать ipfw show и понять, почему оно так, и зачем нужен &
Я обычно делаю так:

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

sh /etc/rc.firewall > /dev/null &
Блин ЛИС тут в том то и дело что как бы я не запускал этот скрипт я уже теряю конект с сервером из-за того что файрволл пытается применить правила и уже старые очистил. по деволту (в ядре так настроено) фаер всех пинает. Он пишет что-то в консоль но прочитать этого мы не можем. толи он запрос задает толи еще что... если ставить флаг QUIET то файрволл должен без запросов все применять. В моем же случае поможет полный ребут.

Добавлено: 2006-11-19 20:23:19
jeweller

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

sh /etc/rc.firewall > /dev/null &
это ты так делаешь когда удаленно сидишь или на консоли?))

Добавлено: 2006-11-19 23:14:13
Alex Keda
удалённо...
покажи скрипт фаера. начало хотябы с переменными

Добавлено: 2006-11-20 9:59:59
jeweller
lissyara писал(а):удалённо...
покажи скрипт фаера. начало хотябы с переменными
#!/bin/sh

/sbin/ipfw -q -f flush

#### BUNN Samba External
/sbin/ipfw add deny tcp from any to me 137-139 via rl0
/sbin/ipfw add deny udp from any to me 137-139 via rl0
#################################################

/sbin/ipfw add allow icmp from any to any

/sbin/ipfw add allow ip from any to any via rl1

/sbin/ipfw add allow ip from 127.0.0.1 to 127.0.0.1

/sbin/ipfw add allow tcp from any to me 1024-65535
/sbin/ipfw add allow tcp from me 1024-65535 to any
/sbin/ipfw add allow udp from any to me 1024-65535
/sbin/ipfw add allow udp from me 1024-65535 to any

/sbin/ipfw add allow tcp from any to me 25
/sbin/ipfw add allow tcp from me 25 to any
/sbin/ipfw add allow tcp from any to me 110
/sbin/ipfw add allow tcp from me 110 to any

/sbin/ipfw add allow tcp from any to any 53
/sbin/ipfw add allow tcp from any 53 to any
/sbin/ipfw add allow udp from any to any 53
/sbin/ipfw add allow udp from any 53 to any

/sbin/ipfw add deny log ip from any to any

Добавлено: 2006-11-24 10:16:13
jeweller
Все... дошло. сдеала в ядре по умолчанию разрешить все а потом правилами запираю.

Добавлено: 2006-11-30 23:21:07
baklan
а у меня с закрытым файерволом работает

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

#!/bin/sh
fwcmd="/sbin/ipfw -q"
/sbin/ipfw -f -q flush
$fwcmd add 10 allow tcp from any to any established
..............
Все работает, удаленный сеанс не отрубает. А если файервол открытый, то вообще без всяких ухищрений можно скрипт запускать, только проверять обязательно нужно, поскольку если есть ошибка, то сервер будет открыт для всех.
На всякий случай раз в час кроном у меня запускается еще один скрипт, который открывает 22 порт.

Добавлено: 2006-12-01 11:01:58
dikens3
baklan писал(а):а у меня с закрытым файерволом работает

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

#!/bin/sh
fwcmd="/sbin/ipfw -q"
/sbin/ipfw -f -q flush
$fwcmd add 10 allow tcp from any to any established
..............
Все работает, удаленный сеанс не отрубает. А если файервол открытый, то вообще без всяких ухищрений можно скрипт запускать, только проверять обязательно нужно, поскольку если есть ошибка, то сервер будет открыт для всех.
На всякий случай раз в час кроном у меня запускается еще один скрипт, который открывает 22 порт.
Я обычно создаю копию файла и с ним извращаюсь. Если что, звоню и говорю чтобы перезапустили сервак. :-)

Добавлено: 2006-12-01 11:19:07
baklan
хм .., если бы было кому позвонить... В серверную могут входить только 2 чел., я и мой шеф.

Добавлено: 2006-12-01 11:27:36
Alex Keda

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

sleep 60 && ipfw add 1 allow ip from твой_IP to me &
после чего делаешь экспермент...

Добавлено: 2006-12-01 11:39:00
baklan
lissyara писал(а):

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

sleep 60 && ipfw add 1 allow ip from твой_IP to me &
после чего делаешь экспермент...
Еще, видимо, обратное правило нужно, а то примать то будет а отправлять нет

Добавлено: 2006-12-01 12:50:39
Alex Keda
это пример. а думать - сам думай :)))

Добавлено: 2006-12-12 9:38:12
Argon
/etc/rc.d/ipfw restart
и будет вам счастье

Добавлено: 2007-03-30 16:59:28
jeweller
хоть и давний пост...
если я уже потерял связь с сервером никакой мне /etc/rc.d/ipfw restart не поможет

Добавлено: 2007-03-31 16:26:18
schizoid
я всегда удаленно фаер правлю...ну далеко мне на антресоль с монитором лазить.
в начале просто отключаю фаер, применяю правила, потом включаю. и никто никуда мя не выкидывает.
ipfw disable firewall && sh /etc/rc.firewall && ipfw enable firewall

и все.

Добавлено: 2007-03-31 16:42:05
Alex Keda
и полез на антресоль, с монитором, если ошибка :))
последнее - лучше руками, сделав листинг правил, чтоб убедиться что всё путём.

Добавлено: 2007-03-31 17:24:14
baklan
Вот так можно :
Это строка крона

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

0,15,30,45 * * * * /bin/sh /usr/local/etc/rc.d/ssh/fwi
где fwi содержит

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

#!/bin/sh                                                                                                                   
/sbin/ipfw delete 1                                                                                                         
/sbin/ipfw delete 2                                                                                                         
/sbin/ipfw add 1 allow tcp from any to me порт_SSH                                                                             
/sbin/ipfw add 2 allow tcp from me порт_SSH to any
Т.о. чтобы вы не правили связь по SSH не потеряется.

Добавлено: 2007-03-31 17:39:26
schizoid
lissyara, не ну в одной строке я тоже такое делаю редко ;)

Добавлено: 2007-05-19 16:58:57
Xtremist
Ранее тоже мучился этим вопросом делал
sh ./firewall &
в итоге нашел выход получше, baklan в тему сказал что все работает, юзайте -q, то есть тихий режим без вывода на консоль, и ниче не отваливается достаточно в начале скрипта сделать
fwcmd="/sbin/ipfw -q" и везде при добавлении правил вставлять его