Новичок здесь. Я нашел следующие правила установить брандмауэр, (из книги, как 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...), я не думаю, что важно, что я могу локально выполнить веб-сервер или сервер базы данных...
Любая справка ценилась бы.
При разрешении Установленных Сессий Мы можем позволить установленным сессиям получать трафик:
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
Я предлагаю, чтобы Вы создали некоторое Входное правило, которое позволяет весь установленный и связанный трафик как:
$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