Linux 防火墙

1、引言

1.1 简介

对于云服务器来说,防火墙开启和设置安全组是对云服务器的双重保护,如果选择关闭防火墙,建议安全组谨慎开放端口。

Linux基于其内核拥有多种形式的发行版,其中Ubuntu 基于 Debian,CentOS 基于 RHEL;而这两者之间的防火墙操作也有差异,这里我简单记录一下两者的基本使用命令

最后也简单记录一下windows下的端口操作

1.2 Linux通用命令

lsof(list open files)是一个查看当前系统文件的工具,参考:https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/lsof.html

# 下面的命令需要root权限,否则可能不会正常显示
# 查看某端口是否开放,如果没有信息出现则说明该端口还未开放
lsof -i:80
# 列出所有网络连接
lsof -i
# 累出所有tcp连接
lsof -i tcp
# 查看所有开放的端口
netstat -aptn
iptables -nL

1.3 docker注意项

默认情况下,Docker deamon会在启动container的时候向iptables中添加转发的规则。它会创建一个filter chain - DOCKER。docke利用这个规则向外暴露container的端口,即无需配置防火墙即可外网即可访问,这个操作对于生产环境还是很危险的。

Chain FORWARD (policy DROP)
target     prot opt source               destination
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0
...

Chain DOCKER (1 references)
target     prot opt source               destination

解决方案

#第一种方案
#在宿主机docker容器启动过程中使用 --iptables=false
docker run -p 80:8080 ubuntu bash --iptables=false
#第二种方案
#将docker容器的8080端口绑定到local主机的80端口上
docker run -p 127.0.0.1:80:8080 ubuntu bash

2、Ubuntu 操作系统

2.1 简介

官方手册:http://manpages.ubuntu.com/manpages/focal/man8/ufw.8.html

与Debian相同,Ubuntu 里也自带了 iptables,不一样的地方是还内置了 Ubuntu 专属的 UFW 管理工具,UFW 是 Uncomplicated Firewall 的简称,UFW 默认是不开启的。

2.2 ufw防火墙操作

ufw的配置文件在/etc/default/ufw,每次进行配置文件修改后需要重载reload一下;ufw 在 active的状态下,默认是deny all incoming connection, allow all outgoing connection.

# 查看防火墙状态,包括已开放端口
sudo ufw status
# 开启防火墙,如果已开启防火墙,忽略此步
sudo ufw enable
# 重载防火墙
sudo ufw reload
# 关闭防火墙
sudo ufw disable
# 设置防火墙默认权限
sudo ufw default deny
# 重置
sudo ufw reset
####################################
# 开放指定端口或者协议
sudo ufw allow 80
sudo ufw allow 80/tcp
sudo ufw allow https
sudo ufw allow 6000:7000/tcp
# 关闭普通端口,或者协议数字,需要先用status查看
sudo ufw delete allow 80
sudo ufw delete [num]
sudo ufw delete allow 80/tcp
# 开放指定IP地址
sudo ufw allow from 192.168.0.10
# 关闭指定IP地址
sudo ufw delete allow from 192.168.0.10
# 开放指定IP地址指定端口
sudo ufw allow from 192.168.0.10 to any port 3306
# 关闭指定IP地址指定端口
sudo ufw delete allow from 192.168.0.10 to any port 3306

2.3 ufw开启注意事项

⚠️ 我在没有配置过ufw allow端口前,直接开启了ufw防火墙,一段时间后发现ssh竟然无法连接,还好后面使用了云服务器的救援链接关闭ufw才可以重新进入。

在使用ufw前,请务必开启ssh协议或者22端口!

3、Centos操作系统

3.1 简介

CentOS 在 6 及之前的版本里只使用 iptables,从 7 开始其实和 Ubuntu 类似,提供了 firewalld 作为便捷配置防火墙的工具。与其他系统不同的是 firewalld 默认就是跟随系统启动的,并且规则默认是禁止所有端口进入(22 这种 SSH 必要端口除外)

对于firewalld 底层实际还是调用 iptables 来处理的,本身也是作为一个简化配置 iptables 的工具存在firewalld 的优点是规则即时生效,不用去手动刷新。但从 CentOS8 开始,nftables 作为新的防火墙后端开始替代 iptables,firewalld 也就变成了 nftables 的前端。

3.2 firewalld 防火墙

# 查看防火墙状态
sudo systemctl status firewalld.service
# 开启防火墙
sudo systemctl start firewalld.service
# 查看已开放端口
sudo firewall-cmd --list-ports
# 开放指定端口,或者协议
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --permanent --zone=public --add-port=100-500/udp
# 删除指定端口
sudo firewall-cmd --zone=public--remove-port=8080/tcp --permanent
# 重启防火墙
sudo systemctl reload firewalld.service
sudo systemctl restart firewalld.service

4、windows下端口检测

# 查找所有运行的端口
netstat -ano
# 查找指定端口
netstat -ano | finstr "4000"
# 查看占用端口的服务列表
tasklist|findstr "10972"
# 强制(/F参数)杀死 pid 为 9088 的所有进程包括子进程(/T参数)
askkill /T /F /PID 9088

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值