ubuntu防火墙设置(四)——iptables语法与防火墙基础配置

前面介绍的ufw和firewall-config均为iptables的前端,
分别适合个人用户和服务器网络管理
下面介绍底层——ipables

iptables是一个强大的工具,用于配置Linux系统的防火墙。以下是一些基本的使用方法和示例,帮助您入门:

基本语法

1. 查看当前规则

要查看当前的iptables规则,可以使用以下命令:

sudo iptables -L -v -n

2. 添加规则

允许特定端口的流量

例如,允许HTTP(端口80)和HTTPS(端口443)的流量:

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

拒绝特定IP的流量

例如,拒绝来自特定IP地址的流量:

sudo iptables -A INPUT -s 192.168.1.100 -j DROP

3. 删除规则

要删除特定的规则,可以使用-D选项。例如,删除刚才添加的HTTP规则:

sudo iptables -D INPUT -p tcp --dport 80 -j ACCEPT

4. 保存规则

在Ubuntu中,iptables的规则在重启后不会自动保存。您可以使用以下命令保存当前规则:

sudo iptables-save > /etc/iptables/rules.v4

要在系统启动时自动加载这些规则,您可以安装iptables-persistent

sudo apt install iptables-persistent

在安装过程中,系统会询问您是否要保存当前的iptables规则。

5. 清空规则

如果您想清空所有的iptables规则,可以使用以下命令:

sudo iptables -F

6. 设置默认策略

您可以设置默认策略来处理未匹配的流量。例如,设置默认策略为拒绝所有流量:

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

7. 其他常用选项

  • -A:添加规则到链的末尾。
  • -I:在链的开头插入规则。
  • -D:删除规则。
  • -F:清空链中的所有规则。
  • -P:设置默认策略。
  • -s:指定源IP地址。
  • -d:指定目标IP地址。
  • -p:指定协议(如tcp、udp等)。
  • –dport:指定目标端口。

注意事项

  • 使用iptables时,请小心操作,尤其是在远程管理服务器时,错误的规则可能会导致您失去对服务器的访问。
  • 在进行更改之前,建议备份当前的iptables规则。

通过这些基本命令,您可以开始使用iptables来管理Linux系统的网络流量。

基础配置示例

http(s)服务器的防火墙配置

#检查是否安装了iptables
whereis iptables
#安装iptables
apt-get install iptables
#查看iptables现有规则
iptables -L -n
#先允许所有,不然有可能会杯具
iptables -P INPUT ACCEPT
#清空所有默认规则
iptables -F
#清空所有自定义规则
iptables -X
#所有计数器归0
iptables -Z
#允许来自于lo接口的数据包(本地访问)
iptables -A INPUT -i lo -j ACCEPT
#开放dhcp客户端(可删除)
iptables -A INPUT -p udp --sport 67 --dport 68 -j ACCEPT
#开放995端口(POP3s)
iptables -A INPUT -p tcp --dport 995 -j ACCEPT
#开放80端口(HTTP)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#开放443端口(HTTPS)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#允许ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
#其他入站一律丢弃
iptables -P INPUT DROP
#所有出站一律绿灯
iptables -P OUTPUT ACCEPT
#所有转发一律丢弃
iptables -P FORWARD DROP
#允许接受本机请求之后的返回数据 RELATED,是为软件设置的
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#保存上述规则
service iptables save

服务器内网管理进阶配置

#如果要添加内网ip信任(接受其所有TCP请求)
iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT
#过滤所有非以上规则的请求
iptables -P INPUT DROP
#要封停一个IP,使用下面这条命令:
iptables -I INPUT -s ***.***.***.*** -j DROP
#要解封一个IP,使用下面这条命令:
iptables -D INPUT -s ***.***.***.*** -j DROP

客户端基础配置

  • 非副取其,不用提供http,https,
  • 不远程登陆,也不用提供ssh,
  • 配置非常简单
#检查是否安装了iptables
whereis iptables
#安装iptables
apt-get install iptables
#查看iptables现有规则
iptables -L -n
#先允许所有,不然有可能会杯具
iptables -P INPUT ACCEPT
#清空所有默认规则
iptables -F
#清空所有自定义规则
iptables -X
#所有计数器归0
iptables -Z
#允许来自于lo接口的数据包(本地访问)
iptables -A INPUT -i lo -j ACCEPT
#开放dhcp客户端(可删除)
iptables -A INPUT -p udp --sport 67 --dport 68 -j ACCEPT
#其他入站一律丢弃
iptables -P INPUT DROP
#所有出站一律绿灯
iptables -P OUTPUT ACCEPT
#所有转发一律丢弃
iptables -P FORWARD DROP
#允许接受本机请求之后的返回数据 RELATED,是为软件设置的
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
、

iptables -A INPUT -i lo -j ACCEPT的作用是什么

  • 这条命令的作用是允许本地回环接口(lo)接收进入的数据包,并将其接受并进行处理。

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT的作用是什么

  • 这条规则的作用是允许已建立的连接和相关的连接通过防火墙的INPUT链。通过使用RELATED和ESTABLISHED状态,可以让服务器响应之前的请求,并且能够正常进行通信。

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT可能会导致与发起连接相关的、但由攻击者发起的报文攻击吗?

  • iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 这条规则的作用是允许已经建立的连接和相关的连接通过防火墙。虽然这条规则本身是为了允许正常的流量,但在某些情况下,它可能会与攻击者的行为相关联。
  1. 攻击者利用已建立连接:如果攻击者能够成功建立与目标系统的连接(例如,通过合法的身份验证),那么后续的流量可能会被这条规则接受。这意味着,如果攻击者已经获得了某种形式的访问权限,他们可以利用这条规则进行进一步的攻击。

  2. 相关流量:如果攻击者发起的连接是与某个合法连接相关的(例如,某个应用程序的回调或数据流),那么这条规则也可能允许这些流量通过。

为了降低风险,建议采取以下措施:

  • 限制入站流量:在允许已建立连接的流量之前,先明确允许哪些特定的入站流量(如 SSH、HTTP、HTTPS 等),并拒绝其他所有流量。

  • 使用其他防护措施:结合使用其他安全措施,如入侵检测系统(IDS)、入侵防御系统(IPS)和应用层防火墙,以监控和防止潜在的攻击。

  • 定期审查规则:定期审查和更新防火墙规则,以确保它们符合当前的安全需求。

总之,虽然这条规则本身并不会直接导致攻击,但在不当配置或缺乏其他安全措施的情况下,可能会被攻击者利用。因此,合理配置防火墙规则和采取综合的安全措施是非常重要的。

iptables规则保存,用于开机自启动

  • 有两种方式

1. iptables-persistent&netfilter-persistent

工具比较

  • iptables-persistent 是一个用于保存和恢复 iptables 规则的工具。它可以在系统启动时自动加载之前保存的规则。

  • netfilter-persistent 是一个更通用的工具,旨在管理与 Linux 内核中的 Netfilter 框架相关的所有类型的规则,包括 iptables、ip6tables(用于 IPv6)和 arptables(用于 ARP).

  • iptables-persistent通过netfilter-persisitent重新保存和开机加载iptables规则

  • netfilter保存

sudo netfilter-persistent save
  • netfilter加载
sudo netfilter-persistent reload

2. 使用 iptables-saveiptables-restore

您也可以使用 iptables-saveiptables-restore 命令手动保存和加载规则。

  • iptables-save 命令会输出当前所有的 iptables 规则,包括所有链(如 INPUT、OUTPUT、FORWARD)和规则的详细信息。

  • 同样,iptables-store 命令会输出当前所有存储的 iptables 规则,包括所有链(如 INPUT、OUTPUT、FORWARD)和规则的详细信息。

  • 保存规则

sudo iptables-save > /etc/iptables/rules.v4
  • 加载规则
    在系统启动时,您可以通过创建一个启动脚本来加载规则。可以将以下内容添加到 /etc/rc.local 文件中(确保该文件可执行):
#!/bin/sh -e
iptables-restore < /etc/iptables/rules.v4
exit 0

链接

  1. 华为云教程:https://bbs.huaweicloud.com/blogs/300487
  2. 大佬的基础配置:https://blog.csdn.net/weixin_36032459/article/details/125147050
  3. 新奇的防火墙配置:https://www.digitalocean.com/community/tutorials/how-to-implement-a-basic-firewall-template-with-iptables-on-ubuntu-20-04

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/62325.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【中间件开发】Redis基础命令详解及概念介绍

文章目录 前言一、Redis相关命令详解及原理1.1 string、set、zset、list、hash1.1.1 string1.1.2 list1.1.3 hash1.1.4 set1.1.5 zset 1.2 分布式锁的实现1.3 lua脚本解决ACID原子性1.4 Redis事务的ACID性质分析 二、Redis协议与异步方式2.1 Redis协议解析2.1.1 redis pipeline…

力扣每日一题 - 999. 可以被一步捕获的棋子数

题目 还需要你前往力扣官网查看详细的题目要求 地址 1.给定一个 8 x 8 的棋盘&#xff0c;只有一个 白色的车&#xff0c;用字符 R 表示。棋盘上还可能存在白色的象 B 以及黑色的卒 p。空方块用字符 . 表示。2.车可以按水平或竖直方向&#xff08;上&#xff0c;下&#xff0c;…

[UVM]在UVM环境中加入C++内存模块

摘要&#xff1a;要在UVM环境中实现一个内存模块并存入数据&#xff0c;您可以遵循以下步骤。这里会涉及C的内存建模和UVM的SystemVerilog部分的接口。在高层次上&#xff0c;我们将描述如何在C中实现内存模型并通过UVM的DPI接口访问它。 一、C内存模型 首先&#xff0c;在C中…

学习记录,正则表达式, 隐式转换

正则表达式 \\&#xff1a;表示正则表达式 W: 表示一个非字&#xff08;不是一个字&#xff0c;例如&#xff1a;空格&#xff0c;逗号&#xff0c;句号&#xff09; W: 多个非字 基本组成部分 1.字符字面量&#xff1a; 普通字符&#xff1a;在正则表达式中&#xff0c;大…

Selenium是广泛使用的模拟浏览器运行的库

简介 Selenium是广泛使用的模拟浏览器运行的库&#xff0c;它是一个用于Web应用程序测试的工具。 Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样&#xff0c;并且支持大多数现代 Web 浏览器。 环境 安装 pip install selenium下载Chrome驱动 系统环境…

网络练级宝典-> UDP传输层协议

目录 传输层 端口号 端口号和进程的关系 UDP协议 UDP协议格式 UDP数据封装&#xff1a; UDP数据分用&#xff1a; 面向数据报 UDP的缓冲区 UDP的缺点 基于UDP的应用层协议 传输层 端口号 我们知道端口号对应的其实就是一个进程的pid&#xff0c;在操作系统中二者的…

Redis原理—1.Redis数据结构

大纲 1.Redis的数据结构 2.Redis的SDS 3.Redis的链表 4.Redis的字典 5.Redis的跳跃表 6.Redis的整数集合 7.Redis的压缩列表 8.Redis的对象 9.Redis对象的几个关键属性 10.Redis的单线程为什么这么快 11.Redis的典型应用场景和说明 12.Redis的相关命令说明 1.Redis…

【Vue3中Router使用】

Vue3中Router使用 1. 安装vue-router组件2. 建两个测试页面2.1 测试页面Home.vue2.2 测试页面Category.vue 3. 创建路由对象4. 在入口main.js中引入router把App.vue改成路由页面5. 测试5.1 关闭检查解决ESlint报错5.2 改文件名解决ESlint检查报错测试WebHashHistory 和WebHisto…

python拆分Excel文件

按Sheet拆分Excel 或 按照某一列的不同值拆分Excel。文档样式如下&#xff1a; 结果&#xff1a;红色是按照Sheet名拆出的&#xff0c;蓝色和橙色是某个Sheet按照某列的不同值拆分的。 代码&#xff1a; # -*- coding: utf-8 -*- """ 拆分excel文件——按照…

交易所 Level-2 历史行情数据自动化导入攻略

用户部署完 DolphinDB 后&#xff0c;需要将历史股票数据批量导入数据库&#xff0c;再进行数据查询、计算和分析等操作。DolphinDB 开发了 ExchData 模块&#xff0c;主要用于沪深交易所 Level-2 行情原始数据的自动化导入&#xff0c;目前已支持的数据源包括&#xff1a; 沪…

开源ISP介绍(2)————嵌入式Vitis搭建

Vivado搭建参考前一节Vivado基于IP核的视频处理框架搭建&#xff1a; 开源ISP介绍&#xff08;1&#xff09;——开源ISP的Vivado框架搭建-CSDN博客 导出Hardware 在vivado中导出Hardware文件&#xff0c;成功综合—实现—生成比特流后导出硬件.xsa文件。&#xff08;注意导…

Node.js JWT认证教程

Node.js JWT认证教程 1. 项目介绍 JSON Web Token (JWT) 是一种安全的跨域身份验证解决方案&#xff0c;在现代Web应用中广泛使用。本教程将详细讲解如何在Node.js中实现JWT认证。 2. 项目准备 2.1 初始化项目 # 创建项目目录 mkdir nodejs-jwt-auth cd nodejs-jwt-auth# …

109.【C语言】数据结构之二叉树层序遍历

目录 1.知识回顾 2.代码实现 准备工作 LevelOrder函数 代码框架 关键代码 3.执行结果 1.知识回顾 层序遍历参见106.【C语言】数据结构之二叉树的三种递归遍历方式文章 截取的部分内容 定义:按层的方式遍历(,设n为树的深度,h1-->h2-->h3-->...-->hn) 以下面…

Ruby On Rails 笔记2——表的基本知识

Active Record Basics — Ruby on Rails Guides Active Record Migrations — Ruby on Rails Guides 原文链接自取 1.Active Record是什么&#xff1f; Active Record是MVC模式中M的一部分&#xff0c;是负责展示数据和业务逻辑的一层&#xff0c;可以帮助你创建和使用Ruby…

安装部署PowerDNS--实现内网DNS解析

PDNS是PowerDNS的缩写&#xff0c;是一个开源的DNS服务器软件。PowerDNS具有高性能、灵活性和可扩展性&#xff0c;可用于搭建各种规模的DNS解析服务。它支持多种后端数据库&#xff08;如MySQL、PostgreSQL等&#xff09;&#xff0c;提供高度定制化的配置选项&#xff0c;并具…

13.在 Vue 3 中使用OpenLayers加载鹰眼控件示例教程

在 WebGIS 开发中&#xff0c;鹰眼控件 是一个常用的功能&#xff0c;它可以为用户提供当前地图位置的概览&#xff0c;帮助更好地定位和导航。在本文中&#xff0c;我们将基于 Vue 3 的 Composition API 和 OpenLayers&#xff0c;创建一个简单的鹰眼控件示例。 效果预览 在最…

Elasticsearch 单节点安全配置与用户认证

Elasticsearch 单节点安全配置与用户认证 安全扫描时发现了一个高危漏洞&#xff1a;Elasticsearch 未授权访问 。在使用 Elasticsearch 构建搜索引擎或处理大规模数据时&#xff0c;需要启用基本的安全功能来防止未经授权的访问。本文将通过简单的配置步骤&#xff0c;为单节…

使用C#基于ADO.NET编写MySQL的程序

MySQL 是一个领先的开源数据库管理系统。它是一个多用户、多线程的数据库管理系统。MySQL 在网络上特别流行。MySQL 数据库可在大多数重要的操作系统平台上使用。它可在 BSD Unix、Linux、Windows 或 Mac OS 上运行。MySQL 有两个版本&#xff1a;MySQL 服务器系统和 MySQL 嵌入…

计算机视觉与各个学科融合:探索新方向

目录 引言计算机视觉与其他学科的结合 与医学的结合与机械工程的结合与土木工程的结合与艺术与人文的结合发文的好处博雅知航的辅导服务 引言 计算机视觉作为人工智能领域的重要分支&#xff0c;正迅速发展并渗透到多个学科。通过与其他领域的结合&#xff0c;计算机视觉不仅…

SpringBoot期末知识点大全

一、学什么 IoC AOP&#xff1a;面向切面编程。 事物处理 整合MyBatis Spring框架思想&#xff01; 二、核心概念 问题&#xff1a;类之间互相调用/实现&#xff0c;导致代码耦合度高。 解决&#xff1a;使用对象时&#xff0c;程序中不主动new对象&#xff0c;转换为由外部提…