iptables

Здравствуйте.
Помогите написать правила для iptables.
Имеется машина, на которой установлены 4 сетевых карты.

К трем из них:
eth0 192.168.0.1
eth1 192.168.1.1
eth2 192.168.2.1
подключены локальные сети:
А четвертая-
ether с ip скажем aaa.bbb.ccc.ddd
выход в интернет.

Требуется фильтр обеспечивающий доступ пользователей из внутренних сетей 192.168.0.*, 192.168.1.* и 192.168.2.* (с проверкой на ip и mac) в интернет посредством маскарадинга через карту ether. Причем пропускать нужно только порты 3128,8080,110,25 и icmp (чтобы пинги проходили).
Познания в iptables у меня пока довольно поверхностные а задачу нужно решить в кратчайшие сроки, поэтому надеюсь на помощь знающих людей.

Аватар пользователя LSV

По твоему описанию можно сделать такие...
Всё запрещаем на вход, замет разрешаем всё на локально и определённые на остальных интерфейсах. Естественно всё остальное блокируется. опиши подробнее что надо открыть.

##flush tables
#iptables -F INPUT 
#iptables -F OUTPUT 
#iptables -F FORWARD

##set policy
#iptables -P INPUT DROP
#iptables -P OUTPUT ACCEPT
#iptables -P FORWARD DROP
#iptables -P INPUT DROP 
#iptables -P OUTPUT DROP 
#iptables -P FORWARD DROP

##allow ssh connection (localhost interfaces)
#iptables -A INPUT -i lo -j ACCEPT

##allow ssh connection (all interfaces)
#iptables -A INPUT -p ICMP --dport 5813/tcp -j ACCEPT
#iptables -A INPUT -p ICMP --sport 5813/tcp -j ACCEPT
#iptables -A INPUT -p 3128 -j ACCEPT
#iptables -A INPUT -p 8080 -j ACCEPT
#iptables -A INPUT -p 110 -j ACCEPT
#iptables -A INPUT -p 25 -j ACCEPT

Аватар пользователя savely

Мммм. с год как не читал хелпа по иптаблес, но

#iptables -P INPUT DROP
#iptables -P OUTPUT ACCEPT
#iptables -P FORWARD DROP
#iptables -P INPUT DROP
#iptables -P OUTPUT DROP
#iptables -P FORWARD DROP

Зачем повторы?

А кому счас легко...

...В яндексе легко находтся перево iptables tutorial....
Дальнешее верно для linux 2.6 - вводить надо с локала или модифицировать правила на тему разрешения SSH...

sysctl -w net.ipv4.conf.all.forwarding=1 #Разрешить маршрутизацию все интрефейсов
iptables -N ALLOWED #создадим новую цепочку.
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT #Принимать новые SSH соединения
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT #Принимать установленные соединения
iptables -P INPUT DROP #Все осталдьное - давить
iptables -A OUTPUT -p tcp --sport 22 -m state ESTABLISHED,RELATED -j ACCEPT #Пропускать уже установленые соединения.
iptables -P OUTPUT DROP
iptables  -P FORWARD DROP
iptables -t nat -A POSTROUTING -s 192.168.0.0/22 -o eth3 -j MASQUERADE #Собсвтенно, сам маскарадинг - предполагается, что в интернет смотрит интерфейс eth3


iptables -A FORWARD -p icmp -d ! 192.168.0.0/22 -j ACCEPT #пропускать все icmp идущие из/в интернет.
iptables -A FORWARD -p tcp -m state --state ESTABLISED,RELATED -d ! 192.168.0.0/22 -j ACCEPT #Пропускать установленые tcp соединения из любой сети в интернет
iptables -A FORWARD -j ALLOWED #Загоняем весь проходящий траффик в цепочку ALLOWED
iptables -A ALLOWED -s 192.168.1.10 -d ! 192.168.0.0/22 -p tcp --dport 8080  -m mac --mac-source 00:00:00:00:00:01 -m state --state NEW -j ACCEPT
#Дословно - пропускать новые соедиения с ip 192.168.1.10 в сети отличные от 192.168.0.0 (в вашем случае - интернет) на порт 8080

Для остальных портов и адресов - аналогично предыдущему правилу.
Опционально:
iptables -A FORWARD -s 192.168.0.0/22 -d 192.168.0.0/22 -j ACCEPT - пропускть все что угодно в пределах 192.168.0.0/22

LSV я блин незнаю, где вы ЭТО взяли, но если сами написали - то следует отметить, что пакеты проходящие маршрутизацию не предназначеные маршрутизатору никоим образом в INPUT не попадут. Это не ipchains отнюдь... Наверное конфиг сгенерированый какой-нить софтиной?

UPDATED: поправил правило маскарадинга, теперь оно касается только интернет-траффика )

ex-K9

Аватар пользователя rick101

Спасибо за информацию... Завтра- послезавтра проверю- отпишу результаты...

"Под холодный шепот звезд мы сожгли последний мост" (c) Ария

Аватар пользователя LSV

Да, на счёт повторов- косяк, спасибо за поправку

Конфиг написан руками, правдо минуты за 3.
В таком случае, вот так...

iptables -F INPUT 
iptables -F OUTPUT 
iptables -F FORWARD 

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

iptables -A FORWARD -p icmp -j ACCEPT 
iptables -A FORWARD -p tcp --sport 110 -j ACCEPT 
iptables -A FORWARD -p tcp --dport 110 -j ACCEPT 
iptables -A FORWARD -p tcp --sport 25 -j ACCEPT 
iptables -A FORWARD -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -p tcp --sport 3128 -j ACCEPT
iptables -A FORWARD -p tcp --dport 3128 -j ACCEPT

Аватар пользователя savely

To LSV: А NATа-то нету.

Вот у K9 нечто весьма похожее и идеологически верное...

А кому счас легко...

rick101 вы кажется забыли написать про DNS который нужен вобщем-то. Соответсвенно не забываем добавлять в правила - 53/udp и 53/tcp

ex-K9

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • You can use BBCode tags in the text. URLs will automatically be converted to links.

Подробнее о форматировании текста

Антибот - введите цифру.
Ленты новостей