医院的系统并非所有业务都是7x24小时不停对外提供服务的。特别是夜晚或凌晨,除了值班医生或窗口人员,大部分人是不访问系统的。映射到互联网上的业务更是如此,夜间时段对于服务器来说是威胁非常大的时段。
因为时差的原因,国外攻击IP在夜间时段会非常活跃,大部分有效攻击都是发生在夜晚。即使发生因攻击导致的系统业务中断,因为使用人少也不会第一时间被发现。黑客有充裕时间扩大战果。
如果服务器夜间或非工作时间无人访问,可以通过写主机策略定时触发的方式关闭端口,等到了工作时间再开放端口。这样可以在不停业务服务进程的情况下,临时“断网”,预防夜间发生的网络入侵。
“断网”的面积也可以进行控制,比如只关停部分端口,或全部关停。网络防火墙也可以做到这一点,但影响面太大,一旦出现失误将引起大面积网络瘫痪。建议这种“断网”策略在主机层面做,不要在网络防火墙上做,即使出问题也只影响部分主机。
Linux 下可以基于 crond 服务实现定时触发,Windows 可以使用计划任务。当然也可以写一个轮询程序,到点触发相应动作。
Linux 下如果要实现 17:00 “断网”,08:00 恢复,可以如下写 crontab :
# crontab -l
0 17 * * * bash /root/firewall/deny.sh
0 8 * * * bash /root/firewall/allow.sh
断网脚本 deny.sh 可以简化为:
iptables -I INPUT 1 -s 10.2.2.2 -j ACCEPT
iptables -I INPUT 2 -j DROP
恢复网络的脚本 allow.sh 为:
iptables -D INPUT 2
iptables -D INPUT 1
在写断网或恢复脚本时一定要把管理员IP放行,不然就无法通过网络管理服务器了。
为保证脚本多次执行可重入,可以写一些判断条件,如果 iptables 策略已存在则放弃写入或删除。
加了条件检查的 deny.sh 脚本为:
tmpfile=`mktemp`
# 作为对照的 iptables 规则
default_rule='/root/firewall/default.iptables'
# 添加 iptables 策略
function deny
{
iptables -I INPUT 1 -s 10.2.2.2 -j ACCEPT
iptables -I INPUT 2 -j DROP
}
# 清理临时文件
function clean
{
rm "$tmpfile"
}
# 重复执行前的检查
function redo
{
iptables -nL INPUT | sed -n '3,4p' >$tmpfile
diff "$tmpfile" "$default_rule"
ret=$?
if [ $ret -eq 0 ]; then
true
else
deny
fi
}
# 初次执行要创建对照文件
if [ -e "$default_rule" ]; then
redo
else
deny
parent_directory=$(dirname "$default_rule")
mkdir -p "$parent_directory"
iptables -nL INPUT | sed -n '3,4p' >"$default_rule"
fi
clean
第一次执行 deny.sh 脚本时会生成对照文件,如果 iptables 中的规则存在,则不再写入。
同样在执行恢复脚本 allow.sh 时,也可以对已有的规则进行验证,如果规则存在则删除,否则跳过。修改过的 allow.sh 脚本如下:
tmpfile=`mktemp`
# 作为对照的 iptables 规则
default_rule='/root/firewall/default.iptables'
# 删除 iptables 策略
function recover
{
iptables -D INPUT 2
iptables -D INPUT 1
}
function clean
{
rm "$tmpfile"
}
# 重复执行前的检查
function redo
{
iptables -nL INPUT | sed -n '3,4p' >$tmpfile
diff "$tmpfile" "$default_rule" >/dev/null 2>&1
ret=$?
if [ $ret -eq 0 ]; then
recover
else
true
fi
}
# 初次执行要创建对照文件
if [ -e "$default_rule" ]; then
redo
else
true
fi
clean
脚本初次执行可以使用 bash -x deny.sh 检查每一条命令的执行结果,当验证无误后再写入 crontab 定时任务。
Windows 无法像 Linux 一样灵活配置防火墙策略顺序,只能使用防火墙策略导入导出的方式来定义阻断或放行策略。可以提前将预定义的策略写好,导出后作为备用。在不同时间段触发加载不同的防火墙策略。
Widnows 防火墙常用操作:
导出配置:
netsh advfirewall export "d:a.wfw"
导入配置:
netsh advfirewall import "d:a.wfw"
删除所有入出站配置:
netsh advfirewall firewall delete rule name=all
已删除 12 规则。
确定。
全文完。
如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。
原文始发于微信公众号(生有可恋):服务器按时间段提供服务
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论