Linux下开放端口
一、查看端口是否开放
1. 使用lsof 命令来查看端口是否开放
lsof -i:1025 //如果有显示说明已经开放了,如果没有显示说明没有开放
lsof(list open files)是一个列出当前系统打开文件的工具。
在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。
因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。
2.使用netstat 命令来查看端口是否开放
// 查看是否监听在0.0.0.0:1025
netstat -aptn |grep -i 1025 //a:all_sockets p:process t:tcp n:num
// 查看TCP类型的端口
netstat -lptn |grep -i 1025 //l:listening_sockets p:process t:tcp n:num
// 查看UDP类型的端口
netstat -lpun |grep -i 1025 //l:listening_sockets p:process u:udp n:num
netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
3. 使用telnet方式测试远程主机端口是否打开
// telnet IP 端口号
telnet 127.0.0.1 1025
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
二、使用firewall开放端口
因为centos7已经开始使用firewall作为防火墙,而不是iptables了,所以,开放8080端口就和以往不一样了, 下面我们就一起学习一下如何开放8080端口吧。
我们可以输入命令查看防火墙的状态:
firewall-cmd --state
如果上一步处于关闭状态,输入命令:
systemctl start firewalld.service
开启8080端口,输入命令:
firewall-cmd --zone=public --add-port=8080/tcp --permanent;
让我们来解释一下上一个命令:
- –zone=public:表示作用域为公共的;
- –add-port=8080/tcp:添加tcp协议的端口8080;
- –permanent:永久生效,如果没有此参数,则只能维持当前服务生命周期内,重新启动后失效
输入命令重启防火墙:
systemctl restart firewalld.service
输入命令重新载入配置:
firewall-cmd --reload
使用iptables开放端口
iptables是linux下的防火墙,同时也是服务名称。
- service iptables status 查看防火墙状态
- service iptables start 开启防火墙
- service iptables stop 关闭防火墙
- service iptables restart 重启防火墙
防火墙开放特定端口:
- ①文件/etc/sysconfig/iptables
- ②添加: -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 8080 -j ACCEPT ★数字8080代表开放8080端口,也可以改成其他的端口★
- ③重启防火墙
保存对防火墙的设置:
serivce iptables save
查看iptables规则及编号:
iptables -nL --line-number
关闭所有的INPUT FORWARD(转发)OUTPUT的所有端口:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
只打开22端口:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
参数讲解:
- –A 参数就看成是添加一条规则
- –p 指定是什么协议,我们常用的tcp 协议,当然也有udp,例如53端口的DNS
- –dport 就是目标端口,当数据从外部进入服务器为目标端口
- –sport 数据从服务器出去,则为数据源端口使用
- –j 就是指定是 ACCEPT -接收 或者 DROP 不接收
禁止某个IP访问:
iptables -A INPUT -p tcp -s 192.168.1.2 -j DROP –s 参数是来源(即192.168.1.2)
删除规则:
// 删除INPUT链编号为2的规则
iptables -D INPUT 2