0


Ubuntu24.04使用ufw配置软路由(含桥接)兼容宝塔安全配置

作者:尚俊飞,范国强(月光光)

软路由配置方案一(一内网一外网)iptables 此方式不兼容宝塔:

使用iptables,防火墙需要关闭,可能造成安全问题。

  1. 软路由配置

  2. 编辑文件: vim /etc/netplan/00-installer-config.yaml


network:
ethernets:
enp1s0: # 外网
dhcp4: true
dhcp6: true
enp2s0: # 内网
addresses: [ 10.1.1.1/24 ]
version: 2


使用ifconfig查看网卡名字,区别内网和外网网卡,如果内网ip重启后ip丢失,可以手动在图形界面进行设置。

  1. 关闭ufw

systemctl disable --now ufw


?疑问:直接关闭是否导致安全性问题

(3)加载 nf_conntrack 模块

vim /etc/modules-load.d/custom-modules.conf (如果没有这个文件,看看目录下是否有其他文件,找一个啥也没写的,在后面加一行)


nf_conntrack


(4)修改内核参数

vim /etc/sysctl.d/99-forward.conf (如果没有这个文件,找99开头的)


net.ipv4.ip_forward=1

net.ipv4.conf.all.forwarding=1

net.ipv4.conf.default.forwarding=1

net.ipv4.conf.all.route_localnet=1

net.ipv6.conf.all.forwarding=1

net.ipv6.conf.default.forwarding=1


只配置了ipv4的部分

  1. iptables 脚本(只配置了标红的部分,ipv6的没有配置)

#!/bin/bash

/data/firewall-set.sh

根据你的WAN网卡名称对应修改!!!

WAN_NAME='enp1s0'

IPv4设置

iptables -t nat -N mt_rtr_4_n_rtr

iptables -t nat -A POSTROUTING -j mt_rtr_4_n_rtr

iptables -t nat -A mt_rtr_4_n_rtr -o ${WAN_NAME} -j MASQUERADE # 添加路由到作为WAN的网卡的自动源地址转换规则

添加IPv4转发优化规则

iptables -t mangle -N mt_rtr_4_m_rtr

iptables -t mangle -A FORWARD -j mt_rtr_4_m_rtr

iptables -t mangle -A mt_rtr_4_m_rtr -o ${WAN_NAME} -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu # 针对PPPoE链接的优化

iptables -t mangle -A mt_rtr_4_m_rtr -m state --state RELATED,ESTABLISHED -j ACCEPT # 允许已建立连接的数据包直接通过

iptables -t mangle -A mt_rtr_4_m_rtr -m conntrack --ctstate INVALID -j DROP

iptables -t mangle -A mt_rtr_4_m_rtr -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP

iptables -t mangle -A mt_rtr_4_m_rtr -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP

iptables -t mangle -A mt_rtr_4_m_rtr -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP

iptables -t mangle -A mt_rtr_4_m_rtr -i br_lan -o ${WAN_NAME} -j ACCEPT


IPv6 NAT设置,与IPv4基本一致

ip6tables -t nat -N mt_rtr_6_n_rtr

ip6tables -t nat -A POSTROUTING -j mt_rtr_6_n_rtr

ip6tables -t nat -A mt_rtr_6_n_rtr -o ${WAN_NAME} -j MASQUERADE # 添加路由到作为WAN的网卡的自动源地址转换规则

添加IPv6转发优化规则

ip6tables -t mangle -N mt_rtr_6_m_rtr

ip6tables -t mangle -A FORWARD -j mt_rtr_6_m_rtr

ip6tables -t mangle -A mt_rtr_6_m_rtr -o ${WAN_NAME} -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

ip6tables -t mangle -A mt_rtr_6_m_rtr -m state --state RELATED,ESTABLISHED -j ACCEPT

ip6tables -t mangle -A mt_rtr_6_m_rtr -m conntrack --ctstate INVALID -j DROP

ip6tables -t mangle -A mt_rtr_6_m_rtr -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP

ip6tables -t mangle -A mt_rtr_6_m_rtr -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP

ip6tables -t mangle -A mt_rtr_6_m_rtr -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP

ip6tables -t mangle -A mt_rtr_6_m_rtr -i br_lan -o ${WAN_NAME} -j ACCEPT

使用sudo执行以上sh脚本

安装一个可以实现该脚本持久化的工具

sudo apt install iptables-persistent

netfilter-persistent save (持久化保存,重启不会丢)

  1. 检查netplan配置是否正确

sudo netplan apply


  1. 遇到的问题:

*** too open,意思是文件目前的权限过于宽泛,sudo chmod 700 ;

...文件链接层数过多:使用vim编辑,或者找到链接的源文件修改;

  1. 参考网址

基于Ubuntu的软路由搭建记录 | 杂烩饭

软路由配置方案二(ufw配置):

采用ufw配置,兼容宝塔面板

(1)编辑文件: vim /etc/netplan/00-installer-config.yaml这步不变


network:
ethernets:
enp3s0: # 外网
dhcp4: true
dhcp6: true
enp4s0: # 内网
addresses: [ 10.1.1.1/24 ]
version: 2


+add(一外网多内网互通,桥接模式):

)编辑文件: vim /etc/netplan/00-installer-config.yaml

network:
ethernets:
2wlx3c46d8ade8db: # 外网
dhcp4: true
dhcp6: true
optional: true
enx00e099d7cad7: # 内网
dhcp4: false
dhcp6: false
enp0s31f6: #内网
dhcp4: false
dhcp6: false
bridges:
br0:
interfaces: #两张内网网卡添加进桥
- "enx00e099d7cad7"
- "enp0s31f6"
addresses: [10.1.1.1/24] #桥的ip
dhcp4: false
dhcp6: false
parameters:
stp: true
forward-delay: 4 #防环路
version: 2

(2)修改内核参数

vim /etc/sysctl.d/99-forward.conf (如果没有这个文件,找99开头的)


net.ipv4.ip_forward=1

net.ipv4.conf.all.forwarding=1

net.ipv4.conf.default.forwarding=1

net.ipv4.conf.all.route_localnet=1

net.ipv6.conf.all.forwarding=1

net.ipv6.conf.default.forwarding=1


(3)Edit /etc/default/ufw and set DEFAULT_FORWARD_POLICY to ACCEPT:

DEFAULT_FORWARD_POLICY="ACCEPT"

  1. ufw配置:

#开启ufw路由功能

$ufw allow route

#从内网发来的请求到达 enp3s0(内网) ,输出到 enp4s0(外网)

$ sudo ufw route allow in on enp3s0 out on enp4s0

+add 桥接模式执行这句

$ sudo ufw route allow in on 2wlx3c46d8ade8db out on br0

#允许内网ip通过

$ sudo ufw allow from 10.1.1.1/24

(5)编辑sudo vim /etc/ufw/before.rules

*nat

:PREROUTING - [0:0]

:POSTROUTING - [0:0]

-A PREROUTING -i enp3s0 -p tcp -j DNAT --to-destination 10.1.1.1

-A PREROUTING -i enp3s0 -p udp -j DNAT --to-destination 10.1.1.1

-A POSTROUTING -s 10.1.1.0/24 -o enp3s0 -j MASQUERADE

COMMIT

(6)ufw开机启动,配置重载

$ sudo ufw enable

$ sudo ufw reload

$sudo ufw status

  1. 安装宝塔,其他需要开机启动的程序使用宝塔守护,就不用后面的步骤了,gui程序直接通过ubuntu图形界面设置。

  2. Ubuntu使用systemd设置开机启动程序

  3. 创建一个新的服务文件:vim /etc/systemd/system/myapp.service


[Unit]

服务名称

Description=TestUi

需要在网络服务启动后才会启动

After=network-online.target

#确认网络服务启动

Wants=network-online.target

[Service]

程序启动脚本位置

ExecStart=/home/srv/myapp.sh

程序工作位置

WorkingDirectory=/home/srv/

服务意外终止时,Systemd 会自动重启该服务

Restart=always

DISPLAY环境变量 GUI程序必须配置此项否则无法启动 通常为0 具体看自己机器的环境

Environment=DISPLAY=:0

要运行该程序的用户名

User=root

设置重启间隔

RestartSec=5s

[Install]

服务会在multi-user.target启动时自动启动

WantedBy=multi-user.target


  1. 赋予myapp.service服务脚本文件可执行权限

sudo chmod 755 myapp.service


  1. 编写程序启动脚本:vim /home/srv/myapp.sh

#! /bin/bash

导入DISPLAY环境配置(GUI程序需配置)

export DISPLAY=:0

导入XAUTHORITY环境配置

XAUTHORITY环境配置可使用命令env查看(与登录的用户有关)

export XAUTHORITY=/.Xauthority #GUI程序需配置,Ubuntu24.04该路径重启自动变更

启动X server访问权限

/usr/bin/xhost +

启动程序

/usr/bin/myapp


  1. 赋予myapp.sh启动脚本文件可执行权限

sudo chmod 755 myapp.sh


  1. 手动启动服务并检查服务状态

sudo systemctl start myapp.service

sudo systemctl status myapp.service


  1. 启用服务在系统启动时自动运行

sudo systemctl enable myapp.service


  1. 参考网址:

ubuntu系统systemctl 开机启动Qt带gui程序_ubuntu开机运行gui应用-CSDN博客

Linux进程被信号杀死后退出状态码(exit code)的分析_exit-code-CSDN博客

  1. 安装系统启动主题(xyiot-ubuntu)

  2. 自动安装主题,下次启动时自动应用:

  3. 进入主题安装目录 ./xyiot-ubuntu

  4. 运行安装程序来安装主题:


sudo chmod u+x install && ./install


  1. 手动安装了主题:

  2. 进入安装目录,复制子文件夹( xyiot-ubuntu)移动到 /usr/share/plymouth/themes:


sudo cp -r ./xyiot-ubuntu /usr/share/plymouth/themes/


  1. 所有权变更为root:

sudo chown root:root /usr/share/plymouth/themes/xyiot-ubuntu


  1. 安装主题作为 default.plymouth 的替代主题:

sudo update-alternatives --install /usr/share/plymouth/themes/default.plymouth default.plymouth /usr/share/plymouth/themes/xyiot-ubuntu/xyiot-ubuntu.plymouth 100


  1. 运行命令配置default.plymouth,输入相应的数字将对应项设置为默认值:

sudo update-alternatives --config default.plymouth


  1. 不重启验证当前的开机动画:

全屏显示开机动画,5秒后自动退出

sudo plymouthd; sudo plymouth --show-splash; sleep 5; sudo plymouth --quit


参考网址:

在 Ubuntu 24.04 上安装和更改启动动画屏幕主题

安全检查


本文转载自: https://blog.csdn.net/dsb2008dsb/article/details/142850822
版权归原作者 尚俊飞 所有, 如有侵权,请联系我们删除。

“Ubuntu24.04使用ufw配置软路由(含桥接)兼容宝塔安全配置”的评论:

还没有评论