linux配置防火墙信任当前登陆IP

linux配置防火墙信任当前登陆IP

linux配置防火墙信任当前登陆IP

如果觉得去折腾云API接口麻烦,那就折腾主机防火墙吧,这个稍微简单点,而且是通用技能,其它时候也能用得上。

原理: 先 ssh 登录主机,然后将当前源IP加入防火墙的可信区域内,且只允许可信区域的源IP对其它端口访问。

文末给出脚本方式添加访问IP到防火墙可信区域的示例

主机防火墙更新可信IP

简述:先配置基础的防火墙区域,然后再弄个脚本每次更新IP

区域描述:
设置有2个区域,不同的源IP会进入不同的区域;
将默认会进入的 public 区域的默认策略设置为拒绝,只对外开放1个端口;
将需要信任的源IP加入 trusted 可信任区域内,允许全部访问请求;

这样请求到主机时,防火墙会根据它的IP,选择进入不同的区域,匹配不同的规则;

root用户命令行执行

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 查看防火墙是否在运行,有可能没有开启
firewall-cmd --state

# 开启防火墙,并设为开机启动
systemctl stop firewalld
systemctl start firewalld
systemctl enable firewalld

# public 区域设置
firewall-cmd --zone=public --add-port=5000/tcp --permanent  # 添加允许所有IP访问的1个ssh端口
firewall-cmd --permanent --zone=public --set-target=DROP    # 设置默认策略为拒绝

# 移除区域内其它策略
firewall-cmd --permanent --zone=public --remove-service=ssh
firewall-cmd --permanent --zone=public --remove-service=dhcpv6-client
firewall-cmd --permanent --zone=public --remove-service=cockpit

# trusted 可信区域设置
firewall-cmd --permanent --zone=trusted --add-source=<当前登录云主机时的源IP>

# 加载配置
firewall-cmd --reload

# 查看当前规则
firewall-cmd --zone=public --list-all
firewall-cmd --zone=trusted --list-all

基础设定就完成了,下面来动态设定部分

流程:
先 ssh 普通用户登录主机后,执行一个这个脚本,脚本会获取当前登录使用的IP地址,并添加到可信区域内去

为了方便普通用户使用 sudo,为这个防火墙命令设置为不需要输入密码

/etc/sudoers 文件末尾添加

1
    <普通用户名称> ALL = NOPASSWD: /usr/bin/firewall-cmd

脚本:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/bin/bash
# 脚本名称: addIPtoTrusted.sh

# 重新加载防火墙配置,会清理掉上一次添加的临时源IP
sudo firewall-cmd --reload

# 获取本次登录主机所使用的源IP地址
remoteIp=$(w | grep wait| head -n 1 | awk '{print $3}')

# 添加到可信区域内
sudo firewall-cmd --zone=work --add-source=${remoteIp}

微信搜索IT运维小秋

Licensed under CC BY-NC-SA 4.0
转载或引用本文时请遵守许可协议,知会作者并注明出处
不得用于商业用途!
最后更新于 2021-08-02 00:00 UTC