一、基本安全措施
1.系统账号清理
(1)将非登录用户的 shell 设为/sbin/nologin
- 方法一:usermod -s
- 方法二:chsh 命令,交互式修改
- 方法三:chsh -s
示例:
除了上述三种方法,也可以直接 vi 编辑 /etc/passwd 文件进行修改
2.锁定那个长期不使用的账号
- 方法一:passwd -l (将在密文前增加 2 个 “!”)解锁 passwd -u 查看 passwd -S
- 方法二:usermod -L (将在密文前增加 1 个 “!”)解锁 usermod -U
示例:
解锁:
除了上述方法,也可以直接 vi 编辑 /etc/shadow 文件进行修改。
(3)删除无用的账号
userdel [-r] 用户名 (此处不过多解释,详见 Linux 系统管理03)
(4)锁定账号文件 /etc/passwd、/etc/shadow
1> 锁定:chattr +i /etc/passwd /etc/shadow
2> 解锁:chattr -i /etc/passwd /etc/shadow
3> 查看:lsattr /etc/passwd /etc/shadow
4> 示例:
注意:锁定后即使是超户,也不能修改该文件,即不能创建、删除、修改用户信息。
1.密码安全控制
(1)设置密码有效期
1> 修改某个已存在用户的密码有效期
chage -M 天数 用户名
passwd -x 天数 用户名
2> 示例:
3> 设置今后添加用户时的默认密码有效期:
方法:vi 编辑 /etc/login.defs 文件,修改 “PASS_MAX_DAY” 后面的数值
[root@huyouba1 ~]# vim /etc/login.defs
(2)要求用户下次登录时修改密码
1>方法:chage -d 0 用户名
2>示例:
[root@www ~]# chage -d 0 user1
3.命令历史限制
(1)减少历史的命令条数
1> 方法一:vi 编辑 /etc/profile 文件,修改 “HISTSIZE=” 后面的数值
2> 方法二:export HISTSIZE=数值
3> 示例:
- 方法一:vi 编辑 /etc/profile 文件,修改 “HISTSIZE=100”
[root@huyouba1 ~]# vim /etc/profile
[root@huyouba1 ~]# source /etc/profile //使 /etc/profile 配置文件生效,此时全局生效
- 方法二:export HISTSIZE=100
[root@huyouba1 ~]# export HISTSIZE=100 //仅当前用户环境下生效,重启即失效
(2)注销时自动情况历史命令
1> 方法:vi 编辑宿主目录下的 “.bash_logou” 文件,添加 “history -c”
2> 示例:设置 user1 用户注销时自动清空历史命令
[root@huyouba1 ~]# vim ~user1/.bash_logout
4.终端自动注销
(1)方法一:
vi 编辑 /etc/profile 文件,添加 “TMOUT=数值”
(2)方法二:
export TMOUT=数值
(3)示例:限制 600 秒后自动注销
- 方法一:vi 编辑/etc/profile文件,添加 “TMOUT=600”
[root@huyouba1 ~]# vim /etc/profile
[root@huyouba1 ~]# source /etc/profile //使 /etc/profile 配置文件生效,此时全局生效
- 方法二:export TMOUT=600
[root@huyouba1 ~]# export TMOUT=600 //仅当前用户环境下生效
二、切换用户 su 命令
1.作用:
切换用户(Substiute User)
2.格式:
su [-] 目标用户 (有 “-” 初始化环境变量,无 “-” 环境变量不改变)
3.查看 su 操作记录
安全日志文件:/var/log/secure |less
[root@huyouba1 ~]# tac /var/log/secure |less
三、提升权限 sudo 命令
1.su 命令的缺点:
在使用 su 命令时,不指定用户名默认切换至 root 用户,需要输入 root 密码,但实际生产中 root 密码是不可以被广泛告知的。如果需要执行 root 用户才有权限的命令,需要通过 sudo 命令或 wheel 组的设置来实现
2.sudo 命令
(1)作用:
以其他用户身份(默认root身份)执行授权的命令
(2)用法:
sudo 授权命令
默认设置为首次执行时,需输入当前用户的登录密码,5 分钟内再次执行 sudo 命令时则无需再输入密码。
(3)配置 sudo 授权
1> 方法一:添加单个用户的 sudo 授权
- visudo 或者 vi /etc/sudoers(效果相同),添加配置内容
- 格式:用户 主机名列表=命令程序列表,命令前加 “!” 表示 “除了” 此命令
[root@huyouba1 ~]# vim /etc/sudoers
(4)查看 sudo 操作记录
- 方法: 第一步: visudo 或者 vi /etc/sudoers 添加 “Defaults logfile=/var/log/sudo”
第二步: cat /var/log/sudo
- 示例:启用 Defaults logfile 配置,给 huyouba1 用户所有 /sbin/ 以及 /usr/sbin 下的命令执行权限,除了关机以及重启。
(5)查询授权操作 sudo -l
四、开关机安全控制
1.调整 BIOS 引导设置
(1)将第一引导设备设为当前系统所在硬盘(开机按F2,不同主板按键不一)
(2)禁止其他设备(光盘、U盘、网络)引导系统
BIOS 中可以设置,极个别电脑不支持此功能
(3)将安全级别设为 setup,并设置管理员密码
(4)重启验证进入 BIOS 需要输入密码
2.禁用重启热键 Ctrl+Alt+Del
(1)目的:
避免用户误操作
(2)方法:
删除 /usr/lib/systemd/system/ctrl-alt-del.target
恢复 Ctrl+Alt+Del按键重启功能
ln -s /usr/lib/systemd/system/reboot.target /usr/lib/systemd/system/ctrl-alt-del.target
init q 不重启,立即生效配置文件
3.gurb 菜单限制
(1)备份文件以防配置错误可以恢复
[root@huyouba1 ~]# cd /etc/grub.d/
[root@huyouba1 grub.d]# cp 01_users 01_users.bak
(2)以明文方式设置 grub 的密码
在 /etc/grub.d/01_users 文件中指定超级用户,其中 root 为超级用户的用户名,PassRoot + 123 为超级用户 root 的密码,清空该文件并添加以下几行。(用户名和密码按照实际情况设置)
[root@huyouba1 grub.d]# vim 01_users
添加以下内容
cat << EOF
set superusers="root"
password root 123
EOF
(3)重新编译生成 grub.cfg 文件
[root@huyouba1 grub.d]# grub2-mkconfig -o /boot/grub2/grub.cfg
(4)设置密文密码
使用 grub2-mkpasswd-pbkdf2 命令创建密文
现在我们可以修改 /etc/grub.d/01_users
最后:重新编译生成 grub.cfg 文件
[root@huyouba1 grub.d]# grub2-mkconfig -o /boot/grub2/grub.cfg
重启验证
五、弱口令检测 JR(Joth the Ripper)
1.JR(Joth the Ripper)简介
- 一款密码分析工具,支持字典式的暴力破解
- 通过对 shadow 文件的口令分析,可以检测密码
- 官方网站 http://www.openwall.com/john
2.安装 JR 工具
(1) tar 包解压
[root@huyouba1 ~]# tar xvf john-1.9.0.tar.xz
(2)进到解压后的 src 目录下,执行 make clean
[root@huyouba1 ~]# cd john-1.9.0/src/
[root@huyouba1 src]# make clean linux-x86-64
(3)进到解压后的 run 目录下,执行命令
[root@huyouba1 src]# cd ../run/
[root@huyouba1 run]# cp /etc/shadow ./shadow.txt
[root@huyouba1 run]# ./john shadow.txt
字典式暴力破解,可添加内容至字典:
[root@huyouba1 run]# vim password.lst
六、端口检测 NMAP
1.NMAP 简介
- 一款强大的网络扫描、安全检测工具
- 官方网站:http://nmap.org/
- 可从光盘中安装 nmap-6.40-16.el7.x86_64
2.NMAP 的扫描语法
nmap [扫描类型] [选项] <扫描目标>扫描目标>
3.常用的扫描类型
-sS TCP SYN 扫描(半开)
-sT TCP 链接扫描(全开)
-sF TCP FIN 扫描
-sU UDP 扫描
-sP ICMP 扫描
-sO 跳过 ping 检测【较少使用】
4.常用选项:
-n 禁止 DNS 反向解析
-p 指定端口号
(1)扫描本机开放了哪些 TCP 端口、UDP 端口
(2)检测当前 192.168.100.0/24 网段有哪些主机提供 FTP 服务
(3)检测 192.168.100.0/24 网段有哪些存活主机
检测 192.168.100.1~254/24 有哪些主机开启了文件共享服务
【知识补充】
-
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
-
TCP 三次握手的过程如下:
(1)客户端发送 SYN(SEQ=x)报文给服务器端,进入 SYN_SEND 状态。
(2)服务器端收到 SYN 报文,回应一个 SYN(SEQ=y)ACK(ACK=x+1)报文。进入 SYN_RECV 状态。
(3)客户端收到服务器端的 SYN 报文,回应一个 ACK(ACK=y+1)报文,进入 Established 状态。
(4)三次握手完成,TCP 客户端和服务器端成功地建立连接,可以开始传输数据了。
ACK 表示 Acknowledgment Number 字段有意义
PSH 表示 Push 功能,RST 表示复位 TCP 连接
SYN 表示 SYN 报文(在建立 TCP 连接的时候使用)
FIN 表示没有数据需要发送了(在关闭 TCP 连接的时候使用)
- UDP(User Datagram Protocol)协议全称是用户数据报协议,在网络中它与 TCP 协议一样用于处理数据包,是一种无连接的协议。UDP 有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。根据 OSI(开放系统互连)参考模型,UDP 和 TCP 都属于传输层协议。
-
ICMP 是(Internet Control Message Protocol)Internet 控制报文协议。它是 TCP/IP 协议族的一个子协议,用于在 IP 主机、路由器之间传递控制信息。控制信息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
- Linux 常用端口:
端口号码/层 | 名称 | 注释 |
---|---|---|
1 | tcpmux | TCP 端口服务多路复用 |
5 | rje | 远程作业入口 |
7 | echo | Echo 服务 |
9 | discard | 用于连接测试的空服务 |
11 | systat | 用于列举连接了的端口的系统状态 |
13 | daytime | 给请求主机发送日期和时间 |
17 | qotd | 给连接了的主机发送每日格言 |
18 | msp | 消息发送协议 |
19 | chargen | 字符生成服务;发送无止境的字符流 |
20 | ftp-data | FTP 数据端口 |
21 | ftp | 文件传输协议(FTP)端口;有时被文件服务协议(FSP)使用 |
22 | ssh | 安全 Shell(SSH)服务 |
23 | telnet | Telnet 服务 |
25 | smtp | 简单邮件传输协议(SMTP) |
37 | time | 时间协议 |
39 | rlp | 资源定位协议 |
42 | nameserver | 互联网名称服务 |
43 | nicname | WHOIS 目录服务 |
49 | tacacs | 用于基于 TCP/IP 验证和访问的终端访问控制器访问控制系统 |
50 | re-mail-ck | 远程邮件检查协议 |
53 | domain | 域名服务(如 BIND) |
63 | whois++ | WHOIS++,被扩展了的 WHOIS 服务 |
67 | bootps | 引导协议(BOOTP)服务;还被动态主机配置协议(DHCP)服务使用 |
68 | bootpc | Bootstrap(BOOTP)客户;还被动态主机配置协议(DHCP)客户使用 |
69 | tftp | 小文件传输协议(TFTP) |
70 | gopher Gopher | 互联网文档搜寻和检索 |
71 | netrjs-1 | 远程作业服务 |
72 | netrjs-2 | 远程作业服务 |
73 | netrjs-3 | 远程作业服务 |
73 | netrjs-4 | 远程作业服务 |
79 | finger | 用于用户联系信息的 Finger 服务 |
80 | http | 用于万维网(WWW)服务的超文本传输协议(HTTP) |
88 | kerberos | Kerberos 网络验证系统 |
95 | supdup | Telnet 协议扩展 |
101 | hostname | SRI-NIC 机器上的主机名服务 |
102 | iso-tsap | ISO 开发环境(ISODE)网络应用 |
105 | csnet-ns | 邮箱名称服务器;也被 CSO 名称服务器使用 |
107 | rtelnet | 远程 Telnet |
109 | pop2 | 邮局协议版本2 |
110 | pop3 | 邮局协议版本3 |
111 | sunrpc | 用于远程命令执行的远程过程调用(RPC)协议,被网络文件系统(NFS)使用 |
113 | auth | 验证和身份识别协议 |
115 | sftp | 安全文件传输协议(SFTP)服务 |
117 | uucp-path | Unix 到 Unix 复制协议(UUCP)路径服务 |
119 | nntp | 用于 USENET 讨论系统的网络新闻传输协议(NNTP) |
123 | ntp | 网络时间协议(NTP) |
137 | netbios-ns | 在红帽企业 Linux 中被 Samba 使用的 NETBIOS 名称服务 |
138 | netbios-dgm | 在红帽企业 Linux 中被 Samba 使用的 NETBIOS 数据报服务 |
139 | netbios-ssn | 在红帽企业 Linux 中被 Samba 使用的NET BIOS 会话服务 |
143 | imap | 互联网消息存取协议(IMAP) |
161 | snmp | 简单网络管理协议(SNMP) |
162 | snmptrap | SNMP 的陷阱 |
163 | cmip-man | 通用管理信息协议(CMIP) |
164 | cmip-agent | 通用管理信息协议(CMIP) |
174 | mailq | MAILQ |
177 | xdmcp | X 显示管理器控制协议 |
178 | nextstep | NeXTStep 窗口服务器 |
179 | bgp | 边界网络协 |
191 | prospero | Cliffod Neuman 的 Prospero 服务 |
194 | irc | 互联网中继聊天(IRC) |
199 | smux | SNMP UNIX 多路复用 |
201 | at-rtmp | AppleTalk 选路 |
202 | at-nbp | AppleTalk 名称绑定 |
204 | at-echo | AppleTalk echo 服务 |
206 | at-zis | AppleTalk 区块信息 |
209 | qmtp | 快速邮件传输协议(QMTP) |
210 | z39.50 NISO | Z39.50 数据库 |
213 | ipx | 互联网络分组交换协议(IPX),被 Novell Netware 环境常用的数据报协议 |
220 | imap3 | 互联网消息存取协议版本3 |
245 | link | LINK |
347 | fatserv | Fatmen 服务器 |
363 | rsvp_tunnel | RSVP 隧道 |
369 | rpc2portmap | Coda 文件系统端口映射器 |
370 | codaauth2 | Coda 文件系统验证服务 |
372 | ulistproc | UNIX Listserv |
389 | ldap | 轻型目录存取协议(LDAP) |
427 | svrloc | 服务位置协议(SLP) |
434 | mobileip-agent | 可移互联网协议(IP)代理 |
435 | mobilip-mn | 可移互联网协议(IP)管理器 |
443 | https | 安全超文本传输协议(HTTP) |
444 | snpp | 小型网络分页协议 |
445 | microsoft-ds | 通过 TCP/IP 的服务器消息块(SMB) |
464 | kpasswd | Kerberos 口令和钥匙改换服务 |
468 | photuris | Photuris 会话钥匙管理协议 |
487 | saft | 简单不对称文件传输(SAFT)协议 |
488 | gss-http | 用于 HTTP 的通用安全服务(GSS) |
496 | pim-rp-disc | 用于协议独立的多址传播(PIM)服务的会合点发现(RP-DISC) |
500 | isakmp | 互联网安全关联和钥匙管理协议(ISAKMP) |
535 | iiop | 互联网内部对象请求代理协议(IIOP) |
538 | gdomap | GNUstep 分布式对象映射器(GDOMAP) |
546 | dhcpv6-client | 动态主机配置协议(DHCP)版本6客户 |
547 | dhcpv6-server | 动态主机配置协议(DHCP)版本6服务 |
554 | rtsp | 实时流播协议(RTSP) |
563 | nntps | 通过安全套接字层的网络新闻传输协议(NNTPS) |
565 | whoami | whoami |
587 | submission | 邮件消息提交代理(MSA) |
610 | npmp-local | 网络外设管理协议(NPMP)本地 / 分布式排队系统(DQS) |
611 | npmp-gui | 网络外设管理协议(NPMP)GUI / 分布式排队系统(DQS) |
612 | hmmp-ind | HMMP 指示 / DQS |
631 | ipp | 互联网打印协议(IPP) |
636 | ldaps | 通过安全套接字层的轻型目录访问协议(LDAPS) |
674 | acap | 应用程序配置存取协议(ACAP) |
694 | ha-cluster | 用于带有高可用性的群集的心跳服务 |
749 | kerberos-adm | Kerberos 版本5(v5)的“kadmin”数据库管理 |
750 | kerberos-iv | Kerberos 版本4(v4)服务 |
765 | webster | 网络词典 |
767 | phonebook | 网络电话簿 |
873 | rsync | rsync 文件传输服务 |
992 | telnets | 通过安全套接字层的 Telnet(TelnetS) |
993 | imaps | 通过安全套接字层的互联网消息存取协议(IMAPS) |
994 | ircs | 通过安全套接字层的互联网中继聊天(IRCS) |
995 | pop3s | 通过安全套接字层的邮局协议版本3(POPS3) |