![配置 iptables 时参数“LOG”错误](https://linux22.com/image/720334/%E9%85%8D%E7%BD%AE%20iptables%20%E6%97%B6%E5%8F%82%E6%95%B0%E2%80%9CLOG%E2%80%9D%E9%94%99%E8%AF%AF.png)
我正在尝试编写一个 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
答案1
如果对 bash 行为有疑问:引用不受信任的输入。
如果您的文件中只有一行只有一个空格badips.db
,那么该行相当于:
/sbin/iptables -A INPUT -i eth0 -s -j LOG --log-prefix " Drop BadIP "
错误消息并没有指出问题所在,因为 iptables 在解析参数时,最初忽略了-j
参数无效这一事实,-s
并卡在下一个参数上。
您当前恶意条目的影响badips.db
是“以 root 权限执行代码”,因此一定要确保您的脚本正确处理无效的源 ips/网络。