목차
一、账号管理、认证授权
1、与账号、用户组、密码等有关的文件
2、锁定无关账户
3、禁止超级管理员账户远程登录
4、修改用户组
5、口令策略
6、设定文件目录权限
7、检查是否存在除root之外UID为0的用户" >7、检查是否存在除root之外UID为0的用户
운영 및 유지보수 리눅스 운영 및 유지 관리 Linux 운영 체제의 보안 강화에 대한 예제 튜토리얼

Linux 운영 체제의 보안 강화에 대한 예제 튜토리얼

Jul 17, 2017 am 09:34 AM
linux 보강 운영 체제

Linux系统由于其出色的性能和稳定性、开放源代码的灵活性和可扩展性,以及较低廉的成本,而受到计算机工业界的广泛关注和应用。其系统的安全性就必须要加强

最近备战国网信通调考信息安全专业,参考系统安全加固手册,练习加固命令。

操作系统选用CentOS 7,考虑到可以随时进行“破坏性试验”,所以选择安装在VM虚拟机中,可以使用快照随时回退错误操作。 

首先,为了熟悉使用CLI,设置开机不进入图形界面。之前版本是修改 /etc/inittab 文件,到CentOS 7改为如下命令:

systemctl set-default multi-user.target    //设置成命令模式
systemctl set-default graphical.target     //设置成图形模式
로그인 후 복사

事实上,系统进行了如下操作:

好!进入系统,不要忘了首先做好初始快照哦。


一、账号管理、认证授权

第一部分主要是对用户账号和权限进行加固,主要用到的命令主要是一些文件查看与编辑类的命令。

1、与账号、用户组、密码等有关的文件

这些文件包括:

/etc/passwd  

/etc/shadow

/etc/group

简单说明一下:

/etc/passwd  记录了系统中各用户的一些基本属性,root可写,所有用户可读,查看可见如下信息:

用“:”隔开的各部分含义为:  

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

其中口令由于安全考虑,被记录在了 /etc/shadow 文件中,所以这里统一显示为x。

/etc/shadow 负责所有用户的密码:

与passwd文件相似,各字段也被“:”隔开,其含义为:  

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志(系统保留)

这里有几点需要说明:

(1)“口令”字段存放的是加密后的用户口令字,如果为空,则对应用户没有口令,登录时不需要口令; 星号代表帐号被锁定,有些系统为NP; 双叹号表示这个密码已经过期了。

  $6$开头的,表明是用SHA-512加密的

  $1$ 表明是用MD5加密的

  $2$ 是用Blowfish加密的

  $5$ 是用SHA-256加密的。

(2)“最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如1970年1月1日。(后面所有时间均以此时间为起点)

(4)“最小时间间隔”指的是两次修改口令之间所需的最小天数。

(5)“最大时间间隔”指的是口令保持有效的最大天数。

(6)“警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。

(7)“不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。

(8)“失效时间”字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。
로그인 후 복사

/etc/group 负责用户组属性:

这个文件比较简单:  组名:口令:组标识号:组内用户列表

其中,组内用户列表中,用户间用“,”隔开。

如果想要查看一个用户的用户组信息,可以使用

id [user]
로그인 후 복사

来查看:

OK,文件说明到此结束,让我们来干些实际的吧~

2、锁定无关账户

在确认某些账户可以锁定的情况下,可以使用

passwd -l [user]
로그인 후 복사

其原理是在/etc/shadow中用户的密码字段前加入“!!”(因系统而异,有些系统是加入“*LK*”),使得用户密码改变,无法登陆

这还真是简单粗暴,不过这也意味着,只要随意修改shadow文件密码字段,即可实现账号锁定。

对应的解锁命令为

passwd -u [user]
로그인 후 복사

3、禁止超级管理员账户远程登录

在进行这方面工作之前,首先要知道一个重要内容 Linux-PAM(Linux可插拔认证模块)。

用户可以通过修改配置文件/etc/pam.conf(RedHat等系统还支持另外一种配置方式,即通过配置目录/etc/pam.d/)对认证机制进行修改,而个模块的具体配置在/etc/security下。

具体相关知识由于篇幅,可以自行百度,(推荐一篇博客,很实用)这里只对本小节内容进行说明。

1 PAM工作机制 
/lib/security  
目录下的每一个认证模块都会返回pass或者fail结果,部分程序使用/etc/security目录下的设置文件决定认证方式。
应用程序调用PAM模块认证的配置,存放于/etc/pam.d,文件名与应用程序名对应,文件中的每一行都会返回一个成验证功还是失败的控制标志,以决定用户是否拥有访问权限。 
2 PAM验证类型      
* auth 验证使用者身份,提示输入账号和密码      
* account 基于用户表、时间或者密码有效期来决定是否允许访问      
* password 禁止用户反复尝试登录,在变更密码时进行密码复杂性控制     
* session 进行日志记录,或者限制用户登录的次数 libpam函数库会可以调用以上一种服务或者全部。 
3 PAM验证控制类型(Control Values)  
验证控制类型也可以称做Control Flags,用于PAM验证类型的返回结果。     
* required 验证失败时仍然继续,但返回Fail(用户不会知道哪里失败)    
* requisite 验证失败则立即结束整个验证过程,返回Fail      
* sufficient 验证成功则立即返回,不再继续,否则忽略结果并继续    
* optional 无论验证结果如何,均不会影响(通常用于session类型
로그인 후 복사

 

打开/etc/pam.d/login文件,可以看到如下内容:

其中

auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so

auth required pam_securetty.so

处于未注释状态,再查看/etc/securetty中没有pts/xx为一个十进制整数)或已被注释掉

确保root不能通过telnet连接主机。

再检查SSH:

 /etc/ssh/sshd_config

检查下列行设置是否为no并且该行未被注释:PermitRootLogin

然后重新启动ssh服务:

service sshd stop
service sshd start
로그인 후 복사

4、修改用户组

使用usermod -g [group/GID] [username] 修改用户组。没什么好说的,上图:

5、口令策略

(1)口令复杂度及时效

 修改 /etc/login.defs,文件注释很清楚,可以自己修改:

(2)设定密码历史,不能重复使用近N次内已使用的口令(方法来自网络)

对于Redhat系列的Linux,查看/etc/pam.d/system-auth

对于Debian系列的Linux,查看/etc/pam.d/common-password

在如图所示的行后,加入remember=N

但我目前有一个疑问,remember=N这个语句的PAM验证控制类型是否应该是sufficient而不是其他类型。但求大神指导!

(3)设定连续认证失败次数超过N次锁定该账号

依然是修改/etc/pam.d/login文件的第二行,加入如下命令

auth required pam_tally2.so deny=3 lock_time=300 even_deny_root root_unlock_time=10
로그인 후 복사

6、设定文件目录权限

在用户登录中,passwd、shadow、group文件非常重要,需要严格管理文件权限

/etc/passwd 必须所有用户都可读,root用户可写 –rw-rr— 权限值为644

/etc/shadow 只有root可读 –r--------  权限值为400

/etc/group 必须所有用户都可读,root用户可写 –rw-rr— 权限值为644

使用如下命令修改权限:

chmod 644 /etc/passwdchmod 400 /etc/shadowchmod 644 /etc/group
로그인 후 복사

此外还有一个重要的参数 umask ,其值确定了新建目录文件的默认权限,这里先给出我们推荐的值 027

在权限设定中 r=4;w=2;x=1 但对于umask来说,umask=777(666)-权限值,即权限值=777(666)-umask。例如,umask=002,所对应的文件和目录创建缺省权限分别为6 6 4(666-2)和7 7 5(777-2)。

为什么是这样的呢?对于文件来说,这一数字的最大值分别是6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。目录则允许设置执行权限,这样针对目录来说,umask中各个数字最大可以到7。

如果使用推荐值umask=027,则对于文件来说,其权限为640,即-rw-r----- ,对目录来说,其权限为750,即-rwxr-x---

7、检查是否存在除root之外UID为0的用户

使用如下代码,对passwd文件进行检索:

awk -F ':' '($3==0){print $1)' /etc/passwd
로그인 후 복사

将检索出来的不是root的用户使用userdel命令全部删除。

 

 

 

위 내용은 Linux 운영 체제의 보안 강화에 대한 예제 튜토리얼의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Apr 16, 2025 pm 07:39 PM

메모장은 Java 코드를 직접 실행할 수는 없지만 다른 도구를 사용하여 명령 줄 컴파일러 (Javac)를 사용하여 Bytecode 파일 (filename.class)을 생성하면 달성 할 수 있습니다. Java Interpreter (Java)를 사용하여 바이트 코드를 해석하고 코드를 실행하고 결과를 출력하십시오.

vscode를 사용하는 방법 vscode를 사용하는 방법 Apr 15, 2025 pm 11:21 PM

Visual Studio Code (VSCODE)는 Microsoft가 개발 한 크로스 플랫폼, 오픈 소스 및 무료 코드 편집기입니다. 광범위한 프로그래밍 언어에 대한 가볍고 확장 성 및 지원으로 유명합니다. VSCODE를 설치하려면 공식 웹 사이트를 방문하여 설치 프로그램을 다운로드하고 실행하십시오. VScode를 사용하는 경우 새 프로젝트를 만들고 코드 편집, 디버그 코드, 프로젝트 탐색, VSCODE 확장 및 설정을 관리 할 수 ​​있습니다. VSCODE는 Windows, MacOS 및 Linux에서 사용할 수 있으며 여러 프로그래밍 언어를 지원하며 Marketplace를 통해 다양한 확장을 제공합니다. 이점은 경량, 확장 성, 광범위한 언어 지원, 풍부한 기능 및 버전이 포함됩니다.

Linux의 주요 목적은 무엇입니까? Linux의 주요 목적은 무엇입니까? Apr 16, 2025 am 12:19 AM

Linux의 주요 용도에는 다음이 포함됩니다. 1. 서버 운영 체제, 2. 임베디드 시스템, 3. 데스크탑 운영 체제, 4. 개발 및 테스트 환경. Linux는이 분야에서 뛰어나 안정성, 보안 및 효율적인 개발 도구를 제공합니다.

git의 창고 주소를 확인하는 방법 git의 창고 주소를 확인하는 방법 Apr 17, 2025 pm 01:54 PM

git 저장소 주소를 보려면 다음 단계를 수행하십시오. 1. 명령 줄을 열고 리포지토리 디렉토리로 이동하십시오. 2. "git remote -v"명령을 실행하십시오. 3. 출력 및 해당 주소에서 저장소 이름을 봅니다.

Laravel 설치 코드 Laravel 설치 코드 Apr 18, 2025 pm 12:30 PM

Laravel을 설치하려면 다음 단계를 순서대로 수행하십시오. Composer 설치 (MacOS/Linux 및 Windows) 설치 LARAVEL 설치 프로그램 새 프로젝트 시작 서비스 액세스 애플리케이션 (URL : http://127.0.1:8000) 데이터베이스 연결 (필요한 경우)을 설정하십시오.

VSCODE로 중국 모드를 전환하는 방법 VSCODE로 중국 모드를 전환하는 방법 Apr 15, 2025 pm 11:39 PM

vs Code to Chinese 모드 : 설정 인터페이스를 엽니

vScode 이전 다음 바로 가기 키 vScode 이전 다음 바로 가기 키 Apr 15, 2025 pm 10:51 PM

vs 코드 1 단계/다음 단계 바로 가기 키 사용 : 1 단계 (뒤로) : Windows/Linux : Ctrl ←; MACOS : CMD ← 다음 단계 (앞으로) : Windows/Linux : Ctrl →; MACOS : CMD →

숭고한 바로 가기 키를 설정하는 방법 숭고한 바로 가기 키를 설정하는 방법 Apr 16, 2025 am 09:15 AM

숭고한 텍스트를 위해 바로 가기 키를 설정하려면 다음 단계를 따르십시오. 바로 가기 키 설정 파일 키 바인딩 - 사용자. 형식 { "키": [ "키 조합"], "명령": "명령"}을 사용하여 바로 가기 키 설정을 추가하십시오. 변경 사항을 저장하십시오. 변경 사항이 적용되도록 바로 가기 키 설정을 다시로드하십시오.

See all articles