Linux中如何查看服务及监听端口和修改防火墙端口整理

################## 修改防火墙端口 #################

 

当Linux打开防火墙后,你会发现,从本机登录23端口是没有问题的,但是如果从另一台pc登录该linux系统后,你会发现提示这样的错误:

不能打开到主机的连接, 在端口 23: 连接失败

查看端口情况:service iptables status

因为linux防火墙默认是关闭23端口的,如果允许远程登录,可以关掉防火墙,也可以开防火墙开放23端口,具体如下:

即时生效,重启后失效

开启: service iptables start

关闭: service iptables stop

重启后生效

开启: chkconfig iptables on

关闭: chkconfig iptables off

在开启了防火墙时,做如下设置,开启相关端口

修改/etc/sysconfig/iptables 文件,添加以下内容:

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT

 

修改防火墙配置需要修改 /etc/sysconfig/iptables 这个文件,如果要开放哪个端口,在里面添加一条。
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

就可以了,其中 80 是要开放的端口号,然后重新启动linux的防火墙服务。

注意事项:

新添加的端口一定要放在下面这行上面,否则不起作用

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited


################## 详细方案介绍 #################

 

【实例:Linux中如何查看服务及监听端口】


问:我该如何发现哪种服务正在某个特定端口上监听呢?我如何发现哪一个程序正在一个特定端口上监听呢?

  答:在*NIX系统中,你可以使用下面的任何一个命令来得到在一个特定TCP端口上监听的列表。

  Lsof:其功能是列示打开的文件,包括监听端口。

  netstat :此命令象征性地展示各种与网络有关的数据和信息的内容。

  Lsof命令示例

  你可以输入下面的命令来查看IPv4端口:

  # lsof -Pnl +M -i4

  你可以输入下面的命令来查看IPv6协议下的端口列示:

  # lsof -Pnl +M -i6

这里我们不妨解释一 下。第一栏是command,它给出了程序名称的有关信息。请注意标题的细节。例如,第二行的gweather* 命令从美国 NWS服务器(140.90.128.70)获取天气的报告信息,包括交互天气信息网络和其它的天气服务。在这里,我们解释一下命令各个参数。

  1. -P :这个选项约束着网络文件的端口号到端口名称的转换。约束转换可以使lsof运行得更快一些。在端口名称的查找不能奏效时,这是很有用的。

  2. -n : 这个选项约束着网络文件的端口号到主机名称的转换。约束转换可以使lsof的运行更快一些。在主机名称的查找不能奏效时,它非常有用。

  3. -l :这个选项约束着用户ID号到登录名的转换。在登录名的查找不正确或很慢时,这个选项就很有用。

  4. +M :此选项支持本地TCP和UDP端口映射程序的注册报告。

  5. -i4 :仅列示IPv4协议下的端口。

  6. -i6 : 仅列示IPv6协议下的端口。

  Netstaty命令举例

  请输入下面的命令:

  # netstat -tulpn

  或者是

  # netstat -npl

  请看输出结果::

  Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

  tcp 0 0 0.0.0.0:6881 0.0.0.0:* LISTEN 6908/python

  tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 5562/cupsd

  tcp 0 0 127.0.0.1:3128 0.0.0.0:* LISTEN 6278/(squid)

  tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 5854/exim4

  udp 0 0 0.0.0.0:32769 0.0.0.0:* 6278/(squid)

  udp 0 0 0.0.0.0:3130 0.0.0.0:* 6278/(squid)

  udp 0 0 0.0.0.0:68 0.0.0.0:* 4583/dhclient3

  udp 0 0 0.0.0.0:6881 0.0.0.0:* 6908/python

  请注意,最后一栏给出了关于程序名称和端口的信息。在这里,我们解释一下各参数的含义:

  -t : 指明显示TCP端口

  -u : 指明显示UDP端口

  -l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)

  -p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。

  -n : 不进行DNS轮询(可以加速操作)

  关于/etc/services文件

  /etc/services是一个纯ASCII文件,它可以提供互联网服务的友好文本名称,还有其默认分配的端口号和协议类型。每一个网络程序都要进入这个文件得其服务的端口号(和协议)。你可以借助于cat命令或less命令等来查看这个文件:

  $ cat /etc/services

  $ grep 110 /etc/services

  $ less /etc/services

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统,你可以使用命令行工具来检查防火墙是否允许特定端口的进出连接。这里主要介绍两种常用的工具:`netstat` 和 `ufw(uncomplicated firewall)` 或 `iptables`。 1. **netstat** (适用于所有现代Linux发行版): - 使用 `netstat -tuln` 命令可以看到所有监听的TCP和UDP端口。如果某个端口显示为"LISTENING"状态,则表示该端口正在被监听,可能意味着防火墙已打开。 ``` netstat -tuln ``` 2. **ufw(Ubuntu/Debian)**: - 对于基于UFW的防火墙,可以输入 `sudo ufw status numbered` 来查看规则状态,找到你需要的端口号对应的条目,如果是`ALLOW IN`或`ALLOW OUT`则表示开火墙。 - 如果要临时检查某个端口,可以用 `sudo ufw allow <port number>`(例如 `sudo ufw allow 80`)后接 `sudo ufw status` 来查看。 3. **iptables(Red Hat/CentOS/Fedora)**: - 类似地,你可以用 `sudo iptables -L -n --line-numbers` 查看规则列表,找出行号对应端口的规则。如果看到类似 `-A INPUT -p tcp -m state --state NEW -m tcp --dport <port> -j ACCEPT` 的规则,说明该端口已开放。 - 或者使用 `sudo iptables -t nat -L PREROUTING` 和 `sudo iptables -t mangle -L INPUT` 分别查看nat表和mangle表的规则,查找与端口相关的转发或数据包处理规则。 如果你想要检查一个服务是否已经设置好并监听在指定端口上,可以直接尝试访问该端口,如`telnet <hostname> <port>` 或 `nc <hostname> <port>`。如果连接成功,说明防火墙已允许相应流量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值