本篇文章给大家谈谈如何在Ubuntu 上检查、打开和关闭端口?,以及对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
传输层:负责端到端的通信。两个主要协议是TCP(传输控制协议)和UDP(用户数据报协议)。 TCP提供可靠的数据传输服务,保证数据包按顺序、无错误到达; UDP是一种无连接且不可靠的协议,适用于速度要求高于数据完整性的场景。应用层:在这一层,不同的网络服务通过不同的端口号来区分。端口是一个范围从0到65535的逻辑结构。每个端口对应一个正在运行的服务或应用程序,等待接收特定类型的数据。
端口类型
端口大致可以分为三类:
众所周知的端口:范围从0 到1023。这些端口被分配给特定服务。例如,HTTP服务使用80端口,HTTPS服务使用443端口。 注册端口:范围为102449151,通常用于非系统服务的公共应用程序。动态和/或私有端口(Dynamic and/or Private Ports):范围从49152到65535。它们通常不被预定义的服务占用,而是临时分配给客户端程序使用。
在Ubuntu上检查开放端口
在Ubuntu 系统中,检查哪些端口正在侦听或活动是确保服务正常运行或排除网络问题时的一项基本技能。
使用netstat命令
netstat 是一个功能强大的命令行工具,用于显示网络相关信息,例如网络连接、路由表、网络接口统计信息等。在检查开放端口时,以下是一些最常用的选项:
列出所有TCP 连接和监听端口:sudo netstat -tuln
这里的-t表示只显示TCP端口,-u用于显示UDP端口(可选),-l表示仅列出处于监听状态的端口,-n以数字形式显示IP和端口号,而不是试图解析它们。是主机名和服务名。
检查特定端口是否正在监听:sudo netstat -tuln | grep :端口
将port 替换为您要查询的端口号,例如80。
nmap工具
nmap是一款功能强大的网络探索和安全审计工具,不仅可以用来扫描本地主机,还可以用于远程主机的端口扫描。首先,确保nmap 已安装:
sudo apt-get install nmap 然后执行以下命令扫描本机开放端口:
sudo nmap -sT -O localhost 这里的-sT选项表示使用TCP连接扫描,-O尝试确定目标主机的操作系统类型。
lsof命令
lsof(LiSt Open Files)命令可以列出系统中所有当前打开的文件和网络端口。要查找占用特定端口的进程,可以使用:
sudo lsof -i :port
firewall-cmd(对于使用firewalld的情况)
尽管Ubuntu 默认情况下不使用firewalld,但如果您的系统上安装并启用了firewalld,则可以使用以下命令查看开放的端口:
sudofirewall-cmd –list-ports
ufw(Uncomplicated Firewall)
UFW是Ubuntu系统中常用的防火墙管理工具。它易于使用且功能强大。要查看UFW当前的规则,可以执行:
sudo ufw status verbose 这将列出所有入站和出站规则以及允许或拒绝哪些端口。
在Ubuntu上开启端口
确保服务可供外界使用通常需要正确配置系统防火墙以允许外部流量访问特定端口。在Ubuntu系统中,ufw(Uncomplicated Firewall)是最常用的防火墙管理工具,因为它简单易用且功能强大。
ufw基本操作
首先,确保ufw 已安装并启用。如果尚未启用,您可以使用以下命令安装并启用它:
sudo apt-get install ufwsudo ufw enable 打开单个端口
要允许外部访问某个TCP 端口,例如打开80 端口供Web 服务使用,请执行:
sudo ufw allowed 80/tcp 对于UDP 端口,只需将tcp 替换为udp,例如:
sudo ufw 允许53/udp 开放端口范围
如果需要打开一系列连续的端口,例如游戏服务器使用的端口范围,可以这样做:
sudo ufw allowed 27000:27015/tcp 指定入站或出站规则
默认情况下,上述命令适用于传入流量。要明确指定规则的方向,您可以添加in 或out,例如允许出站流量到达端口80:
sudo ufw allowed out 80/tcp
配置特定服务端口
许多网络服务,例如Web 服务器(Apache、Nginx)或数据库(MySQL、PostgreSQL)都有默认侦听端口。除了在防火墙中打开这些端口外,还需要确保服务配置正确。
Apache:默认监听80 端口。配置文件通常位于/etc/apache2/sites-available/000-default.conf 或特定站点配置文件中。 Nginx:默认也监听80端口。配置文件位于/etc/nginx/sites-available/default 或相应的站点配置文件中。 MySQL:默认监听3306端口。监听设置可以在/etc/mysql/mysql.conf.d/mysqld.cnf中找到。 PostgreSQL:默认监听5432端口,配置文件为/etc/postgresql/version/main/postgresql.conf。修改服务配置后,记得重新启动服务以使更改生效,例如重新启动Apache服务:
sudo systemctl restart apache2
iptables直接配置
虽然ufw提供了友好的界面,但在一些高级场景下,直接使用iptables命令行工具可以提供更细粒度的控制。下面是一个允许端口80 上的所有入站TCP 流量的简单示例:
sudo iptables -A INPUT -p tcp –dport 80 -j ACCEPT 请注意,直接修改iptables 规则时应谨慎,通常建议先备份现有规则:
sudo iptables-save /root/iptables.backup 完成规则修改后,使用iptables-save 命令保存规则,确保重启后仍然生效:
sudo iptables-保存| sudo tee /etc/iptables/rules.v4
在Ubuntu上关闭端口
关闭不必要的端口是提高系统安全性的重要措施,可以减少潜在的攻击面,防止未经授权的访问。
使用ufw关闭端口
关闭端口的操作与打开端口类似。只需将允许命令替换为拒绝或删除命令即可。
关闭单个端口: sudo ufw deny 22/tcp 上述命令将拒绝所有入站TCP 端口22 (SSH) 流量。如果规则已经存在,可以使用delete命令将其删除:
sudo ufw delete allowed 22/tcp 关闭端口范围:如果之前打开了某个端口范围,例如游戏端口27000 到27015,可以使用以下命令关闭:
sudo ufw deny 27000:27015/tcp
编辑服务配置关闭端口
关闭端口的另一种方法是首先阻止服务侦听该端口。这需要直接修改服务的配置文件。
Apache或Nginx:进入相应的配置文件,注释或修改监听端口的行,例如将Apache的监听端口从80更改为在localhost上监听(127.0.0.1:80)或完全关闭监听。数据库服务:如MySQL或PostgreSQL,同样修改或注释掉配置文件中的监听地址和端口,然后重新启动服务。
使用iptables关闭端口
直接使用iptables 关闭端口涉及删除或添加拒绝规则:
拒绝特定端口:如果之前允许端口22,您可以使用以下命令拒绝它:
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/162845.html
用户评论
墨城烟柳
终于找到解决方法了!之前一直在用windows,最近转到ubuntu学习,好多东西都 unfamiliar 。没想到这么简单就开/关端口了,感谢博主分享这种实用技巧!
有14位网友表示赞同!
一别经年
这篇教程好棒啊!我昨天刚在服务器上遇到一个问题,就是某个程序需要访问特定的端口,结果一直没法打开。看了你的博客后立马解决了,真是太厉害了!
有6位网友表示赞同!
鹿先森,教魔方
简单易懂,图文并茂,一看就明白了!ubuntu这方面确实要自己摸索一下,而且官网的说明文档真的很难理解啊,这个公众号拯救了我! 🙏🏻
有16位网友表示赞同!
夜晟洛
其实还有其他方法可以检查端口占用情况,比如netstat命令,我平时用的是那个,感觉更直观一点。不过你的文章也挺实用的,方便新手入门学习。
有12位网友表示赞同!
那伤。眞美
讲道理说,在linux下操作端口比windows容易多了,至少不用担心被防火墙阻挡之类的麻烦事。但总归要学会使用这些命令才能深入理解系统运作机制啊!
有6位网友表示赞同!
爱情的过失
端口开启关闭确实很重要,否则你的软件可能无法正常工作或者会被人恶意攻击。最近才开始学习安全方面的知识,看来这个教程很有帮助!
有13位网友表示赞同!
经典的对白
这个方法可以开通大部分常用的端口吗?我需要访问一些特殊的服务器资源,不知道能不能用这种方式打开。
有6位网友表示赞同!
巷雨优美回忆
ubuntu上的一些命令确实很难记忆,希望以后能总结成一个 cheat sheet 什么的。
有14位网友表示赞同!
心已麻木i
这篇教程说的很好啊!之前一直没有明白如何检查和控制端口的使用权限,现在明白了,非常感谢!
有8位网友表示赞同!
我的黑色迷你裙
感觉这篇文章有点太基础了,我已经是Ubuntu资深用户了,想了解一些更高级的操作方法,比如端口转发、监听特定类型的网络流量等等。
有8位网友表示赞同!
顶个蘑菇闯天下i
说真的,每次在Linux中操作命令都让人头疼,复杂的语法和各种参数让人望而却步!希望未来能有更直观的图形化工具来替代这些命令行操作。
有5位网友表示赞同!
小清晰的声音
端口检查和控制很重要啊,尤其是在开发和运维领域,需要谨慎管理开放的端口防止安全风险。
有10位网友表示赞同!
纯真ブ已不复存在
这篇文章写得真好,我刚学习ubuntu不久,很多地方都不太懂,这篇教程让我解决了好多问题!感谢分享!
有5位网友表示赞同!
墨染天下
我一直觉得Ubuntu的操作界面还是比较简洁的,不像Windows那么繁琐,但这并不意味着它是那么容易上手。有些底层命令还是需要花费时间去理解和记忆。
有10位网友表示赞同!
浅笑√倾城
希望以后能看到关于 Ubuntu 端口安全配置的详细介绍,比如防火墙规则设置、虚拟专用网(VPN)使用等等!
有19位网友表示赞同!
久爱不厌
我经常用Ubuntu构建开发环境,有时候需要开启一些特殊的端口,这个教程真是太实用啦!赞一个! 👍
有12位网友表示赞同!
余笙南吟
总而言之,要善加利用 Ubuntu 的强大的网络控制功能,不仅可以提升系统性能和安全性,还可以有效提高开发效率。
有19位网友表示赞同!
代价是折磨╳
我之前就遇到过无法连接到服务器的问题,后来才发现是端口被占用导致的。真希望早点看到这篇教程!
有9位网友表示赞同!
棃海
感觉这些操作还是挺关键的,以后需要好好学习一下,毕竟安全和稳定性还是很重要的!
有5位网友表示赞同!
(り。薆情海
Ubuntu真是一个强大的操作系统,功能强大,可定制性强,学习起来还是很有趣的!继续加油支持你!
有14位网友表示赞同!