nixp.ru v3.0

23 мая 2017,
вторник,
15:39:04 MSK

DevOps с компанией «Флант»
wiener написал 29 сентября 2003 года в 14:34 (463 просмотра) Ведет себя как мужчина; открыл 30 тем в форуме, оставил 76 комментариев на сайте.

Проблемы с роутером/фаерволом.

Создал настройки в баш-файле. Запускаю его, всё работает. Запускаю iptables-save для сохранения настроек в конфиг. После перезагрузки системы всё перестаёт работать….если опять запустить баш-файл, то система сообщает, что настройки уже есть и опять всё работает. В чём грабли ?!

Можно ли указать файл/или что другое, какие урлы и ключевые слова запретить или замещать другими урлами ?!

Заранее благодарен.

fly4life
wiener
Проблемы с роутером/фаерволом.

Создал настройки в баш-файле. Запускаю его, всё работает. Запускаю iptables-save для сохранения настроек в конфиг. После перезагрузки системы всё перестаёт работать….если опять запустить баш-файл, то система сообщает, что настройки уже есть и опять всё работает. В чём грабли ?!

А у тебя сам сервис 'iptables' поднимается при старте машины?

wiener
fly4life
А у тебя сам сервис 'iptables' поднимается при старте машины?

Да, стартует.

fly4life

ладно. «Перестаёт всё работать» — это ты имеешь ввиду, то не восстанавливаются правила файервола после перезагрузки?

А ты 'iptables-save' запускаешь как?

Так: iptables-save > /etc/sysconfig/iptables (или какой у тебя там путь до файла с настройками цепочек iptables’а)?

wiener
fly4life
ладно. «Перестаёт всё работать» — это ты имеешь ввиду, то не восстанавливаются правила файервола после перезагрузки?

А ты 'iptables-save' запускаешь как?

Так: iptables-save > /etc/sysconfig/iptables (или какой у тебя там путь до файла с настройками цепочек iptables’а)?

Да, не восстанавливаются.

Абсолютно так.

fly4life
wiener
Да, не восстанавливаются.

Абсолютно так.

Хм…. Я в тупике =).

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

1. кладёшь свой скрипт (пусть ip_tab.sh) в /etc/rc.d/init.d

2. делаешь на него символическую сслыку в каталоге нужного ранлевела (для твоего случая — runlevel 3)

ln -sf /etc/rc.d/init.d/ip_tab.sh /etc/rc3.d/S20ip_tab.sh

Префикс 20 в имени скрипта означает, что этот скрипт будет выполняться 20-м по порядку (за вычетом отсутствующих) при старте системы в этом ранлевеле (3). Литера 'S' означает, что скрипт нужно ЗАПУСТИТЬ (передать ему параметр ’start’).

fly4life

Ещё вопрос: iptables-restore < /etc/sysconfig/iptables работатет (т.е. востанавливает ли правила цепочек)? Если да, то добавь эту команду в конец файла /etc/rc.d/rc.local, тогад при старте всё будет восстанавливаться.

———-

забыл сказать, что вместо /etc/sysconfig/iptables ты должен указать путь до файла, куда у тебя сохранил настройки цепочек твой iptables-save

wiener
fly4life
Ещё вопрос: iptables-restore < /etc/sysconfig/iptables работатет (т.е. востанавливает ли правила цепочек)? Если да, то добавь эту команду в конец файла /etc/rc.d/rc.local, тогад при старте всё будет восстанавливаться.

Посмотрю…

А как по поводу файла или чего ещё со списком урлов которые надо глушить ?!

decvar

есть еще утилита kmyfirewall на sf.net

она все тебе сделает….

Genie

/etc/iptables save active

и после ребута все бутдет :)

должно быть, по крайней мере.

если нет — то читать оное (/etc/init.d/iptables) до просветления.

wiener

Короче я нашёл в чём была загвоздка….

IPTables востонавливался, но не востонавливался форвардинг пакетов….пришлось в сервис локали пихнуть строчку — echo «1» > /proc/sys/net/ipv4/ip_forward

Теперь работает как часы….

fly4life
wiener
Короче я нашёл в чём была загвоздка….

IPTables востонавливался, но не востонавливался форвардинг пакетов….пришлось в сервис локали пихнуть строчку — echo «1» > /proc/sys/net/ipv4/ip_forward

Теперь работает как часы….

лучше (и проще) в /etc/sysctl.conf в соответствующем параметре (net.ipv4.ip_forward) изменить значение с 0 на 1.

wiener

Теперь возникли другие проблемы….

На сервере стоит SAMBA . Из внутренней и внешней (точно не известно, но вроде да) сервер видно и можно по нему ползать. Но на рабочей машине (во внутренней сети) кроме как в рабочую группу созданной на сервере в остальные группы попасть не возможно….в чём грабли ?!

Я так понимаю надо установить перенаправление запросов и во внешнюю сеть ?! Дайте интересующий кусок конфига…а лучше весь для корректировки своего…

Genie

Целиком?!

10 кб текста?!

Ну уж нафик..

Так что может наоборот?

Выложите свой конфиг. раз только начали настраивать, то значит он еще маааненький, с килобайтик всего будет…

А именно по вопросу: какие политики по умолчанию?

Какие правила на операцию FORWARD?

Собственно тогда и для определенности приведите топологию своей сети (касательно необходимых узлов).

Вот после этого и говорить можно будет.

wiener

Вот конфиг:

####################################

#!/bin/sh

#

INET_IP=«192.168.5.155»

INET_IFACE=«eth0»

INET_BROADCAST=«192.168.5.255»

#

LAN_IP=«169.254.255.1»

LAN_IP_RANGE=«169.254.255.0/24»

LAN_BROADCAST_ADDRESS=«169.254.255.255»

LAN_IFACE=«eth1»

#

LO_IFACE=«lo»

LO_IP=«127.0.0.1»

#

IPTABLES=«/sbin/iptables»

#

/sbin/depmod -a

#

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

echo «1» > /proc/sys/net/ipv4/conf/all/proxy_arp

#

$IPTABLES -P INPUT DROP

$IPTABLES -P OUTPUT DROP

$IPTABLES -P FORWARD DROP

#

$IPTABLES -N bad_tcp_packets

#

$IPTABLES -N allowed

$IPTABLES -N tcp_packets

$IPTABLES -N udp_packets

$IPTABLES -N icmp_packets

#

$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG \

--log-prefix «New not syn:»

$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

#

$IPTABLES -A allowed -p TCP --syn -j ACCEPT

$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A allowed -p TCP -j DROP

#

$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 21 -j allowed

$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed

$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed

$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 113 -j allowed

$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 2074 -j ACCEPT

$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 4000 -j ACCEPT

#

$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 135:139 -j ACCEPT

$IPTABLES -A tcp_packets -p TCP -s 0/0 --destination-port 135:139 -j ACCEPT

#

$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT

$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT

#

$IPTABLES -A INPUT -p tcp -j bad_tcp_packets

#

$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT

$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT

$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT

$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT

$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d $LAN_BROADCAST_ADDRESS -j ACCEPT

#

$IPTABLES -A INPUT -p UDP -i $LAN_IFACE --dport 67 --sport 68 -j ACCEPT

#

$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED \ -j ACCEPT

$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets

$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets

$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets

#

$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \

--log-level DEBUG --log-prefix «IPT INPUT packet died: »

#

$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets

#

$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT

$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#

$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG \

--log-level DEBUG --log-prefix «IPT FORWARD packet died: »

#

$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets

#

$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT

$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT

$IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT

#

$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \

--log-level DEBUG --log-prefix «IPT OUTPUT packet died: »

#

$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP

#

###############################

Конфигурация сети:

Сервер имеет 2 интерфейса:

eth0:

- 192.168.5.155 = внешняя сеть (с выходом в нет)

- шлюз = 192.168.5.1

маска подсети — 255.255.255.0

eth1:

- 169.254.255.1 = внутренняя сеть

маска подсети — 255.0.0.0

подключена рабочая станция — 169.254.255.2 (может будут ещё)…

На сервере работает HTTPD, SQUID, SAMBA (все настроенны на стандартные порты).

Что ещё надо ?!

Genie

AFAIK, при установке соединения по протоколу SMB/CIFS происходит «запрос/ответ», т.е. не одно соединение, а 2, с разных сторон. Причем в пакетах дополнительно указываются (реальные) адреса хостов.

Поэтому NAT-проксирование не позволяет ходить этим протоколом напрямую (как, собственно и активному FTP, для которого надо явно настраивать эту возможность).

Дополнительно, к тому же, правила

$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

не дают возможности устанавливать ответноые соединения.

Вот собственно..

wiener

Ну и что и где надо дописать/стереть ?!

Я в этом деле пока не разбираюсь….

Да….и интересует перенапрвление стандартных портов http и ftp на порт прокси….чтобы эзвера только через прокси в нет ходили….

Заранее благодарен…

Genie

Что делать?

Ну, разве что для портов 137-139 не делать NAT-проксирование, а разрешить простую маршрутизацию и соответственно настроить маршруты на клиентах.. Всех клиентах.

По поводу проксирование http — есть такой документ, как transparent-proxy-howto (в названии могу немного наврать, но суть та же..

Прозрачного проксирования ftp, вроде бы нет. Хотя именно это я просто не в курсе..

wiener
Genie
Что делать?

Ну, разве что для портов 137-139 не делать NAT-проксирование, а разрешить простую маршрутизацию и соответственно настроить маршруты на клиентах.. Всех клиентах.

По поводу проксирование http — есть такой документ, как transparent-proxy-howto (в названии могу немного наврать, но суть та же..

Прозрачного проксирования ftp, вроде бы нет. Хотя именно это я просто не в курсе..

А код исправленный можешь дать ?!

Genie

1) http://opennet.ru / на предмет доков по iptables

2) все-таки умудрился я соврать :)

работает CIFS с NAT-ом… вот выдержки из /var/lib/iptables/active

*nat
:PREROUTING ACCEPT
:POSTROUTING ACCEPT
:OUTPUT ACCEPT
-A POSTROUTING -s 555.555.9.0/24 -o eth1 -j SNAT --to-source 333.333.2.254
COMMIT
*filter
:INPUT ACCEPT
:FORWARD DROP
:OUTPUT ACCEPT
:ACCEPT_CIFS -
-A ACCEPT_CIFS -p tcp --sport 137:139 -j ACCEPT
-A ACCEPT_CIFS -p udp --sport 137:139 -j ACCEPT
-A ACCEPT_CIFS -p tcp --dport 137:139 -j ACCEPT
-A ACCEPT_CIFS -p udp --dport 137:139 -j ACCEPT
-A FORWARD -s 555.555.9.0/24 -d 333.333.2.0/24 -i eth0 -o eth1 -j ACCEPT_CIFS
-A FORWARD -s 333.333.2.0/24 -d 555.555.9.0/24 -i eth1 -o eth0 -j ACCEPT_CIFS
COMMIT

все это конечно приблизительно, реально там все сложнее настроено…

555.555.9.0/24 — сеть, которой необходимо иметь доступ по cifs до сети 333.333.2.0/24, но не наоборот..

шлюзом стоит компьютер с адресами 555.555.9.215 и 333.333.2.254…

Genie

Transparent proxy using SQUID

http://www.squid-cache.org/Doc/FAQ/FAQ-17.html