配置概览:
Linux服务器基本网络安全配置:
ssh远程登录端口及用户限制
,firewall配置开放端口
,用户权限及用户组配置
现在网络环境已今非昔比,如果服务器不进行任何安全配置,很容易受到黑客攻击,丢失数据的同时也徒增很多麻烦,很是恼人。本文总结了一些常用的网络安全、防火墙及用户组配置,可以阻隔部分黑客攻击,欢迎大家留言学习交流~记得点赞收藏!
本文共分为七章,前后没有关联,可以根据实际情况选择配置。
文章目录
一、更改常用ssh登录端口,避免常规攻击
提示:这里更改端口后,在服务器配置端,要在网络安全组中放开对应端口号,使用XShell等工具连接时,也要使用自定义的端口号!
1、编辑SSH配置文件。使用文本编辑器(如vi或nano)打开SSH配置文件:
vi /etc/ssh/sshd_config
2、找到以下行:#Port 22
,删除行首的注释符号#,然后将端口号修改为您想要使用的新端口号。
此处补充Linux文件编辑基本操作(大佬可以跳过不看):
- 输入 vi + 文件名,进入文件。
- 移动光标至对应需要修改的位置,按 i 进行插入编辑,此时已经可以编辑内容,可以删除/修改/输入文本。
- 修改完成后按 Esc 建退出编辑模式,然后键入 :wq 保存并退出,如果此时退出文件,则保存修改成功。
3、重启SSH服务。使用命令重启SSH服务,使更改生效。
sudo systemctl restart sshd
二、进行firewall防火墙设置(端口及网段限制)
——此处使用firewall配置,也可以使用iptable进行配置,但本文不做介绍,大家可以自行度娘,底层原理相同,选择其一使用即可。
下文中***标记的ip网段及ip地址,根据实际情况进行修改,可以度娘经常访问的机器ip
此处我将数据库及其他端口都进行了自定义,如:3306、6379、22等,所以都是不规则端口号,大家可以根据实际情况修改
将默认远程服务删除,开放指定端口,开放指定地址段:
- 查看当前防火墙状态,是否开启
systemctl status firewalld
- 如果没有开启,先开启防火墙
systemctl start firewalld
- 查看当前开启的系统服务
firewall-cmd --list-service
- 将ssh删除,不默认开放
firewall-cmd --remove-service=ssh --permanent
- 增加开放端口(
后续可以单独使用此命令添加服务端口映射,记得添加后reload生效
)
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=3888/tcp --permanent
firewall-cmd --zone=public --add-port=6888/tcp --permanent
- 在此进行举例,其他服务端口映射同理。以Docker容器化启动Mysql为例,可以将容器内部的
3306
端口映射到宿主机的3888
端口。 - Docker启动命令
-p
端口映射(宿主机端口在前,容器内部端口在后)
:
sudo docker run -p 3888:3306 --name mysql \
-v /home/service/mysql/logs:/logs \
-v /home/service/mysql/data:/mysql_data \
-e MYSQL_ROOT_PASSWORD=password \
--restart=always -d mysql:5.7
- 更改映射端口后,在使用数据库管理工具、jdbc连接链接时,记得将3306改为3888。以spring的
yaml
配置文件为例:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3888/mydatebase?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=true
- 可以将要使用的ssh端口删除,删除开放
6888
端口,在规则中单独向指定ip开放(可选操作)
firewall-cmd --permanent --remove-port=6888/tcp
- 对指定
***.***.***.***
网段放行,拒绝其他网段访问
firewall-cmd --zone=public --add-source=
***.***.***.***
/24 --permanent
- 对指定
***.***.***.***
ip开放6888
端口,进行远程登录
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="***.***.***.***" port protocol="tcp" port="6888" accept'
- 使设置生效
firewall-cmd --reload
- 查看当前防火墙所有配置
firewall-cmd --list-all
- 开启开机自动启动防火墙
systemctl enable firewalld
补充:firewall配置文件,及zones配置,可在以下路径中找到直接配置(大佬可以直接进文件配置,小白不建议修改文件,因为其中文件语法和格式一旦更改可能就失效,建议使用上面的命令方法
):
/etc/firewalld/zones
三、创建用户,尽量减少root用户的直接使用
使用非root用户时,需要将自定义用户分进root组,同时执行操作时需要在命令最前加sudo
1、创建用户tom:
adduser tom
2、给用户tom设置密码:
passwd tom
3、将用户tom分组,分进root(wheel)组,root组为最高权限组,谨慎赋权!
:
usermod -g root tom
4、查看tom分组信息:
groups tom
四、口令文件不可修改属性修改
此处要在第三章执行后,以下文件不可修改,无法再对用户和密码进行操作。
若后期需要进行用户密码相关操作,需要再对文件权限进行放开,使用root账户执行 chattr -i +对应文件名即可
以下所有文件权限要统一,不要只修改其中几个,要改全都改,否则依然无法生效
chattr命令给下面的文件加上不可更改属性,从而防止非授权用户获得权限:
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow
五、限制su命令
如果不想任何人能够su作为root,可以编辑 /etc/pam.d/su
文件,将第4
行和第6
行注释打开:
vi /etc/pam.d/su
英文好的同学可以看到第3
行和第5
行注释的解释,只信任root(wheel)用户组的用户
#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth required pam_wheel.so use_uid
auth substack system-auth
auth include postlogin
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
session include system-auth
session include postlogin
session optional pam_xauth.so
六、限制root账号远程登录
此处进行修改后,只能在服务器网页端,使用服务器提供商提供的网页登录插件,来登录root操作,谨慎操作!
1、打开SSH配置文件:
sudo vi /etc/ssh/sshd_config
2、找到PermitRootLogin行,将注释打开,并将其设置为no:
PermitRootLogin no
3、重启SSH服务。使用命令重启SSH服务,使更改生效。
sudo systemctl restart sshd
七、指定账号远程登录
1、打开SSH配置文件:
sudo vi /etc/ssh/sshd_config
2、查找是否有AllowUsers指令,如果没有,可以添加它来指定哪些用户可以登录。
如果已经有这个指令,用空格分隔添加更多用户。(下图中ray为自定义用户名)
AllowUsers username1 username2
举例EXP:
AllowUsers ray tom
3、重启SSH服务。使用命令重启SSH服务,使更改生效。
sudo systemctl restart sshd
以上为所有内容,如果问题还没有得到解决,欢迎大家留言讨论交流,有帮助到你就 点个赞吧 ^.^