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

Неверный аргумент LOG при настройке iptables

Я пытаюсь написать сценарий iptables sh, который позже я могу обновить из одного места для всех моих серверов. Пока у меня это работает.

я получаю эту ошибку

Bad argument `LOG'
Try `iptables -h' or 'iptables --help' for more information.

сначала я протираю некоторые настройки по умолчанию iptables-restore /etc/iptables.conf

затем загрузите файл диапазонов IP-адресов или только отдельных IP-адресов

_input=/root/firewall/badips.db
_pub_if="eth0"
IPT=/sbin/iptables

$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

egrep -v "^#|^$" x | while IFS= read -r ip
do
        $IPT -A INPUT -i ${_pub_if} -s $ip -j LOG --log-prefix " Drop BadIP "
done <"${_input}"

$IPT -I INPUTlist
$IPT -I OUTPUTlist
$IPT -I FORWARDlist

$IPT -A INPUT -i ${_pub_if} -p icmp --icmp-type 8 -m state --state NEW,ESTABLISHED,RELATED -m limit --limit 30/sec  -j ACCEPT
$IPT -A INPUT -i ${_pub_if}  -p icmp -m icmp --icmp-type 3 -m limit --limit 30/sec -j ACCEPT
$IPT -A INPUT -i ${_pub_if}  -p icmp -m icmp --icmp-type 5 -m limit --limit 30/sec -j ACCEPT
$IPT -A INPUT -i ${_pub_if}  -p icmp -m icmp --icmp-type 11 -m limit --limit 30/sec -j ACCEPT

Если сомневаетесь в поведении bash: цитируйте ненадежные данные.

Если у вас есть строка с пробелом в badips.db файл, то эта строка соответствует:

/sbin/iptables -A INPUT -i eth0 -s -j LOG --log-prefix " Drop BadIP "

Сообщение об ошибке не указывает на проблему из-за того, как iptables анализирует аргументы, изначально игнорируя тот факт, что -j не верный аргумент -s и застревает на следующем аргументе.

Текущее влияние вредоносных записей на ваш badips.db это «выполнение кода с привилегиями root», поэтому обязательно убедитесь, что ваш скрипт правильно обрабатывает недопустимые исходные IPS / Nets.