网站首页 > 技术文章 正文
Linux系统加固是一个系统性的工程,旨在通过一系列措施增强系统的安全性,减少被攻击的风险。
具体的操作示例,演示如何加固Linux系统:
1. 更新系统和软件包
Bash1sudo apt update && sudo apt upgrade -y
或者,如果你使用的是基于Red Hat的系统:
Bash1sudo yum update
或者对于较新的系统使用DNF:
Bash1sudo dnf upgrade
2. 设置防火墙规则
使用ufw(Uncomplicated Firewall)简化防火墙配置:
Bash1sudo ufw default deny incoming
2sudo ufw allow ssh # 允许SSH连接
3sudo ufw enable # 启用防火墙
或者使用firewalld:
Bash1sudo firewall-cmd --permanent --add-service=ssh
2sudo firewall-cmd --reload
3sudo firewall-cmd --set-default-zone=drop
3. 禁用不必要的服务
Bash1sudo systemctl disable unused_service_name.service
例如,禁用telnet服务(如果已安装):
Bash1sudo systemctl disable telnet.socket telnet.service
4. 配置SELinux或AppArmor
启用SELinux并设置为强制模式(如果尚未启用):
Bash1sudo sed -i 's/^SELINUX=.*/SELINUX=enforcing/' /etc/selinux/config
2sudo setenforce 1
配置AppArmor规则(如果适用):
Bash1sudo aa-genprof /path/to/application
5. 使用强密码和SSH密钥认证
生成SSH密钥对:
Bash1ssh-keygen
将公钥复制到远程服务器:
Bash1ssh-copy-id user@remote_host
然后编辑/etc/ssh/sshd_config,确保以下配置:
Bash1PermitRootLogin no
2PasswordAuthentication no
之后重启SSH服务:
Bash1sudo systemctl restart sshd
6. 配置PAM模块
修改PAM配置,例如增加密码强度检查:
Bash1sudo nano /etc/pam.d/common-password
添加或修改行:
Text1password requisite pam_cracklib.so retry=3 minlen=12 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
7. 硬化内核参数
使用sysctl命令调整内核参数,例如限制SYN洪水攻击:
Bash1sudo sysctl -w net.ipv4.tcp_syncookies=1
为了使更改持久化,编辑/etc/sysctl.conf文件。
8. 审计和日志管理
配置日志轮转和存储策略,例如:
Bash1sudo nano /etc/logrotate.conf
并确保日志文件权限适当,例如:
Bash1sudo chmod 640 /var/log/auth.log
猜你喜欢
- 2024-11-04 /etc/passwd格式说明(etcpasswd 详解)
- 2024-11-04 centos7关闭防火墙firewalld 绝对不能在服务器上执行命令
- 2024-11-04 Linux系统搭建NFS网络文件系统,实现文件共享
- 2024-11-04 Linux上使用tinyproxy快速搭建HTTP/HTTPS代理器
- 2024-11-04 「神马课堂」Linux操作系统中主DNS服务器的配置(基于CentOS 7)
- 2024-11-04 Linux命令笔记-01(linux命令教程)
- 2024-11-04 Linux更改ssh端口的详细教程(提升系统安全)
- 2024-11-04 如何解决 Open /etc/postfix/main.cf: Permission denied ?
- 2024-11-04 Linux服务管理之Systemd配置详解,呕心沥血,匠心之作
- 2024-11-04 ALMA Linux 9部署 Zabbix7.0 LTS 单服务器架构 PostgreSQL Nginx
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)