- 工信部备案号 滇ICP备05000110号-1
- 滇公安备案 滇53010302000111
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
复杂的网络环境中,服务器面临着各种各样的安全威胁。防火墙作为网络安全的第一道防线,对于保护运行 Ubuntu 系统的服务器至关重要。通过合理配置防火墙规则,可以限制网络访问,阻止未经授权的连接,从而有效保护系统资源和数据安全。本文将深入研究 Ubuntu 系统中常用的防火墙命令及其操作方法,帮助 Shell 脚本工程师更好地利用防火墙维护系统安全。
Ubntu 防火墙概述
Ubuntu 系统默认使用的防火墙工具是ufw(Uncomplicated Firewall),它是基于iptables的一个前端工具,提供了一种简单直观的方式来管理防火墙规则。iptables是 Linux 内核中集成的一个功能强大的数据包过滤系统,ufw简化了iptables的操作,使得普通用户和系统管理员能够更轻松地配置防火墙。
1.安装
如果系统未预装ufw,可以使用以下命令进行安装:
sudo apt update
sudo apt install ufw
2.检查状态
使用以下命令查看ufw的状态:
sudo ufw status
该命令会显示防火墙是否启用,以及当前的默认策略和已设置的规则。例如,输出可能如下
Status: inactive
表示防火墙当前未启用。
1.启用
要启用ufw,使用以下命令:
sudo ufw enable
启用时,系统会提示确认操作,因为启用防火墙可能会影响现有网络连接。确认后,防火墙将开始按照预设规则过滤网络流量。
2. 禁用:若要禁用ufw,可执行:
sudo ufw disable
禁用后,系统将不再对网络流量进行防火墙规则的过滤。
1.设置默认允许策略
默认情况下,ufw的策略是拒绝所有传入连接,允许所有传出连接。如果希望设置默认允许传入连接,可以使用以下命令:
sudo ufw default allow incoming
2.设置默认拒绝策略
若要恢复默认的拒绝传入连接策略,执行:
sudo ufw default deny incoming
同样,对于传出连接,也可以使用类似命令设置默认策略:
sudo ufw default allow outgoing
sudo ufw default deny outgoing
设置默认策略时需谨慎,尤其是允许传入连接的策略,可能会增加系统的安全风险。
1.允许特定端口
要允许特定端口的传入连接,例如允许 SSH 服务(默认端口 22),可以使用:
sudo ufw allow 22
如果要允许特定端口范围,如允许 8000 - 8005 端口的 TCP 连接:
sudo ufw allow 8000:8005/tcp
2.拒绝特定端口
拒绝某个端口的传入连接,比如拒绝 8080 端口的 TCP 连接:
sudo ufw deny 8080/tcp
3.根据应用程序配置
ufw还支持根据应用程序名称来配置规则。例如,要允许 Apache Web 服务器(假设已安装并配置了相应的应用程序配置文件)
sudo ufw allow 'Apache'
4.删除规则
若要删除已添加的规则,可以使用规则编号。首先通过sudo ufw status numbered查看规则编号,然后使用delete选项删除规则。例如,要删除编号为 3 的规则:
sudo ufw delete 3
虽然ufw提供了便捷的防火墙管理方式,但对于更复杂的需求,直接操作iptables可能更合适。iptables通过链(chain)和规则(rule)来管理数据包的过滤。
1.链
iptables有四个内置链,分别是INPUT(处理传入数据包)、OUTPUT(处理传出数据包)、FORWARD(处理转发数据包)和PREROUTING(在数据包到达路由决策之前处理)。
2.规则
规则定义了如何处理符合特定条件的数据包,包括匹配条件(如源 IP、目的 IP、端口号等)和动作(如接受、拒绝、丢弃等)。
1.允许特定 IP 访问
允许192.168.1.100这个 IP 地址访问本机的 SSH 服务(端口 22):
sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT
这里-A表示在链的末尾追加规则,-p tcp指定协议为 TCP,-s指定源 IP,--dport指定目的端口,-j ACCEPT表示接受该数据包。
2. 拒绝特定 IP 访问:拒绝10.0.0.1这个 IP 地址访问本机的任何服务:
sudo iptables -A INPUT -s 10.0.0.1 -j DROP
-j DROP表示丢弃该数据包。
3. 保存与恢复规则:iptables的规则在系统重启后默认不会保存。要保存当前的iptables规则,可以使用iptables -save命令将规则保存到文件,例如:
sudo iptables -save > /etc/iptables/rules.v4
对于 IPv6 的规则,可以使用类似命令保存到相应文件:
sudo ip6tables -save > /etc/iptables/rules.v6
在系统重启后,可以通过以下命令恢复规则:
sudo iptables -restore < /etc/iptables/rules.v4sudo ip6tables -restore < /etc/iptables/rules.v6
作为 Shell 脚本工程师,常常需要将防火墙规则集成到脚本中,以实现自动化的系统配置和管理。
假设我们要编写一个脚本,在系统初始化时配置防火墙规则,允许 SSH、HTTP 和 HTTPS 服务,并设置默认拒绝策略:
#!/bin/bash# 检查ufw是否安装,未安装则安装if! command -v ufw &> /dev/nullthen sudo apt update sudo apt install ufw -yfi# 启用ufwsudo ufw enable# 设置默认策略sudo ufw default deny incomingsudo ufw default allow outgoing# 允许SSH、HTTP和HTTPS服务sudo ufw allow 22sudo ufw allow 80sudo ufw allow 443
以下脚本使用iptables实现允许特定子网访问本机的 Web 服务(端口 80 和 443),并拒绝其他所有非必要的传入连接:
#!/bin/bash# 清除现有规则sudo iptables -Fsudo iptables -X# 设置默认策略为DROPsudo iptables -P INPUT DROPsudo iptables -P OUTPUT DROPsudo iptables -P FORWARD DROP# 允许环回接口流量sudo iptables -A INPUT -i lo -j ACCEPTsudo iptables -A OUTPUT -o lo -j ACCEPT# 允许特定子网访问Web服务sudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 80 -j ACCEPTsudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 443 -j ACCEPT# 允许已建立和相关的连接sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPTsudo iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
1.测试与备份
在进行任何防火墙配置更改之前,尤其是在生产环境中,一定要进行充分的测试。可以在测试环境中模拟各种网络访问场景,确保新的规则不会影响正常的业务运行。同时,备份当前的防火墙配置,以便在出现问题时能够快速恢复。
2.最小权限原则
遵循最小权限原则配置防火墙规则。只允许必要的网络访问,避免开放过多的端口和服务,以降低系统的安全风险。
3.定期审查
随着系统的运行和业务需求的变化,防火墙规则也需要定期审查和更新。及时删除不再使用的规则,确保防火墙配置始终与实际需求相符。
随着网络安全威胁的不断增加,合理配置防火墙规则已成为保护服务器系统安全的必要措施。通过使用ufw和iptables,系统管理员可以在Ubuntu环境下有效管理网络访问,限制潜在的风险。希望本文提供的防火墙配置方法和脚本示例能够为Shell脚本工程师和系统管理员提供实用的参考,帮助他们构建更加安全的服务器环境。
蓝队云官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,可以直接咨询。同时,蓝队云整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。
售前咨询
售后咨询
备案咨询
二维码
TOP