linux 基本防护 (系统管理部分)
安装系统时会体是创建普通用户
useradd jim ---- echo 123456 | passwd – stdin jim
使用chage 工具
-d 0 ,强制修改密码
-E yyyy-mm-dd ,指定失效日期 (-1 取消)
chage -l jim
最近一次密码修改时间 :12月 28, 2018
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
cal 12 (一年12月)
chage -E 2018/12/31 jim (设置jim 用户到期时间为 2018/12/31)
chage -d 0 jim (0 表示必须改密码)
帐号的锁定/解锁
使用 passwd 命令
-l 锁定 -u 解锁 -S 看状态
passwd jim (改密码)
passwd -S jim (看状态)
jim LK 2018-12-28 0 99999 7 -1 (密码已被锁定。) —(锁定还是初始密码)
强制定期修改密码
配置文件 /etc/login.defs
主要控制属性
UMASK 077 (用户 权限为700)
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
ls -a /home/jim
. … .bash_logout .bash_profile .bashrc .mozilla (初始状态)
ls -a /etc/skel
cp -r mongodb /etc/skel/
useradd tom
echo 123456 | passwd --stdin tom
ls -a /home/tom
. … .bash_logout .bash_profile .bashrc mongodb .mozilla
伪装登入提示
配置文件
/etc/issue 、/etc/issue.net
分别适用于本地、远程登入
默认会提示内核、系统等版本信息
cat /etc/redhat-release (操作系统版本)
Red Hat Enterprise Linux Server release 7.4 (Maipo)
uname -r (显示内核)
3.10.0-693.el7.x86_64
vim /etc/issue (修改操作系统信息,隐藏真实信息)
程序和服务控制
禁用非必要的服务
使用 systemctl 、chkconfig 工具
systemctl disable httpd (开机不自起)
chkconfig httpd off (红帽6版本 开机不自起)
chkconfig httpd on (开机自起)
锁定/解锁保护文件
ext3/ext4的文件属性控制
chattr (修改) 、lsattr(查看)
用户切换与提权
su (切换到本机管理员帐号)
su jim (只切换到jim 用户。环境还是root 用户)-----[jim@m1 root]$
su - jim (切换到 jim 用户 环境也切换到 jim)—[jim@m1 ~]$
[jim@m1 ~]$ whoami
jim
[jim@m1 root]$ su - root -c “mkdir /root/bb.txt” (普通用户在root 用户 创建)
密码: root密码
[root@m1 ~]# su - jim -c “mkdir /home/jim/lll.txt” (以root身份给用户 jim 创建 目录)—普通用户家目录是 /home
分析 su 切换的使用情况
安全日志 /var/log/secure
记录su验证、shell 开启与关闭
tail /var/log/secure
sudo 提升执行权限
用户提权 (操作系统员 root 有提权权限)
提权是让系统的普通用户有执行root 权限
管理员预先为用户设置执行许可
被授权用户有权执行的命令,验证自己的口令
命令格式
用法1: sudo 特权命令
用法2: sudo 【-u 目标用户】 特权命令
查看自己的sudo 授权
sudo -l
配置sudo 授权
修改方法
visudo ====vim /etc/sudoers
授权记录格式
用户 主机列表命令列表
grep ^root /etc/sudoers
root ALL=(ALL) ALL NOPASSWD:ALL (提权用户执行命令不用密码验证)
可以是 % 组名
127.0.0.1 localhost (回还地址)
which systemctl -------》 /usr/bin
vim /etc/sudoers (编辑文件 授权)
93 tom localhost,m1=/usr/bin/systemctl * httpd, /usr/bin/vim /etc/httpd/conf/httpd.conf
wq!
(文件用户名 本机回还地址(localhost),本机主机名(m1)=命令列表)
[tom@m1 ~]$ sudo -l
用户 tom 可以在 m1 上运行以下命令:
(root) /usr/bin/systemctl * httpd, /usr/bin/vim /etc/httpd/conf/httpd.conf
lucy localhost,m1=/usr/bin/systemctl * mysqld, !/usr/bin/vim /etc/my.cnf (!, 不允许)
[tom@m1 ~]$ sudo /usr/bin/systemctl start httpd (开启httpd)----必须用绝对路径
可以给用户,组提权
%wheel ALL=(ALL) ALL
usermod -G wheel lll
%wheel ALL=(ALL) ALL
lll 用户会有所有权限
用户组提权
useradd jack
useradd jerry
groupadd admgrp
usermod -G admgrp jack
usermod -G admgrp jerry
%admgrp localhost,m1=/usr/bin/systemctl * httpd, /usr/bin/vim /etc/httpd/conf/httpd.conf, /usr/bin/systemctl * mysqld, /usr/bin/vim /etc/my.cnf,NOPASSWD:ALL (给组 admgrp 设置提权,且不需要输入密码)
分析sudo 提权的使用情况
修改全局配置,启用日志 (vim /etc/sudoers)
Defaults logfile="/var/log/sudo" (添加日志文件)
sudo 别名设置
主要用途
提高可重用性、易读性
简化配置、使记录更用条理
30 Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
94 tom localhost,m1=SOFTWARE, /usr/bin/systemctl * httpd, /usr/bin/vim /etc/httpd/conf/httpd.conf (注别名名称必须全大写)
[tom@m1 ~]$ sudo /bin/rpm -q elinks
[tom@m1 ~]$ sudo /usr/bin/yum -y install elinks
ssh 访问控制【服务常用配置项目 加深密钥对认证登入的使用】
selinux 安全防护
ssh 防护概述
存在的安全隐患
密码嗅觉、键盘记录
暴力枚举帐号、猜解密码
常见的防护措施
用户限制、黑白名单
更改验证方式 (密码—》 密钥对)
防火墙
sshd基本安全配置
文件 (/etc/ssh/sshd_config)
17 #Port 22
18 #AddressFamily any
19 #ListenAddress 0.0.0.0 //默认所有都可连
PermitRootlogin no //禁止root 登入
修改文件
Port 2222
#AddressFamily any
ListenAddress 192.168.4.50
systemctl restart sshd (重启)
验证 :
[root@student000000 ~]# ssh -p 2222 -X [email protected] (真机连接)
37 #LoginGraceTime 2m //不解析客户机地址
40 #MaxAuthTries 6 //登入限时
115 #UseDNS no // 每连接最多认证次数
man 5 sshd_config (man 帮助)
黑名单 (在列表用户不允许连接 sshd 服务)
白名单 (在列表用户才能连接)
配置白名单
AllowUsers 用户列表
AllowGroups 用户组名列表
配置黑名单
DenyUsers 用户列表
DenyGroups 用户组名列表
AllowUsers dcc [email protected] ( dcc 用户 可以所有主机登入 root只能254 上连接及真机上连接)
[root@m2 ~]# ssh -p 2222 [email protected]
sshd 口令验证(默认 用户名、密码)
65 PasswordAuthentication yes (默认密码与用户名连接)
密钥验证 (公钥 私钥)
43 #PubkeyAuthentication yes (密钥开启)
47 AuthorizedKeysFile .ssh/authorized_keys (存放客户端公钥名称)
在真机上生成公钥私钥 给 51 主机
rm -rf ~/.ssh (还原无密码登入)
cat /root/.ssh/id_rsa.pub ( 密钥文件)----id_rsa.phb (公钥)
[root@m1 ~]# ls /root/.ssh/authorized_keys (客户端存放)
[root@student000000 ~]# ssh-add (若登入要密码。则手动)
PasswordAuthentication no (在51主机上关闭用户名与密码连接)–及只能密钥登入
#PermitEmptyPasswords no 要连接的主机上没有密码的用户 不能来连接
为了能让 52主机也能连接上主机51
ssh [email protected]
Permission denied (publickey,gssapi-keyex,gssapi-with-mic). —没有对应的
52 主机上
rm -rf /root/.ssh/
mkdir ~/.ssh
scp [email protected]:/root/.ssh/id_rsa /root/.ssh/
chmod u+x /root/.ssh/id_rsa
ssh [email protected]
或: 『在真机上
scp ~/.ssh/id_rsa [email protected]:/root/.ssh (将51 主机私钥文件拷贝给52 )
52主机 chmod u+x /root/.ssh/id_rsa (方便连接主机51)』
什么是selinux
sestatus -----getenfore (查状态)
添加禁用 selinux=0
添加允许 enforcing=0
修改配置文件 (/etc/selinux/config)
disabled (禁用) permissive (宽松) enforcing (强制)
targeted - Targeted processes are protected, //保护常用服务
查看安全上下文
为文件/目录/设备标记访问控制属性
属性构成
用户:角色:访问类型:选项…
system_u:object_r:passwd_file_t:s0 —ls -Z /etc/passwd
system_u:system_r:httpd_t:s0 httpd ps -aux Z | grep -i httpd
system_u:system_r:mysqld_t:s0 mysql ps aux -Z | grep -i mysqld
object_r:admin_home_t:s0 -----》 root家目录
ls -Z (查看) /文件/目录/进程
ls -l /etc/passwd
-rw-r–r--. 1 root root 2426 12月 28 15:24 /etc/passwd
ls -lZ /etc/passwd
-rw-r–r--. root root system_u:object_r:passwd_file_t:s0 /etc/passwd
修改安全上下文
使用 chcon 工具
-t ,指定访问类型
-R , 递归修改
一般操作规律
创建的文件,继承父目录的安全上下文 (及在什么目录下创建就和此目录属性一致)
[root@m1 ~]# touch abc.txt
[root@m1 ~]# ls -Z abc.txt
-rw-r–r--. root root unconfined_u:object_r:admin_home_t:s0 abc.txt
移动的文件,原有的上下文属性不变
mv /root/a.html /var/www/html/
[root@m1 html]# ls -Z a.html
-rw-r–r--. root root unconfined_u:object_r:admin_home_t:s0 a.html
[root@m1 html]# chcon -t httpd_sys_content_t a.html (修改selinux 上下文)
ls -Z a.html (httpd_sys_content_t 为 /var/www/html 属性)
-rw-r–r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 a.html
复制的文件,自动继承目标位置的上下文 (与/var/www/html 上下文一致)
[root@m1 ~]# cp /root/b.html /var/www/html/
[root@m1 html]# ls -Z b.html
-rw-r–r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 b.html
修改文件的访问类型
chcon -t 访问类型 文件名
chcon -R -t 访问类型 文件夹
重置安全上下文
使用 restorecon 『文件名』 工具 (restorecon /var/www/html/b.html)
恢复为所在位置的默认上下文属性
-R 递归修改 『目录名』
/.autorelabel 文件
下次重启后全部重置
设置 selinux 布尔值 bool (功能开关)
getsebool -a 。 列出所有布尔值 『getsebool -a | grep -i httpd
』
setsebool -P 选项 on| off 永久更改,重启后仍然有效
50 运行ftp 服务。允许匿名用户对 /var/ftp/shared 目录有上传和下载文件权限
vim /etc/vsftpd/vsftpd.conf
29 #anon_upload_enable=YES //允许匿名用户有权限
mkdir /var/ftp/shared
chmod o+w /var/ftp/shared
cp /etc/hosts /var/ftp/shared
systemctl restart vsftpd (ftp端口:21)
测试:yum -y install ftp
ftp 192.168.4.50
上传文件 : ftp --》 回车 --》 cd shared --》 lcd /etc --》 put passwd
下载文件 ftp … cd shared --》 ls --》 get hosts
上传开启bool 值
setsebool -P ftpd_anon_write on
setsebool -P ftpd_full_access on
报错信息查看
rpm -qa | grep -i shoot
setroubleshoot-3.2.28-3.el7.x86_64
setroubleshoot-plugins-3.0.65-1.el7.noarch
setroubleshoot-server-3.2.28-3.el7.x86_64
[root@m2 ~]# rpm -qa | grep -i setroubleshoot
setroubleshoot-3.2.28-3.el7.x86_64
setroubleshoot-plugins-3.0.65-1.el7.noarch
setroubleshoot-server-3.2.28-3.el7.x86_64
grep -i ‘setroubleshoot’ /var/log/messages | tail -1
Dec 28 08:20:01 m2 setroubleshoot: SELinux is preventing /usr/lib64/firefox/plugin-container from name_connect access on the tcp_socket port 6010. For complete SELinux messages run: sealert -l 65a9663b-ae7a-4e65-a42b-8e55c6f23e95
[root@m2 ~]# sealert -l 65a9663b-ae7a-4e65-a42b-8e55c6f23e95
Do (解决方法)
allow this access for now by executing: