当前位置: 首页 > news >正文

python脚本 限制 外部访问 linux服务器端口

注意:该脚本会清空linux防火墙的filter表的规则和用户自定义链路

脚本的效果是将端口限制为仅服务器内部访问 

可以提供ip地址白名单

具体脚本:

#!/usr/bin/python3
import argparse, subprocess, sys, redef popen(cmd):global resulttry:result = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding='utf-8', check=True)except Exception as e:raise Exception(e.stderr)file_count = result.stdout.strip()  # 假设grep -c 的输出只有一行且没有额外的空格或换行符return file_countdef assignment():parser = argparse.ArgumentParser(description='manual to this script')parser.add_argument("--ip_white_list", type=str, default="")parser.add_argument("--port_list", type=str, default="")args = parser.parse_args()ip_white_list = args.ip_white_listport_list = args.port_listif not port_list :raise Exception("--port_list不能为空")ip_white_list = f'{ip_white_list},'.split(",")port_list = f'{port_list},'.split(",")ip_white_list = set(filter(lambda x:x!='',ip_white_list))port_list = set(filter(lambda x:x!='',port_list))for port in port_list:if re.search(r"[^0-9]", port):raise Exception("--port_list 不是合法的端口")passif ip_white_list :for ip_white in ip_white_list:if re.search(r"[^0-9.]", ip_white):raise Exception("--ip_white_list 不是合法的ip地址")passreturn ip_white_list, port_listdef clear_iptables_rule():popen("iptables -F ")popen("iptables -X ")passdef ip_white(ip_white_list, port_list):popen("iptables -t filter -P INPUT ACCEPT")popen("iptables -t filter -P OUTPUT ACCEPT")popen("iptables -A INPUT -p tcp -s 127.0.0.1 -j ACCEPT")popen("iptables -A INPUT -p tcp -s $(ip r g  1|cut -d ' ' -f 7) -j ACCEPT")if ip_white_list:for ip in ip_white_list:for port in port_list:popen(f"iptables -A INPUT -p tcp -s {ip} --dport {port} -j ACCEPT")def port_disables(port_list):if port_list:for port in port_list:popen(f"iptables -A INPUT -p tcp --dport {port} -j REJECT ")passdef clear_script():popen(f"echo '' > {sys.argv[0]}")passif __name__ == "__main__":ip_white_list, port_list = assignment()clear_iptables_rule()ip_white(ip_white_list, port_list)port_disables(port_list)clear_script()pass

执行脚本示例选项

./ta  --port_list 8081,8080 --ip_white_list 192.168.0.1,120.0.0.2

http://www.lryc.cn/news/384910.html

相关文章:

  • Redis-哨兵模式-主机宕机-推选新主机的过程
  • 游戏工厂:AI(AIGC/ChatGPT)与流程式游戏开发
  • 每日一练 - OSPF 组播地址
  • AMHS工程师的培养
  • 如何在前端项目中制定代码注释规范
  • 一位苹果手机硬件工程师繁忙的一天
  • Python | 使用均值编码(MeanEncoding)处理分类特征
  • 面试-java异常体系
  • Clickhouse 的性能优化实践总结
  • 变工况下转子、轴承数据采集及测试
  • 泰迪智能科技与成都文理学院人工智能与大数据学院开展校企合作交流
  • ubuntu22.04安装初始化
  • 学习新语言方法总结(一)
  • Mysql数据的备份与恢复
  • 规上!西安市支持培育商贸企业达限纳统应统尽统申报奖励补助要求政策
  • Go语言测试第二弹——基准测试
  • 关于“刘亦菲为什么无人敢娶”的问题❗❗❗
  • LeetCode:经典题之141、142 题解及延伸
  • rk3568 OpenHarmony 串口uart与电脑通讯开发案例
  • canvas画布旋转问题
  • vue3 【提效】自动导入框架方法 unplugin-auto-import 实用教程
  • clip系列改进Lseg、 group ViT、ViLD、Glip
  • Ubuntu下TensorRT与trtexec工具的安装
  • MySQL定时任务
  • Pandas实用Excel数据汇总
  • 【计算机网络】[第4章 网络层][自用]
  • Unity3D Entity_CacheService实现详解
  • DLMS/COSEM协议—(Green-Book)Gateway protocol
  • Android高级面试_12_项目经验梳理
  • 【项目实训】解决前后端跨域问题