Краткая инструкция по конкретизации и ограничению входящих подключений в операционных системах семейства Linux
Разрешение и запрет входящих подключений
с определённого сетевого интерфейса
# iptables -t filter -A INPUT -i eth0 -p tcp -m state --state NEW -m tcp -j ACCEPT
eth0 — сетевой интерфейс
с определённой подсети
# iptables -t filter -A INPUT -p tcp -s 192.168.1.0/24 -m state --state NEW -m tcp -j ACCEPT
192.168.1.0/24 — подсеть с маской 255.255.255.0
с определённого IP-адреса
# iptables -t filter -A INPUT -p tcp -s 192.168.1.225 -m state --state NEW -m tcp -j ACCEPT
192.168.1.225 — IP-адрес машины
с определённого IP-адреса на определённый порт или диапазон портов
# iptables -t filter -A INPUT -p tcp -s 172.16.32.225 -m state --state NEW -m tcp --dport 10050:10051 -j ACCEPT
Запрет прописывается аналогично, только вместо ACCEPT пишется DROP
Ограничение количества входящих подключений с одного IP-адреса (например, 10 соединений):
# iptables -t filter -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 10 -j DROP # iptables -t filter -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
данное правило прописывается перед основным разрешающим правилом
- первая строка запрещает входящее соединение, если их количество превысило 10
- вторая строка разрешает входящее подключение
Здесь можно также добавлять сетевые интерфейсы, подсети и IP-адреса.