前言
笔者在内网部署了一台linux服务器,因是直接连接的路由器,不好搭建单独的内网,同时该服务器有存在重要资料,为保证网络环境的安全,故想切断该服务器与外网的连接,查阅网上资料,加上自己的实践与整理,经过不断的重启和配置及踩坑,最终得以实现,分享与需要的朋友。
1.先添加 22端口允许通行,否则会连不上 ssh,
添加input记录: iptables -A INPUT -p tcp --dport 22 -j ACCEPT
添加output记录:iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
2.保存规则文件
Ubuntu默认没有iptables配置文件,需通过iptables-save > /etc/network/iptables.up.rules
生成
iptables-save > /etc/network/iptables.up.rules
因为linux重启后规则就会失效,后面重启后需要使用 iptables-apply
进行重载文件 或者执行 iptables-restore < /etc/network/iptables.up.rules
重置规则
3.添加允许的规则
因OUTPUT 拒绝出站,会把被动出站请求响应断掉,所以需要开启允许内网段的被动出站
# 接受192.168的被动出站,否则请求无法返回
iptables -A OUTPUT -s 192.168.0.0/16 -j ACCEPT
# 根据实际情况来配置
iptables -A OUTPUT -s 172.18.0.0/16 -j ACCEPT
4.限制其他外网的访问
执行前确保已经允许ssh入站和出站,否则将会无法连接主机,切记切记
iptables -A OUTPUT -d 0.0.0.0/0 -j DROP
后期若想允许某个规则可出站,则直接配置在该条前面即可
保存规则
iptables-save > /etc/network/iptables.up.rules
最后配置文件如下
*filter
:INPUT ACCEPT [1207:87648]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
-A OUTPUT -d 192.168.0.0/16 -j ACCEPT
-A OUTPUT -d 172.18.0.0/16 -j ACCEPT
-A OUTPUT -j DROP
注意 要先配置允许的,然后才配置拒绝的,否则允许的规则将不生效
5.配置重启执行加载规则
因为linux重启后,所有规则将会消失,所有需要linux启动的时候执行以一下iptables-restore < /etc/network/iptables.up.rules
可以 /etc/rc.local中增加 该命令,重启的系统会执行一遍,ubuntu系统可能没有rc.local,需要添加,可自行百度添加,笔者这里不做重点赘述。
6.测试效果
ping 内网
# ping 192.168.2.193
PING 192.168.2.193 (192.168.2.193) 56(84) bytes of data.
64 bytes from 192.168.2.193: icmp_seq=1 ttl=128 time=2.62 ms
64 bytes from 192.168.2.193: icmp_seq=2 ttl=128 time=2.48 ms
64 bytes from 192.168.2.193: icmp_seq=3 ttl=128 time=2.36 ms
ping外网文章来源:https://www.toymoban.com/news/detail-691957.html
ping 114.114.114.114
PING 114.114.114.114 (114.114.114.114) 56(84) bytes of data.
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
以上即可完成内网访问外网的控制和隔绝文章来源地址https://www.toymoban.com/news/detail-691957.html
到了这里,关于Linux使用iptables实现内网隔断与外网控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!