Posts Tagged ‘iptables’

Debian 9: permanent iptables rules

Tuesday, May 29th, 2018

Just an example for Debian 9.

1. Install ‘iptables-persistent’ package. Agree during installation the rules to be saved to /etc/iptables/rules.v4 .

2. Add rules (e.g. from console):

iptables -P OUTPUDT DROP
iptables -A OUTPUT -d 192.168.0.1 -j ACCEPT

3. Save rules:

netfilter-persistent save

4. Reboot and enjoy.

5. If you need to add/delete/edit rules, edit /etc/iptables/rules.v4 and then run ‘netfilter-persistent start’ to re-read the file.

iptables: a rule with expiration

Tuesday, May 22nd, 2018

If you need an automated way of deleting iptables rules after some time, use this:


iptables -A INPUT -s 9.8.7.6 -j DROP && { echo "iptables -D INPUT -s 9.8.7.6 -j DROP" | at now + 1 min; }

This rule will be deleted in a 1 minute.

Asterisk & IPtables

Tuesday, January 22nd, 2013

A good starting place is a set of rules similar to this one:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p udp --dport 5060 -j ACCEPT
iptables -A INPUT -p udp --dport 10000:20000 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP

iptables выборка по FQDN

Wednesday, July 4th, 2012

Иногда пригождается, а из головы вылетает.

Кстати страдающим от вконтактозависимости вот такое правило будет не лишним:

iptables -A OUTPUT -p tcp -m string – -string vkontakte.ru – -algo kmp -j DROP

iptables в Ubuntu

Wednesday, July 4th, 2012

Я привык к slackware-way при “хранении” правил iptables – скрипт rc.firewall, лежащий в /etc/rc.d/ , содержащий в себе логически понятные строчки правил iptables и умеющий принимать значения start/stop/restart.

Но в GNU/Linux, как вы понимаете, существует много вариаций решения одной и той же задачи. Рассмотрим базовую настройку iptables в Ubuntu. Написано по материалам https://help.ubuntu.com/community/IptablesHowTo#Configuration%20on%20startup .

ВнИМАние! Подразумевается, что настраиваете файрвол на локальной машине. Если на удаленной, то когда будете задавать политику по умолчанию для цепочки INPUT, разрешайте (sudo iptables -P INPUT ACCEPT), а уж потом, на последнем этапе, запрещайте через правку конфига, имея уже явно прописанные разрешающие правила.

1 шаг.

Задаём цепочкам политики по умолчанию:
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP # если у вас не включен IP-forwarding, можно и не делать, но, думаю, лишним не будет в любом случае.
# sudo iptables -P OUTPUT DROP # я этого не делал, для себя решайте сами. Не забудьте только в случае блокировки OUTPUT по умолчанию добавить правило:
sudo iptables -A OUTPUT -m state —state ESTABLISHED,RELATED -j ACCEPT

2 шаг.

Разрешаем входящий трафик на loopback-интерфейсе:

sudo iptables -A INPUT -i lo -j ACCEPT

3 шаг.

Создаём правила для входящих соединений на нашу машину:
sudo iptables -A INPUT -p tcp —dport 22 -j ACCEPT
Добавляем при необходимости другие правила/опции.

4 шаг.

Разрешаем входящие соединения со статусом ESTABLISHED и RELATED:
sudo iptables -A INPUT -m state —state ESTABLISHED,RELATED -j ACCEPT

5 шаг.

Сохраняем введённые правила в файл /etc/iptables.rules:

sudo bash -c “iptables-save > /etc/iptables.rules”

6 шаг.

Создаём скрипт /etc/network/if-pre-up.d/iptablesload следующего содержания:
#!/bin/sh
iptables-restore < /etc/iptables.rules
exit 0

7 шаг.

Создаём скрипт /etc/network/if-post-down.d/iptablessave следующего содержания:
#!/bin/sh
iptables-save -c > /etc/iptables.rules
if [ -f /etc/iptables.downrules ]; then
   iptables-restore < /etc/iptables.downrules
fi
exit 0

8 шаг.

Делаем только что созданные скрипты исполняемыми:
sudo chmod +x /etc/network/if-pre-up.d/iptablesload
sudo chmod +x /etc/network/if-post-down.d/iptablessave

Готово. Теперь при необходимости можно редактировать файл с правилами и перезапускать скрипт /etc/network/if-pre-up.d/iptablesload для вступления изменений в силу.

О том, что мне не нравится в этом подходе.

Просмотрите ваш файл /etc/iptables.rules . Вам не кажется, что он несколько “захламлён” (в примере я привожу не всё содержимое) ?

# Generated by iptables-save v1.4.4 on Mon May 23 15:20:51 2011
*filter
:INPUT DROP [172:18570]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [681:120764]
[30:1727] -A INPUT -i lo -j ACCEPT
[0:0] -A INPUT -p tcp -m tcp —dport 22 -j ACCEPT
[0:0] -A INPUT -p tcp -m tcp -m multiport —dports 135,139,445 -j ACCEPT
[176:17992] -A INPUT -p udp -m udp -m multiport —dports 137,138 -j ACCEPT
#
-A INPUT -p icmp -m icmp —icmp-type 8 -j ACCEPT
#
[556:391583] -A INPUT -m state —state RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Mon May 23 15:20:51 2011

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

В общем, не привычен мне этот метод.