iptables删除IP地址
时间:2020-01-09 10:41:40 来源:igfitidea点击:
在Linux下,如何使用iptables命令阻止特定的IP地址或主机?
您需要使用以下语法通过iptables命令删除IP地址或主机。
阻止来自IP 1.2.3.4的传入请求
以下命令将丢弃来自IP地址1.2.3.4的所有数据包:
/sbin/iptables -I INPUT -s {IP-HERE} -j DROP /sbin/iptables -I INPUT -s 1.2.3.4 -j DROP
您还可以指定一个接口,例如eth1,通过该接口接收数据包:
/sbin/iptables -I INPUT -i {INTERFACE-NAME-HERE} -s {IP-HERE} -j DROP /sbin/iptables -I INPUT -i eth1 -s 1.2.3.4 -j DROP
请注意,当!参数在接口名称之前使用,含义相反:
/sbin/iptables -I INPUT ! -i {INTERFACE-NAME-HERE} -s {IP-HERE} -j DROP /sbin/iptables -I INPUT ! -i eth1 -s 1.2.3.4 -j DROP
如果接口名称以+结尾,则任何以该名称开头的接口都将匹配。
如果省略此选项,则任何接口名称都将匹配:
/sbin/iptables -I INPUT -i {INTERFACE-NAME-HERE}+ -s {IP-HERE} -j DROP /sbin/iptables -I INPUT -i br+ -s 1.2.3.4 -j DROP
您可以将-I INPUT(插入)替换为-A INPUT(追加)规则,如下所示:
/sbin/iptables -A INPUT -s 1.2.3.4 -j DROP /sbin/iptables -i eth1 -A INPUT -s 1.2.3.4 -j DROP
如何阻止子网(xx.yy.zz.ww/ss)?
使用以下语法在eth1公共接口上阻止10.0.0.0/8:
# /sbin/iptables -i eth1 -A INPUT -s 10.0.0.0/8 -j DROP
如何阻止和记录丢弃的IP地址信息?
您可以使用LOG目标打开匹配数据包的内核日志记录,如下所示:
# /sbin/iptables -i eth1 -A INPUT -s 10.0.0.0/8 -j LOG --log-prefix "IP DROP SPOOF A:"
下一条规则实际上将删除ip /子网:
# /sbin/iptables -i eth1 -A INPUT -s 10.0.0.0/8 -j DROP
如何查看被阻止的IP地址?
只需使用以下命令:
# /sbin/iptables -L -v
或者
# /sbin/iptables -L INPUT -v
或者
# /sbin/iptables -L INPUT -v -n
输出示例:
Chain INPUT (policy ACCEPT 3107K packets, 1847M bytes) pkts bytes target prot opt in out source destination 0 0 DROP all -- br+ any 1.2.3.4 anywhere 0 0 DROP all -- !eth1 any 1.2.3.4 anywhere 0 0 DROP all -- !eth1 any 1.2.3.4 anywhere
如何搜索被阻止的IP地址?
使用grep命令,如下所示:
# /sbin/iptables -L INPUT -v -n | grep 1.2.3.4
如何删除被阻止的IP地址?
首先,您需要显示被阻止的IP地址以及行号和其他信息,执行:
# iptables -L INPUT -n --line-numbers # iptables -L INPUT -n --line-numbers | grep 1.2.3.4
输出示例:
num pkts bytes target prot opt in out source destination 1 0 0 DROP 0 -- * * 116.199.128.1 0.0.0.0/0 2 0 0 DROP 0 -- * * 116.199.128.10 0.0.0.0/0 3 0 0 DROP 0 -- * * 123.199.2.255 0.0.0.0/0
要删除行号3(123.199.2.255),请执行:
# iptables -D INPUT 3
验证相同,执行:
# iptables -L INPUT -v -n
您还可以使用以下语法:
# iptables -D INPUT -s 1.2.3.4 -j DROP
如何保存被阻止的IP地址?
如果您使用的是Redhat/RHEL/CentOS/Fedora Linux,请输入以下命令:
# iptables -D INPUT -s 1.2.3.4 -j DROP ########################## #////// command to save iptables ///////# ########################## # /sbin/service iptables save # less /etc/sysconfig/iptables # grep '1.2.3.4' /etc/sysconfig/iptables
对于所有"其他Linux发行版",请使用iptables-save命令将IP表的内容转储到文件中:
# iptables-save > /root/myfirewall.conf
请不要在添加或删除IP地址后立即运行iptables-save或service iptables保存。
有关还原防火墙的注意事项
要恢复防火墙,请使用iptables-restore命令从名为/root/myfirewall.conf的文件恢复IP表,执行:
# iptables-restore < /root/myfirewall.conf
如何阻止大量IP地址或子网?
您需要编写如下的shell脚本:
#!/bin/bash _input="/root/blocked.ip.db" IPT=/sbin/iptables $IPT -N droplist egrep -v "^#|^$" x | while IFS= read -r ip do $IPT -A droplist -i eth1 -s $ip -j LOG --log-prefix "IP BlockList " $IPT -A droplist -i eth1 -s $ip -j DROP done < "$_input" # Drop it $IPT -I INPUT -j droplist $IPT -I OUTPUT -j droplist $IPT -I FORWARD -j droplist
阻止来自局域网IP 192.168.1.200的发送请求?
使用以下语法:
# /sbin/iptables -A OUTPUT -s 192.168.1.200 -j DROP # /sbin/service iptables save
当数据包通过另一个接口发送时,您也可以使用FORWARD默认链。
将Linux设置为路由器时通常使用FORWARD:
# /sbin/iptables -A FORWARD -s 192.168.1.200 -j DROP # /sbin/service iptables save