linux服务器安全配置实例(一)引言

本文介绍了一种针对托管在阿里云的服务器的安全配置方法,包括使用SELinux和iptables进行访问过滤,降低用户权限,以及通过公钥认证提高SSH服务的安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

很多企业的服务器经常遭受到攻击,出现的攻击方式有:http服务攻击、操作系统漏洞溢出攻击、sql注入攻击等。

大多服务器都托管在阿里云或者腾讯云上,这些云服务也都提供杀毒软件和防火墙功能,如:阿里云盾。上述攻击大部分都已经被厂商提供的云安全拦截住了,但是毕竟没有绝对的安全。

这里记录下我平时对服务器的安全配置,希望对大家有一些帮助,还是没有绝对的安全,但是能够防患未然还是好的。另外这里指出,在描述攻击我们的那些人,我拒绝使用黑客这个词语,黑客的含义已经被现在的社会涂上了一层让人憎恨讨厌的色彩,但是实际的含义并不是入侵、攻击、破解,所以在以后的描述中我与其他文章作者不同,采用另外的称号,就是恶意攻击者或恶意的小伙伴。 

服务器配置

对于Linux操作系统,可以启动selinux和iptables对系统的访问进行过滤,同时可以降低用户权限,降低一些进程的运行权限。来保证服务器被渗透后的威胁降到最低。另外需要及时修复应用的漏洞,升级内核版本到稳定版,web应用程序足够强壮,降低数据库用户权限。 
下面拿我的服务器举例,我的服务器配置如下:

  • 阿里云服务深圳可用区B

  • 带宽:2Mbps

  • CPU: 1核

  • 内存: 1024 MB

  • 带宽:2Mbps

  • 操作系统: CentOS 7.0 64位

在服务器上配置有tomcat7.0、jre7、nginx1.9.9、mariadb5.5、php5.4.16。对外提供我的blog和微信公众平台的接口。

站长站端口扫描结果如下: 

可以看到,从扫描的结果来看几乎没有可利用的。 
使用nmap在服务器上对本机进行扫描,结果: 
 

而在外网对其进行扫描,是无法得出结果的: 

这些配置相当简单,相对而言,对付真正的攻击还差很多,所以我们还需要进行其他的一系列配置。

ssh服务

ssh服务是最常用的远程登录服务,虽然其比telnet安全多,但是也存在一定的安全漏洞。一些不友好的小伙伴们会使用一些不和谐程序对ssh服务进行暴力破解。对ssh服务进行适当的配置可以完全杜绝暴力破解。同时对sshd服务进行优化配置可以加快连接速度,减少耗费带宽。 

编辑/etc/ssh/sshd_config:

修改如下配置(注意如果配置前面有#,代表配置被注释,这里我只罗列出需要配置的,如果你的服务器上的配置被注释掉,去掉#打开注释即可。另外我会在配置旁边加上配置说明的注释):

注意,这里使用了公钥认证,所以需要生成登陆的私钥和公钥,将公钥上传到服务器上,并写入到上面的AuthorizedKeysFile配置指定的公钥文件中。对于这个文件有如下要求: 
①、该文件权限必须是640,所以需要执行sudo chmod 640 公钥文件,如:sudo chmod 640 /home/kid/.ssh/authorized_keys。 
②、该文件的上层目录必须为700权限,所以需要执行sudo chmod 700 上层文件夹路径,如:sudo chmod 700 /home/kid。 
③、该文件可以放多个公钥,注意公钥由于特别长,有的生成工具会把一个公钥拆分成多行,但sshd服务要求一个公钥只能一行存放,所以一定要编辑成一行才好使。 
上述配置完成后,重启sshd服务,sudo systemctl restart sshd,即可使用公钥认证远程登录到服务器,如果之前没使用过公钥登录的小伙伴,建议改完配置不要退出当前登录,等待重启完后再开一个连接测试下公钥认证能否发登录成功。如果不成功,需要注意上面的要求!!!同时可以使用没断开连接的终端执行sudo tail -f /var/log/message检查sshd服务的日志信息,同样也需执行sudo tail -f /var/log/secure检查sshd服务的认证日志信息。在tail -f 是实时从尾部监听一个服务,经常用于动态查看相关日志文件,由于是监听要退出的话需要按ctrl+c结束。这样sshd服务的安全性就有很大的提升了,当然在sshd服务中还可以配置允许登陆的ip和禁止登陆的ip,这个以后我会单开文章详细说明。另外为了我们的配置不被恶意篡改可以执行,可以执行sudo chattr +i /etc/ssh/sshd_config 和sudo chattr +i 公钥文件(如:sudo chattr +i /home/kid/.ssh/authorized_keys),chattr +i 命令会多某个文件设置隐藏状态位,设置后该文件即使是root和文件所有者都无法对该文件进行删除、修改、移动等操作,保证了该文件的安全。 
 

即使恶意登陆者想对sshd服务进行重新配置,把自己的公钥加入公钥文件都是无法操作的。但当你确实想要修改这个文件的时候,可以使用 
sudo chattr -i /etc/ssh/sshd_config以及sudo chattr +i /home/kid/.ssh/authorized_keys然后编辑这两个文件。
<think>首先,用户的问题是:“我想在Linux环境下配置MySQL、Redis和Java,并选择合适的云服务器配置 请问Linux 配置 MySQL Redis Java 云服务器配置选择 几核几G”。用户需要帮助在Linux上配置MySQL、Redis和Java,并选择云服务器的配置(几核几G)。 从系统级指令中,我需要: - 所有行内数学表达式使用$...$格式。 - 独立公式使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾自然地添加引用标识,如[^1]。 - 回答结构清晰,帮助用户逐步解决问题,保证回答真实可靠。 参考的引用内容: - [^1]: 关于Redis启动命令的示例。 - [^2]: Redis集群配置的细节。 - [^3]: Redis安装和配置的步骤,包括后台启动和远程访问。 - [^4]: 安装MySQL的命令。 这些引用是关于安装和配置MySQL、Redis的,但没有直接关于Java或云服务器配置的具体细节。我需要基于般知识来回答。 用户的问题包括: 1. Linux配置MySQL 2. Linux配置Redis 3. Linux配置Java 4. 云服务器配置选择(几核几G) 我的回答应该结构清晰,逐步解决每个部分。 **结构回答:** 1. **引言**:简要介绍用户的需求。 2. **配置Java**:因为Java是基础,可能需要先安装Java。 3. **配置MySQL**:安装和基本配置MySQL。 4. **配置Redis**:安装和基本配置Redis。 5. **云服务器配置建议**:根据应用需求推荐核心数和内存。 6. **总结**:简要总结。 7. **相关问题**:生成相关问题。 确保使用中文回答。 在回答中,如果需要引用参考内容,自然地添加引用标识。例如,提到Redis配置时引用[^3]。 现在,具体内容: - **配置Java**:在Linux上安装Java通常通过OpenJDK或Oracle JDK。命令如:`sudo apt install openjdk-11-jdk`(对于Ubuntu)。验证安装:`java -version`。 - **配置MySQL**:安装MySQL,如使用`sudo apt install mysql-server`。安全配置:`sudo mysql_secure_installation`。远程访问可能需要修改配置文件,如`bind-address`[^4]。 - **配置Redis**:下载Redis,编译安装。修改`redis.conf`以启用后台启动和远程访问[^3]。启动命令如`redis-server /path/to/redis.conf &`。 - **云服务器配置**:这取决于应用负载。对于小型应用,2核4GB可能足够;中等负载可能需要4核8GB或更高。考虑因素包括并发用户数、数据处理量等。例如,MySQL和Redis都可能占用内存。 数学表达式:用户问题中没有明显的数学部分,但如果有性能分析,可以用数学表达式。例如,讨论负载时,用$Q = \lambda / \mu$表示系统负载,但可能不必要。保持简单。 **生成相关问题**:在最后,添加相关问题,如: 1. 如何优化MySQL性能? 2. Redis集群配置步骤? 3. 云服务器成本比较? 确保回答真实可靠:基于标准实践。 最终输出格式: - 使用Markdown。 - 代码块用于命令。 - 引用标识自然添加。</think>### 回答:Linux环境下配置MySQL、Redis、Java及云服务器选择 您的需求是在Linux系统中配置MySQL、Redis和Java环境,并选择合适的云服务器配置(包括核心数和内存大小)。下面我将逐步指导您完成配置过程,并提供云服务器选择的建议。所有步骤基于Linux标准实践(如Ubuntu或CentOS系统),确保真实可靠。配置过程涉及安装、基本设置和优化,我会结合参考引用内容进行说明。 --- ### 1. **配置Java环境** Java是运行MySQL和Redis的基础(例如,Redis部分功能依赖Java)。推荐安装OpenJDK,它是开源的且兼容性强。 - **安装步骤**: 1. 更新系统包列表:`sudo apt update`(Ubuntu)或 `sudo yum update`(CentOS)。 2. 安装OpenJDK 11(或更高版本): ```bash # Ubuntu/Debian sudo apt install openjdk-11-jdk # CentOS/RHEL sudo yum install java-11-openjdk-devel ``` 3. 验证安装:运行 `java -version`,输出类似 `openjdk version "11.0.22"` 表示成功。 - **环境变量配置**(可选):编辑 `~/.bashrc` 文件,添加 `export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64`(路径可能因系统而异),然后运行 `source ~/.bashrc`。 Java安装完成后,MySQL和Redis的依赖问题会减少。建议优先完成此步骤。 --- ### 2. **配置MySQL** MySQL是常用的关系型数据库。在Linux上安装后,需配置安全性和远程访问。 - **安装步骤**: 1. 安装MySQL服务器: ```bash # Ubuntu/Debian sudo apt install mysql-server # CentOS/RHEL sudo yum install mysql-server sudo systemctl start mysqld ``` 2. 运行安全配置脚本:`sudo mysql_secure_installation`。设置root密码、移除匿名用户等。 3. 登录MySQL:`sudo mysql -u root -p`,输入密码进入交互界面。 - **远程访问配置**(可选): - 修改配置文件 `/etc/mysql/mysql.conf.d/mysqld.cnf`(Ubuntu)或 `/etc/my.cnf`(CentOS): - 注释掉 `bind-address = 127.0.0.1` 以允许远程连接[^4]。 - 设置 `skip-networking=0` 启用网络。 - 在MySQL命令行中授权远程用户: ```sql CREATE USER 'remote_user'@'%' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%'; FLUSH PRIVILEGES; ``` - 重启服务:`sudo systemctl restart mysql`。 MySQL默认使用较高内存,建议云服务器至少2GB内存。配置完成后,测试连接:`mysql -h <server_ip> -u remote_user -p`。 --- ### 3. **配置Redis** Redis是内存数据库,需编译安装并配置后台运行和远程访问。参考引用[^3]提供了关键步骤。 - **安装步骤**: 1. 下载并编译Redis(以Redis 6.x为例): ```bash wget https://download.redis.io/releases/redis-6.0.6.tar.gz tar -zxzf redis-6.0.6.tar.gz cd redis-6.0.6 make sudo make install ``` 2. 配置Redis: - 编辑 `redis.conf` 文件: ```conf daemonize yes # 启用后台启动 protected-mode no # 禁用保护模式以允许远程访问 # bind 127.0.0.1 # 注释此行以允许所有IP连接 requirepass your_password # 设置密码(可选) ``` 这些设置确保Redis在后台运行并支持远程连接[^3]。 - 保存文件后,启动Redis:`./src/redis-server redis.conf &`。 3. 验证运行:`redis-cli ping`,返回 `PONG` 表示成功。 - **性能优化**: - 内存管理:Redis是内存密集型,建议在 `redis.conf` 中设置 `maxmemory`(如 `maxmemory 1gb`)避免溢出。 - 持久化:启用RDB或AOF(在配置文件中设置 `save 900 1` 或 `appendonly yes`)。 Redis安装后,确保云服务器防火墙开放6379端口(如 `sudo ufw allow 6379`)[^3]。 --- ### 4. **云服务器配置选择(几核几G)** 云服务器配置取决于应用负载: - **小型应用**(个人项目或低流量网站):MySQL和Redis消耗内存较小,Java应用轻量。 - **推荐配置**:2核CPU + 4GB内存。 - 理由:MySQL基础安装占用约500MB内存,Redis默认占用100-200MB,Java进程约500MB,剩余内存应对突发负载。核心数2核可处理并发请求。 - **中等应用**(企业级应用或中等流量):涉及数据库查询、缓存和Java后端。 - **推荐配置**:4核CPU + 8GB内存。 - 理由:MySQL在高并发时可能占用2GB+内存,Redis需1-2GB(取决于数据集),Java应用(如Spring Boot)需2-4GB。4核支持多线程处理。 - **大型应用**(高并发或大数据):例如电商平台。 - **推荐配置**:8核CPU + 16GB内存或更高。 - 理由:MySQL和Redis集群化(参考引用[^2])需更多资源,Java微服务可能并行运行。 **选择建议**: - **核心数**:每增加个核心,处理能力提升约30%,但成本增加。公式:$C = \lceil \frac{\lambda}{\mu} \rceil$,其中 $\lambda$ 是请求率,$\mu$ 是单核处理率。 - **内存**:关键因素,MySQL和Redis性能与内存正相关。公式:$M_{\text{total}} = M_{\text{MySQL}} + M_{\text{Redis}} + M_{\text{Java}} + \text{buffer}$,buffer 建议20%。 - **云服务商**:阿里云、AWS或腾讯云,选择通用型实例(如AWS t3.medium 或阿里云 ecs.g6)。 - **成本优化**:起始用低配,监控资源使用(如 `top` 或 `htop`),再升级。例如,CPU利用率持续超过70%时增加核心。 总结:初始配置建议 **2核4GB**(成本低),上线后根据监控调整。确保所有服务(MySQL、Redis、Java)配置优化以减少资源占用。 --- ### 总结 在Linux上配置MySQL、Redis和Java的步骤包括: 1. 安装并配置Java作为基础环境。 2. 安装MySQL,设置安全性和远程访问。 3. 编译安装Redis,启用后台运行和远程连接。 4. 根据应用规模选择云服务器:小型用2核4GB,中等用4核8GB。 整个过程约需30-60分钟。测试时,使用 `systemctl status` 检查服务状态,并确保端口开放。配置成功后,您的应用将具备数据库、缓存和运行环境支持。如果您提供更多细节(如预期流量),我可以给出更精准的建议。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值