Categories
坐骑幻化

问题:怎么查看服务器开了哪些端口

处理步骤:

1、查找可疑的进程、端口ss命令查看所有本机监听的端口,如果有docker或隐藏的端口用 lsof命令具体查找

2、关闭进程、端口

3、设置黑白名单的放行和拦截规则(含解除规则)

步骤一、查找本机监听的端口(ss命令或者 lsof命令) 查看端口和对应的程序是否正确

ss -tlnp | grep LISTEN 一般工作中用这个比较多:ss -tlnp

或者 losf -i -p -n | grep LISTEN

参数解: -l 只看监听端口;-t 只看TCP;-n 不解析域名;-p 显示占用端口的进程PID/程序名

进一步过滤具体端口:

lsof -i: 8080 -p -n

查看指定进程打开的所有端口:

lsof -p -i -p -n

【查看具体哪个进程占用了端口】:

lsof -i:8080

步骤二、停止进程,关闭可疑的服务

systemctl stop <服务名>

systemctl disable <服务名>

步骤三、防火墙加入黑白名单

防火墙加上保险(拒绝其他IP访问该端口)

命令解释:阻止外部所有机器通过 TCP 协议访问本机指定端口

iptables -A INPUT -p tcp --dport <端口号> -j DROP

让别人IP访问本机指定端口(这是一组命令,都要执行)

命令解释:白名单:放行指定IP访问目标端口

iptables -A INPUT -p tcp --dport <端口号> -s <对方的IP> -j ACCEPT

iptables -A INPUT -p tcp --dport <端口号> -j DROP 注意:这条是兜底保险

答疑:为什么要执行两条命令?

系统 INPUT 链默认策略是 ACCEPT(绝大多数服务器默认配置),第二条命令是兜底用的,即使系统 INPUT 默认策略是 DROP,有第二条也不影响。

防火墙的规则是按顺序执行,放行的IP只要匹配到第一条,就不会执行下面这条了。

步骤四、解除某个端口的黑白名单 --本质就是删除上面设置的lan'jie

方式一、用 -D 删除完整匹配的 DROP 规则(不用记行号),本质是删除最底行的所有IP限行规则

iptables -D INPUT -p tcp --dport <端口号> -j DROP

如果设置的指定IP放行规则也要删除,则执行下面

iptables _-D INPUT -p tcp --dport <> -s <对方IP> -j ACCEPT

方式二、通过查找'底行的所有IP限行规则'的行号,删除行号的方式删除

先查看当前规则,确认规则在哪一条

iptables -L -n --line-number

参数解释:--line-number 会显示每条规则的序号,方便精准删除

假设看到 DROP 规则在第 10 行,执行删除:

iptables -D INPUT 10

删除后查看防火墙规则,验证没有之前设置的指定IP放行,所有IP限行的规则

iptables -L -n

看两点

1、有没有 --dport 端口 -j ACCEPT 放行规则

2、有没有 --dport 端口 -j DROP/REJECT 拦截规则

最后要保存规则(iptables是临时存储的,linux重启后会恢复旧的配置)

CentOS/RHEL:执行 bash:service iptables save 保存规则