URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 3872
[ Назад ]

Исходное сообщение
"Как улучшить безопасность фаервола? (PF)"

Отправлено solovevmv , 04-Июл-08 13:54 
Доброго всем времени суток.
Товарищи форумчане помогите с конфигом (PF). Собственно все настроено и работает, но есть непреодалимое желание улучшить внешнюю безопасность путем ограничения открытых портов снаружи. Подскажите рекомендации по этому вопросу.
Заранее благодарен. Конфиг PF прилагается.

ext_if="rl1"
int_if="rl0"

set limit frags 20000
set limit src-nodes 2000
set limit tables 1000
set limit table-entries 100000
#set ruleset-optimization basic
set skip on lo0

#scrub in on $ext_if all fragment reassemble


nat on $ext_if from {$int_if:network} to any -> ($ext_if)
rdr on $int_if proto {tcp,udp} from {$int_if:network} to any port {http,https} -> 127.0.0.1 port 3128

block in quick from no-route to any
block in quick from urpf-failed to any
#block log on $ext_if from {!$int_if:network} to any
block in quick on $ext_if from any to 255.255.255.255
block in log quick on $ext_if from {10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 255.255.255.255/32} to any
block in quick on $ext_if proto {tcp,udp} from any to any port {67,3306,21,20}

pass in quick from $int_if:network to $int_if

pass on $ext_if inet proto icmp all icmp-type 8 code 0

pass out on $ext_if proto tcp from {$int_if:network} to any modulate state
pass in quick on $ext_if proto tcp from any to $ext_if port 1723
pass on lo0 proto tcp from any to any port 953

pass in on $ext_if proto tcp from any to $ext_if port {ssh}


Содержание

Сообщения в этом обсуждении
"Как улучшить безопасность фаервола? (PF)"
Отправлено domas , 04-Июл-08 21:52 
1. Плохой конфиг - много лишнего, нету нужного. Да и вообще так не делается...
2. С наружи закрыть все просто - block in on $ext_if all, но я бы переработал конфиг с нуля.

"Как улучшить безопасность фаервола? (PF)"
Отправлено solovevmv , 05-Июл-08 12:30 
>1. Плохой конфиг - много лишнего, нету нужного. Да и вообще так
>не делается...
>2. С наружи закрыть все просто - block in on $ext_if all,
>но я бы переработал конфиг с нуля.

Сошласен, конфиг очень плох. Поэтому и прошу помощи. Дайте наиболее значимые рекомендации по переписке. man'ами уже раскурился так что крыша едет и в голове одна каша.


"Как улучшить безопасность фаервола? (PF)"
Отправлено domas , 05-Июл-08 16:36 
За значениями ключевых слов - в маны. Если что-то будет не понятно - объясню.
Читаем конфиг с начала:

0. Первое правило должно быть


block all

Реализуем принцип 'запрещено все что не разрешено'. Далее все правила кот. начинаются с 'block in quick', на мой взгляд лишние.

1.1 rdr и nat. Стоит 'to any', что подразумевает "ко всем", т.е. и к самому роутеру тоже. В принципе ничего страшного, но лучше заменить на 'to !(self)' - теоретически правильнее.

1.2 В rdr стоит 'proto {tcp,udp}' теоретически верно, но практически udp использоваться не будет. По этому меняем на 'proto tcp'.

2.

pass in quick from $int_if:network to $int_if
не мешалобы указать интерфейс, протоколы и порты. Например:

pass in quick on $int_if proto tcp from $int_if:network to $int_if port ssh modulate state flags S/SA

3.

 pass on $ext_if inet proto icmp all icmp-type 8 code 0
'all' тут явно лишнее. Меняем, например на:

pass on $ext_if inet proto icmp to $ext_if icmp-type 8 keep state

4.

pass out on $ext_if proto tcp from {$int_if:network} to any modulate state
бессмыслено - через правила идут пакеты уже с транслироваными адресами.

5.

pass in quick on $ext_if proto tcp from any to $ext_if port 1723
Но туннель всеравно не поднимается, я угадал?

6.

pass on lo0 proto tcp from any to any port 953
тоже бессмыслено - в опциях в начале написано же 'set skip on lo0'.

7. Добавляем что-нить а-ля(или зачем nat включен?):


pass in quick on $int_if from $int_if:network to !(self) keep state

Или что-то в это духе, это вам решать - я ж не знаю что нужно.


По поводу повышения безопастности. Я бы добавил след.:


set block-policy drop
...
#Усложним жизнь придуркам - I
rdr proto tcp from any os NMAP to (self) port 1:65535 tag scanning -> $ext_if port ssh
...
block in quick from 240.0.0.0/4
block in quick to 240.0.0.0/4
antispoof log quick for $int_if
antispoof log quick for $ext_if

#Усложним жизнь придуркам - II
pass in quick proto tcp tagged scanning flags S/SA modulate state
table <ssh-bruteforce> persist
block in quick proto tcp from <ssh-bruteforce> to $ext_if port ssh probability 75%
pass in quick on $ext_if proto tcp to $ext_if port ssh flags S/SA modulate state \
     (max-src-conn-rate 4/180, overload <ssh-bruteforce> flush)



"Как улучшить безопасность фаервола? (PF)"
Отправлено solovevmv , 07-Июл-08 00:19 
Спасибо тебе добрый человек. В понедельник попробую реализовать то что ты сказал.
Самое интересное что при:
set skip on lo0

команда rndc не работает. Она должна в соответсвии с праввилом работать ан нет.
Еще раз спасибо.


"Как улучшить безопасность фаервола? (PF)"
Отправлено solovevmv , 07-Июл-08 10:10 
>[оверквотинг удален]
>antispoof log quick for $ext_if
>
>#Усложним жизнь придуркам - II
>pass in quick proto tcp tagged scanning flags S/SA modulate state
>table <ssh-bruteforce> persist
>block in quick proto tcp from <ssh-bruteforce> to $ext_if port ssh probability 75%
>pass in quick on $ext_if proto tcp to $ext_if port ssh flags
>S/SA modulate state \
>     (max-src-conn-rate 4/180, overload <ssh-bruteforce> flush)
>

Если у нас в правилах первым стоит

 bloсk all 

нужны ли эти правила

block in quick from 240.0.0.0/4
block in quick to 240.0.0.0/4

К тому же pf по дуфолту ставит политику блокировки
drop


"Как улучшить безопасность фаервола? (PF)"
Отправлено pl17 , 22-Июл-09 15:50 
>Если у нас в правилах первым стоит
>
 bloсk all 

>нужны ли эти правила
>
 
>block in quick from 240.0.0.0/4
>block in quick to 240.0.0.0/4
>

не нужны. если хочешь, то теперь на эти адреса придется писать отдельное разрешение



"Как улучшить безопасность фаервола? (PF)"
Отправлено domas , 22-Июл-09 23:32 
Внимание на слово quick (и на его отсутствие в первом правиле).