HCRM博客

CentOS7 SSH安全加固,Firewalld限制22端口访问特定IP

把22端口关小一点:CentOS7用Firewalld给SSH加一道源IP门锁

把22端口关小一点:CentOS7用Firewalld给SSH加一道源IP门锁

CentOS7 SSH安全加固,Firewalld限制22端口访问特定IP-图1

跳板机天天被扫,日志里全是失败尝试,看着就烦?别急着换端口,先给SSH配把“源IP钥匙”,只允许自家地址敲22,省事又安心。下面这份手记,从开服务到写规则,再到永久生效,每一步都踩过坑,照着敲,十分钟收工。

先确认:Firewalld真的在跑?

装系统时图方便把防火墙关了的人不少,先别写规则,确认它活着:

systemctl status firewalld

如果看到active (running)再往下走;没跑就systemctl start firewalld && systemctl enable firewalld,省得重启后又裸奔。

把默认zone摸清楚

CentOS7 SSH安全加固,Firewalld限制22端口访问特定IP-图2

CentOS7给网卡默认塞到public zone,SSH规则写错地方等于白搭。先看自己落在哪:

firewall-cmd --get-active-zones

回显里哪个zone后面跟着你的网卡名,就把规则写在哪,别手抖写到drop里,直接把自己锁外面。

写IP白名单:一条命令就放行

假设公司出口是203.0.113.0/24,家里拨号得198.51.100.18,两条都放:

firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="203.0.113.0/24" service name="ssh" accept'

CentOS7 SSH安全加固,Firewalld限制22端口访问特定IP-图3

firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="198.51.100.18/32" service name="ssh" accept'

写完记得firewall-cmd --reload,别问为什么连不上,规则没重载等于没写。

把默认SSH规则踢掉

Firewalld默认给SSH开了全网,不删就形同虚设。先把服务级规则拿掉:

firewall-cmd --permanent --zone=public --remove-service=ssh

再重载,ss -tlnp | grep :22只能看到监听,看不到放行,才算干净。

防止手抖:提前开条“救命缝”

云主机用控制台VNC救场还行,物理机一锁死就得跑机房。写规则前给当前IP开临时放行:

firewall-cmd --zone=public --add-source=<你的IP>/32 --timeout=300

五分钟足够你测试,确认没把自己关外面再--permanent写死。

端口还在?别被扫描器忽悠

规则生效后,用nmap从别的IP扫一下:

nmap -p 22 <服务器IP>

看到filtered才踏实;open说明还有漏网规则,回去继续删。

批量地址太多?用ipset省行数

出口网段一堆,写rich-rule眼花,先建集合:

firewall-cmd --permanent --new-ipset=ssh-allow --type=hash:net

firewall-cmd --permanent --ipset=ssh-allow --add-entry=203.0.113.0/24

firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source ipset="ssh-allow" service name="ssh" accept'

以后换地址只动ipset,规则文件不再膨胀。

日志想看就打开

被扫时想知道谁不死心,给规则加log:

firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" service name="ssh" log prefix="SSH_DENIED: " level="info" reject'

重载后journalctl -f就能看到被拒绝的IP,配合fail2ban直接拉黑更酸爽。

IPv6别忘关

现在手机热点都带IPv6,服务器如果双栈,默认zone可能放行ssh的ipv6。一并拿掉:

firewall-cmd --permanent --zone=public --remove-service=ssh

再写一条针对ipv6的rich-rule,只允许自家IPv6段,套路同IPv4。

最后复查:四条命令收尾

firewall-cmd --list-all-zones | grep ssh // 确认只剩白名单

ipset list ssh-allow // 看地址有没有手误

systemctl restart sshd // 重启服务不影响已放行的连接

exit // 重新登录,确认钥匙还好用

做完这几步,22端口就像装了猫眼,只有熟脸才能进,扫描器再蹦跶也只能吃闭门羹。日常运维省下的告警噪音,足够你多喝一杯咖啡。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/42017.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~