在网站采用独立服务器之后,难免会碰到服务器运维的一些问题,比如服务器的环境如何设置、服务器被流量攻击了怎么办、访问量并发过大硬件扛不住如何优化,今天CMSYOU在这里与大家分享最近一次的服务器运维防攻击实战经验:Linux服务器带宽跑满、磁盘读取写入BPS爆表的情况下如何设置防火墙拦截做到攻击防御。
一般来说,WIN服务器由于有mstsc远程连接,可以像本地操作系统一样的图形面板,于是操作起来相对熟悉轻松。Linux则需要依照命令行,不过好在可以用图形控制面板,比如宝塔面板、1Panel、小皮面板。采用Linux命令行安装上控制面板后,就如同CMS网站管理后台一样,可以抛开命令行来操作了。常规情况下,控制面板就足够使用了,方便、快捷。如果碰到标题中的情况:Linux服务器带宽跑满、磁盘读取写入BPS爆表怎么办?则需要结合主机空间商的主机基础监控的监控数据查看CPU使用率、公网带宽、磁盘读取写入BPS、磁盘读取写入IOPS、同时连接数等数据来做判断,有时需要结合命令行来进行一些操作。
今天碰到的情况:阿里云的一台ECS服务器从昨晚开始服务器带宽跑满、磁盘读取写入BPS爆表,造成网站访问奇慢、管理后台不能进入、宝塔面板也不能登录,并且上午还在持续。上午CMSYOU在收到“云服务器ECS-(ECS)IP维度公网流出平均速率-发生告警通知”后,开始排查。先尝试重启服务器,看是不是偶尔的运行卡住的情况。实际情况:重启服务器后很快就又进入跑满的情况,查看网站访问日志(宝塔面板的日志文件目录:/www/wwwlogs/),发现网站的访问日志文件比平时的大很多,说明访问上应该是有流量攻击。具体开始以下操作,具体抗住这一波攻击。
1、开启swap交换分区:
# 创建swap文件夹
sudo mkdir -v /var/cache/swap
# 进入swap文件夹
cd /var/cache/swap
# 创建swap文件,1K * 4M,预计4G大小的虚拟内存文件
sudo dd if=/dev/zero of=swapfile bs=1K count=4M
# 将新建的文件转换为swap文件
sudo mkswap swapfile
# 给swapfile文件权限
sudo chmod 600 swapfile
# 启用swap分区
sudo swapon swapfile
# 设置交换分区开机自启
echo "/var/cache/swap/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab
完成设置后,编辑/etc/sysctl.conf文件,修改vm.swappiness值为10~30,相当于当物理内存超过90%~60%就开始使用swap分区,执行sysctl -p 加载修改后配置。
经过这一设置,磁盘读取写入BPS降下来了:

服务器磁盘读取写入BPS得到缓解
2、统计高频访问的IP,设置防火墙拦截。
2.1、采用iftop检测访问IP流量情况。
需要先安装好iftop:
Cnetos安装:
yum install iftop -y
Ubuntu安装:
apt -y install iftop
查看当前进出IP:
iftop -i eth0 -n
进入后按t切换查看、按L参数显示进度条、按数字1、2、3排序列、按B查看最近2s、10s、40s的统计。

采用iftop监测IP访问流量情况
详细参数:
P 切换暂停/继续显示
h 在交互界面/状态输出界面之间切换
b 切换是否显示平均流量图形条
B 切换显示2s10s和40s内的平均流量
T 切换是否显示每个连接的总流量
j/k 向上或向下滚动屏幕显示当前的连接信息
f 编辑筛选码
l 打开iftop输出过滤功能 ,如输入要显示的IP按回车键后屏幕就只显示与这个IP相关的流量信息
L 切换显示流量刻度范围,刻度不同,流量图形条也会不同
q 退出iftop
2.2、采用统计访问日志文件的方式显示出高频IP。
命令行:
tail -100000 /www/wwwlogs/cmsyou.com-access_log | awk '{print $1}' | sort | uniq -c | sort -rn | head -10
这样可以统计出请求访问查看cmsyou.com网站的频率最高的IP,然后通过IP查看地区、类型,用来判断是否具备CC攻击特征。通常类型为“数据中心”、“未知”、“海外”等特性,则大概率是攻击IP。
2.3、得到可疑攻击的IP后,添加到防火墙拦截名单。
方法1:采用宝塔面板自带的防火墙工具添加IP拦截,位置:安全》系统防火墙》IP规则,点击“添加IP规则”按钮,填写IP、策略选择“禁止”,保存提交。

宝塔面板防火墙添加IP规则
方法2:Linux命令行添加到防火墙拦截名单:
# 解封单个 IP
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.100" reject'
# 解封 IP 段
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.0/24" reject'
# 重载配置生效
firewall-cmd --reload
持续观察,锁定请求频率高具备CC攻击特征的IP,然后添加到防火墙拦截。一段时间后服务器带宽使用率下来了:

服务器带宽使用率得到控制
最后,感谢大家一直来对CMSYOU的关注!CMSYOU一直还在专注CMS企业网站定制、功能二开定制,欢迎找我们定制,同时碰到CMS程序运维、服务器运维方面的问题,欢迎探讨!


点击加载更多