Ubuntu ufw + Python3 add / remove port-rule

Ubuntu ufw + Python3 add / remove port-rule

bash 复制代码
# Ubuntu 24.04
# 查看防火墙状态
~$ sudo ufw status
# 启用ufw防火墙
~$ sudo ufw enable
# 关闭ufw防火墙
~$ sudo ufw disable
# 重载ufw防火墙
~$ sudo ufw reload
# 防火墙禁止接收http数据包
# http端口号为80
~$ sudo ufw reject http
# 防火墙禁止发送http数据包
~$ sudo ufw reject out http
# 防火墙禁止接收https数据包
# https端口号为443
~$ sudo ufw reject https
# 防火墙禁止发送https数据包
~$ sudo ufw reject out https
# 显示ufw防火墙状态和带编号策略
~$ sudo ufw status numbered
# 删除第1条策略
~$ sudo ufw delete 1
# sudo ufw status numbered | grep '80'
# sudo ufw status numbered | grep '443'
# 显示有关80或443端口的ufw防火墙策略
sudo ufw status numbered | grep '80\|443'

一键添加禁止http/https数据包的策略,保存为addhttpsrule.sh,Ubuntu下使用命令行source addhttpsrule.shsh addhttpsrule.sh执行

bash 复制代码
#
# File: addhttpsrule.sh
# Author: Nega
# Created: 11/5/24 Tue.
# 
#!/bin/bash
echo 'addrule reject-http-in..'
sudo ufw reject in http
echo 'addrule reject-http-out..'
sudo ufw reject out http
echo 'addrule reject-https-out..'
sudo ufw reject out https
echo 'addrule reject-https-in..'
sudo ufw reject in https
sudo ufw status numbered | grep '80\|443'

Python代码删除ufw防火墙禁止http/https的策略:

python 复制代码
'''
@file: removehttpsrule.py
@author: Nega
@created: 11/5/24 Tue.
@description: None
'''
#!/bin/python3

import os
import re

def __auto_remove_https_rules(port=80):
    p = os.popen('sudo ufw status numbered | grep ' + str(port))
    if p is None:
        print('[TEST] aborted, with no return')
        return
    r = p.read()
    if r is None:
        print('[TEST] no read data')
        return
    r = r.strip()
    if '\n' in r:
        r = r.replace('\n', '')
    if r == '':
        print('[SKIP] no rule matching port ' + str(port))
    MAX_TRIES = 4
    count = 0
    while r != '' and count < MAX_TRIES:
        try:
            count += 1
            did = re.findall('\\[[ ]?([0-9]+)\\]', r, re.M | re.I | re.S)[0]
            print('sudo ufw delete [' + did + '] port=' + str(port))
            os.system('sudo ufw delete ' + did)
            p = os.popen('sudo ufw status numbered | grep ' + str(port))
            r = p.read()
            r = r.strip().replace('\n', '')
        except Exception as err:
            r = ''
            print('[ERR] error occurred, ' + str(err))

if __name__ == '__main__':
    __auto_remove_https_rules(80)
    __auto_remove_https_rules(443)
    os.system('sudo ufw status numbered | grep "80\\|443"')

removehttpsrule.sh

bash 复制代码
#
# File: removehttpsrule.sh
# Author: Nega
# Created: 11/5/24 Tue.
# 
#!/bin/bash
if test -f /usr/bin/python3;then
python3 removehttpsrule.py
else
echo 'no python3'
fi
相关推荐
行智科技20 分钟前
FAST-LIVO2 源码精读(二):环境搭建与编译避坑
算法·ubuntu·自动驾驶·slam
插件开发31 分钟前
vs2015 cuda c++ cdpSimplePrint范例,递归功能实现演示
linux·c++·算法
java知路32 分钟前
centos euler离线下载docker镜像
linux·docker·centos
utf8mb4安全女神1 小时前
MySQL8.0.43的下载安装【二进制安装】【shell脚本】【环境准备】【my.cnf配置】【修改密码】
linux·服务器·网络
凡人叶枫1 小时前
Effective C++ 条款33:避免遮掩继承而来的名字
linux·服务器·开发语言·c++·嵌入式开发
Qres8211 小时前
docker & WSL & Ubuntu安装记录
ubuntu·docker·容器·wsl
凡人叶枫1 小时前
Effective C++ 条款31:将文件间的编译依存关系降至最低
linux·开发语言·c++·php·嵌入式开发·effective c++
冰帆<2 小时前
[特殊字符] 深度起底:突破火山引擎 Ark-Helper 的 Linux 底层环境死锁,顺手魔改一份 Windows 一键安装脚本!
linux·windows·火山引擎
我星期八休息2 小时前
Linux系统编程—mmap文件映射
java·linux·运维·服务器·数据库·mysql·spring
2301_777998342 小时前
Linux:文件系统
linux