docker容器内彻底移除iptables服务的实现方法

背景

我创建的容器使用的是centos6的标准镜像,所以内置了iptables服务。容器启动后iptables服务默认就启动了。iptables设置的规则默认是所有流量都无法通行。而对于服务器的管理使用的是宿主机的防火墙。这样就导致在实现用iptables动态给容器添加端口映射时不成功的现象,后来发现是容器内的防火墙阻断了。因为容器的防火墙和宿主机的防火墙会同时起作用,在设置防火墙有关的规则时经常会遇到问题,需要将容器内外的防火墙都进行设置。甚至会造成防火墙管理上的混乱。即使将防火墙设置为开机不自启,也关闭了防火墙服务。但是无法保证人为手动重启过防火墙或某些进程会重启防护墙,从而导致防火墙管理的规则出现问题。所以最好的办法就是干掉防火墙。

 

分析

iptables 是 Linux 操作系统中用于配置和管理网络防火墙规则的工具。它允许管理员定义规则集,以控制网络流量的传入、传出和转发。iptables 主要用于实现网络安全策略,如阻止未经授权的访问、过滤恶意流量、实现端口转发等。

 

iptables是Linux内置的工具,iptables管理的系统的防火墙使用了一个iptables的伪服务程序(真服务程序是后台常驻的,这个没有常驻)。所以在卸载上会比较麻烦。iptables服务只是一组脚本而已。关于防火墙服务的概念的理解,请阅读《一文讲明白iptables和firewall的区别》。

 

iptables的服务的配置文件在:/usr/lib/systemd/system/iptables.service

文件内容:

[Unit]                                                                                                                                                                                                              

Description=IPv4 firewall with iptables

After=syslog.target

AssertPathExists=/etc/sysconfig/iptables

 

[Service]

Type=oneshot

RemainAfterExit=yes

ExecStart=/usr/libexec/iptables/iptables.init start

ExecReload=/usr/libexec/iptables/iptables.init reload

ExecStop=/usr/libexec/iptables/iptables.init stop

Environment=BOOTUP=serial

Environment=CONSOLETYPE=serial

 

[Install]

WantedBy=basic.target

iptables这里的服务使用的是/usr/libexec/iptables/iptables.init 脚本。因为iptables只是使用这个脚本模拟的服务的操作,所以感觉似乎iptables服务是真实的,但是iptables并没有常驻的后台进程。

 

换句话说,iptables的服务只是操作上和服务一样,便于操作和管理。iptables有一个二进制的命令文件。再配合这个模拟的服务配置iptables.service ,这个配置里使用了iptables.init 脚本,实现了服务的启停等操作。

 

所以,我们要彻底停止iptables服务,不能像卸载软件那样来操作。

 

彻底移除iptables服务的方法:

1. 停止已运行的iptables服务

systemctl stop iptables  # centos7

service iptables stop  # centos6

停止iptables服务并不是真停止iptables服务,而是通过iptables解除内核的防火墙钩子,取消对流量的过滤功能。如果不先取消,直接移除服务,其实防火墙钩子没有解除,依然会对流量进行过滤。

 

2.禁止服务开机启动

systemctl disable iptables # centos7

rm -f /etc/systemd/system/basic.target.wants/iptables.service  # centos6

iptables的开机启动是在/etc/systemd/system/basic.target.wants目录中添加了一个软链文件:

/etc/systemd/system/basic.target.wants/iptables.service -> /usr/lib/systemd/system/iptables.service

这个软链指向了/usr/lib/systemd/system/iptables.service,就是开头说的服务配置文件。

centos6中没有systemctl命令,service不支持disable,所以直接手动删除一下即可,效果一样。

禁止开启启动是免得每次开机都有报错。

 

3.移除iptables服务的配置文件

mv /usr/lib/systemd/system/iptables.service /usr/lib/systemd/system/iptables.service.bak

你可以使用rm命令删除,也可以使用mv命令更换名字。反正只要默认的标准文件名称的文件不存在就行了。

 

这样操作之后,再也启动不了iptables服务了,查看服务的状态:

c5ed66d7998c436fbfc0c08c8f58ccf8.png

 

 

服务的启动状态为fail。当然这个并不影响iptables命令的执行,因为它是二进制文件。我们只要断开了iptables操作系统内核的防火墙钩子就行了,不必删除iptables命令。

 

现在就再也不怕手动不小心启动了iptables服务,也不怕其他进程启动了防火墙了。那么我们只需要管理宿主机的防火墙即可。

 

总结

容器和宿主机都有防护墙,不仅会增加管理的复杂度,而且很容易出错。不仅如此,在设置防火墙规则给容器做动态端口映射时,还会被容器内的防护墙阻断。所以为了彻底规避这个问题,避免因为容器重启后或者其他进程启动了防火墙,我们直接彻底移除iptables防火墙,就可以防患于未然了。


原文地址: http://www.yu7s.com/article/20240418111446390.html

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

RocketMQ快速入门:group、topic、queue、tag等基本概念(四)

0. 引言 上一节,我们说明了rocketmq中的4个核心组成以及他们之间的工作关系。但其中穿插的topic, queue等概念,如果未接触过mq的同学可能会有些迷糊,所以本节,我们重点针对rocketmq中的基本概念进行讲解,之前学习过其…

中北大学软件学院操作系统实验二进程调度算法

实验时间 2024年 4 月13日14时至16时 学时数 2 1.实验名称 实验二进程调度算法 2.实验目的 (1)加深对进程的概念及进程调度算法的理解; (2)在了解和掌握进程调度算法的基础上,编制进程调度算法通用程序,将调试结果显示在计算机屏幕上&am…

第九章 进程和计划任务管理【☆】

一个进程可以创建多个子进程,子进程之间相互独立,速度较慢,但是互不影响。线程是共享资源,速度快,但一个线程崩掉其他线程同时崩掉。 一、查看进程信息 1. 查看静态的进程统计信息——ps命令 主要进程状态 R(runnin…

在控制台实现贪吃蛇

在控制台实现贪吃蛇 前备知识Win32APICOORD这个结构体的声明如下:GetStdHandle 函数GetConsoleCursorInfo 函数SetConsoleCursorInfo 函数 SetConsoleCursorPosition 函数getAsyncKeyState 函数 控制台窗口的大小以及字符打印介绍控制台中的坐标宽字符及本地化介绍s…

BBS前后端混合项目--03

展示 static/bootstrp # bootstrap.min.css /*!* Bootstrap v3.4.1 (https://getbootstrap.com/)* Copyright 2011-2019 Twitter, Inc.* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)*//*! normalize.css v3.0.3 | MIT License | github.com/n…

OSPF大型实验

OSPF大型实验 实验拓扑图 实验思路 1、R4为ISP,其上只配置IP地址;R4与其他所直连设备间均使用公有IP; 2、R3-R5、R6、R7为MGRE环境,R3为中心站点; 3、整个OSPF环境IP基于172.16.0.0/16划分;除了R12有两…

2013-2021年各省经济韧性相关测度指标面板数据

2013-2021年各省经济韧性相关测度指标面板数据 1、时间:2013-2021年 2、指标:城镇化率 %、财政科学技术支出(亿元)、万人高等教育在校人数(万人)、财政教育支出(亿元)、第三产业占…

[SWPUCTF 2021 新生赛]re2(不同字符加密相同,逆向修改范围)

无壳 直接看ida 完整exp&#xff1a; resultlist(ylqq]aycqyp{) for i in range(len(result)):if (ord(result[i])<94 or ord(result[i])>96) and (ord(result[i])<62 or ord(result[i])>64):result[i]chr(ord(result[i])2)else:result[i]chr(ord(result[i])-24)…

Linux-进程间通信:System V消息队列

目录 System V IPC概述标识符与IPC Key System V消息队列创建或打开一个消息队列发送消息接收消息控制消息队列1、IPC_STAT2、IPC_SET3、IPC_RMID 查看系统当前的消息队列代码示例 System V IPC&#xff08;Inter-Process Communication&#xff09;是一组用于在 Unix-like 操作…

Redis底层数据结构之Dict

目录 一、概述二、Dict结构三、Dictht结构四、DictEntry结构五、核心特性 上一篇文章 reids底层数据结构之quicklist 一、概述 Redis 的 Dict 是一个高效的键值对映射数据结构&#xff0c;采用双哈希表实现以支持无锁的渐进式 Rehash&#xff0c;确保扩容或缩容时的高效性能。…

react引入iconfont的svg图标

react引入iconfont的svg图标 本文目录 react引入iconfont的svg图标普通图标通过link引入css组件内引入css使用 svg图标通过script引入js组件内引入js使用 通过封装组件自定义封装组件中调用 通过antd封装使用 普通图标 通过link引入css <link rel"stylesheet" h…

ROS学习笔记(13)坐标变换(TF和TF2)

0.前提 我翻了一下我以前的教程发现我居然没有讲过TF坐标转换&#xff0c;那现在补上。在机器人学中坐标转换是一个极为重要的概念、内容&#xff0c;在大量的科技公司招聘机器人岗位的人才时掌握机器人运动学正解和逆解等都是加分项。机器人在实际应用当中会涉及到大量的位置…

0 transformers入门,HuggingFace!

目录 1 了解 2 文本分类 1 了解 1 依赖安装 !pip install transformers -i https://pypi.tuna.tsinghua.edu.cn/simple some-package 2 了解transformers 能做什么 from transformers.pipelines import SUPPORTED_TASKS SUPPORTED_TASKS.items()2 文本分类 我没外网所以…

CSS特效---环形进度条

1、演示 2、一切尽在代码中 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"w…

MATLAB将多张小图整合到一张大图形成模板图

MATLAB将多张小图整合到一张大图形成模板图 代码如下: clc;close all;clear all;warning off;%清除变量 rand(seed, 100); randn(seed, 100); format long g;foldername字符模板; [datacell,filenamecell,filenameAllcell]readfun_1n(foldername); K2length(filenamecell);% …

互联网大佬座位排排坐:马化腾第一,雷军第二

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 这是马化腾、雷军、张朝阳、周鸿祎的座位&#xff0c;我觉得是按照互联网地位排序的。 马化腾坐头把交椅&#xff0c;这个没毛病&#xff0c;有他在的地方&#xff0c;其他几位都得喊声“大哥”。雷军坐第二把交椅…

恶补《操作系统》1——王道学习笔记

1操作系统概念 1.1_1 操作系统的概念、功能和目标 作为用户和计算机硬件之间的接口 提供的功能命令接口&#xff08;联机命令接口|脱机命令接口&#xff09;程序接口GUI&#xff08;图形用户界面win|ios|andrio&#xff09;目标方便用户使用 1.1_2 操作系统的特征 &#xff…

STM32 ADC转换器

一、ADC简介 ADC&#xff08;Analog-Digital Converter&#xff0c;模拟-数字转换器&#xff09;&#xff0c;可以将引脚上连续变化的模拟量转换为内存中存储的数字量&#xff0c;建立模拟电路到数字电路的桥梁 模拟量&#xff1a;时间和幅值均连续的信号&#xff0c;例如&…

Access denied for user ‘zabbix‘@‘localhost‘ (using password: NO)

现象 排查过程 进入数据库show grants for zabbixlocalhost;select host,user from mysql.user;cat /etc/zabbix/zabbix_server.conf | grep DB | grep -vE ‘#|$’cat /etc/zabbix/web/zabbix.conf.php | grep DB 解决办法 mysql 8.0以下 DPassword123.com mariadb -e "…

Docker搭建代码托管Gitlab

文章目录 一、简介二、Docker部署三、管理员使用四、用户使用五、用户客户端 一、简介 GitLab是一个基于Git的代码托管和协作平台&#xff0c;类似于GitHub。 它提供了一个完整的工具集&#xff0c;包括代码仓库管理、问题跟踪、CI/CD集成、代码审查等功能。 GitLab的开源版本…