# Вопрос о iptables

## ZmiyGorinich

Привет всем. Есть вопрос о iptables.

Есть сетка и сервер который работает шлюзом. И Клиенты качают всякий хлам и не дают работать. Хотелбы некоторым клиентам ограничивать работу в интернете.

Может кто-то написать примеры:

1. закрыть порт 82 для всех в локальной сети

2. выключить инет клиенту с IP 192.168.1.3

3. закрыть порт 67 для клиента с IP 192.168.1.4

Вот мои текущие правила:

```
# First we flush our current rules

iptables -F

iptables -t nat -F

# Setup default policies to handle unmatched traffic

iptables -P INPUT ACCEPT

iptables -P OUTPUT ACCEPT

iptables -P FORWARD DROP

# Copy and paste these examples ...

export LAN=eth1

export WAN=ppp0

# Then we lock our services so they only work from the LAN

iptables -I INPUT 1 -i ${LAN} -j ACCEPT

iptables -I INPUT 1 -i lo -j ACCEPT

iptables -A INPUT -p UDP --dport bootps -i ! ${LAN} -j REJECT

iptables -A INPUT -p UDP --dport domain -i ! ${LAN} -j REJECT

# Drop TCP / UDP packets to privileged ports

iptables -A INPUT -p TCP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP

iptables -A INPUT -p UDP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP

# Finally we add the rules for NAT

iptables -I FORWARD -i ${LAN} -d 192.168.1.0/255.255.255.0 -j DROP

iptables -A FORWARD -i ${LAN} -s 192.168.1.0/255.255.255.0 -j ACCEPT

iptables -A FORWARD -i ${WAN} -d 192.168.1.0/255.255.255.0 -j ACCEPT

iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE

# Tell the kernel that ip forwarding is OK

echo 1 > /proc/sys/net/ipv4/ip_forward

for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done

```

----------

## serg_sk

 *ZmiyGorinich wrote:*   

> Привет всем. Есть вопрос о iptables.
> 
> Есть сетка и сервер который работает шлюзом. И Клиенты качают всякий хлам и не дают работать. Хотелбы некоторым клиентам ограничивать работу в интернете.
> 
> Может кто-то написать примеры:
> ...

 

```

iptables -A INPUT -p tcp -i ${LAN} -s 192.168.1.0/24 --dport 82 -j DROP  -- это если 82ой порт слушает по tcp протоколу.

iptables -A INPUT -p udp -i ${LAN} -s 192.168.1.0/24 --dport 82 -j DROP  -- это если 82ой порт слушает по udp протоколу.

iptables -I FORWARD 1 -i ${LAN} -s 192.168.1.3 -j DROP -- отключаем инет клиенту 192.168.1.3

iptables -I FORWARD 1 -i ${LAN} -d 192.168.1.3 -j DROP -- отключаем инет клиенту 192.168.1.3

iptables -A INPUT -p tcp -i ${LAN} -s 192.168.1.4 --dport 67 -j DROP -- клиенту с 192.168.1.4 отрубаем доступ на 67 порт, который слушает tcp

iptables -A INPUT -p udp -i ${LAN} -s 192.168.1.4 --dport 67 -j DROP -- клиенту с 192.168.1.4 отрубаем доступ на 67 порт, который слушает udp
```

А зачем правило: iptables -I FORWARD -i ${LAN} -d 192.168.1.0/255.255.255.0 -j DROP ?

----------

## ZmiyGorinich

Есл честно то не знаю... я просто делал вот по этой документации: http://www.gentoo.org/doc/en/home-router-howto.xml

----------

## Azik

Это правило гласит не обрабатывать трафик адресованный из локалки в локалку же. Типа это лишняя работа, напрямую связывайтесь.

Это правило говорит - не пробрасывать никогда из локалки в локалку, как бы глупо это не звучало  :Smile: 

----------

## ZmiyGorinich

Спасибо serg_sk, все заработало  :Smile: 

т.е. это правило можно просто убрать? Есть ли где-то информация по iptables именно вот с такими мелкими проблемами?

А то все что я читал там описывается все и очень подробно.

----------

## ZmiyGorinich

Может поможете написать правила так чтобы запретить все а потом открыть только нужнын порты для определенных сервисов? Например: веб, почта, ICQ, MSN

И как если что потом определить если софт не работает то на какие порты он пытается лезть?

----------

## Azik

А что там писать-то.

В первых строках

```
iptables -P INPUT  DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP
```

Вот тебе и запрещающая политика по умолчанию. А дальше расписываешь ACCEPT на кадый порт/адрес/сеть/сетевуху.

Авторы нормальных программ декларируют в документации, к каким портам они стучатся (в смысле, не авторы  :Smile: ). Для ненормальных есть мониторы сетей. Тот же Outpost firewall сойдет для таких целей - сразу видно, в какие порты программа стучится.

----------

## ZmiyGorinich

 *Azik wrote:*   

> А что там писать-то.
> 
> В первых строках
> 
> ```
> ...

 

Можно для примера как мне теперь разрешить для все локальных IP ходить по сайтам в инете?

----------

## Azik

iptabels -A FORWARD -i eth0 --dport 80 -p tcp -j ACCEPT

eth0 - сетевая карта, смотрящая в локалку.

Разрешаем всем запросам, пришедшим из интерфейса eth0 (aka из локалки) и пытающимся подключиться к порту 80 по протоколу tcp, вырываться наружу.

----------

## ZmiyGorinich

 *Azik wrote:*   

> iptabels -A FORWARD -i eth0 --dport 80 -p tcp -j ACCEPT
> 
> eth0 - сетевая карта, смотрящая в локалку.
> 
> Разрешаем всем запросам, пришедшим из интерфейса eth0 (aka из локалки) и пытающимся подключиться к порту 80 по протоколу tcp, вырываться наружу.

 

Спасибо. А есть ли простаю документация по iptables? Где рассмотрены вот такие простые задачи без углубления в супер возможности?

----------

## hermes_jr

http://www.opennet.ru/docs/RUS/iptables/index.html

----------

## ZmiyGorinich

 *hermes_jr wrote:*   

> http://www.opennet.ru/docs/RUS/iptables/index.html

 

А по проще нет?  :Smile: 

----------

## fank

 *Quote:*   

> А по проще нет?

 

есть. Windows Firewall   :Very Happy: 

а если серьёзно, то я тоже очень не хотел читать вышеуказанный туториал

имхо, он должен использоваться как справочное пособие

достаточно прочитать первые несколько глав, где описывается порядок прохождения пакетов по цепочкам и состояния соединений

остальные тонкости - уже по ходу написания собственного файра

----------

