121

И что при таком конфиге пинги не идут????

Trouble  in WINDOWS reboot, trouble in UNIX be root.

122 (04.04.2013 15:21:13 отредактировано Me_Shock)

kisil⇓ пишет:

И что при таком конфиге пинги не идут????

не идут, ходят только те, которые были установлены до запуска скрипта. и ssh работает, по тому же принципу..
Однако, добавление NEW заставляет все работать 100%

+ открыть спойлер

 Консоль:
#!/bin/bash
#
# ------------------ FLASHING RULES IN ALL DEFAULT TABLES ---------------------
# 1.
$IPT -t mangle -F && $IPT -t filter -F && $IPT -t nat -F && $IPT -F && $IPT -X
# -----------------------------------------------------------------------------
#
# 2.
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP


# 3.
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT


# 4.
$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A FORWARD -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT


# 5.
$IPT -A INPUT -p icmp -m state --state NEW -j ACCEPT
$IPT -A OUTPUT -p icmp -m state --state NEW -j ACCEPT
$IPT -A FORWARD -p icmp -m state --state NEW -j ACCEPT



# 6.
# Masquerade.
$IPT -t nat -A POSTROUTING -o $EXT_IF -j MASQUERADE

# Enable routing.
echo 1 > /proc/sys/net/ipv4/ip_forward

надпись на двери старого трамвая: "ВЫХОДА НЕТ!" | ❤windows 8 enterprise

123

kisil пишет:

И что при таком конфиге пинги не идут????

В том-то все и дело. При такой конфигурации у Enzo_brn пинги не ходят, наперекор теории. Меняем ему правила:

+ открыть спойлер

#!/bin/bash
#
# ------------------ FLASHING RULES IN ALL DEFAULT TABLES ---------------------
# 1.
$IPT -t mangle -F && $IPT -t filter -F && $IPT -t nat -F && $IPT -F && $IPT -X
# -----------------------------------------------------------------------------
#
# 2.
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP


# 3.
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT


# 4.
$IPT -A INPUT -p icmp -j ACCEPT
$IPT -A OUTPUT -p icmp -j ACCEPT
$IPT -A FORWARD -p icmp -j ACCEPT


# 5.
$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
$IPT -A FORWARD -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT


# 6.
# Masquerade.
$IPT -t nat -A POSTROUTING -o $EXT_IF -j MASQUERADE

# Enable routing.
echo 1 > /proc/sys/net/ipv4/ip_forward

1. Почистить таблицы.
2. Закрыть все цепочки.
3. Разрешить лупбэк трафик.
4. разрешить транзит ИЦМП-пакетов между внутр. и внешней сетью.
5. Разрешить на всех цепочках соединения, уже инициированные и новые

124

и команду

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

поставить в начало скрипта.

125 (04.04.2013 15:35:34 отредактировано Me_Shock)

urfin, ваш крайний пример скрипта пустит в инэт всю локальную сеть, а мне нужны только пинги, инэт ч/з сквид.
было достаточно только поставить NEW для цепочки FORWARD в п. 4. Непонятно только, почему то-же самое првило, только более узкое из п. 5 не принесло результатов.. $IPT -A FORWARD -p icmp -m state --state NEW -j ACCEPT
эх, вобщем и так ходит вся..(( Как побороть?)

надпись на двери старого трамвая: "ВЫХОДА НЕТ!" | ❤windows 8 enterprise

126

Enzo_brn пишет:

urfin, ваш крайний пример скрипта пустит в инэт всю локальную сеть, а мне нужны только пинги, инэт ч/з сквид.
было достаточно только поставить NEW для цепочки FORWARD в п. 4. Непонятно только, почему то-же самое првило, только более узкое из п. 5 не принесло результатов.. $IPT -A FORWARD -p icmp -m state --state NEW -j ACCEPT

ПОчему весь трафик? Разрешен только ICMP, то есть пинги. Для всех остальных протоколов DROP стоит.
А насчет $IPT -A FORWARD -p icmp -m state --state NEW -j ACCEPT, подобные правила почему-то не всегда срабатывают, не знаю почему.

127

urfin⇓ пишет:

ПОчему весь трафик?

вот и я не пойму как такое возможно, хотя..

urfin⇓ пишет:

$IPT -A FORWARD -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

нам намекает что при обращении, скажем, к 80 порту соединение проинициализируется изнутри, т.к. правило "$IPT -A FORWARD -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT" пошлет политику: "$IPT -P FORWARD DROP" на все 4 стороны. или мне это только кажется?))

надпись на двери старого трамвая: "ВЫХОДА НЕТ!" | ❤windows 8 enterprise

128

Enzo_brn⇓ пишет:

эх, вобщем и так ходит вся..(( Как побороть?)

Что вся локальная сеть ходит в инет?
Добавьте правила:
$IPT -A FORWARD -p tcp -j DROP
$IPT -A FORWARD -p udp -j DROP

129

Суть проблемы над которой я ломаю голову как раз таки сводится к тому: Как разрешить пинг не разрешая интернеты и еще 65534 ненужные мне пока порта..

надпись на двери старого трамвая: "ВЫХОДА НЕТ!" | ❤windows 8 enterprise

130

urfin⇓ пишет:

Что вся локальная сеть ходит в инет?

именно, прям по 80 порту!

надпись на двери старого трамвая: "ВЫХОДА НЕТ!" | ❤windows 8 enterprise

131 (04.04.2013 15:54:27 отредактировано Me_Shock)

urfin, крайний вариант скрипта:

+ открыть спойлер
#!/bin/bash
IPT="/sbin/iptables"
EXT_IF="eth0"
INT_IF="eth1"
#
# 1.
# Enable routing.
echo 1 > /proc/sys/net/ipv4/ip_forward
#
# ------------------ FLASHING RULES IN ALL DEFAULT TABLES ---------------------
# 2.
$IPT -t mangle -F && $IPT -t filter -F && $IPT -t nat -F && $IPT -F && $IPT -X
# -----------------------------------------------------------------------------
#
# 3.
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP


# 4.
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT


# 5.
$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
$IPT -A FORWARD -p icmp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT


# 6.
# Masquerade.
$IPT -t nat -A POSTROUTING -o $EXT_IF -j MASQUERADE

в таком варианте ни пинга, ни инэта в локалке нет. Убираем в п.[5], строка [3] -p icmp и инэт и пинги у всей ЛС

надпись на двери старого трамвая: "ВЫХОДА НЕТ!" | ❤windows 8 enterprise

132 (04.04.2013 15:54:54 отредактировано urfin)

Enzo_brn пишет:
urfin⇓ пишет:

Что вся локальная сеть ходит в инет?

именно, прям по 80 порту!

Сделайте так, я беру Ваш скрипт и немного меняю:

+ открыть спойлер

#!/bin/bash
#
# ------------------ FLASHING RULES IN ALL DEFAULT TABLES ---------------------
# 1.
$IPT -t mangle -F && $IPT -t filter -F && $IPT -t nat -F && $IPT -F && $IPT -X
# -----------------------------------------------------------------------------
#
# 2.
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP


# 3.
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# 4.
$IPT -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
$IPT -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# 5.
$IPT -A INPUT -m conntrack --ctproto icmp --ctstate NEW -j ACCEPT
$IPT -A OUTPUT -m conntrack --ctproto icmp--ctstate NEW -j ACCEPT
$IPT -A FORWARD -m conntrack --ctproto icmp --ctstate NEW -j ACCEPT


# 6.
# Masquerade.
$IPT -t nat -A POSTROUTING -o $EXT_IF -j MASQUERADE

# Enable routing.
echo 1 > /proc/sys/net/ipv4/ip_forward

133 (04.04.2013 15:57:27 отредактировано urfin)

Или так:

+ открыть спойлер

#!/bin/bash
#
# ------------------ FLASHING RULES IN ALL DEFAULT TABLES ---------------------
# 1.
$IPT -t mangle -F && $IPT -t filter -F && $IPT -t nat -F && $IPT -F && $IPT -X
# -----------------------------------------------------------------------------
#
# 2.
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# 3.
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# 4.


# 5.
$IPT -A INPUT -m conntrack --ctproto icmp --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -m conntrack --ctproto icmp--ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
$IPT -A FORWARD -m conntrack --ctproto icmp --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT

# 6.
# Masquerade.
$IPT -t nat -A POSTROUTING -o $EXT_IF -j MASQUERADE

# Enable routing.
echo 1 > /proc/sys/net/ipv4/ip_forward

134

urfin⇓ пишет:

Сделайте так, я беру Ваш скрипт и немного меняю:

строчка в строчку. в ЛС есть интернет!((( (у меня не вкл. вайфай и браузер в режиме прямого соединения с Интернет)

надпись на двери старого трамвая: "ВЫХОДА НЕТ!" | ❤windows 8 enterprise

135 (04.04.2013 16:14:27 отредактировано bormant)

urfin⇓ пишет:

заинтересовало некоторое расхождение теории с практикой

Дано:
host1
# /etc/rc.d/rc.inet1 stop
# ifconfig eth0 192.168.8.10 up
# route add default gw 192.168.8.254

host2
# /etc/rc.d/rc.inet1 stop
# ifconfig eth0 192.168.9.10 up
# route add default gw 192.168.9.254

1) Обычная маршрутизация пакетов из сети в сеть
gw
# /etc/rc.d/rc.inet1 stop
# ifconfig eth0 192.168.8.254 up
# ifconfig eth1 192.168.9.254 up
# echo "1" > /proc/sys/net/ipv4/ip_forward
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP

Делаем на host2
# tcpdump
и наблюдаем...

На  host1
# ping -c1 192.168.9.10
64 bytes from 192.168.9.10: icmp_req=1 ttl=63 time=1.55
...
на host2 наблюдаем
ICMP echo request 192.168.8.10 > 192.168.9.10
ICMP echo reply 192.168.9.10 > 192.168.8.10

2) Трансляция сетевого адреса источника (SNAT)
Делаем:
на gw
# iptables -t nat -A POSTROUTING -s 192.168.8.0/24 -o eth1 -j SNAT --to-source 192.168.9.254

на host1
# ping -c1 192.168.9.10
64 bytes from 192.168.9.10: icmp_req=1 ttl=63 time=1.55
...
на host2 наблюдаем
ICMP echo request 192.168.9.254 > 192.168.9.10
ICMP echo reply 192.168.9.10 > 192.168.9.254


Вопросы, замечания, комментарии?

136

Enzo_brn пишет:
urfin⇓ пишет:

Сделайте так, я беру Ваш скрипт и немного меняю:

строчка в строчку. в ЛС есть интернет!((( (у меня не вкл. вайфай и браузер в режиме прямого соединения с Интернет)

А если закомментить FORWARD в 4 и 5?

137

urfin⇓ пишет:

Или так:

Нет пингов, нет интернета, отвалился ssh (перезапускал скрипт терминально)

надпись на двери старого трамвая: "ВЫХОДА НЕТ!" | ❤windows 8 enterprise

138

Enzo_brn пишет:
urfin⇓ пишет:

Или так:

Нет пингов, нет интернета, отвалился ssh (перезапускал скрипт терминально)

Ясно, а как с отключенным FORWARD'ом?

139 (04.04.2013 16:13:56 отредактировано Me_Shock)

urfin⇓ пишет:

Ясно, а как с отключенным FORWARD'ом?

с откл. - вообще как в танке и как сейчас, нет инэтов, пингов, все недоступно. даже ip самого шлюза в ЛС
(зы: дико извиняюсь, сегодня я ушел.)

надпись на двери старого трамвая: "ВЫХОДА НЕТ!" | ❤windows 8 enterprise

140 (04.04.2013 16:32:27 отредактировано urfin)

Enzo_brn пишет:
urfin⇓ пишет:

Ясно, а как с отключенным FORWARD'ом?

с откл. - вообще как в танке и как сейчас, нет инэтов, пингов, все недоступно. даже ip самого шлюза в ЛС

+ а что в таком случае?

#!/bin/bash
IPT="/sbin/iptables"
EXT_IF="eth0"
INT_IF="eth1"
#
# ------------------ FLASHING RULES IN ALL DEFAULT TABLES ---------------------
# 1.
$IPT -t mangle -F && $IPT -t filter -F && $IPT -t nat -F && $IPT -F && $IPT -X
# -----------------------------------------------------------------------------
#
# 2.
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP


# 3.
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# 4.
#$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#$IPT -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A FORWARD -o $EXT_IF -p icmp -m state --state NEW -j ACCEPT.
$IPT -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

# 5.
#$IPT -A INPUT -p icmp -m state --state NEW -j ACCEPT
#$IPT -A OUTPUT -p icmp -m state --state NEW -j ACCEPT

# 6.
# Masquerade.
$IPT -t nat -A POSTROUTING -o $EXT_IF -j MASQUERADE

# Enable routing.
echo 1 > /proc/sys/net/ipv4/ip_forward

141

bormant⇓ пишет:

Вопросы, замечания, комментарии?

Как оставить через nat только один icmp, чтобы пинги ходили, а все остальное запретить?

142 (04.04.2013 17:17:16 отредактировано bormant)

urfin⇓ пишет:

Как оставить через nat только один icmp, чтобы пинги ходили, а все остальное запретить?

В моём примере выше:
на gw
# iptables -P FORWARD DROP
# iptables -A FORWARD -p icmp -j ACCEPT

SNAT/MASQUERADE остаётся на месте.


ps. На самом деле то был весь icmp, а пинги -- это только echo-request/echo-reply. Можно оставить только их (--icmp-type 0 и 8 ), плюс другое необходимое для управления передачей (ICMP -- Internet Control Message Protocol --  протокол межсетевых управляющих сообщений):
Inbound can't fragment, among other messages: icmp type 3
ttl exceeded: icmp type 11
general parameter problem: icmp type 12

Список типов можно получить по
# iptables -p icmp -h

143

ТС Возьмите трафик профильтруйте на шлюзе через tcpdump и увидите где затык.

Trouble  in WINDOWS reboot, trouble in UNIX be root.

144 (04.04.2013 17:29:26 отредактировано urfin)

bormant, то есть надо сделать FORWARD такого вида:

# iptables -A FORWARD -p icmp --icmp-type 0 -j ACCEPT
# iptables -A FORWARD -p icmp --icmp-type 3 -j ACCEPT
# iptables -A FORWARD -p icmp --icmp-type 8 -j ACCEPT
# iptables -A FORWARD -p icmp --icmp-type 11 -j ACCEPT
# iptables -A FORWARD -p icmp --icmp-type 12 -j ACCEPT

или все это можно объединить в одну строку, типа

# iptables -A FORWARD -p icmp --icmp-type 0,3,8,11,12 -j ACCEPT

145 (04.04.2013 17:50:01 отредактировано bormant)

urfin,
список документацией не предусмотрен и командой отвергается. Вообще говоря, видел запрет на ping с разрешением прочего icmp, но вот наоборот не приходилось. Поэтому или весь icmp оставить, или запретить только ping:
# iptables -A FORWARD -p icmp ! --icmp-type echo-request -j ACCEPT
при политике FORWARD DROP, или сначала вдумчиво прочитать документацию по icmp (RFC 792, 950, 4884, 6633), а потом уже решать про нужность/ненужность остального.

Примерные причины, по которым хотелось бы запрещать icmp: http://www.sans.org/security-resources/ … misuse.php

146

bormant, Спасибо! Надеюсь, что ТС прочитает нашу переписку (и доки), и уже сам решит, что ему нужно разрешить, а что запретить из icmp. Ну, а я у себя попробую еще раз сделать по теории, может на этот раз она у меня не разойдется с практикой ab

147

urfin⇓ пишет:

ТС прочитает нашу переписку

и решит что его вряд-ли за ДДоСят и ему можно не указывать кучу типов а просто -p icmp --icmp-type any чем он всем не угодил, пусть будет весь для невебсервера такое не критично, если особенно учесть что доступ снаружи будет только у 2х белых ip. до чтения RFC не дорос я еще.. Спасибо всем за детальные пояснения, коменты и примеры. Надеюсь в скором все это разляжется по полочкам мога, сформировав 1 целостную картину управления этой воистину гибкой системы iptables ab  ay

надпись на двери старого трамвая: "ВЫХОДА НЕТ!" | ❤windows 8 enterprise

148

Enzo_brn пишет:
urfin⇓ пишет:

ТС прочитает нашу переписку

и решит что его вряд-ли за ДДоСят и ему можно не указывать кучу типов а просто -p icmp --icmp-type any чем он всем не угодил, пусть будет весь для невебсервера такое не критично, если особенно учесть что доступ снаружи будет только у 2х белых ip. до чтения RFC не дорос я еще.. Спасибо всем за детальные пояснения, коменты и примеры. Надеюсь в скором все это разляжется по полочкам мога, сформировав 1 целостную картину управления этой воистину гибкой системы iptables ab  ay

Ждем отчета ab

149

urfin, остановился на ковырянии каждой подозрительной мелочи, в частности: в чем отличае
$IPT -A FORWARD -p icmp -j ACCEPT от $IPT -A FORWARD -p icmp --icmp-type any -j ACCEPT ?

надпись на двери старого трамвая: "ВЫХОДА НЕТ!" | ❤windows 8 enterprise

150 (08.04.2013 08:13:57 отредактировано Me_Shock)

Должно же быть логическое объяснение этому: # cat /root/gw5.fw

+ открыть спойлер

 Консоль:
#!/bin/bash
SRV_IP="192.168.0.254"  # provider white IP (now gebug - ip is gray)
IPT="/sbin/iptables"    # iptables path
EXT_IF="eth0"           # WAN
INT_IF="eth1"           # LAN

# 1. flash all user rules.
$IPT -t mangle -F && $IPT -t filter -F && $IPT -t nat -F && $IPT -F && $IPT -X

# 2. enable ipv4 routing.
echo 1 > /proc/sys/net/ipv4/ip_forward

# 3. deny all.
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# 4. allow loopback.
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# 5. allow ssh.
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 22 -j ACCEPT

# 6. allow any icmp FWD.

# $IPT -A FORWARD -p icmp -j ACCEPT                             # doesn't work 1 ((


# $IPT -A FORWARD -p icmp --icmp-type any -j ACCEPT             # doesn't work 2 ((


# $IPT -A FORWARD -p icmp --icmp-type 8 -j ACCEPT               # doesn't work 3 ((
# $IPT -A FORWARD -p icmp --icmp-type 0 -j ACCEPT


# $IPT -A FORWARD -p icmp --icmp-type echo-request -j ACCEPT    # doesn't work 4 ((
# $IPT -A FORWARD -p icmp --icmp-type echo-reply -j ACCEPT


# $IPT -P FORWARD ACCEPT                                        # doesn't work 5 ((
# $IPT -A FORWARD ! -p icmp -j DROP


$IPT -A FORWARD -j ACCEPT                                       # work well ! ))

# 7. masquerade.
$IPT -t nat -A POSTROUTING -o $EXT_IF -j MASQUERADE

ну скажите мне что я кривой и все 5 способов не должны работать)), и Да, солидарен что если верить этой схеме, то цепочки I/O можно оставить в покое..

надпись на двери старого трамвая: "ВЫХОДА НЕТ!" | ❤windows 8 enterprise