Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FreeBSD: ipfw+natd, Помогите с скриптом! 
:(
    Опции темы
izOne
  Дата 29.3.2004, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 22.8.2003
Где: Украина, Киев

Репутация: нет
Всего: 4



Долго мучился и получилось следующее:
Код

#!/bin/sh
###############################################################################
# Alexey Pahomov, Kiev.Ukraine., 2004
# Firewall with NATd on GW
# SubNet 192.168.27.0/24
# GW IP - 192.168.27.100
###############################################################################
# Main config
fwcmd   = "/sbin/ipfw -q"
subnet  = "192.168.27.0/24"
iface   = "rl0"             # To SubNet
oface   = "rl1"             # To ISP
iip     = "192.168.27.100"  # int IP
oip     = "213.213.213.213" # ext IP

###############################################################################
# rl0 iface to ISP
$fwcmd add divert natd all from any to any via $oface

###############################################################################
# Next line cause problems when natd is enabled
#$fwcmd add 100 pass all from any to any via lo0
#$fwcmd add 200 deny all from any to 127.0.0.0/8
#$fwcmd -f flush

###############################################################################
# Test with single IP (Zhenya)
#$fwcmd add 1000 pipe 10 tcp from any to 192.168.27.170 out via $iface   # incoming
#$fwcmd pipe 10 config bw 1K
#$fwcmd add 1010 pipe 11 tcp from 192.168.27.170 to any in via $iface    # outgoing
#$fwcmd pipe 11 config bw 500

###############################################################################
# Allow setup tcp session

###############################################################################
# Allow SSH
$fwcmd add allow tcp from $subnet to $iip 22 in via $iface
$fwcmd add allow tcp from $iip 22 to $subnet out via $iface

###############################################################################
# Allow WWW (80, 8080, 8081, 443, 3128)
$fwcmd add 8000 pipe 20 tcp from $subnet to any in     # incoming
$fwcmd pipe 20 config bw 8K
$fwcmd add 8010 pipe 21 tcp from any to $subnet out    # outgoing
$fwcmd pipe 21 config bw 16K

###############################################################################
# Allow SMTP and POP3 (IMAP)
$fwcmd add allow tcp from $subnet to any 25,110 in via $iface

###############################################################################
# Allow FTP
$fwcmd add allow tcp from $subnet to any 20,21 in via $iface
$fwcmd add allow tcp from any 20,21 to $subnet out via $iface

###############################################################################
# Allow ICQ
$fwcmd add allow udp from $subnet 4000 to any in via $iface
$fwcmd add allow udp from any to $subnet 4000 out via $iface

###############################################################################
# Allow DNS (allow udp from upstream DNS to me 53 and from $subnet to me 53)

###############################################################################
# Broadcasts (for counting local trafic[?] [lancard in promisc mode])
#$fwcmd -q add allow udp from $subnet to $subnet in via $iface

###############################################################################
# @Allow not defined trafic@ OR @deny for security reasons
$fwcmd add allow all from any to any

###############################################################################
# Just notice....
echo "ipfw.kram.sh script started ..."


Задачи следующие:
1) Максимально защитетить сервер от внешнего мира
2) Разрешить пользователям сети только определенные сервисы
3) Каждому ip в сети дать скорость 16K на входящий и 4K на исходящий трафик

Буду благодарен если поможете!
--------------------
Успех ждет каждого, но иногда всю жизнь.
PM Jabber   Вверх
DENNN
Дата 8.4.2004, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 3
Всего: 43



Во первых, как правильно было сказано на форуме опеннет: совсем не нужно дайвертить все на нат, что проходит через внешний интерфейс.
Правила на loopback интерфейс не случайно всегда помещают САМЫМИ первыми - хождение пакетов внутри системы должно быть максимально быстрым.
Цитата
#$fwcmd add 100 pass all from any to any via lo0
#$fwcmd add 200 deny all from any to 127.0.0.0/8

Очень опрометчивое решение закоментировать deny - можно с твоим сервером сотворить нехорошие вещи, навроде отправить echo пакет c обратным адрессом 127.0.0.1.

Цитата
) Максимально защитетить сервер от внешнего мира 2) Разрешить пользователям сети только определенные сервисы

Обычно доступ ко всяким ssh удобно иметь из любой точки интернета. А получить доступ к службам, которые не запущены все равно нельзя. Поэтому каждый решает вопрос как ему кажется более правильно.
Обычно есть несколько правил, встречающихся всегда:
1) deny на различные типы icmp (запрос на маску подсети, маршрут, ...)
2) reject на весь NetBIOS
3) deny на внешнем интерфейсе на все неанонсируемые подсети
4) deny на доступ к порту MySQL и других демонов, работающих как сетевые сервисы (например закрыть доступ к внутреннему днс из вне).


Цитата
3) Каждому ip в сети дать скорость 16K на входящий и 4K на исходящий трафик

${fwcmd} pipe 1 config bw 16Kbit/s
${fwcmd} queue 1 config pipe 1 weight 50 mask dst-ip 0x000000ff
${fwcmd} pipe 2 config bw 4Kbit/s
${fwcmd} queue 2 config pipe 2 weight 50 mask src-ip 0x000000ff
${fwcmd} add queue 1 ip from not $subnet to $subnet via $iif
${fwcmd} add queue 2 ip from $subnet to not $subnet via $iif

Примерно так, может надо что подправить - думаю найдешь где.

Цитата
2) Разрешить пользователям сети только определенные сервисы

тогда неплохо бы в конце иметь инструкцию
deny all from any to any
А вообщ, смаи порты сервисов ты открыл, а вот клиентские (1024-65535) будут в твоей схеме закрыты. Естественно, коннекта не будет.
Добавлено @ 11:30
Только что заметил:
Цитата
############################################################################### # Broadcasts (for counting local trafic[?] [lancard in promisc mode]) #$fwcmd -q add allow udp from $subnet to $subnet in via $iface

Дурацкое правило, ты что думаешь, что такими методами можно разрешить или запретить широковещательные запросы?
твой шлюз врядли должен отвечать на такие запросы, но сделать это лучше через sysctl
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0531 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.