iptables规则设置实例

目前公司需要做个验证,需要将两个网络段隔离,因此想到了通过iptables做相应的规则设置来达到目标。

网络现状

1.所有服务器都是内网网段(172.16.X.X),所有内网都是互通的;

2.所有服务器都能访问互联网,比如百度、阿里、腾讯等,但是外网无法访问内网IP;

测试要求

1.两台内网服务器A(172.16.6.100)和B(172.16.6.101);

2.要求服务器A不能访问互联网网络,但是能访问内网所有服务器(即能访问172.16.X.X网段的网络);

思路

1.先禁用掉所有出去的网络;

2.再允许部分我们需要的网络;

iptables设置

iptables -P OUTPUT DROP  # 禁用所有出去的网络
iptables -A OUTPUT -d 172.16.0.0/8 -j ACCEPT   # 允许部分出去的网络

这样A机器就无法访问百度、腾讯、阿里等互联网,只能访问172.16.X.X的网段的服务器了。可以通过ping www.baidu.com进行验证。

恢复网络

iptables -P OUTPUT ACCEPT   # 允许所有出去的网络

这样就可以放开前面的禁用规则了。同样可以通过ping www.baidu.com来进行验证。

下面列举一下常用的场景:

1.开放所有IP和端口

iptables -P INPUT ACCEPT   # 允许所有IP和端口访问本机
iptables -P OUTPUT ACCEPT  # 允许本机访问所有IP和端口

2.禁用所有IP和端口

iptables -P INPUT DROP   # 禁止所有IP和端口访问本机
iptables -P OUTPUT DROP  # 禁止本机访问所有IP和端口

3.关闭所有80端口

iptables -I INPUT -p tcp --dport 80 -j DROP 

4. 开启ip段192.168.1.0/24的80端口

iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 80 -j ACCEPT

iptables常用命令

命令-A, --append
    范例 iptables -A INPUT ...
    说明:新增规则到某个规则链中,该规则将会成为规则链中的最后一条规则。
命令 -D, --delete
    范例 iptables -D INPUT --dport 80 -j DROP
iptables -D INPUT 1
    说明:从某个规则链中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除。
命令 -R, --replace
    范例 iptables -R INPUT 1 -s 192.168.0.1 -j DROP
    说明:取代现行规则,规则被取代后并不会改变顺序。
命令 -I, --insert
    范例 iptables -I INPUT 1 --dport 80 -j ACCEPT
    说明:插入一条规则,原本该位置上的规则将会往后移动一个顺位。
命令 -L, --list
    范例 iptables -L INPUT
    说明:列出某规则链中的所有规则。
命令 -F, --flush
    范例 iptables -F INPUT
    说明:删除某规则链中的所有规则。
命令 -Z, --zero
    范例 iptables -Z INPUT
    说明:将封包计数器归零。封包计数器是用来计算同一封包出现次数,是过滤阻断式攻击不可或缺的工具。
命令 -N, --new-chain
    范例 iptables -N allowed
    说明:定义新的规则链。
命令 -X, --delete-chain
    范例 iptables -X allowed
    说明:删除某个规则链。
命令 -P, --policy
    范例 iptables -P INPUT DROP
    说明:定义过滤政策。也就是未符合过滤条件之封包,预设的处理方式。
命令 -E, --rename-chain
    范例 iptables -E allowed disallowed
    说明:修改某自订规则链的名称。

猜你喜欢

转载自blog.csdn.net/tl4832194/article/details/107840403