LINUX安全
1保护谁的安全? 服务器(网站 数据库 邮件 文件)
2 什么安全? 不受到破坏
3 如何保护TA安全
通过非技术手端保护?机房 指定规章制度 稳定的电源
通过技术手段保护?
本地安全 : 用户登录操作系统后可以执行的操作
网络安全 : 防火墙服务(软件防火墙 硬件防火墙)
firewalld
iptables
sshd服务(远程连接主机)
数据安全 :(数据在网络中传输时会受到那些?)
截获数据 篡改 本地丢失
加密 验证数据完整性 备份
++++++++++++++++++++++++++++++++++++++
本地安全:
用户管理:
与用户相关的命令及命令参数
useradd -u -g -G -s 用户名
useradd -s /sbin/nologin yaya (进程的所有者 访问服务)
userdel -r 用户名
usermod -u -g -G -s 用户名
id 用户名
passwd --stdin -S -l -u 用户名
chage -l -E -d 用户名
与用户相关的配置文件
/etc/passwd
/etc/shadow
/etc/login.defs
/etc/skel/
编写批量添加系统用户脚本?要求如下:
执行脚本时,可以设置添加系统用户的数量。
用户存在时,给出提示,不添加用户,反之就添加。
用户初始密码和用户名相同,强制用户首次登录系统修改登录密码
新用户的有效期到本月月底。
每个新添加用户的家目录下都机房规章制度文件。
++++++++++++++++++++++++
伪装登录提示(字符运行级别)
/etc/issue 本地登录
/etc/issue.net 网络连接
历史命令控制
294 grep -n 1000 /etc/profile
295 sed -i '45s/1000/500/' /etc/profile
296 echo $HISTSIZE
297 source /etc/profile
298 echo $HISTSIZE
~/.bash_history
#HISTTIMEFORMAT='%F %T '
vim /etc/profile
export HISTTIMEFORMAT="%F %T "
:wq
关闭不常用的服务 systemctl
chkconfig --level 35 服务名 on/off
ntsysv
去掉普通用户服务启动脚本的执行权限。
chmod o-x 服务启动脚本
文件系统规划及挂载
交换分区的作用?
合理规划系统分区
/boot、/home、/var等采用独立的卷
mount挂载选项
suid
-o nosuid:禁用SUID、SGID特殊权限
-o noexec:禁止运行二进制文件
exec
#mount -t 文件系统 -o nosuid,noexec 分区名 挂载点
#vim /etc/fstab
defaults默认挂载包括那些挂载选项?
#man mount
rw, suid, dev, exec, auto, nouser, and async.
278 dd if=/dev/zero of=/tmp/a.txt bs=1M count=300
280 mkfs.ext4 /tmp/a.txt
281 mkdir /disk1
282 mount /tmp/a.txt /disk1/
286 which useradd
287 cp /usr/sbin/useradd /disk1/
292 chmod u+s /disk1/useradd
294 useradd adminyaya
295 su - adminyaya
296 /disk1/useradd stu101
296 tail -1 /etc/passwd
#exit
#umount /disk1
#mount -o nosuid /tmp/a.txt /disk1
# /disk1/useradd stu102
给加特殊属性
i 不可变
a 仅可追加
chattr +/-属性 文件名
lsttr 文件名
服务配置文件
系统配置文件
su 切换用户
普通用户 <----- > 普通用户 需要密码
管理员用户 ----- > 普通用户 不需要密码
普通用户 ----- > 管理员用户 需要密码
切换到管理员用户
#su
#su -
切换到指定用户
#su 用户名
#su - 用户名
$ su - -c "systemctl status httpd" root
++++++++++++++++++++++++++++++++++++++++
用户提权 (让普通用户登录系统后可以使用,管理员使用的命令)
#useradd tom
#useradd jerry
#echo 123456 | passwd --stdin tom
#echo 123456 | passwd --stdin jerry
主配置文件 /etc/sudoers
# grep -v -E '#|^$' /etc/sudoers
用户名 客户端地址列表=命令列表
%用户组名 客户端地址列表=命令列表
tom localhost=/usr/bin/systemctl start httpd,
/usr/bin/systemctl stop httpd,/usr/bin/systemctl status httpd,
/bin/vim /etc/httpd/conf/httpd.conf, /bin/netstat
给用户组提权
[root@localhost ~]# groupadd webgrp
[root@localhost ~]# useradd jim
[root@localhost ~]# echo 123456 | passwd --stdin jim
[root@localhost ~]# usermod -G webgrp tom
[root@localhost ~]# usermod -G webgrp jim
[root@localhost ~]# grep webgrp /etc/group
webgrp:x:1012:tom,jim
[root@localhost ~]#
#tom localhost=/usr/bin/systemctl start httpd,
/usr/bin/systemctl stop httpd,/usr/bin/systemctl status httpd,
/bin/vim /etc/httpd/conf/httpd.conf, /bin/netstat
%webgrp localhost=/usr/bin/systemctl start httpd,
/usr/bin/systemctl stop httpd,/usr/bin/systemctl status httpd,
/bin/vim /etc/httpd/conf/httpd.conf, /bin/netstat, NOPASSWD:
ALL
使用通配符表示多个提权命令 *
! 取反
mike localhost,svr1=/sbin/* , !/sbin/ifconfig eth0
++++++++++++++++++++++++++++++++++++
使用别名给用户提权
用户别名 User_Alias 别名名称 = 用户名列表
User_Alias ADMINS = jsmith, mikem
主机别名Host_Alias 别名名称 = 主机名列表
Host_Alias MAILSERVERS = smtp, smtp2
命令别名Cmnd_Alias 命令别名=命令列表
#%webgrp localhost=/usr/bin/systemctl start httpd,
/usr/bin/systemctl stop httpd,/usr/bin/systemctl status httpd,
/bin/vim /etc/httpd/conf/httpd.conf, /bin/netstat, NOPASSWD:
ALL
User_Alias WEBADMIN= tom, jim
Cmnd_Alias MYCOMM=/usr/bin/systemctl start httpd,
/usr/bin/systemctl stop httpd,/usr/bin/systemctl status httpd,
/bin/vim /etc/httpd/conf/httpd.conf, /bin/netstat
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date,
/usr/bin/yum
WEBADMIN localhost=MYCOMM,SOFTWARE
+++++++++++++++++++++++++++++++++++++++
启用日志记录提权用户执行过的提权命令
vim /etc/sudoers
Defaults logfile="/var/log/sudo"
:wq
+++++++++++++++++++++++++++++++++++++++
普通用户登录系统后,查看可以使用的提权命令
sudo -l
普通用户登录系统后,执行提权命令
sudo 提权命令
+++++++++++++++++++++++++++++++++++++++++
三、配置sshd服务
修改服务运行参数(vim /etc/ssh/sshd_config)
[root@localhost ~]# netstat -untlap | grep sshd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
1413/sshd
17 Port 5789
19 ListenAddress 192.168.4.13
48 LoginGraceTime 2m
51 MaxAuthTries 6
UseDNS no
49 #PermitRootLogin yes
黑白名单(限制客户端连接)vim /etc/ssh/sshd_config
白名单:只允许在白名单列表里的用户可以访问
AllowUsers USER1@HOST USER2 …
AllowGroups GROUP1 GROUP2 …
黑白名单:只要用户不在黑名单列表里就可以访问
DenyUsers USER1 USER2 …
DenyGroups GROUP1 GROUP2 …
vim /etc/ssh/sshd_config
AllowUsers jim root@192.168.4.12
:wq
#systemctl restart sshd
修改服务验证登录方式?
1 口令认证登录(默认):使用正确的用户名和密码
2 密钥对认证登录: 公钥 私钥
加密 解密
2.1 配置客户端254
a 登录用户创建密钥对
# rm -rf ~/.ssh/
#ssh-keygen
#ls ~/.ssh
id_rsa id_rsa.pub
私钥 公钥
在ssh服务器上执行 # rm -rf /root/.ssh/
#ssh-copy-id root@192.168.4.13
2.2 配置ssh服务器13
a查看客户端上传的公钥文件
# cat /root/.ssh/authorized_keys
b 修改配置文件禁用口令认证登录
[root@localhost ~]# sed -n '79p' /etc/ssh/sshd_config
PasswordAuthentication no
#systemct restart sshd
254客户端连接ssh服务
#ssh jim@192.168.4.13 (连接被拒绝)
#ssh root@192.168.4.13 (允许连接)
12客户端连接ssh服务
#ssh root@192.168.4.13 (连接被拒绝)