Linux Debian ufw 防火墙命令相关笔记
Linux Debian ufw 防火墙命令相关笔记
01 Debian系统
1.1 ufw 命令介绍
ufw
(Uncomplicated Firewall)是一个用于配置Linux防火墙规则的前端工具,旨在简化防火墙管理。它为iptables提供了一个易于使用的接口,并且支持丰富的规则和日志记录功能。以下是关于 ufw
的一些基本命令及其使用示例:
1.1.1 安装 UFW
在某些发行版上,ufw
可能默认未安装。你可以通过以下命令安装它(适用于Debian/Ubuntu系统):
1 |
|
对于CentOS/RHEL系统,可以使用EPEL仓库来安装:
1 |
|
1.1.2 基本命令
启用和禁用UFW:
- 启用:
sudo ufw enable
- 禁用:
sudo ufw disable
- 启用:
检查状态:
- 查看当前状态:
sudo ufw status
- 详细状态:
sudo ufw status verbose
- 查看当前状态:
允许或拒绝端口:
- 允许特定端口:
sudo ufw allow <port>/<protocol>
(例如,sudo ufw allow 80/tcp
) - 拒绝特定端口:
sudo ufw deny <port>/<protocol>
(例如,sudo ufw deny 22/tcp
)
- 允许特定端口:
基于IP地址允许或拒绝流量:
- 允许来自特定IP的流量:
sudo ufw allow from <IP>
- 拒绝来自特定IP的流量:
sudo ufw deny from <IP>
- 允许到特定IP的流量:
sudo ufw allow to <IP>
- 拒绝到特定IP的流量:
sudo ufw deny to <IP>
- 允许来自特定IP的流量:
删除规则:
- 删除编号规则:首先使用
sudo ufw status numbered
查看带编号的规则列表,然后用sudo ufw delete <number>
删除。 - 直接删除规则:
sudo ufw delete allow <port>/<protocol>
- 删除编号规则:首先使用
重置所有规则:
- 这将清除所有现有的规则并禁用UFW:
sudo ufw reset
- 这将清除所有现有的规则并禁用UFW:
日志记录:
- 开启日志记录:
sudo ufw logging on
- 设置日志级别(如low, medium, high, full):
sudo ufw logging <level>
- 开启日志记录:
1.1.3 示例
允许SSH访问:
1
sudo ufw allow ssh
允许HTTP和HTTPS服务:
1
2sudo ufw allow http
sudo ufw allow https仅允许来自特定子网的SSH连接:
1
sudo ufw allow from 192.168.1.0/24 to any port 22
允许来自特定子网的所有入站流量
1
2
3sudo ufw allow in from 10.10.0.0/24 to any port any proto any
# 更简单命令
sudo ufw allow in from 10.10.0.0/24阻止所有入站流量,除了已明确允许的:
1
sudo ufw default deny incoming
允许所有出站流量:
1
sudo ufw default allow outgoing
查看带有编号的规则列表:
1
sudo ufw status numbered
删除第一条规则:
1
sudo ufw delete 1
设置日志记录为高优先级:
1
sudo ufw logging high
请记住,在生产环境中操作防火墙时要格外小心,尤其是在远程服务器上工作时,错误的配置可能导致你失去对服务器的访问权限。建议在测试环境中先熟悉这些命令,并确保有备份方案或恢复途径。
1.2 关闭IPv6
要在Debian 12中通过修改修改内核参数的方法来关闭IPv6,你可以编辑系统的网络配置文件和内核参数。以下是具体步骤:
编辑
/etc/sysctl.conf
文件: 打开或创建这个文件,并添加以下行以禁用IPv6:1
2
3net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1应用更改: 使用
sysctl
命令加载新的内核参数,使更改立即生效。1
sysctl -p
查看IPv6关闭情况
1
2
3
4
5
6
7
8[root@nextcloud nextcloud]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.10.0.250 netmask 255.255.255.0 broadcast 10.10.0.255
ether bc:24:11:e6:22:96 txqueuelen 1000 (Ethernet)
RX packets 4810454 bytes 866191241 (826.0 MiB)
RX errors 0 dropped 289 overruns 0 frame 0
TX packets 535082 bytes 318246448 (303.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
02 CentOS 7系统
2.1 防火墙配置
在CentOS 7中,若要对特定网段(如10.10.0.1/24)开放所有端口,可以使用firewalld
来设置规则。下面是具体步骤:
确保firewalld正在运行: 首先确认
firewalld
服务是否已启动并设置为开机自启。1
systemctl status firewalld
如果未启动,使用以下命令启动并设置开机自启:
1
2systemctl start firewalld
systemctl enable firewalld添加富规则以允许来自指定网段的所有流量: 使用
firewall-cmd
命令添加一条富规则,允许来自10.10.0.0/24网段的所有入站流量。1
2sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.10.0.0/24" accept'
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.10.0.0/24" accept'重新加载firewalld配置: 为了使新添加的规则生效,需要重新加载
firewalld
配置。1
firewall-cmd --reload
验证规则是否生效: 可以通过查看当前激活的规则来验证是否正确添加了新的规则。
1
firewall-cmd --list-all
以上步骤将对10.10.0.1/24网段开放所有端口,意味着该网段内的所有IP地址都可以访问服务器上的所有服务和端口。
请注意,开放所有端口可能会带来安全风险,因此建议只开放必要的端口,并且定期审查防火墙规则以确保安全性。如果你只需要开放某些特定的服务端口给这个网段,请相应地调整上述命令中的规则。
2.2 关闭IPv6
要在CentOS 7中通过修改修改内核参数的方法来关闭IPv6,你可以编辑系统的网络配置文件和内核参数。以下是具体步骤:
编辑
/etc/sysctl.conf
文件: 打开或创建这个文件,并添加以下行以禁用IPv6:1
2
3net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1应用更改: 使用
sysctl
命令加载新的内核参数,使更改立即生效。1
sysctl -p
查看IPv6关闭情况
1
2
3
4
5
6
7
8[root@nextcloud nextcloud]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.10.0.250 netmask 255.255.255.0 broadcast 10.10.0.255
ether bc:24:11:e6:22:96 txqueuelen 1000 (Ethernet)
RX packets 4810454 bytes 866191241 (826.0 MiB)
RX errors 0 dropped 289 overruns 0 frame 0
TX packets 535082 bytes 318246448 (303.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0