Нужно ли восстанавливать правила iptable каждый раз при загрузке?

18

Каждый раз, когда я перезагружаюсь, я теряю правила iptables, которые так долго вводили. Я знаю, что могу сохранить их и восстановить при загрузке , но есть ли способ сохранить их навсегда? Мне действительно нужно каждый раз восстанавливать их при загрузке? Шутки в сторону?

Проблема в том, что у меня ОГРОМНЫЙ список IP-адресов, в которых я использую цикл while для их загрузки. Это может занять более 10 минут.

Это мой домашний FTP-сервер. Это небольшой виртуальный диск с 1 ГБ оперативной памяти и очень маленькой вычислительной мощностью. Есть очень много IP-адресов, потому что я почти отказался от азиатского континента. Мне не нужно, чтобы они каждый день били мой FTP-сервер грубой силой. Я также блокирую правительство. мониторы, трекеры и спамеры.

Это цикл while, который я использую для загрузки в списке.

grep INPUT block.list | while read LISTA; do sudo iptables -A $LISTA; done
capdragon
источник
Ваш вопрос немного двусмысленный, когда вы говорите «сохранить их навсегда», я подумал, что вы имели в виду, как в файле, но после прочтения остального звучит так, как будто вы на самом деле имеете в виду, что вам не нужно загружать их вручную при загрузке каждый раз. Кроме того, я думаю, что количество правил, которые необходимо перезагрузить, будет таким же, так что это займет некоторое время, но вам не придется делать это вручную, следуя ответу Панкаджа.
Джефф Веллинг
возможный дубликат iptables сбрасывается при перезагрузке сервера
Элия ​​Каган

Ответы:

21

Сначала создайте файл с содержимым iptables-save:

sudo iptables-save > /etc/iptables_rules

Неважно, куда вы положили файл, все, что вам нужно сделать, это убедиться, что следующая строка ссылается на тот же файл. Далее откройте /etc/rc.localи добавьте эту строку:

/sbin/iptables-restore < /etc/iptables_rules

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

панкадж шарма
источник
1
Я получаю -bash: /etc/iptables_rules: Permission deniedпо первой команде. Что странно, используя sudo и все такое.
Капдрагон
5
Я должен был использовать, sudo sh -c '/sbin/iptables-save > /etc/iptables.save'чтобы обойти Permission deniedошибку. Ссылка
капдрагон
вы можете создать файл в любом каталоге, не обязательно создавать файл в / etc /
pankaj sharma
8
Я бы не рекомендовал использовать /etc/rc.localдля этого. Он выполняется позже, чем остальная часть вашего запуска системы и, возможно, оставит вашу систему в состоянии без брандмауэра. Я бы предложил разместить этот однострочный скрипт в /etc/network/if-up.d/firewall(новый файл). Это гарантирует, что он будет выполняться каждый раз, когда вы включаете сетевые интерфейсы.
gertvdijk
2
Ошибка разрешений нормальная / ожидаемая. sudo применяется только к команде до ">", перенаправление файлов выполняется отдельно вашей оболочкой.
ImaginaryRobots
16
apt-get install iptables-persistent

При установке он должен сохранить ваш текущий конфиг iptables. В противном случае вы можете сохранить их в эти файлы (в зависимости от v4 или v6), и iptables-persistent загрузит их при загрузке :)

iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6
Мэтт Флетчер
источник
1

Если у вас много правил, вам также следует рассмотреть возможность использования ipset в сочетании с iptables. Ipset использует индексированную таблицу базы данных и работает намного быстрее, чем iptables, когда ищет адрес, чтобы принять или отклонить его.

http://ipset.netfilter.org/index.html

Боб Бруниус
источник