iptables позволяет просто подключение к интернету

позвольте мне объяснить, что я делал раньше;

# Only INPUT policy DROP, others are ACCEPT
sudo iptables -P INPUT DROP
sudo iptables -A INPUT -p tcp --sport 80 -j ACCEPT

Я тоже попробую это; для этих портов 443 и 8080

sudo iptables -A INPUT -p tcp --sport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

Тогда я понял, что я должен разрешить DNS-сервер тоже,

sudo iptables -A INPUT -p udp --sport 53 -j ACCEPT
sudo iptables -A INPUT -p tcp --sport 53 -j ACCEPT

Применить эти правила, но я не могу подключиться к Интернету,

Но когда я разрешаю все порты udp, я могу подключиться.

Я что-то забыл? или что-то не так сделал?

2
задан 10 June 2015 в 21:28

1 ответ

Как Ваш компьютер получает свой IP-адрес? Если это через DHCP, то необходимо позволить ответы UDP на порт 68 (или от порта 67, посмотрите позже):

sudo iptables -A INPUT -p udp --sport 67 --dport 68 -m state --state RELATED,ESTABLISHED -j ACCEPT

, Если бы Ваша цель состоит в том, чтобы просто позволить просмотр веб-сайта, то соединение всегда инициировалось бы с Вашей стороны, таким образом, только необходимо позволить связанному трафику войти назад (в этом примере, который предположение - то, что eth0 является именем NIC):

sudo iptables -A INPUT -i eth0 -p tcp -m multiport --sport 80,443,8080 -m state --state ESTABLISHED,RELATED -j ACCEPT

Теперь, Вы можете или, возможно, не должны позволять локальный интерфейс (зависит от того, что Вы делаете со своим компьютером):

sudo iptables -A INPUT -i lo -j ACCEPT

В конце, можно объединить некоторые из этих вещей и закончить с:

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -i eth0 -p udp -m multiport --sport 53,67 -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp -m multiport --sport 53,80,443,8080 -m state --state ESTABLISHED,RELATED -j ACCEPT

я кодировал это на одном из моих тестовых компьютеров, и он хорошо работал (порт SSH, который 22 материала для меня, потому что я на самом деле не сижу в том компьютере):

#!/bin/sh
FWVER=0.01
#
# test extremely basic 2015.06.10 Ver:0.01
#
#     run as sudo
#

echo "Loading test rule set version $FWVER..\n"

# The location of the iptables program
#
IPTABLES=/sbin/iptables

#Setting the EXTERNAL and INTERNAL interfaces and addresses for the network
#
EXTIF="eth0"
EXTIP="192.168.111.140"
UNIVERSE="0.0.0.0/0"

#Clearing any previous configuration
#
echo "  Clearing any existing rules and setting default policy to ACCEPT.."
$IPTABLES -P INPUT DROP
$IPTABLES -F INPUT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F OUTPUT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -F FORWARD
$IPTABLES -t nat -F
# Delete user defined chains
$IPTABLES -X
# Reset all IPTABLES counters
$IPTABLES -Z

echo about to load rules.

$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A INPUT -i $EXTIF -p udp -m multiport --sport 53,67 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -i $EXTIF -p tcp -m multiport --sport 53,80,443,8080 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -i $EXTIF -p tcp --dport 22 -j ACCEPT

echo Test rule set version $FWVER done.

я заставил его запуститься автоматически через мой /etc/network/interfaces файл:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
pre-up /home/doug/test_iptables_06

# The primary network interface
auto eth0
iface eth0 inet dhcp

Примечание, что более обычно, пользователи просто позволят любому связанному трафику войти назад с более универсальным правилом (использующий названия переменных моего сценария выше):

$IPTABLES -A INPUT -i $EXTIF -s $UNIVERSE -d $EXTIP -m state --state ESTABLISHED,RELATED -j ACCEPT

РЕДАКТИРОВАНИЕ:

Иногда, чтобы помочь понять / отладка, добавляющая некоторый вход, может помочь. Например:

echo about to load rules.

$IPTABLES -A INPUT -i lo -j LOG --log-prefix "ILO:" --log-level info
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A INPUT -i $EXTIF -p udp -m multiport --sport 53,67 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -i $EXTIF -p tcp -m multiport --sport 53,80,443,8080 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -i $EXTIF -p tcp --dport 22 -j ACCEPT
$IPTABLES -A INPUT -j LOG --log-prefix "IDROP:" --log-level info

echo Test rule set version $FWVER done.

тогда наблюдают /var/log/syslog для записей. Будьте осторожны с входом, так, чтобы Вы не лавинно рассылали файл журнала.

0
ответ дан 10 June 2015 в 21:28

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

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