Я хотел бы заблокировать все 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