входящий ПРИНЯТЬ все правила iptables все еще появляются

8

Я следую этому руководству здесь: http://isalazyadmin.net/2009/07/02/configuring-a-basic-firewall-for-debian-linux/

И у меня есть показанные iptables, но мой сервер все еще принимает все входящие соединения (то есть: одноранговые узлы bittorrent все еще соединяются, хотя я не разрешил эти порты).

/etc/iptables.rules

*filter

# This will allow all loopback (lo0) traffic and drop all traffic to 127/8
# that does not use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

#  This accepts all already established connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# This allows all outbound traffic
-A OUTPUT -j ACCEPT

# This will allow HTTP and HTTPS connections from anywhere, this are the normal
# ports used for a web server
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT

# Allow SSH connections
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

# Allow bittorrent/rtorrent ports, from ~/.rtorrent.rc
## -A INPUT -p tcp --dport 8071:8079 -j ACCEPT


# Allow ICMP ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# Reject all other inbound traffic
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT

Когда я запускаю iptables -L после перезагрузки, я по-прежнему получаю следующее правило:

iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere  

Не уверен, откуда это.

Вот полный список:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
REJECT     all  --  anywhere             loopback/8          reject-with icmp-port-unreachable 
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:https 
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh 
ACCEPT     icmp --  anywhere             anywhere            icmp echo-request 
REJECT     all  --  anywhere             anywhere            reject-with icmp-port-unreachable 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere            reject-with icmp-port-unreachable 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere

Вот вывод iptables-save:

# Generated by iptables-save v1.4.8 on Fri Jan 11 09:54:19 2013
*raw
:PREROUTING ACCEPT [6701:942626]
:OUTPUT ACCEPT [8927:989420]
COMMIT
# Completed on Fri Jan 11 09:54:19 2013
# Generated by iptables-save v1.4.8 on Fri Jan 11 09:54:19 2013
*nat
:PREROUTING ACCEPT [3281:284415]
:INPUT ACCEPT [9:720]
:OUTPUT ACCEPT [1758:148908]
:POSTROUTING ACCEPT [1758:148908]
COMMIT
# Completed on Fri Jan 11 09:54:19 2013
# Generated by iptables-save v1.4.8 on Fri Jan 11 09:54:19 2013
*mangle
:PREROUTING ACCEPT [6701:942626]
:INPUT ACCEPT [6701:942626]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [8928:989684]
:POSTROUTING ACCEPT [8928:989684]
COMMIT
# Completed on Fri Jan 11 09:54:19 2013
# Generated by iptables-save v1.4.8 on Fri Jan 11 09:54:19 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT 
-A INPUT -d 127.0.0.0/8 ! -i lo -j REJECT --reject-with icmp-port-unreachable 
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT 
-A INPUT -j REJECT --reject-with icmp-port-unreachable 
-A FORWARD -j REJECT --reject-with icmp-port-unreachable 
-A OUTPUT -j ACCEPT 
COMMIT
# Completed on Fri Jan 11 09:54:19 2013

Вот вывод iptables -vL:

$ sudo iptables -vL
[sudo] password for ettinger: 
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 8303 1206K ACCEPT     all  --  lo     any     anywhere             anywhere            
    0     0 REJECT     all  --  !lo    any     anywhere             loopback/8          reject-with icmp-port-unreachable 
  12M 7191M ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED 
   18   980 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:www 
    7   344 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:https 
  379 22728 ACCEPT     tcp  --  any    any     anywhere             anywhere            state NEW tcp dpt:ssh 
18316 1110K ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpts:8071:8079 
 120K   15M ACCEPT     udp  --  any    any     anywhere             anywhere            udp dpt:6881 
24809 1489K ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:9001 
  688 35244 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:9030 
  874 73072 ACCEPT     icmp --  any    any     anywhere             anywhere            icmp echo-request 
12705  871K REJECT     all  --  any    any     anywhere             anywhere            reject-with icmp-port-unreachable 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REJECT     all  --  any    any     anywhere             anywhere            reject-with icmp-port-unreachable 

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  14M   12G ACCEPT     all  --  any    any     anywhere             anywhere      
chovy
источник
Разве вы не заметили свое первое правило INPUT ACCEPT all -- anywhere anywhere?
ot--
1
Кажется, что правила не загружаются во время загрузки. Убедитесь, что вы добавили строку «pre-up iptables-restore </etc/iptables.rules» в ваш файл / etc / network / interfaces (как предполагает автор учебника)
mzet
1
@ott: это касается только интерфейса, так что все нормально
mzet
2
Можете ли вы повторить свою запись с iptables -vL?
ot--
Ваши правила и ваше состояние после загрузки действительно совпадают, это не проблема - смотрите мой ответ;)
Златовласка

Ответы:

17

Линия, о которой вы беспокоитесь:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere       

на самом деле из-за этого в ваших правилах:

-A INPUT -i lo -j ACCEPT

Обратите внимание, что интерфейс явно указан в правиле, но не -Lвыводится. Переместите это правило в середину списка, используйте iptables-restoreи обратите внимание, что «ПРИНЯТЬ все - везде» также переместилось вниз. Теперь попробуйте немного изменить правило:

-A INPUT -i lo -s 127.0.0.1 -j ACCEPT

и на -Lвыходе получится:

target     prot opt source                 destination  
ACCEPT     all  --  localhost.localdomain  anywhere

"localhost.localdomain" будет вашим именем хоста 127.0.0.1 /etc/hosts. По крайней мере, это проясняет, откуда пришло это правило.

Вы также можете увидеть более подробную информацию, включая интерфейсы с iptables -vL.

Кстати, вы можете начать свои правила:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]

Отбросьте все по умолчанию как провал для безопасности. Однако это считается дурным тоном (см. Ссылку в комментарии Жиля ниже), поэтому вы можете захотеть создать окончательный улов всех для каждой используемой таблицы -j REJECT --reject-with icmp-net-prohibited.

лютик золотистый
источник
4
К вашему сведению, iptables -vLпокажет полное правило, включая интерфейс. Так что это позволит устранить путаницу, как это.
Дероберт
Спасибо @derobert - я забыл об этом показе. Отредактирую это в ответ!
Златовласка
2
Что касается удаления всего по умолчанию: отклонить IP-пакеты с ошибкой ICMP или просто отбросить их?
Жиль "ТАК - перестань быть злым"
@ derobert +1 на -vпереключателе. Мои правила брандмауэра выглядят не так плохо, как я думал :)
Мэтт Борха
1

Просто для полноты, чтобы избежать этой проблемы в будущем, используйте -vподробный параметр командной строки при отображении таблицы. Как при этом:

iptables -Lv

Вывод теперь должен включать интерфейс, на который он влияет, в столбцах «in» и «out»:

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
  151 13073 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
  126 33414 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
db_
источник
-1

Проблема в этой части цепочки INPUT:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere

особенно в последней строке. Все после этой строки не нужно, потому что эта строка принимает все мысли.

Вы должны удалить эту строку из правил с помощью этой команды:

iptables -D INPUT 1

Вы должны проверить свои правила брандмауэра, где находится правило, которое добавляет эту строку.

Ян Марек
источник
7
«ПРИНЯТЬ все - где угодно и где угодно» происходит из этого правила: «-A INPUT -i lo -j ПРИНЯТЬ», так что это касается только интерфейса, поэтому проблема не в этом.
mzet
Я удалил все, но он все еще обнаруживается с iptables -L
chovy
хорошо, это то, что кто-то еще упомянул. Спасибо. Я могу смело игнорировать это.
Чови
1
@chovy: твои правила в порядке. Проблема заключается в восстановлении после перезагрузки. Попробуйте выполнить следующие действия: debian-administration.org/articles/445
mzet