Установка и конфигурирование брандмауэра

Новичок здесь. Я нашел следующие правила установить брандмауэр, (из книги, как Linux работает),

iptables -P INPUT DROP   # the default policy
iptables -A INPUT -s 127.0.0.1 -j ACCEPT     
iptables -A INPUT -p tcp '!' --syn -j ACCEPT   # accepting incoming 
connections from everywhere except those initiating a connection hence syn

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

INPUT -p udp --dport 53 --sport 1024:65535 -j ACCEPT
iptables -A INPUT -p udp --source-port 53 -s 127.0.1.1 -j ACCEPT
iptables -A INPUT -p udp --source-port 53 -j ACCEPT

Желаемый результат: Предотвращая любую инициализацию соединений снаружи (ssh, icmtp...), включая поиск DNS и просмотр веб-страниц (завихрение, wget, telnet...), я не думаю, что важно, что я могу локально выполнить веб-сервер или сервер базы данных...

Любая справка ценилась бы.

1
задан 22 February 2018 в 11:23

2 ответа

При разрешении Установленных Сессий Мы можем позволить установленным сессиям получать трафик:

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

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

sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Разрешение входящего трафика на определенных портах

sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT

Блокирование трафика

sudo iptables -A INPUT -j DROP

Включение обратной петли путем редактирования iptables:

sudo iptables -I INPUT 1 -i lo -j ACCEPT

Журналирование нежелательного трафика:

sudo iptables -I INPUT 4 -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

Чтобы подтвердить, что изменения были успешно внесены:

iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh
LOG        all  --  anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "
DROP       all  --  anywhere             anywhere

Использовать iptables -L -v получить больше деталей:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere
    0     0 ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:ssh
    0     0 LOG        all  --  any    any     anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "
    0     0 DROP       all  --  any    any     anywhere             anywhere

Пустой iptables:

iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

Сохранение iptables

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

Сохраните свои правила брандмауэра в файл

sudo sh -c "iptables-save > /etc/iptables.rules"

Сценарий/etc/network/if-pre-up.d/iptablesload будет содержать:

#!/bin/sh
iptables-restore < /etc/iptables.rules
exit 0

и/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

Затем обязательно дайте оба сценария, выполняют полномочия:

sudo chmod +x /etc/network/if-post-down.d/iptablessave
sudo chmod +x /etc/network/if-pre-up.d/iptablesload

Источник

1
ответ дан 7 December 2019 в 13:26

Я предлагаю, чтобы Вы создали некоторое Входное правило, которое позволяет весь установленный и связанный трафик как:

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

Также необходимо всегда позволять устройство закольцовывания:

# Allow loopback interface to do anything.
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT

Если Ваша выходная политика по умолчанию, принимают, большинство проблем должно закончиться. Иначе необходимо также добавить:

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

и откройте порты для HTTP, DNS, ICMP или независимо от того, что Вам нужно.

https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

https://en.wikibooks.org/wiki/Communication_Networks/IP_Tables

1
ответ дан 7 December 2019 в 13:26

Другие вопросы по тегам:

Похожие вопросы: