目录
防火墙是用于控制进出网络流量的安全设备或软件,可以基于网络层、传输层以及应用层的规则过滤流量。操作系统中的防火墙通常有两种类型:软件防火墙和硬件防火墙。在 Linux 和 Windows 系统中,我们主要讨论的是 软件防火墙。
Linux 防火墙操作
在 Linux 中,常用的防火墙工具是 iptables 和 firewalld(基于 iptables
的更高级的防火墙管理工具)。新的发行版(如 CentOS 7 及以后的版本)推荐使用 firewalld
,而较旧版本或用户喜欢 iptables
的则可以直接使用 iptables
。
使用 firewalld
(推荐)
firewalld
提供了一个动态的防火墙管理界面,允许管理不同的防火墙区域,支持防火墙规则的即时更改,而无需重新启动。
1. 查看 firewalld
状态
sudo systemctl status firewalld
如果服务未运行,可以使用以下命令启动它:
sudo systemctl start firewalld
2. 启用 firewalld
开机启动
sudo systemctl enable firewalld
3. 查看当前活跃的区域
sudo firewall-cmd --get-active-zones
4. 查看当前的规则
sudo firewall-cmd --list-all
5. 添加允许的端口
例如,允许 80(HTTP)端口:
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
--permanent
表示永久生效,若不加 --permanent
则只在当前会话有效。
6. 重载防火墙规则使修改生效
sudo firewall-cmd --reload
7. 删除某个规则
删除刚才添加的端口规则:
sudo firewall-cmd --zone=public --remove-port=80/tcp --permanent
8. 禁止访问某个服务
例如,禁止 SSH 访问:
sudo firewall-cmd --zone=public --remove-service=ssh --permanent
9. 开启某个服务
例如,允许 SSH 访问:
sudo firewall-cmd --zone=public --add-service=ssh --permanent
10. 查看防火墙规则
sudo firewall-cmd --list-all
使用 iptables
(传统方法)
iptables
是 Linux 中的传统防火墙工具,通常基于规则表来管理流量。
1. 查看现有的规则
sudo iptables -L
2. 添加规则(允许端口)
例如,允许 HTTP(80)端口:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
3. 删除规则(删除指定端口的规则)
例如,删除 HTTP(80)端口的规则:
sudo iptables -D INPUT -p tcp --dport 80 -j ACCEPT
4. 保存规则
在一些发行版中,iptables 的规则需要手动保存才能在重启后生效。例如,在 Ubuntu 中使用:
sudo iptables-save > /etc/iptables/rules.v4
在 CentOS 中使用:
sudo service iptables save
5. 清空所有规则
sudo iptables -F
6. 设置默认策略
例如,将输入链的默认策略设置为拒绝:
sudo iptables -P INPUT DROP
Windows 防火墙操作
在 Windows 中,防火墙管理可以通过 Windows 防火墙(Windows Firewall)或 高级安全 Windows 防火墙(Windows Firewall with Advanced Security)进行,后者允许更精细的规则设置。你可以使用 图形界面 或 命令行工具(如 netsh
和 PowerShell
)来管理防火墙。
使用 netsh
命令行工具
netsh
是 Windows 中用于配置网络的命令行工具,可以用来配置防火墙。
1. 查看防火墙状态
netsh advfirewall show allprofiles
2. 启用/禁用防火墙
-
启用防火墙:
netsh advfirewall set allprofiles state on
-
禁用防火墙:
netsh advfirewall set allprofiles state off
3. 查看防火墙规则
查看所有已启用的规则:
netsh advfirewall firewall show rule name=all
4. 创建一个允许端口的规则
例如,允许 80(HTTP)端口:
netsh advfirewall firewall add rule name="Allow HTTP" protocol=TCP dir=in localport=80 action=allow
5. 删除规则
netsh advfirewall firewall delete rule name="Allow HTTP"
使用 PowerShell
PowerShell 是一个功能强大的命令行工具,可以更灵活地管理防火墙。
1. 查看防火墙规则
Get-NetFirewallRule
2. 启用/禁用防火墙
-
启用防火墙:
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
-
禁用防火墙:
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
3. 创建一个允许端口的规则
例如,允许 80 端口:
New-NetFirewallRule -DisplayName "Allow HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
4. 删除规则
Remove-NetFirewallRule -DisplayName "Allow HTTP"
使用图形界面(Windows 防火墙)
- 打开防火墙设置:点击 控制面板 > 系统和安全 > Windows 防火墙。
- 启用/禁用防火墙:在左侧,选择“启用或关闭 Windows 防火墙”,然后根据需要进行选择。
- 创建新的规则:
- 在左侧点击“高级设置”进入“高级安全 Windows 防火墙”。
- 选择“入站规则”或“出站规则”,然后点击右侧的“新建规则”。
- 选择规则类型(端口、程序等),然后按提示完成设置。
总结
Linux 防火墙管理:
- 使用
firewalld
(推荐)管理防火墙规则。 - 使用
iptables
进行更低级的防火墙管理。 - 常见操作:添加/删除端口规则、查看规则、重载防火墙配置。
Windows 防火墙管理:
- 使用
netsh
或PowerShell
命令行工具进行防火墙管理。 - 图形界面可以通过控制面板访问进行更直观的操作。
- 常见操作:启用/禁用防火墙、创建/删除规则、查看现有规则。
通过三次握手和四次挥手,TCP能够保证端到端通信的可靠性和有效性,并且可以灵活处理各种网络状况。