使用iptables实现固定端口放行

【使用iptables实现固定端口放行】高斋晓开卷,独共圣人语。这篇文章主要讲述使用iptables实现固定端口放行相关的知识,希望能为你提供帮助。
      Linux防火墙是由Netfilter组件提供的,Netfilter工作在内核空间,集成在Linux内核中,采用模块化设计,具有良好的可扩充性,提供扩展各种网络服务的结构化底层框架。Netfilter与IP协议栈是无缝契合,并允许对数据报进行过滤、地址转换、处理等操作。iptables是防火墙工具之一,由软件包iptables提供的命令行工具,工作在用户空间,用来编写规则,写好的规则被送往netfilter,告诉内核如何去处理信息包。
    本次实验要求为:使用iptables实现放行ssh、telnet、ftp、web服务80端口,其他端口服务全部拒绝。因笔者这边部分服务尚未学到,故测试部分只以ssh和web测试为例。

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



  1. ?制定规则转变为白名单策略?
    服务器端执行 ?iptables -F? 命令清空现有的规则,执行  ?iptables -vnL?  命令可查看当前有哪些规则。

    Linux系统默认防火墙策略是黑名单形式,并不是很安全;直接改成白名单策略的话,如果不小心清除了规则会导致无法进行远程连接。我们可以通过规则的制定,在不直接改变策略的情况将黑名单策略转化为白名单策略,只针对指定对象开放或只开放某些端口等。
    执行  ?iptables -A INPUT -s 10.0.0.1 -j ACCEPT? 命令,确保转化为白名单策略后,自己能通过Windows进行远程登录;执行  ?iptables -A INPUT -i lo -j ACCEPT?  命令,允许来自本主机回环网卡的访问;执行  ?iptables -A INPUT -j REJECT  ?命令,拒绝其他用户的所有请求??(如下图)??。



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



  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端口,并且将此条规则插入到第三条(??如下图)??。

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


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


    推荐阅读