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] # 将单词用空…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
