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
1 | # 下面的命令需要root权限,否则可能不会正常显示 |
1.3 docker注意项
默认情况下,Docker deamon会在启动container的时候向iptables中添加转发的规则。它会创建一个filter chain - DOCKER
。docke利用这个规则向外暴露container的端口,即无需配置防火墙即可外网即可访问,这个操作对于生产环境还是很危险的。
1 | Chain FORWARD (policy DROP) |
解决方案
1 | #第一种方案 |
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.
1 | # 查看防火墙状态,包括已开放端口 |
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 防火墙
1 | # 查看防火墙状态 |
4、windows下端口检测
1 | # 查找所有运行的端口 |