Июн 052011
 

Правила ipfw.

#!/bin/sh
# Сбрасываем правила
ipfw -q -f flush

# Cокращаем наши усилия по написанию
CMD="ipfw -q add "

# внешний интерфейс сетевухи
IF="re0"

# Для NFS
net="10.7.20.0/24"
ip="10.7.20.253"

# Порты сервисов разрешенных для доступа
Open="20,21,22,80"

# Самба порты
Samba="137,138,139,445"

# Порты сервисов всегда разрешенных
Frees="22,53"

# Разрешенные подсети
SET_GOOD="{ 10.7.0.0/24 or 10.7.20.0/24 }"

#Временна запоминаем удовлетворяющее правило соединению
KS="keep-state"

# Разрешить лупбэк и статические правила
${CMD} add check-state
${CMD} add allow ip from any to any via lo0

# Запретить спуфинг по сетям
${CMD} deny ip from any to 127.0.0.0/8 in via ${IF}
${CMD} deny ip from 127.0.0.0/8 to any out via ${IF}
${CMD} deny ip from any to 10.0.0.0/8 in via ${IF}
${CMD} deny ip from 10.0.0.0/8 to any out via ${IF}
${CMD} deny ip from any to 172.16.0.0/12 in via ${IF}
${CMD} deny ip from 172.16.0.0/12 to any out via ${IF}
${CMD} deny ip from any to 192.168.0.0/16 in via ${IF}
${CMD} deny ip from 192.168.0.0/16 to any out via ${IF}
${CMD} deny ip from any to 0.0.0.0/8 in via ${IF}
${CMD} deny ip from 0.0.0.0/8 to any out via ${IF}
${CMD} deny ip from any to 169.254.0.0/16 in via ${IF}
${CMD} deny ip from 169.254.0.0/16 to any out via ${IF}
${CMD} deny ip from any to 224.0.0.0/4 in via ${IF}
${CMD} deny ip from 224.0.0.0/4 to any out via ${IF}
${CMD} deny ip from any to 240.0.0.0/4 in via ${IF}
${CMD} deny ip from 240.0.0.0/4 to any out via ${IF}

# Блочим бродкасты
${CMD} deny log icmp from any to 255.255.255.255 in via ${IF}
${CMD} deny log icmp from any to 255.255.255.255 out via ${IF}

# Запрещаем вражеские пакеты
${CMD} reject tcp from any to any tcpflags fin, syn, rst, psh, ack, urg
${CMD} reject tcp from any to any tcpflags !fin, !syn, !rst, !psh, !ack, !urg
${CMD} reject tcp from any to any not established tcpflags fin
${CMD} deny ip from any to any not verrevpath in
${CMD} deny icmp from any to any frag
${CMD} deny ip from "table(1)" to any

# Разрешаем входящее соединение.
${CMD} allow ip from any ${Free} to me via ${IF}
${CMD} allow ip from me to any dst-port ${FreePorts} via ${IF}

# Разрешаем исходящие соединения от определенных портов.
${CMD} allow tcp from me ${Open} to any established out via ${IF}
${CMD} allow tcp from any to me dst-port ${Open} setup in limit src-addr 8 via ${IF}

# Самбовская активность
${CMD} allow udp from ${SET_GOOD} to 10.7.20.0/24 ${Samba} $KS
${CMD} allow tcp from ${SET_GOOD} to 10.7.20.0/24 ${Samba} $KS

# Уменя этат сервер еще и локальное древо портов , разрешим NFS
${CMD} pass tcp from ${net} to ${ip} nfsd in setup
${CMD} pass udp from ${net} to ${ip} nfsd in keep-state
${CMD} pass tcp from ${net} to ${ip} sunrpc in setup
${CMD} pass udp from ${net} to ${ip} sunrpc in keep-state
${CMD} pass tcp from ${net} to ${ip} 3333 in setup
${CMD} pass udp from ${net} to ${ip} 3333 in keep-state

# В двух словах разрешаем нас пинговать
${CMD} allow ip from any to me dst-port 1024-65534 via ${IF}
${CMD} allow ip from me 1024-65534 to any via ${IF}
${CMD} allow icmp from any to any icmptypes 0,8 via ${IF}

# А теперь рубим все остальные правила
${CMD} 65500 deny ip from any to any

  4 комментария to “ipfw скрипт 1”

  1. Зачем делать правила deny, когда в концк всё равно все пакеты запрещаются?

  2. #firewall
    options IPFIREWALL
    options IPFIREWALL_VERBOSE
    options IPFIREWALL_VERBOSE_LIMIT=100
    options IPFIREWALL_FORWARD
    options IPDIVERT
    options DUMMYNET
    options IPFIREWALL_DEFAULT_TO_ACCEPT
    Я ядро собираю с такими опциями.
    Последняя опция говорит что по стандарту все разрешено.
    Изо этого приходиться указывать в скрипте правило deny.

  3. Мне кажется, или в статье лисяры конфиг?

 Leave a Reply

(required)

(required)

42 Запросов к базе. 0,392 Генерации страницы, 36MB Использование памяти.
Вы зашли с IP: 54.225.16.10