iptables配置黑白名单
这些的指令适用对象是ap,网关路由器之类的,所以有一些FORWARD的配置,如果没带网络转发的机器,就没必要配置FORWAD。
配置黑白名单逻辑总体说比较简单
先说黑名单
首先清空以前的防护规则
iptables -F INPUT
iptables -F FORWARD
首先设置默认所有的访问都能够通过,没有匹配上任何规则的导致没有任何处理的访问
就按默 认操作处理(下面是的操作ACCEPT丢弃)
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
设置不可以访问通过的规则(下文中的IP地址只是举个例子,tcp也只是举个例子,icmp和 udp也是可以的)
iptables -I INPUT -p tcp -s 192.168.10.100 -j DROP
iptables -I FORWARD -p tcp -s 192.168.10.100 -d 192.168.10.101 -j DROP
... (你需要的类似的允许通过的规则可以继续添加)
允许所有的访问规则通过(由于使用的是-I(insert),后面的规则会被插入到 INPUT/FORWARD链最上面,规则被匹配的时候是从上面的的规则开始的)
iptables -I INPUT ACCEPT
iptables -I FORWARD ACCEPT
总的来说规则匹配的流程,
INPUT匹配,比如某个 从192.168.10.100 地址发出的访问数据包要访问本机(也就是被设置防火墙的机器,先匹配第四步设置的规则,然后匹配第三步设置的规则( iptables -I INPUT -p tcp -s 192.168.10.100 -d 192.168.10.101 -j DROP)匹配上了执行相应的操作-j DROP,也就是丢弃,于是该访问被拒绝了。如果是 从192.168.10.200 地址发出的访问数据包要访问本机,首先通过第四步的规则,由于第三步的规则不能与其匹配,也就是后面没有规则和其匹配了,那就按照默认操作允许访问。
FORWARD匹配,比如某个 从192.168.10.100 地址发出的访问数据包要访问ip 192.168.10.101(在同一个局域网)的机器,先匹配第四步设置的规则,然后匹配第三步设置的规则( iptables -I INPUT -p tcp -s 192.168.10.100 -j DROP)匹配上了执行相应的操作-j DROP,也就是丢弃,于是该访问被拒绝了。如果是 从192.168.10.200 地址发出的访问数据包要访问ip 192.168.10.101的机器,首先通过第四步的规则,由于第三步的规则不能与其匹配,也就是后面没有规则和其匹配了,那就按照默认操作允许访问。
黑名单的拦截原理也就如上所说。
再说白名单
白名单设置要比黑名单设置复杂一些
首先清空以前的防护规则
iptables -F INPUT
iptables -F FORWARD
首先设置默认所有的访问都能够通过,没有匹配上任何规则的导致没有任何处理的访问
就按默 认操作处理(下面是的操作DROP丢弃)
iptables -P INPUT DROP
iptables -P FORWARD DROP
设置不可以访问通过的规则(下文中的IP地址只是举个例子,tcp也只是举个例子,icmp和 udp也是可以的)
iptables -I INPUT -p tcp -s 192.168.10.100 -j ACCEPT
iptables -I FORWARD -p tcp -s 192.168.10.100 -d 192.168.10.101 -j ACCEPT
iptables -I FORWARD -p tcp -s 192.168.10.101 -d 192.168.10.100 -j ACCEPT
在这里岔开话题多讲一下
为什么白名单每一个访问规则同时需要一个反向的规则,因为访问是双向的,白名单会禁止默认的所有的访问规则,所以要完成一个访问需要设置正反向的规则,如同写信需要双方的地址,发信方向收信方地址,以便收信方回信实现访问这个过程。
收到信后需要回信,这是访问的必须过程,也就是首先访问端request,然后被访问端reponse
iptables -I FORWARD -p tcp -s 192.168.10.100 (如果没有 --sport xx ,访问端不指明源地址端口号,默认为添加所有端口号为源地址端口) -d 192.168.10.101 --dport 21:22 -j ACCEPT
iptables -I FORWARD -p tcp -s 192.168.10.101 --sport 21:22 -d 192.168.10.100 (如果没有 --sport xx ,访问端不指明目的地址端口号,默认为添加所有端口号为目的地址端口)-j ACCEPT
访问端口是由访问端随机决定的,而被访问端是被访问端的特定设置的,比如上面的规则是允许客服端访问ftp服务端,ftp服务端被访问端口特定为21(控制端口)和22(数据端口),客服端的端口可以不用指明,因为它被访问端随机分配的
...(你需要的类似的允许通过的规则可以继续添加)
允许所有的访问规则通过(由于使用的是-A(append),后面的规则会被追加到 INPUT/FORWARD链最下面,规则被匹配的时候是从上面的的规则开始的,也就是说第四步 的规则最后被匹配以及操作)
iptables -A INPUT DROP
iptables -A FORWARD DROP
总的来说规则匹配的流程,
INPUT匹配,比如某个 从192.168.10.100 地址发出的访问数据包要访问本机(也就是被设置防火墙的机器,先匹配第四步设置的规则,然后匹配第三步设置的规则( iptables -I INPUT -p tcp -s 192.168.10.100 -d 192.168.10.101 -j ACCEPT)匹配上了执行相应的操作-j ACCEPT,也就是接受,于是该访问被允许了。如果是 从192.168.10.200 地址发出的访问数据包要访问本机,首先通过第四步的规则,由于第三步的规则不能与其匹配,也就是后面没有规则和其匹配了,那就按照默认操作拒绝访问。
FORWARD匹配,比如某个 从192.168.10.100 地址发出的访问数据包要访问ip 192.168.10.101(在同一个局域网)的机器,先匹配第四步设置的规则,然后匹配第三步设置的规则( iptables -I INPUT -p tcp -s 192.168.10.100 -j ACCEPT)匹配上了执行相应的操作-j ACCEPT,也就是接受,于是该访问被允许了。如果是 从192.168.10.200 地址发出的访问数据包要访问ip 192.168.10.101的机器,首先通过第四步的规则,由于第三步的规则不能与其匹配,也就是后面没有规则和其匹配了,那就按照默认操作拒绝访问。
来源地址:https://blog.csdn.net/sinat_38390607/article/details/126355572
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341