当前位置: 首页 > news >正文

如何配置防火墙提高服务器安全性

配置防火墙是提高服务器安全性的重要措施之一。防火墙可以控制网络流量,限制未经授权的访问,防止恶意攻击。以下是配置防火墙以提高服务器安全性的详细指南。


一、为什么需要配置防火墙

防火墙的主要作用是:

  1. 限制未经授权的访问:只允许可信任的流量通过。
  2. 防止恶意攻击:如 DDoS 攻击、端口扫描和入侵尝试。
  3. 保护敏感服务:确保只有特定 IP 地址或网络能够访问关键服务(如 SSH、数据库等)。

二、常见防火墙工具

  1. Linux 系统

    • UFW(Uncomplicated Firewall):Ubuntu 和 Debian 系推荐,易于配置。
    • firewalld:CentOS 和 RHEL 系推荐,动态管理规则。
    • iptables:强大但复杂,可直接管理内核的防火墙功能。
    • nftables:现代化替代 iptables,性能更高。
  2. Windows 系统

    • Windows 防火墙(Windows Defender Firewall):内置于 Windows 系统。
    • 第三方防火墙:如 Sophos、Comodo。
  3. 云防火墙

    • 公有云提供的防火墙(如 AWS Security Groups、阿里云安全组、Azure NSG)。

三、防火墙配置基础(以 Linux 为例)

1. 使用 UFW 配置防火墙(适用于 Ubuntu/Debian)

(1)安装和启用 UFW

bash

复制

sudo apt update
sudo apt install ufw -y
sudo ufw enable
(2)查看当前防火墙状态

bash

复制

sudo ufw status
(3)设置默认规则

默认规则应禁止所有入站流量,允许所有出站流量:

bash

复制

sudo ufw default deny incoming
sudo ufw default allow outgoing
(4)允许必要的端口

根据服务器需求,允许需要的端口:

  • SSH(默认端口 22)

    bash

    复制

    sudo ufw allow 22
    
    如果修改了 SSH 端口(如改为 2222):

    bash

    复制

    sudo ufw allow 2222
    
  • HTTP(端口 80)和 HTTPS(端口 443)

    bash

    复制

    sudo ufw allow 80
    sudo ufw allow 443
    
  • 其他服务
    例如允许 MySQL 数据库(端口 3306):

    bash

    复制

    sudo ufw allow 3306
    
(5)限制特定 IP 的访问
  • 允许特定 IP 访问 SSH:

    bash

    复制

    sudo ufw allow from 192.168.1.100 to any port 22
    
  • 禁止特定 IP:

    bash

    复制

    sudo ufw deny from 192.168.1.200
    
(6)启用防火墙并重新加载

确保规则生效:

bash

复制

sudo ufw reload

2. 使用 firewalld 配置防火墙(适用于 CentOS/RHEL)

(1)安装和启用 firewalld

bash

复制

sudo yum install firewalld -y
sudo systemctl start firewalld
sudo systemctl enable firewalld
(2)查看当前防火墙状态

bash

复制

sudo firewall-cmd --state
sudo firewall-cmd --list-all
(3)设置默认规则
  • 默认拒绝所有入站流量:

    bash

    复制

    sudo firewall-cmd --set-default-zone=drop
    
  • 查看默认区域:

    bash

    复制

    sudo firewall-cmd --get-default-zone
    
(4)允许必要的端口
  • 允许 SSH

    bash

    复制

    sudo firewall-cmd --permanent --add-service=ssh
    
  • 允许 HTTP 和 HTTPS

    bash

    复制

    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
    
  • 允许自定义端口
    例如允许端口 8080:

    bash

    复制

    sudo firewall-cmd --permanent --add-port=8080/tcp
    
(5)限制特定 IP 的访问
  • 允许特定 IP 访问 SSH:

    bash

    复制

    sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' port protocol='tcp' port='22' accept"
    
  • 禁止特定 IP:

    bash

    复制

    sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.200' drop"
    
(6)重新加载规则

bash

复制

sudo firewall-cmd --reload

3. 使用 iptables 配置防火墙(适用于所有 Linux 系统)

(1)查看当前规则

bash

复制

sudo iptables -L -v
(2)设置默认规则
  • 默认拒绝所有入站流量:

    bash

    复制

    sudo iptables -P INPUT DROP
    
  • 默认允许所有出站流量:

    bash

    复制

    sudo iptables -P OUTPUT ACCEPT
    
(3)允许必要的端口
  • 允许 SSH

    bash

    复制

    sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    
  • 允许 HTTP 和 HTTPS

    bash

    复制

    sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
    
(4)限制特定 IP 的访问
  • 允许特定 IP 访问:

    bash

    复制

    sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT
    
  • 禁止特定 IP:

    bash

    复制

    sudo iptables -A INPUT -s 192.168.1.200 -j DROP
    
(5)保存规则

根据系统选择保存命令:

  • Ubuntu:

    bash

    复制

    sudo iptables-save > /etc/iptables/rules.v4
    
  • CentOS:

    bash

    复制

    sudo service iptables save
    

四、Windows 防火墙配置

1. 打开 Windows 防火墙

  • Win + R,输入 firewall.cpl,回车。

2. 配置入站规则

  1. 点击“高级设置”。
  2. 在“入站规则”中,点击“新建规则”。
  3. 选择“端口”,点击“下一步”。
  4. 选择协议(如 TCP),输入端口号(如 22)。
  5. 选择“允许连接”,点击“下一步”。
  6. 按需求选择应用的网络类型(如“公用”或“专用”)。
  7. 为规则命名并保存。

3. 配置出站规则

类似入站规则的配置,但用于限制服务器发出的流量。

4. 限制特定 IP

在规则设置中,选择“作用域”,为允许或禁止的 IP 设置范围。


五、云防火墙配置

如果服务器运行在云环境中(如 AWS、阿里云、Azure),需要配置云防火墙(安全组):

  1. 登录云平台
  2. 定位安全组
    • AWS:Security Groups。
    • 阿里云:安全组规则。
    • Azure:网络安全组(NSG)。
  3. 配置入站规则:
    • 开放必要的端口(如 SSH、HTTP)。
    • 限制特定 IP 的访问。
  4. 配置出站规则(可选)。

六、防火墙配置建议

  1. 最小化开放端口

    • 仅开放必要的端口,例如:
      • SSH:22(或修改为其他端口)。
      • HTTP:80、HTTPS:443。
      • 数据库:仅对内部网络开放(如 3306)。
    • 禁止未使用的服务端口。
  2. 限制访问范围

    • SSH 和数据库服务仅允许可信任的 IP 地址访问。
    • 使用 VPN 或跳板机访问敏感服务。
  3. 启用日志记录

    • 开启防火墙日志记录,以便监控异常流量。
  4. 防止恶意扫描

    • 配合防火墙使用工具(如 Fail2Ban),自动封禁多次失败尝试的 IP。
  5. 定期审查规则

    • 每隔一段时间检查防火墙规则,移除不必要的规则。

通过合理配置防火墙,可以显著提高服务器的安全性,减少恶意流量、入侵和攻击的风险。将防火墙与其他安全措施(如 SSH 密钥、定期更新系统)结合使用,才能构建一个全面的安全防护体系。

http://www.lryc.cn/news/506582.html

相关文章:

  • java集合-Map HashMap 源码解析
  • 案例分享|企查查的数据降本增效之路
  • 图书馆管理系统(四)基于jquery、ajax--完结篇
  • 什么是Modbus协议网关?
  • Docker 容器中启用 SSH 服务
  • Linux系统—利用systemd管控系统以及服务详解(十四)
  • 人工智能 AI 大模型研究设计与实践应用技术毕业论文
  • 已有 containerd 的情况下部署二进制 docker 共存
  • VSCode 搭建Python编程环境 2024新版图文安装教程(Python环境搭建+VSCode安装+运行测试+背景图设置)
  • vue+springboot+cas配置及cookie传递问题
  • 0009.基于springboot+layui的ERP企业进销存管理系统
  • ZYNQ初识2(zynq_7010)基于vivado,从PL端调用PS端的时钟
  • Android详解——ConstraintLayout约束布局
  • docker简单命令
  • 【linux】shell(36)-文件操作
  • c语言——数据结构【链表:单向链表】
  • ​Python 标识符是啥?​
  • 视频及JSON数据的导出并压缩
  • VScode使用教程(菜鸟版)
  • 【漏洞复现】Grafana 安全漏洞(CVE-2024-9264)
  • Android AOSP 源码中批量替换“phone“为“tablet“的命令详解
  • 基于JavaWeb(SSM+MySQL)问卷调查管理系统设计与实现毕业论文
  • 域内用户枚举与密码喷洒与密码爆破
  • DIY 集合求并集(union)运算的代码 ← Python
  • Redis bitmaps 使用
  • vue深层数据响应的问题
  • 解决Nginx + Vue.js (ruoyi-vue) 单页应用(SPA) 404问题的指南
  • 项目计划表如何制作?使用甘特图制作项目计划表的步骤
  • Flutter-底部分享弹窗(showModalBottomSheet)
  • 初学stm32 --- 时钟配置