Linux系统安全——iptables相关总结
在使用iptables时注意要先关闭firewalld(systemctl stop firewalld.service)
1.查看iptables规则
iptables -vnL
选项 | 含义 |
---|---|
-v | 查看时显示更多详细信息 |
-n | 所有字段以数字形式显示 |
-L | 查看规则列表 |
例,拒绝来自192.168.241.22的源地址 直接丢弃
iptables -t filter -A INPUT -s 192.168.241.22 -j DROP
其中-t filter是指filter表,常用的还可以替换为-t nat表
-A | |||||
-D | 链 | 编号 | 规则 | -j | target |
-I | 链 | 规则 | |||
-R | 链 | 编号 | 规则 |
target:
选项 | 含义 |
---|---|
DROP | 已读不回 |
REJECT | 回不合适 |
ACCEPT | 允许 |
LOG | 生成日志 |
SNAT | 使用snat;source 修改源ip |
DNAT | 使用dnat; 修改目的ip |
例,拒绝来自192.168.241.22的源地址 不回复 241网段的主机都无法访问
iptables -A INPUT -s 192.168.241.0/24 -j REJECT
tcpdump -i ens33 icmp -nn 在22主机上抓包只能看到去的包,看不到回的包
注意:配错策略无法远程登录服务器
登录本地 查看规则编号
iptables -vnL --line-numbers
2.删除规则
iptables -D INPUT 2
删除第二条规则
3.插入规则
iptables -I INPUT 编号 -s 192.168.241.22 -j DROP
iptables -I INPUT -s 192.168.241.1 -j ACCEPT 允许本地
iptables -A INPUT -s 192.168.241.0/24 -j REJECT 拒绝所有241网段的主机
4.黑白名单
修改默认规则为白名单后自己也无法访问
iptables -P INPUT DROP
访问127.0.0.1也不行
5.添加回环网卡
iptables -I INPUT 2 -i lo -j ACCEPT
6.清空规则
iptables -F 不包括默认规则 清空全部规则
iptables -P INPUT DROP 修改INPUT链的默认规则为拒绝,清空规则后又无法登录(因为此时的INPUT链的默认规则是拒绝)
手动白名单
iptables -A INPUT -s 192.168.241.1 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT 最后再添加拒绝所有,比较安全,也不会影响自己本机登录
7.基本匹配条件
-s, --source address[/mask][,...]:源IP地址或者不连续的IP地址
-d, --destination address[/mask][,...]:目标IP地址或者不连续的IP地址
-p, --protocol protocol:指定协议,可使用数字如0(all)protocol: tcp, udp, icmp, icmpv6, udplite,esp, ah, sctp,mh or“all“
iptables -I INPUT 2 -p icmp -s 192.168.91.241 -j REJECT 禁止icmp协议,ssh协议可以继续使用
-i, --in-interface name:报文流入的接口;只能应用于数据报文流入环节,只应用于INPUT、FORWARD、PREROUTING链
-o, --out-interface name:报文流出的接口;只能应用于数据报文流出的环节,只应用于FORWARD、OUTPUT、POSTROUTING链
8.扩展匹配条件
rpm -ql iptables |grep time
man iptables 看不到扩展
man iptables-extensions 扩展模块
隐式扩展 -p tcp 指定了特殊的协议无需再次使用-m 选项
显示扩展 必须加 -m 选项
9.tcp
iptables -I INPUT 3 -s 192.168.241.22 -p tcp --dport 80 -j REJECT 指定端口号
iptables -I INPUT 3 -s 192.168.241.22 -p tcp --dport 80:82 -j REJECT 连续的端口号
tcp的标记位:
--tcp-flags
--syn:用于匹配第一次握手,相当于:--tcp-flags SYN、ACK、FIN、RST、SYN
10.icmp
A可以ping B B不可以ping A
iptables -A INPUT -s 192.168.241.22 -j REJECT 双方都不可以ping
iptables -A INPUT -s 192.168.241.22 -p icmp --icmp-type 8 -j REJECT 拒绝请求包
iptables -A INPUT -s 192.168.241.22 -p icmp --icmp-type 0 -j REJECT 拒绝回复包
拒绝请求包要好用
11.显式扩展
11.1multiport扩展
混合端口,以离散的方式定义多个端口
yum install epel-release.noarch -y 安装额外源
systemctl start redis 开启redis
ss -natp | grep 6379
vim /etc/redis.conf
在第61行 bind 0.0.0.0 修改绑定地址
redis-cli -h 192.168.241.11 主机二登录
拒绝源地址为192.168.241.22访问本机80和6379端口
iptables -A INPUT -s 192.168.241.22 -p tcp -m multiport --dports 80,6379 -j REJECT
11.2iprange扩展
ip地址范围,之前只能指定网段
iptables -A INPUT -m iprange --src-range 192.168.241.22-192.168.241.24 -j REJECT
指定源地址为192.168.241.22-192.168.241.24 三个地址无法访问当前主机
11.3mac
根据mac地址
iptables -A INPUT -m mac --mac-source 00:0c:29:51:4b:b5 -j REJECT
只有源mac没有目标mac
11.4string扩展
根据字符串过滤
vim /var/www/html/index.html www.google.com
vim /var/www/html/index.html www.baidu.com
www.google.com
curl 192.168.241.11/index.html
www.baidu.com
iptables -A OUTPUT -p tcp --sport 80 -m string --algo bm --from 62 --string "google" -j REJECT
11.5time
时间是UTC时间 世界协商时间
date -u
man iptables-extensions
iptables -A INPUT -m time --timestart 16:00 --timestop 18:00 -j REJECT
11.6连接最大数
gcc flood connect.c -o flood
./flood 192.168.241.11
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 2 -j REJECT
11.7limit 限制流量
iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 10/minute --limit-burst 5 -j ACCEPT
每分钟允许10个 前5个不限制
iptables -A INPUT -p icmp -j REJECT
11.8state状态
- NEW:无论是我发出的第一个包还是收到的第一个包 都叫NEW
- ESTABLISHED:NEW 之后都叫ESTABLISHED,除了第一个
- RELATED:ftp 权限端口会自动打开数据端口
- NVALID:无效的连接,如flag标记不正确
- UNTRACKED:未进行追踪的连接,如:raw表中关闭追踪
- cat /proc/net/nf_conntrack 默认连接跟踪功能需要开启 state功能
11.8.1实现功能
老用户可以访问 新用户不可以访问
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
已在ping的可以继续ping,ping停止的话不可以再ping,xshell也不可以连
iptables -A INPUT -m state --state NEW -j REJECT 新用户拒绝
lsmod | grep comn 内核模块可以看到,调用state状态时可以看到
cat /proc/sys/net/netfilter/nf_conntrack_max 记录的用户数为65536
echo 1 > /proc/sys/net/netfilter/nf_conntrack_max 修改最大记录数
tail /var/log/messages 查看日志
iptables -A INPUT -m state --state ESTABLISHED ACCEPT
iptables -A INPUT -m state --state NEW -j REJECT
延伸
报错Feb 5 09:41:49 localhost kernel: nf_conntrack: table full, dropping packet
A不能访问我,我可以访问A 单向通讯
iptables -A INPUT -s 192.168.91.101 -j REJECT 不行都不可以了
iptables -A INPUT -s 192.168.91.101 -m state --state NEW -j REJECT 第一个包是请求包只要禁止请求包即可
11.9target
log
iptables -I INPUT -s 192.168.91.101 -p tcp -m multiport --dports 80,21:23 -m state --state NEW -j LOG --log-prefix "hello:"
12.规则保存
iptables-save 此条命令会将所有规则打印在屏幕上
iptables-restore 支持标准输入
iptables-save > /data/iprule
iptables-restore < /data/iprule
iptables -A INPUT -s 192.168.241.1 -j ACCEPT
iptables -A INPUT -s 192.168.241.0/24 -j ACCEPT
iptables -A INPUT -j REJECT
将这三条规则加入到规则表中
iptables-save > /data/iprule 备份
iptables-restore < /data/iprule 导入
12.1开机自动加载
vim ~/.bashrc
vim /etc/rc.d/rc.local
iptables-restore < /data/iprule
chmod +x /etc/rc.d/rc.local
12.2测试
iptables -F
/etc/rc.d/rc.local
iptables -vnL
12.3备份工具
yum install iptables-services.x86_64 -y
rpm -ql iptables-service
/etc/sysconfig/iptables 存放系统自带的规则
systemctl start iptables-services
systemctl enable iptables-services
13.自定义链
将规则分类 web链 db链 java链
iptables -N web 自定义链
iptables -vnL 可以看到自己定义的链
iptables -E web WEB 修改名称
iptables -A INPUT -s 192.168.241.0/24 -j WEB
input链调用将自定义链和INPUT链修改也可以保存
删除自定义链
iptables -F INPUT
iptables -F WEB 删除
iptables -X WEB 清空自定义链的规则
curl http://ip.sh 查看本机主机访问公网时使用的ip
14.永久开启路由转发功能
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 将此写入配置文件
15.SNAT
iptables -t nat -A POSTROUTING -s 192.168.241.0/24 -o ens36 -j SNAT --to 12.0.0.1
将源地址为192.168.241.0网段的私网地址全部转化为网关地址
iptables -t nat -A POSTROUTING -s 192.168.241.0/24 -o ens36 -j MASQUERADE
如果地址不固定可以设置
16.DNAT
iptables -t nat -A PREROUTING -i ens36 -d 12.0.0.10 -p tcp --dport 80 -j DNAT --to 192.168.241.22
iptables -t nat -A POSTROUTING -o ens36 -s 192.168.241.0/24 -j SNAT --to 12.0.0.254
有去有回踩可以ping通 所以要加SNAT
iptables -t nat -A PREROUTING -i ens36 -d 12.0.0.254 -p tcp --dport 80 -j DNAT --to 192.168.241.11:8080
相关文章:
Linux系统安全——iptables相关总结
在使用iptables时注意要先关闭firewalld(systemctl stop firewalld.service) 1.查看iptables规则 iptables -vnL 选项含义-v查看时显示更多详细信息-n所有字段以数字形式显示-L查看规则列表 例,拒绝来自192.168.241.22的源地址 直接丢弃 …...

深度学习(14)--x.view()详解
在torch中,常用view()函数来改变tensor的形状 查询官方文档: torch.Tensor.view — PyTorch 2.2 documentationhttps://pytorch.org/docs/stable/generated/torch.Tensor.view.html#torch.Tensor.view示例 1.创建一个4x4的二维数组进行测试 x torch.…...

最新wordpress外贸主题
日用百货wordpress外贸主题 蓝色大气的wordpress外贸主题,适合做日用百货的外贸公司搭建跨境电商网站使用。 https://www.jianzhanpress.com/?p5248 添加剂wordpress外贸建站主题 橙色wordpress外贸建站主题,适合做食品添加剂或化工添加剂的外贸公司…...
Spring Cloud Gateway:使用RestController动态更新路由
相关类介绍 动态路由(自己控制,非注册中心控制)涉及两个很重要的Bean: RouteDefinitionWriter:用于添加、修改、删除路由规则。RouteDefinitionLocator:用于查询路由规则。 以及一个相关事件:…...

用Python动态展示排序算法
文章目录 选择冒泡插入排序归并排序希尔排序 经常看到这种算法可视化的图片,但往往做不到和画图的人心灵相通,所以想自己画一下,本文主要实现归并排序和希尔排序,如果想实现其他算法可参考这篇 C语言实现各种排序算法[选择&#x…...
vscode代码快捷键
1、 log console.log()2、edf export default (first)>{ second } 或者 export default function(params)>{ }可以使用tab键切换修改项 3、ednf export default function first(second) {third}4、! 生成html模板 5、div#app <div id"app"></di…...
深入了解C++:形参、内联、重载、引用、const和指针、new和delete
形参带默认值的函数 1.给默认值的时候从右向左给。 2.定义出可以给形参默认值,声明也可以给形参默认值。 3.形参默认值只能出现一次。 4.参数调用的效率问题 #sum(10,20)对应了五条汇编指令 mov eax,dword ptr[ebp-8] push eax mov ecx dword ptr[ebp-4] push …...
Linux 目录结构结构
Linux 目录结构结构 概念 Linux 没有 C、D、E...盘符,只有一个目录树。通过挂载,将不同的磁盘挂载到目录树下,通过目录访问磁盘。 不同目录的作用 目录存放内容/作用/根目录,目录树的起点,存放所有文件。…...

C++基础入门:掌握核心概念(超全!)
C作为一门广泛使用的编程语言,以其高性能和灵活性在软件开发领域占据重要地位。无论是游戏开发、系统编程还是实时应用,C都是一个不可或缺的工具。本博客旨在为初学者提供C编程语言的核心概念,帮助你建立坚实的基础。 C关键字 C关键字是编程…...

Linux第47步_安装支持linux的第三方库和mkimage工具
安装支持linux的第三方库和mkimage工具,做好移植前的准备工作。 编译linux内核之前,需要先在 ubuntu上安装“lzop库”和“libssl-dev库”,否则内核编译会失败。 mkimage工具会在zImage镜像文件的前面添加0x40个字节的头部信息,就可以得到uI…...

数据工程工程师学习路线图
数据工程岗位要求 Skill Sets required: - Hands on experience enabling data via Adobe Analytics and/or Google Analytics - Understanding of how customer level data is captured and stitched with behavioural data - Experience working with Testing (QA) and D…...

MySQL主从同步与分库分表
分库分表...

百度PaddleOCR字符识别推理部署(C++)
1 环境 1.opencv(https://sourceforge.net/projects/opencvlibrary/) 2.cmake(https://cmake.org/download/) 3.vs2019((https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.1) 4.paddleOCR项目-建议2.0(http…...

C++ Qt框架开发 | 基于Qt框架开发实时成绩显示排序系统(2)折线图显示
对上一篇的工作C学习笔记 | 基于Qt框架开发实时成绩显示排序系统1-CSDN博客继续优化,增加一个显示运动员每组成绩的折线图。 1)在Qt Creator的项目文件(.pro文件)中添加对Qt Charts模块的支持: QT charts 2…...

Microsoft Excel 加载数据分析工具
Microsoft Excel 加载数据分析工具 1. 打开 Excel,文件 -> 选项2. 加载项 -> 转到…3. 分析工具库、分析工具库 - VBA4. 打开 Excel,数据 -> 数据分析References 1. 打开 Excel,文件 -> 选项 2. 加载项 -> 转到… 3…...
Day32 贪心算法part02
买卖股票的最佳时机 太牛了我,随随便便双指针秒杀 md题解里面双指针都没用直接for循环秒杀 跳跃游戏 写成这样纯粹是没有看到第一次跳跃必须从第一个开始 class Solution:def canJump(self, nums: List[int]) -> bool:if len(nums) 1:return Truefor i in …...
3分钟带你了解Vue3的nextTick()
前言 Vue 实现响应式并不是数据发生变化之后 DOM 立即变化,而是按一定的策略进行 DOM 的更新。简单来说,Vue在修改数据后,视图不会立刻更新,而是等同一事件循环中的所有数据变化完成之后,再统一进行视图更新ÿ…...
数据库的使用方法
sqlite3 API: 头文件: #include <sqlite3.h> 编译时候要加上-lsqlite3 gcc a.c -lsqlite3 1)sqlite3_open int sqlite3_open(const char *filename, /* Database filename (UTF-8) */ sqlite3 **ppDb /* OUT: SQLite db …...

HTML5和CSS3强化知识总结
HTML5的新特性 HTML5的新增特性主要是针对于以前的不足,增一些新的标签、新的表单和新的表单属性等。这些新特性都有兼容性问题,基本是IE9以上版本的浏览器才支持,如果不考虑兼容性问题,可以大量使用这些新特性。 HTML5新增的语义…...

华为机考入门python3--(13)牛客13-句子逆序
分类:列表 知识点: 列表逆序(和字符串逆序是一样的) my_list[::-1] 题目来自【牛客】 def reverse_sentence(sentence): # 将输入的句子分割words sentence.split() # 将单词逆序排列 words words[::-1] # 将单词用空…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...