Linux常用脚本(七) ---简单防火墙管理

server/2024/12/23 10:13:07/
#!/bin/bash# 检查是否以 root 权限运行
if [ "$(id -u)" -ne 0 ]; thenecho "请使用 root 权限运行此脚本"exit 1
fi# 用法
usage() {echo "用法: $0 {start|stop|status|flush}"echo "  start  : 启动防火墙并设置基本规则"echo "  stop   : 停止防火墙并清空规则"echo "  status : 查看防火墙规则"echo "  flush  : 清空所有规则"exit 1
}# 启动防火墙并设置基本规则
start_firewall() {echo "启动防火墙并设置规则..."# 清空所有规则iptables -F# 设置默认策略:拒绝所有入站流量,允许所有出站流量iptables -P INPUT DROPiptables -P OUTPUT ACCEPTiptables -P FORWARD DROP# 允许本地回环接口流量iptables -A INPUT -i lo -j ACCEPTiptables -A OUTPUT -o lo -j ACCEPT# 允许 SSH 流量(22端口)iptables -A INPUT -p tcp --dport 22 -j ACCEPT# 允许 HTTP 和 HTTPS 流量iptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A INPUT -p tcp --dport 443 -j ACCEPTecho "防火墙已启动,基本规则已设置"
}# 停止防火墙并清空规则
stop_firewall() {echo "停止防火墙并清空规则..."iptables -Fiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTecho "防火墙已停止,规则已清空"
}# 查看防火墙规则
status_firewall() {echo "当前防火墙规则:"iptables -L -v --line-numbers
}# 清空防火墙规则
flush_rules() {echo "清空所有防火墙规则..."iptables -Fecho "规则已清空"
}# 根据用户输入的参数执行相应操作
case "$1" instart)start_firewall;;stop)stop_firewall;;status)status_firewall;;flush)flush_rules;;*)usage;;
esac

测试:

linux">[root@iZ2vch0mnibclcpxzrbu5rZ ~]# chmod -x firewall.sh
[root@iZ2vch0mnibclcpxzrbu5rZ ~]# ./firewall.sh start
-bash: ./firewall.sh: 权限不够
[root@iZ2vch0mnibclcpxzrbu5rZ ~]# ./firewall.sh start
启动防火墙并设置规则...
防火墙已启动,基本规则已设置
[root@iZ2vch0mnibclcpxzrbu5rZ ~]# ./firewall.sh status
当前防火墙规则:
Chain INPUT (policy DROP 19 packets, 1220 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     all  --  lo     any     anywhere             anywhere            
2      312 28416 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:ssh
3        0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:http
4        0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:httpsChain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         Chain OUTPUT (policy ACCEPT 499 packets, 96964 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     all  --  any    lo      anywhere             anywhere            
[root@iZ2vch0mnibclcpxzrbu5rZ ~]# ./firewall.sh stop
停止防火墙并清空规则...
防火墙已停止,规则已清空
  • -F 用于清空规则。
  • -P 用于设置链的默认策略。
  • -A 用于向链添加规则。
  • -L 用于列出规则。

http://www.ppmy.cn/server/152463.html

相关文章

Spring Boot 整合 RabbitMQ:从入门到实践

在现代微服务架构中,消息队列(Message Queue)是实现服务之间异步通信的重要组件。RabbitMQ 作为一个功能强大的消息代理,提供了可靠的消息传递机制,广泛应用于分布式系统中。Spring Boot 作为 Java 生态中的主流框架&a…

语言模型与向量模型:深入解析与实例剖析

亲爱的小伙伴们😘,在求知的漫漫旅途中,若你对深度学习的奥秘、Java 与 Python 的奇妙世界,亦或是读研论文的撰写攻略有所探寻🧐,那不妨给我一个小小的关注吧🥰。我会精心筹备,在未来…

数据结构与算法Python版 散列函数设计与冲突解决方案

文章目录 一、散列函数设计二、冲突解决方案三、映射 一、散列函数设计 散列函数设计-折叠法 基本步骤:将数据项按照位数分为若干段,再将几段数字相加,最后对散列表大小求余,得到散列值例如:电话号码62767255&#x…

ajax同步执行async:false无效的解决方法

无效的情况: function ManHourCheck() {var StartDate $("#StartDate").val();//日报日期var EndDate $("#EndDate").val();//完成日期var UserID $("#UserID").val();//员工ID$.ajax({async: false,//加了这一行也没用!!!!!!!!!!…

【大语言模型】ACL2024论文-28 TTM-RE: 增强记忆的文档级关系抽取

【大语言模型】ACL2024论文-28 TTM-RE: 增强记忆的文档级关系抽取 目录 文章目录 目录文章信息摘要研究背景问题与挑战如何解决创新点算法模型实验效果推荐阅读指数:★★★★☆ 后记 文章信息 TTM-RE: 增强记忆的文档级关系抽取 摘要 本文提出了TTM-RE&#xff…

面向对象编程:原理、实践与应用

面向对象编程:原理、实践与应用 一、编程范式的演进 (一)从面向过程到面向对象 编程领域的发展见证了编程范式的不断演进,其中面向过程编程和面向对象编程是两种具有重要影响力的范式。面向过程编程以其直观的步骤执行逻辑&…

JDBC 入门教程

Java Database Connectivity (JDBC) 是 Java 平台提供的一种与各种数据库连接的方式和规范。通过 JDBC,开发者可以在 Java 平台上完成数据库的查询、更新和操作。本文将详细认识 JDBC 的基础概念,并通过实战例子介绍其使用方法。 1. JDBC 概念 JDBC 接口…

qt 类中的run线程

在Qt中,QThread类的run()方法是线程的执行入口,它是由QThread内部自动调用的,而不是用户直接调用。 详细解释: QThread类: QThread是Qt的线程类,提供了用于多线程操作的接口。我们可以创建QThread对象并将…