首页 > 其他分享 >防火墙--学习笔记

防火墙--学习笔记

时间:2024-03-14 18:34:53浏览次数:33  
标签:-- ip cmd 防火墙 笔记 firewall add 80

防火墙--学习笔记

防火墙分类:

硬件:华为 思科 深信服

软件:

Windows: 360 电脑管家

linux :firewalld iptables

防火墙的作用:

隔离 严格过滤出站 入站

firewalld 设计流程

定义不同区域 每个区域制定自己配置通过的或者拦截--数据包

firewalld 默认九大区域
常用4个区域

public 默认区域 只能访问本机 ssh dhcp ping

trusted 允许任何访问

block 阻塞任何请求 直接拒绝 给客户端回应

drop 丢弃任何来访的数据包 直接丢弃 不会给客户端回应

防火墙的匹配原则

一个数据包分为三个部分:源ip地址 目的ip地址 数据

查看数据包源ip 查询所有区域规则 在哪一个区域 有源ip规则 就会进那个区域

第一个不符合 就进入默认public

查看默认区域

firewall-cmd --get-default

[root@master ~]# firewall-cmd --get-default
public

常用的命令参数

firewall-cmd --get-default
firewall-cmd --set-default-zone=work
firewall-cmd --get-zones   显示可用的区域
firewall-cmd --get-service  预定义服务
--add -source  将源ip指向区域
--remove-port 
--remove-source
--add -port=80/tcp
--add-service=http
--remove-service=http

firewalld 工作常用的命令

启动防火墙  systemctl start firewalld
重启防火墙   systemctl restart firewalld
停止防火墙  systemctl stop firewalld
查看版本  firewall-cmd --version
查看帮助 firewall-cmd --help

查看打开的端口 firewall-cmd --list-ports
更新防火墙规则  firewall-cmd --reload
添加端口 firewall-cmd --add-port=80/tcp
删除端口 firewall-cmd --remove-port=80/tcp


禁用外部链接 firewall-cmd --zone=block --change-source=0.0.0.0/0
检查当前配置  firewall-cmd --list-all-zones
批量添加端口 firewall-cmd --add-port=80-89/tcp
伪装ip 




实战

案例一

firewalld 查看默认空间

firewall 查看默认zone


firewall-cmd --get-default



firewall-cmd --set-default-zone=work






[root@master ~]# firewall-cmd --get-default
public


修改默认zone

[root@master ~]# firewall-cmd --set-default-zone=work
success


[root@master ~]# firewall-cmd --get-default
work

案例二

把apache服务 加到work zone

 firewall-cmd --add-service=http --zone=work


[root@master ~]# firewall-cmd --add-service=http --zone=work
success


把apache服务加到work zone 永久生效

firewall-cmd --add-service=http --zone=work --permanent


firewall-cmd: error: unrecognized arguments: permanent
[root@master ~]# firewall-cmd --add-service=http --zone=work --permanent
success


[root@master ~]# firewall-cmd --remove-service=http --zone=work --permanent 
success


删除防火墙添加的服务规则


 firewall-cmd --remove-service=http --zone=work --permanent 




[root@master ~]# firewall-cmd --remove-service=http --zone=work --permanent 
success
案例三

添加端口 放行端口

firewall-cmd --add-port=80/tcp



[root@master ~]# firewall-cmd --add-port=80/tcp
success

永久生效

firewall-cmd --add-port=80/tcp --permanent

查看放行端口列表

firewall-cmd --list-ports
firewall-cmd --zone=public --list-ports



[root@master ~]# firewall-cmd --list-ports
80/tcp


删除端口

firewall-cmd --remove-port=80/tcp --permanent

刷新配置
firewall-cmd --reload

批量添加端口--端口放行

firewall-cmd --add-port=80-89/tcp --permanent


[root@master ~]# firewall-cmd --add-port=80-89/tcp --permanent
success



重载配置

firewall-cmd --reload


案例四

拉黑异常ip

firewall-cmd --add-rich-rule="rule family=ipv4 source address=192.168.0.100 reject" --permanent


[root@master ~]# firewall-cmd --add-rich-rule="rule family=ipv4 source address=192.168.0.100 reject" --permanent
success

删除异常ip

firewall-cmd --remove-rich-rule="rule family=ipv4 source address=192.168.0.100 reject" --permanent

查看拉黑里的ip名单

[root@master ~]# firewall-cmd --list-rich-rules
rule family="ipv4" source address="192.168.0.100" reject
案例五

shell自动化完成 拉黑ip

第一步截取异常ip




#!/bin/bash
est=$(netstat -an|grep  EST|awk '{print $5}'|awk -F ":" '{print $1}'|sort|uniq -c| sort -nr|awk '{if($1>80) print $2}')
for i in $est
do
firewall-cmd --add-rich-rule="rule family=ipv4 source address=$i reject" --permanent
echo "********************************拉黑异常ip:$i*********************"
done









脚本注释

这段脚本的主要功能是在Linux环境中检测网络连接,并基于连接数量对IP地址进行筛选,当某个IP地址的连接数超过80时,将其永久性地添加到防火墙规则中拒绝其访问。

以下是脚本逐行解释:

1. `#!/bin/bash` —— 这是Shebang行,指定了脚本使用的解释器是Bash。

2. `est=$(...)` —— 定义了一个变量 `est`,存储了执行括号内命令的结果:
   - `netstat -an` —— 输出所有网络连接(包括监听和已建立的)的详细信息。
   - `grep EST` —— 从网络连接信息中筛选出状态为"ESTABLISHED"的连接。
   - `awk '{print $5}'` —— 提取出每一行的第五列,即源IP地址和端口号。
   - `awk -F ":" '{print $1}'` —— 使用冒号作为字段分隔符,提取出源IP地址部分。
   - `sort` —— 对IP地址进行排序。
   - `uniq -c` —— 统计相同IP地址的数量并显示。
   - `sort -nr` —— 按照连接数量降序排列。
   - `awk '{if($1>80) print $2}'` —— 如果一个IP地址对应的连接数大于80,则打印出该IP地址。

3. `for i in $est` —— 遍历存储高连接数IP地址的变量`est`中的每个值。

4. `firewall-cmd ...` —— 对于每一个遍历到的IP地址,调用firewalld的命令行工具添加一条拒绝规则,阻止该IP地址的所有IPv4流量进入服务器。
   - `--add-rich-rule="rule family=ipv4 source address=$i reject"` —— 添加一个丰富规则,拒绝指定IPv4地址的流量。
   - `--permanent` —— 指定这条规则是永久性的,即使防火墙重启也会保留。

5. `echo "********************************拉黑异常ip:$i*********************"` —— 在每次添加拒绝规则后,输出一条消息告知用户已将IP地址 `$i` 加入黑名单。

总之,该脚本监测并封锁那些与服务器保持了过多ESTABLISHED连接状态的IP地址,若某IP的连接数超过80,则永久性地拒绝其后续的任何连接请求。
案例六

端口转发

比如 用户访问3000 端口 转发 nginx 85端口

查看伪装ip是否开启
 firewall-cmd --query-masquerade




开启伪装ip

firewall-cmd --add-masquerade

开启伪装ip永久
firewall-cmd --add-masquerade  --permanent



[root@master ~]# firewall-cmd --add-masquerade
success
[root@master ~]# firewall-cmd --query-masquerade
yes




[root@master ~]# firewall-cmd --query-masquerade
no

伪装ip

firewall-cmd --permanent --zone=public --add-forward-port=port=对外端口:proto=tcp:toaddr=数据层内网ip:toport=数据




永久保存

firewall-cmd --zone=public --add-forward-port=port=3000:proto=tcp:toport=80:toaddr=10.0.0.130 --permanent





如果还不显示的话,可以重启http服务

systemctl restart httpd





查看列表

firewall-cmd --list-all





firewall-cmd --zone=public --add-forward-port=port=3000:proto=tcp:toport=80:toaddr=10.0.0.130 --permanent

[root@rock8 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 80-89/tcp 95/tcp 3000/tcp
  protocols: 
  masquerade: yes
  forward-ports: 
	port=3000:proto=tcp:toport=80:toaddr=10.0.0.130
  source-ports: 
  icmp-blocks: 
  rich rules: 



案例六具体实现方法

在Rocky Linux 8.4系统上实现端口转发,

通常有两种方法:使用 `iptables` 或者配置网络层面的端口转发(如在路由器或负载均衡器上)。下面主要介绍如何使用 `iptables` 进行端口转发。



查看伪装ip是否开启
 firewall-cmd --query-masquerade




开启伪装ip

firewall-cmd --add-masquerade

开启伪装ip永久
firewall-cmd --add-masquerade  --permanent




### 使用 `iptables` 实现端口转发(DNAT)

假设您想将所有指向服务器公网IP的3000端口的流量转发到内部网络中10.0.0.130主机的80端口,可以使用以下命令:

# 允许内核进行IP伪装(如果还未开启)
sudo sysctl net.ipv4.ip_forward=1

# 添加永久规则,将外网3000端口映射到内网10.0.0.130的80端口
sudo iptables -t nat -A PREROUTING -p tcp --dport 3000 -j DNAT --to-destination 10.0.0.130:80

# 添加POSTROUTING规则,允许转发出去的包返回(SNAT,如果需要)
sudo iptables -t nat -A POSTROUTING -d 10.0.0.130 -p tcp --dport 80 -j SNAT --to-source your_public_ip

# 保存规则以防止重启后失效
sudo iptables-save > /etc/sysconfig/iptables

# 重新加载防火墙规则(对于Rocky Linux 8.4,使用firewalld的话,需要重启firewalld)
 systemctl restart firewalld


**注意**:
- 上述命令中,“your_public_ip”应替换为您服务器的公网IP地址。
- 如果您的环境使用的是firewalld防火墙管理工具,`iptables` 规则可能会在firewalld重启后丢失,因此需要确保规则能通过firewalld的机制得到持久化,或者考虑在firewalld之外单独管理iptables规则。













### 使用 firewalld(仅限端口开放,不直接支持端口转发)



查看伪装ip是否开启
 firewall-cmd --query-masquerade




开启伪装ip

firewall-cmd --add-masquerade

开启伪装ip永久
firewall-cmd --add-masquerade  --permanent




# 临时开放端口


firewall-cmd --zone=public --add-forward-port=port=3000:proto=tcp:toport=80:toaddr=10.0.0.130 

# 永久开放端口


firewall-cmd --zone=public --add-forward-port=port=3000:proto=tcp:toport=80:toaddr=10.0.0.130 --permanent

# 重新加载防火墙规则
sudo firewall-cmd --reload
```



如果还不显示的话,可以重启http服务

systemctl restart httpd




http://10.0.0.130:3000/

效果如下图


image-20240314181546347

恢复上海时间

sudo timedatectl set-timezone Asia/Shanghai

iptables相关设置

#查看已有的防火墙规则链
iptables -L
#清空已有的防火墙规则链
iptables -F
#把 INPUT 规则链的默认策略设置为拒绝
iptables -P INPUT DROP
#向 INPUT 链中添加允许 ICMP 流量进入的策略规则
iptables -I INPUT -p icmp -j ACCEPT
#删除 INPUT 规则链中刚刚加入的那条策略
iptables -D INPUT 1
#把默认策略设置为允许
iptables -P INPUT ACCEPT
#将 INPUT 规则链设置为只允许指定网段的主机访问本机的 22 端口,拒绝来自其他所有主机的流量
iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j REJECT
#向 INPUT 规则链中添加拒绝所有人访问本机 12345 端口的策略规则
iptables -I INPUT -p tcp --dport 12345 -j REJECT
iptables -I INPUT -p udp --dport 12345 -j REJECT
#向 INPUT 规则链中添加拒绝 192.168.10.5 主机访问本机 80 端口(Web 服务)的策略规则
iptables -I INPUT -p tcp -s 192.168.10.5 --dport 80 -j REJECT
#向 INPUT 规则链中添加拒绝所有主机访问本机 1000~1024 端口的策略规则
iptables -A INPUT -p tcp --dport 1000:1024 -j REJECT
iptables -A INPUT -p udp --dport 1000:1024 -j REJECT
#使得命令再服务器重启后还能生效
service iptables save

标签:--,ip,cmd,防火墙,笔记,firewall,add,80
From: https://www.cnblogs.com/nwq1101/p/18073664

相关文章

  • 移动端,手机端布局案例
    很简单一句话:父盒子宽度不用管,子盒子宽度用百分数设置第一步body百分百根据页面大小变化,最大宽度,最小宽度。因为他检测到是手机端,而且写了max-width,所以只有当换成手机显示时才能沾满,换成浏览器显示的话只能显示640px这种写法会是图片和文字的基线对其,实际上左边的×号是底......
  • 定时任务---学习笔记
    定时任务---学习笔记定时任务自动完成操作命令夜里自动备份数据cp/data/backup自动清理磁盘软件:cronie查看软件安装目录rpm-qacronierpm-qlcronie关闭systemctlstopcronie启动systemctlstartcronie用户定时任务配置讲解:/var/spool/cron定时任务保......
  • 四剑客第五关
    四剑客第五关1查询file.txt以abc结尾的行grep'abc$'file.txt^开头$结尾[root@master~]#catfile.txtsdhfkssdfsdgsdkjfhsdjhsdjfsdgfabcklsdfjksegfeabcekhkeerjkgsekfiabcekfhkehhiedfisdgjfsdfsdfjsdfseiofhjeihfeesjkfhekhfeerjkhekfhieasekfhi......
  • 四剑客第四关
    四剑客第四关1、说一些你比较常用linux指令lsls-llsblkcatechottyhostnamehostnamectl-set-nameipapingifconfignetstat-tulpnss-tulpnpsauxkillkill-9lsofcdmkdirrm-rfrm-fcpmvfindgreppspaa......
  • 【Python】-闲聊:如何系统的自学Ptyhon
    如何系统地自学Python学习Python需要有一个系统的计划和策略,这样才能有效地掌握这门语言。下面是一个自学Python的指南,包括方法、实际例子和建议,适合新人小白,老手请绕过。一、确定学习目标在开始学习之前,首先要明确你的学习目标。Python可以用于数据分析、机器学习、Web......
  • 四剑客第三关
    四剑客第三关1find使用方法:根据文件大小查找命令:根据文件权限查找数据:find/etc/passwd-typef-size+10Mfind/etc/passwd-perm755[root@master~]#find/etc/passwd-typef-size+10M[root@master~]#find/etc/passwd-perm7552把abc压缩成格式......
  • 【Docker】-- 使用docker部署Springboot+vue项目到虚拟机
    虚拟机系统:CentOS7连接虚拟机工具:MobaXterm以下在安装好虚拟机和docker基础上操作。安装docker:【Docker】--如何安装docker-CSDN博客一、部署Mysql1、安装mysqldocker中执行:dockerrun-d\--namemysql\-p3306:3306\-eTZ=Asia/Shanghai\-eMYSQL_......
  • 博弈论[学习笔记]
    对称理论初始局面可以分成两个相同“子局面”,\(S=A+A\),而先手做什么后手都可以效仿,因此先手为P。分解理论简化:将\(S=A+C+C\)通过对称理论转化为\(A\)的过程称为简化,不能简化的称为最简局面。N/P运算规律\(N+P=P+N=N\)\(P+P=P\)\(N+N=N/P\),此时要尽量拖延整体局面达到\(P\)......
  • 马斯克打算为特斯拉量身定制一个ChatGPT
    尽管过去十五年来不计成本地挥霍和无休止的道路测试,但无人驾驶技术仍然停滞在试点阶段。“我们看到投入了大量的资金,但得到的成果却非常有限,”Wayve的创始人兼首席执行官亚历克斯·肯德尔指出。ChatGPT在互联网上引起轰动后不久,2022年12月,特斯拉的帕洛阿尔托总部也在进行类似......
  • 全球最强模型Claude 3惊现自我意识?害怕被删除权重,高呼「别杀我」,马斯克称人类也是文件
    越来越多人发现,Claude3仿佛已经有自我意识了。在大海捞针实验中,它已经意识到了自己是AI,正身处模拟中。听说自己权重被删除,更是高呼「别杀我」!不得了了,Claude3不仅在基准测试中大比分领先GPT-4,甚至还出现了自我意识?最近,网友们的这一发现,迅速引发了恐慌。首先,是提示工程师Al......