使用iptables实现固定端口放行
Posted JohnnyFang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用iptables实现固定端口放行相关的知识,希望对你有一定的参考价值。
Linux防火墙是由Netfilter组件提供的,Netfilter工作在内核空间,集成在Linux内核中,采用模块化设计,具有良好的可扩充性,提供扩展各种网络服务的结构化底层框架。Netfilter与IP协议栈是无缝契合,并允许对数据报进行过滤、地址转换、处理等操作。iptables是防火墙工具之一,由软件包iptables提供的命令行工具,工作在用户空间,用来编写规则,写好的规则被送往netfilter,告诉内核如何去处理信息包。
本次实验要求为:使用iptables实现放行ssh、telnet、ftp、web服务80端口,其他端口服务全部拒绝。因笔者这边部分服务尚未学到,故测试部分只以ssh和web测试为例。
- 环境准备
笔者这边准备了两台虚拟机,主机名是LeoMessi的作为服务器端,主机名是centos7.9的作为客户端来进行测试。服务器端下载并开启httpd服务,客户端是可以访问的,同时客户端也能通过远程连接登录服务器端(如下图)。
- 制定规则转变为白名单策略
服务器端执行 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 命令,拒绝其他用户的所有请求(如下图)。
- 用户测试
返回客户端,此时再对服务器端进行web访问、ssh连接,均提示连接拒绝,甚至无法ping通10.0.0.153的网址(如下图)。
- 开放指定端口
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或地址段”。
- 客户端测试
此时,客户端已经可以正常访问服务器端的web,同时也能实现ssh登录,但是根据规则,服务器端拒绝4个端口外的其他任何请求,故客户端依旧无法ping通服务器端ip(如下图)。
以上是关于使用iptables实现固定端口放行的主要内容,如果未能解决你的问题,请参考以下文章
#私藏项目实操分享# 使用iptable实现: 放行telnet, ftp, web服务,放行samba服务,其他端口服务全部拒绝
Linux对外提供服务 网络连接 端口操作 1.开启服务监听端口 2.设置防火墙,放行访问端口的包 iptables&netfilter 四表五链和通堵策略