1.禁ping,命令如下:
#firewall-cmd --permanent --add-rich-rule='rule icmp-type name="echo-request" drop'
#firewall-cmd --reload
2.修改sshd的端口
使用文本编辑器编辑 /etc/ssh/sshd_config 文件:
#vi /etc/ssh/sshd_config
找到 #Port 22 行,将其取消注释并修改为:
Port 22
Port 12345
保存并退出编辑器,这里我们让sshd同时监听22和要换的12345端口。
3.配置防火墙,放行12345端口
#firewall-cmd --permanent --add-port=12345/tcp
#firewall-cmd --reload
4.SELinux 配置(如果启用 SELinux)
首先检测是否启用了SELinux
#sestatus -v
SELinux status: enabled
或者禁用状态。
#sestatus -v
SELinux status: disabled
若启用,需要继续下面的命令添加12345端口并验证结果。
#semanage port -a -t ssh_port_t -p tcp 12345
#semanage port -l | grep ssh_port_t
5.重启 sshd 服务让配置生效
#systemctl restart sshd
6.在另一台主机上通过新端口连接:
ssh -p 12345 user@your_server_ip
如果连通正常,即表示修改成功。
7. sshd停止22端口。
使用文本编辑器编辑 /etc/ssh/sshd_config 文件:
#vi /etc/ssh/sshd_config
找到 #Port 22 行,将其取消注释并修改为:
#Port 22
Port 12345
重启 sshd 服务让配置生效
#systemctl restart sshd
8.防火墙封禁sshd的22端口(drop包)
#firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port=22 protocol="tcp" drop'
#firewall-cmd --reload
9.验证
#ping your_server_ip
#ssh user@your_server_ip
或者
#telnet your_server_ip 22
ping和ssh或者telnet都会超时,达到「黑洞」(silently drop)效果:
服务器对 ICMP echo 请求直接丢弃,不返回任何报文。客户端会看到的是请求超时(Request timed out)。
服务区端对22 端口的访问进行「黑洞式」处理,即对来自外部的请求包不回应、不拒绝,直接丢弃(DROP)。这样对方会感到连接该端口时只是超时无响应,从而达到隐藏和迷惑的效果。
若还要加固:
可以禁用root登录,采用一个更复杂的普通用户(比如姓名-学号/工号的方式,zhangsan-2024008)登录后再su到root账号。
ssh禁止用户密码登录,只允许公约登录。
改天再加上这些内容。