Здравствуйте!
Нужен совет профессионала и человека хорошо разбирающимся в iptables.
Суть проблемы в следующем.
1 Есть Linux шлюз c (eth0 62.118.169.210, eth1 10.1.1.1)
2 сеть (10.1.1.0/24 + ещё добавится 2-е) выходит в инет через SNAT
3 NeTAMS
Кратко о NeTAMS
Очень хорошая программа для подсчёта трафика под Linux.
Она использует метод QUEUE в iptables для заворачивания трафика.
В конфиге программы автор приводит правила по которым программа делает обращение для перехвата
пакетов к iptables:
rule number 1 INPUT -p all -j QUEUE
rule number 2 FORWARD -p all -j QUEUE
rule number 3 OUTPUT -p all -j QUEUE
А потом после обработки пакета отдаёт его обратно в систему.
Либо можно не писав эти правила в конфиге программы самому написать свои
правила для iptables.
Так вот в чём заключается проблема:
Если просмотреть после старта программы правила iptables,
то эти правила(с QUEUE) она добавляет с ключом -А то есть в конец всех правил.
Как мне лучше настроить правила фаервола таким образом.
а) Безопасность
б) Оптимизация сети
в) Небольшая нагрузка на систему
г) Что бы при подключению к шлюзу для просмотра статистики трафик не считался.
А при выходе в инет считался полностью весь трафик и входящий и исходящий.
(Один из авторов советует "Самый простой способ:
Основная задача не допустить локальные пакеты до демона.
Перед тем как пакеты будут завернуты на netams, поставить правило которое будет разрешать
пакеты на роутер. ")
При этом хочется чтобы по умолчанию политики цепочек были DROP если это возможно.
Вот как я примерно это представляю:
(Насколько я понял, то весь трафик пользователей как изх. так и вх из лок. сети в инет и
обратно при SNAT, MASQURED идёт только по цепочке FORWARD)
#POLICY
iptables INPUT –P DROP
iptables OUTPUT –P DROP
iptables FORWARD –P DROP
#Security (antispoof, antiDDoS ......)
............
#SNAT
.........здесь правило для SNAT
#Фильтруем порты
…………
#Свои правила (к примеру блокировка ip)
……………
# Разрешаем доступ из локалки к серваку без учёта этого трафика.
#eth0
iptables -A INPUT –s 62.118.169.210 –d 0/0 –j ACCEPT
iptables -A OUTPUT –s 0/0 –d 62.118.169.210 –j ACCEPT
#eth1
iptables -A INPUT –s 10.1.1.0/24 –d 10.1.1.1 –j ACCEPT
iptables -A OUTPUT –s10.1.1.1 –d 10.1.1.0/24 –j ACCEPT
# Разрешаем выходить в инет всей сети либо определенным ip
# и учитываем весь трафик пользователей как вх. так и исх.
iptables -A INPUT –s 10.1.1.0/24 –d 0/0 –j FORWARD или сразу QUEUE
iptables -A OUTPUT –s0/0 –d 10.1.1.0/24 –j FORWARD или сразу QUEUE
iptables -A INPUT –s 62.118.169.210 –d 0/0 –j QUEUE
iptables -A OUTPUT –s 0/0 –d 62.118.169.210 –j QUEUE
iptables -A FORWARD –p all –j QUEUE
Вопрос:
1 Правильно ли я сделал или можно сделать лучше, а может я вообще наколбасил?
2 Что будет потом т.к по умолчанию для FORWARD стоит политика DROP
пойдут пакеты дальше или заткнутся. Мне кажется что надо для FORWARD
ставить политику ACCEPT.
3 Правильно ли я подсчитываю весь трафик от прова до внешнего ip.
Надеюсь на помощь и понимание.
Спасибо.