Я следую этому руководству здесь: 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
ACCEPT all -- anywhere anywhere
?iptables -vL
?Ответы:
Линия, о которой вы беспокоитесь:
на самом деле из-за этого в ваших правилах:
Обратите внимание, что интерфейс явно указан в правиле, но не
-L
выводится. Переместите это правило в середину списка, используйтеiptables-restore
и обратите внимание, что «ПРИНЯТЬ все - везде» также переместилось вниз. Теперь попробуйте немного изменить правило:и на
-L
выходе получится:"localhost.localdomain" будет вашим именем хоста 127.0.0.1
/etc/hosts
. По крайней мере, это проясняет, откуда пришло это правило.Вы также можете увидеть более подробную информацию, включая интерфейсы с
iptables -vL
.Кстати, вы можете начать свои правила:
Отбросьте все по умолчанию как провал для безопасности. Однако это считается дурным тоном (см. Ссылку в комментарии Жиля ниже), поэтому вы можете захотеть создать окончательный улов всех для каждой используемой таблицы
-j REJECT --reject-with icmp-net-prohibited
.источник
iptables -vL
покажет полное правило, включая интерфейс. Так что это позволит устранить путаницу, как это.-v
переключателе. Мои правила брандмауэра выглядят не так плохо, как я думал :)Просто для полноты, чтобы избежать этой проблемы в будущем, используйте
-v
подробный параметр командной строки при отображении таблицы. Как при этом:Вывод теперь должен включать интерфейс, на который он влияет, в столбцах «in» и «out»:
источник
Проблема в этой части цепочки INPUT:
особенно в последней строке. Все после этой строки не нужно, потому что эта строка принимает все мысли.
Вы должны удалить эту строку из правил с помощью этой команды:
Вы должны проверить свои правила брандмауэра, где находится правило, которое добавляет эту строку.
источник