Назад | Перейти на главную страницу

Iptables: заблокировать все страны, кроме моей, для определенного порта

Я хотел бы заблокировать все IP-адреса (CIDR 0.0.0.0/0), кроме немецких IP-адресов для портов SSH, FTP и SMTP. Таким образом, политика по умолчанию для этих портов должна быть "DROP". У меня есть список всех немецких диапазонов IP CIDR, которые будут в списке «ПРИНЯТЬ».

Я не понял, как именно работает iptables, и мне нужна небольшая помощь с синтаксисом. Я также не нашел, как настроить поведение при наличии 2 взаимоисключающих правил ACCEPT и DROP для конкретного хоста. У меня есть Debian Linux на виртуальной машине, но я не смог его протестировать, так как в моей сети только 1 компьютер, поэтому я не могу проверить, отклоняются ли IP-диапазоны или нет.

Кроме того, можно ли указать iptables принять динамическое имя хоста, например имя хоста DynDns, где всегда меняется IP-адрес?

Моя идея была бы (непроверенной):

iptables -I INPUT -s 0.0.0.0/0 --dport 21 -j DROP
iptables -I INPUT -s 1.2.3.4 --dport 21 -j ACCEPT

где 1.2.3.4 - это пример разрешенного IP.

Даниэль,

Вы, вероятно, захотите что-то в этом роде. Это просто вырезано прямо из моего файла / etc / sysconfig / iptables в Red Hat.

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 10.1.1.0/24 -p tcp -m multiport --dports 22,80,443,5666 -j ACCEPT
-A INPUT -s 10.2.2.2 -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
COMMIT

Как видите, политика ввода по умолчанию - drop. Таким образом, вам не нужно устанавливать какие-либо особые правила сброса. Вам нужно только сказать то, что вы хотите разрешить. В моем примере я показал, где вы можете использовать несколько протоколов для 1 правила или только один протокол для 1 правила.

Изменить: ниже приведен пример сценария, который вы можете использовать для создания правил iptable.

#!/bin/bash
# Iptables configuration script

# Flush all current rules from iptables
/sbin/iptables -F

# Loopback address
/sbin/iptables -A INPUT -i lo -j ACCEPT

# Allowed any established connections
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow FTP and SSH from specific IPs
/sbin/iptables -A INPUT -s 10.0.2.0/24 -p tcp -m state --state NEW -m multiport --dports 21,22 -j ACCEPT

# Allow pings from monitoring server
/sbin/iptables -A INPUT -s 1.1.1.1 -p icmp -m icmp --icmp-type any -j ACCEPT

# Allow web server access from anywhere
/sbin/iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT

# Drop rules to prevent them from entering the logs
/sbin/iptables -A INPUT -p tcp -m multiport --dports 135,137,138 -j DROP
/sbin/iptables -A INPUT -p udp -m multiport --dports 135,137,138 -j DROP
/sbin/iptables -A INPUT -p all -d 255.255.255.255 -j DROP

# Log dropped traffic
/sbin/iptables -A INPUT -j LOG -m limit --limit 10/m --log-level 4 --log-prefix "Dropped Traffic: "

# Set default policies for INPUT, FORWARD and OUTPUT chains
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT ACCEPT

# Save settings
/sbin/service iptables save

# List rules
/sbin/iptables -L -v