LinuxForum.Fans
Тема

Стираются правила в цепочке FORWARD - IPTABLES

Автор: AlfaStriker 7 сообщений 2626 просмотров
#342619

Добрый день,

есть вот такие правила:

text
# chkconfig: 345 30 99
# description: Starts and stops iptables based firewall
# Очистка всех цепочек iptables
#iptables -F
iptables -F INPUT
iptables -F OUTPUT
# iptables -F FORWARD
iptables -F -t nat
iptables -F -t mangle
iptables -X
iptables -t nat -X
iptables -t mangle -X
 
 # Политика по умолчанию, запретить все что не разрешено
 iptables -P INPUT DROP
 iptables -P OUTPUT DROP
 iptables -P FORWARD DROP
 
 # Разрешаем обращение к lo интерфейсу
 iptables -A INPUT -i lo -p all -j ACCEPT
 iptables -A OUTPUT -o lo -p all -j ACCEPT
 
 # Разрешаем обращение к внутреннему интерфейсу eth1
 iptables -A INPUT -i eth1 -j ACCEPT
 iptables -A OUTPUT -o eth1 -j ACCEPT
 
 # Пропускать уже инициорванные, а также их дочерние
 iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
 
 # Пропускать новые, иницированные, а также их дочерние
 iptables -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
 
 # Разрешить форвардинг для новых, иницированных, а также их дочерних
# iptables -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
 
 # Разрешаем DNS запросы с виртуальной сети по протоколу UDP и TCP до нашего сервера
 iptables -A INPUT -i ppp0 -s 192.168.160.0/24 -p udp --dport 53 -j ACCEPT
 iptables -A OUTPUT -o ppp0 -d 192.168.160.0/24 -p udp --sport 53 -j ACCEPT
 
 iptables -A INPUT -i ppp0 -s 192.168.160.0/24 -p tcp --dport 53 -j ACCEPT
 iptables -A OUTPUT -o ppp0 -d 192.168.160.0/24 -p tcp --sport 53 -j ACCEPT
 # Разрешаем DNS запросы с виртуальной сети по протоколу UDP и TCP до нашего сервера
 iptables -A INPUT -i eth1 -s 20.168.50.0/24 -p udp --dport 53 -j ACCEPT
 iptables -A OUTPUT -o eth1 -d 10.168.50.0/24 -p udp --sport 53 -j ACCEPT
 
 iptables -A INPUT -i eth1 -s 10.168.50.0/24 -p tcp --dport 53 -j ACCEPT
 iptables -A OUTPUT -o eth1 -d 10.168.50.0/24 -p tcp --sport 53 -j ACCEPT
 
 # Настройка NAT, подсеть 192.168.160.0/255.255.255.0  - у нас виртуальная
 # Выход в Интернет имеет только виртуальная подсети 192.168.160.0/24
iptables -t nat -A POSTROUTING -s 192.168.160.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.168.50.0/24 -o eth0 -j SNAT --to-source 192.168.1.10
#iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 9443
#iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -j REDIRECT --to-ports 9443

Есть еще биллинг, который включает и отключает компьютер с помощью вставки правил в FORWARD.
Так вот проблема, выяснилось что после перезагрузки правила в цепочке Forward не сохраняются.

Сам скрипт правил iptables запускается при старте системы и цепочку Forward не трогает.

#342677

Проблема решена простым способом, не ругайте гуру только :)

В общем надо:
1. Сделать простой файл скрипт правил iptables /etc/sysconfig/firewall.sh c следующим содержимым:

Показать
# chkconfig: 345 30 99
# description: Starts and stops iptables based firewall
# Очистка всех цепочек iptables
#iptables -F
iptables -F INPUT
iptables -F OUTPUT
# iptables -F FORWARD
iptables -F -t nat
iptables -F -t mangle
iptables -X
iptables -t nat -X
iptables -t mangle -X

# Политика по умолчанию, запретить все что не разрешено
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Разрешаем обращение к lo интерфейсу
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A OUTPUT -o lo -p all -j ACCEPT

# Разрешаем обращение к внутреннему интерфейсу eth1
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT

# Пропускать уже инициорванные, а также их дочерние
iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

# Пропускать новые, иницированные, а также их дочерние
iptables -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Разрешить форвардинг для новых, иницированных, а также их дочерних
# iptables -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Разрешаем DNS запросы с виртуальной сети по протоколу UDP и TCP до нашего сервера
iptables -A INPUT -i ppp0 -s 192.168.160.0/24 -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -o ppp0 -d 192.168.160.0/24 -p udp --sport 53 -j ACCEPT

iptables -A INPUT -i ppp0 -s 192.168.160.0/24 -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -o ppp0 -d 192.168.160.0/24 -p tcp --sport 53 -j ACCEPT
# Разрешаем DNS запросы с виртуальной сети по протоколу UDP и TCP до нашего сервера
iptables -A INPUT -i eth1 -s 20.168.50.0/24 -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -o eth1 -d 10.168.50.0/24 -p udp --sport 53 -j ACCEPT

iptables -A INPUT -i eth1 -s 10.168.50.0/24 -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -o eth1 -d 10.168.50.0/24 -p tcp --sport 53 -j ACCEPT

# Настройка NAT, подсеть 192.168.160.0/255.255.255.0 - у нас виртуальная
# Выход в Интернет имеет только виртуальная подсети 192.168.160.0/24
iptables -t nat -A POSTROUTING -s 192.168.160.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.168.50.0/24 -o eth0 -j SNAT --to-source 192.168.1.10
#iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 9443
#iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -j REDIRECT --to-ports 9443

2. Сделать его исполняемым:

text
chmod -x  /etc/sysconfig/firewall.sh 

3. Запустить скрипт правил:

text
/etc/sysconfig/firewall.sh

4. Сохранить загруженные правила в системный файл /etc/sysconfig/iptables:

text
/sbin/iptables-save > /etc/sysconfig/iptables

5. Загрузить настройки правил из файла /etc/sysconfig/iptables

text
/sbin/iptables-restore < /etc/sysconfig/iptables

6. Добавить автозагрузку правил при старте системы:

vi /etc/rc.d/rc.local
text
/sbin/iptables-restore < /etc/sysconfig/iptables

7. Изменить настройку :

vi /etc/sysconfig/iptables-config
text
SAVE =yes

-------------------------
Вроде все работает.......

#342681

AlfaStriker, это универсальный способ, он везде работает. Но для вашего дистрибутива есть стандартное место для правил.

"AlfaStriker" написал:
Так вот проблема, выяснилось что после перезагрузки правила в цепочке Forward не сохраняются.

а разве они должны? В вышеприведённых ничего нет про FORWARD. С чего они должны сохраняться-то?

#342684
drBatty написал:
AlfaStriker, это универсальный способ, он везде работает. Но для вашего дистрибутива есть стандартное место для правил.

[quote="AlfaStriker"]Так вот проблема, выяснилось что после перезагрузки правила в цепочке Forward не сохраняются.

а разве они должны? В вышеприведённых ничего нет про FORWARD. С чего они должны сохраняться-то?[/quote]
Я точно не знаю какой системный скрипт убивал данные в цепочке FORWARD.


Вы правы сохранение правил нет, поэтому хотел узнать как их сохранять.

#342691
"AlfaStriker" написал:
Я точно не знаю какой системный скрипт убивал данные в цепочке FORWARD.
а никто их не убивал. Они просто нигде НЕ храняться.
"AlfaStriker" написал:
поэтому хотел узнать как их сохранять.

я не помню.

А вас в гугле забанили что-ли? https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security_Guide/sect-Security_Guide-IPTables.html

Important
By default, firewall rules are saved in the /etc/sysconfig/iptables or /etc/sysconfig/ip6tables files.
#342693
text
# grep -n "SAVE" /etc/sysconfig/iptables-config 

Далее в нужных строках поменять "no" на "yes"

#342763
AlfaStriker написал:
[quote=drBatty]AlfaStriker, это универсальный способ, он везде работает. Но для вашего дистрибутива есть стандартное место для правил.

[quote="AlfaStriker"]Так вот проблема, выяснилось что после перезагрузки правила в цепочке Forward не сохраняются.

а разве они должны? В вышеприведённых ничего нет про FORWARD. С чего они должны сохраняться-то?[/quote]
Я точно не знаю какой системный скрипт убивал данные в цепочке FORWARD.


Вы правы сохранение правил нет, поэтому хотел узнать как их сохранять.[/quote]
в centos файл с правилами iptables хранится в /etc/sysconfig/iptables
далее правила вбиваются в консоли и делается команда service iptables save и они сохраняются в файл /etc/sysconfig/iptables (в дальнейшем их можно тупо добавлять вручную правмо в этот файл ну или удалять) при старте системы они оттуда считываются ну и начинают работать про команды service iptables start/stop/restart я думаю вы уже и сами знаете

Войдите или зарегистрируйтесь, чтобы ответить.