0
点赞
收藏
分享

微信扫一扫

使用iptables实现固定端口放行

    Linux防火墙是由Netfilter组件提供的,Netfilter工作在内核空间,集成在Linux内核中,采用模块化设计,具有良好的可扩充性,提供扩展各种网络服务的结构化底层框架。Netfilter与IP协议栈是无缝契合,并允许对数据报进行过滤、地址转换、处理等操作。iptables是防火墙工具之一,由软件包iptables提供的命令行工具,工作在用户空间,用来编写规则,写好的规则被送往netfilter,告诉内核如何去处理信息包。

    本次实验要求为:使用iptables实现放行ssh、telnet、ftp、web服务80端口,其他端口服务全部拒绝。因笔者这边部分服务尚未学到,故测试部分只以ssh和web测试为例。

  1. 环境准备

    笔者这边准备了两台虚拟机,主机名是LeoMessi的作为服务器端,主机名是centos7.9的作为客户端来进行测试。服务器端下载并开启httpd服务,客户端是可以访问的,同时客户端也能通过远程连接登录服务器端​(如下图)​。

使用iptables实现固定端口放行_服务器端


  1. 制定规则转变为白名单策略

    服务器端执行 ​iptables -F​ 命令清空现有的规则,执行 ​iptables -vnL​ 命令可查看当前有哪些规则。

使用iptables实现固定端口放行_服务器端_02

    Linux系统默认防火墙策略是黑名单形式,并不是很安全;直接改成白名单策略的话,如果不小心清除了规则会导致无法进行远程连接。我们可以通过规则的制定,在不直接改变策略的情况将黑名单策略转化为白名单策略,只针对指定对象开放或只开放某些端口等。

    执行 ​iptables -A INPUT -s 10.0.0.1 -j ACCEPT​ 命令,确保转化为白名单策略后,自己能通过Windows进行远程登录;执行 ​iptables -A INPUT -i lo -j ACCEPT​ 命令,允许来自本主机回环网卡的访问;执行 ​iptables -A INPUT -j REJECT ​命令,拒绝其他用户的所有请求​(如下图)​。

使用iptables实现固定端口放行_客户端_03


  1. 用户测试

    返回客户端,此时再对服务器端进行web访问、ssh连接,均提示连接拒绝,甚至无法ping通10.0.0.153的网址​(如下图)​。

使用iptables实现固定端口放行_客户端_04


  1. 开放指定端口

    ssh、telnet、ftp和web服务的端口分别为22、23、21和80,此处涉及到多个端口,虽然我们也可以一个端口一条规则的去添加,但这样难免会显得繁琐,此时可以用到multiport扩展,它能以离散方式定义多端口匹配,并且最多指定15个端口。

    服务器端执行 ​iptables -I INPUT 3 -p tcp  -m multiport --dport 21:23,80 -j ACCEPT​ 命令,即可允许所有用户访问21-23和80端口,并且将此条规则插入到第三条(​如下图)​。

使用iptables实现固定端口放行_白名单_05

    如果只对某个ip或者某个ip段开放,也可在-p前面加上“-s 指定ip或地址段”。


  1. 客户端测试

    此时,客户端已经可以正常访问服务器端的web,同时也能实现ssh登录,但是根据规则,服务器端拒绝4个端口外的其他任何请求,故客户端依旧无法ping通服务器端ip​(如下图)​。

使用iptables实现固定端口放行_服务器端_06

举报

相关推荐

0 条评论