LINUX.ORG.RU
ФорумAdmin

IPTables ... и чего-то не пойму ...


0

0

Господа ...
Есть вот такое вот правило:
#! /bin/sh
#
#	Настройка firewall
#
case "$1" in
'stop')
 iptables -F
 ;;
'start')
 ext_ip='195.122.240.49/32'
 int_ip='192.168.0.1/32'
 local_network='192.168.0.0/24'
 ext_dns='195.122.226.1/32 195.122.226.2/32'
# разрешаем форвардить пакеты ...
  echo 1 > /proc/sys/net/ipv4/ip_forward
# устанавливаем политику для правил ...
  iptables -P INPUT DROP
  iptables -P OUTPUT ACCEPT
  iptables -P FORWARD DROP
# сбрасываем все цепочки ...
  iptables -F
# разраешаем все icmp запросы
  iptables -A INPUT -p icmp -s 0/0 -j ACCEPT
# разрешить все с этого сервера
  iptables -A INPUT -s 127.0.0.0/255.0.0.0 -j ACCEPT
  iptables -A INPUT -s $int_ip -j ACCEPT
  iptables -A INPUT -s $ext_ip -j ACCEPT
# разрешить все из локальной сети
  iptables -A INPUT -s $local_network -j ACCEPT
# отрубаем не правильные пакеты
  iptables -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset 
#  iptables -A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn:"
  iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
# разрешить все что надо из InetNet`а
  for port in 21 22 25 53 80 110 123 143 389 3306 5222
  do
   iptables -A INPUT -s 0/0 -p tcp --dport $port -j ACCEPT
   iptables -A INPUT -s 0/0 -p udp --dport $port -j ACCEPT
  done
# разрешаем проходить SYN и прочии нужные пакеты ...
  iptables -A INPUT -p tcp --syn -j ACCEPT
  iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
 ;;
*)
 echo "usage $0 start|stop"
esac


Без:
  iptables -A INPUT -p tcp --syn -j ACCEPT
  iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
 Не будет работать ... а  с ним, при сканировании выдает все данные об открытых портах ....


Как правильно написать????
Создавать свои цепочки, смысла не вижу .....
   так что не правильно, и как надо?

># отрубаем не правильные пакеты
> iptables -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
># iptables -A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn:"
> iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

Это защита от скана? Или ты откуда-то это списал и не знаешь зачем?

># разрешить все что надо из InetNet`а
> for port in 21 22 25 53 80 110 123 143 389 3306 5222
> do
> iptables -A INPUT -s 0/0 -p tcp --dport $port -j ACCEPT
> iptables -A INPUT -s 0/0 -p udp --dport $port -j ACCEPT
> done

Здесь ты разрешил снаружи то, что тебе нужно, поэтому вот эта строчка:

> iptables -A INPUT -p tcp --syn -j ACCEPT

-- не нужна. Нужна только вот эта:

> iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

ejka
()
Ответ на: комментарий от ejka

> iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
Это защита от скана? Или ты откуда-то это списал и не знаешь зачем?
IPTables-HOWTO рекомендуют ... типа не правильные какеты .. без первого syn не пропускать и.т.д.

Здесь ты разрешил снаружи то, что тебе нужно, поэтому вот эта строчка:
ага ...

> iptables -A INPUT -p tcp --syn -j ACCEPT
-- не нужна. Нужна только вот эта:
Странно .. вроде как разрешает любое соединение .... точнее любой первый пакет SYN ....   но остальные-то идти не должны ....

> iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

ok ... сейчас попробую ...

galchyonok ★★
() автор топика
Ответ на: комментарий от galchyonok

Блин. Перед тем как браться за настройку файрвола, нужно как минимум
внимательно прочитать RFC 791-793, чтобы знать как устроены протоколы
какие флаги что означают и т. д. После этого внимательно прочитать
документацию по iptables, разобраться какие значения -m state каким
флагам TCP соответствуют. И никогда не писать правила, которые не
понимаешь.

ejka
()

Я вот тоже не пойму.
Если у тебя стоит:
iptables -A INPUT -s 127.0.0.0/255.0.0.0 -j ACCEPT
iptables -A INPUT -s $int_ip -j ACCEPT
iptables -A INPUT -s $ext_ip -j ACCEPT

то какие претензии, что снаружи все доступно ?

Yakuza
()
Ответ на: комментарий от Yakuza

> Я вот тоже не пойму.

1. пойди почитай man iptables, а?

> Если у тебя стоит:
> iptables -A INPUT -s 127.0.0.0/255.0.0.0 -j ACCEPT
> iptables -A INPUT -s $int_ip -j ACCEPT
> iptables -A INPUT -s $ext_ip -j ACCEPT

2. что означает принимать пакеты с loopback и с ip внутреннего и внешнего интерфейсов,

> то какие претензии, что снаружи все доступно ?

3. а вовсе не то, что ты придумал. См. п. 1

ejka
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.