前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >iptables防火墙入门:小白也能看懂的Linux防火墙配置指南 🔥

iptables防火墙入门:小白也能看懂的Linux防火墙配置指南 🔥

原创
作者头像
神秘泣男子
发布2024-12-31 10:50:38
发布2024-12-31 10:50:38
38900
代码可运行
举报
文章被收录于专栏:LinuxLinux
运行总次数:0
代码可运行

还在为Linux防火墙配置头疼吗?被各种表、链、规则搞得晕头转向?别担心!这篇文章将用最通俗的语言,帮你理清iptables的来龙去脉。无论你是运维新手,还是想自己管理服务器的开发者,看完这篇文章,你一定能掌握iptables的精髓!

1. 表链关系总览

表名\链名

PREROUTING

INPUT

FORWARD

OUTPUT

POSTROUTING

filter

nat

mangle

raw

2. 链的功能说明

链名

说明

应用场景

INPUT

处理入站数据包

访问本机服务

OUTPUT

处理出站数据包

本机对外访问

FORWARD

处理转发数据包

路由器转发

PREROUTING

路由前数据包处理

目的地址转换(DNAT)

POSTROUTING

路由后数据包处理

源地址转换(SNAT)

3. 表的功能说明

表名

优先级

功能说明

raw

最高

连接跟踪处理

mangle

次高

数据包修改

nat

次低

网络地址转换

filter

最低

数据包过滤

4. 常见应用场景

应用类型

使用的表

使用的链

防火墙过滤

filter

INPUT, FORWARD, OUTPUT

地址转换(NAT)

nat

PREROUTING, POSTROUTING

数据包修改

mangle

全部五链

关闭连接跟踪

raw

PREROUTING, OUTPUT

数据包处理流程

  1. 进入本机数据包:PREROUTING → INPUT
  2. 转发数据包:PREROUTING → FORWARD → POSTROUTING
  3. 本机发出数据包:OUTPUT → POSTROUTING

一、基础介绍

1. netfilter 与 iptables 的关系

  • netfilter:Linux 内核中的包过滤框架(内核态)
  • iptables:用户空间的防火墙管理工具(用户态)

2. 四表五链结构

代码语言:javascript
代码运行次数:0
复制
四表优先级(从高到低):
raw → mangle → nat → filter

五链处理顺序:
入站:PREROUTING → INPUT
转发:PREROUTING → FORWARD → POSTROUTING
出站:OUTPUT → POSTROUTING

二、安装和基本配置

1. CentOS 7 安装步骤

代码语言:javascript
代码运行次数:0
复制
# 1. 关闭 firewalld
systemctl stop firewalld.service
systemctl disable firewalld.service

# 2. 安装 iptables
yum -y install iptables iptables-services

# 3. 启动并设置开机启动
systemctl start iptables.service
systemctl enable iptables.service

2. 基本命令格式

代码语言:javascript
代码运行次数:0
复制
iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]

三、常用管理选项

选项

说明

示例

-A

在链末尾添加规则

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

-I

在链开头插入规则

iptables -I INPUT -p tcp --dport 22 -j ACCEPT

-D

删除规则

iptables -D INPUT 1

-F

清空规则

iptables -F

-L

列出规则

iptables -L -n -v

-P

设置默认策略

iptables -P INPUT DROP

四.实验操作

利用iptables防火墙来完成下列操作:

  1. 允许SSH连接(端口22)
  2. 允许HTTP和HTTPS连接(端口80和443)
  3. 允许ping
  4. 拒绝其他所有入站连接
  5. 记录被拒绝的连接

本次实验

服务器:192.168.14.111 搭建了httpd服务

客户端:192.168.14.1112

默认规则设置

代码语言:javascript
代码运行次数:0
复制
# 设置默认策略为DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

默认是开放的所有流量,关闭由外到内的所有流量,只允许出站

1v

规则设置

代码语言:javascript
代码运行次数:0
复制
# 允许SSH连接
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 允许HTTP连接
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# 允许HTTPS连接
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 允许ping
iptables -A INPUT -p icmp -j ACCEPT

客户端访问测试

服务访问测试

ping测试

规则管理

代码语言:javascript
代码运行次数:0
复制
# 列出规则(带行号)
iptables -L --line-numbers

# 删除特定规则
iptables -D INPUT 1  # 删除INPUT链的第1条规则

# 插入规则
iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT  # 在INPUT链的第1位置插入规则

# 替换规则
iptables -R INPUT 1 -p tcp --dport 8080 -j ACCEPT  # 替换INPUT链的第1条规则


# 保存规则
service iptables save
# 或
iptables-save > /etc/sysconfig/iptables

# 恢复规则
service iptables restart
# 或
iptables-restore < /etc/sysconfig/iptables


# 将80端口转发到8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

看到这里,相信你已经对iptables有了清晰的认识!让我们回顾一下关键点:

  1. 🌟 四表五链不再神秘:就像快递分拣,每个包都有它的去处
  2. 🚀 常用配置其实很简单:
    • 允许SSH登录(别把自己锁在门外)
    • 开放网站端口(80/443)
    • 允许ping检测
    • 安全起见,默认拒绝其他连接
  3. 💡 规则管理也不难:增删改查,就像管理你的购物清单一样直观

记住:配置防火墙不是什么高深技术,重要的是理解它的工作方式。就像设置家里的安全门,只需要清楚谁能进,谁不能进就够了!

成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"

"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"

神秘泣男子

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 表链关系总览
  • 2. 链的功能说明
  • 3. 表的功能说明
  • 4. 常见应用场景
  • 数据包处理流程
  • 一、基础介绍
    • 1. netfilter 与 iptables 的关系
    • 2. 四表五链结构
  • 二、安装和基本配置
    • 1. CentOS 7 安装步骤
    • 2. 基本命令格式
  • 三、常用管理选项
  • 四.实验操作
    • 规则管理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档