文章目录
Linux基本防护
Linux基本防护命令
chage命令
-
chage 命令
- chage -l 账户名称 查看账户信息
chage -l zhangsan #查看zhangsan用户的账户信息 Last password change : Jan 08, 2021 Password expires : never #密码过期 Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7
- chage -E 日期 账户名称 设置账户过期时间
chage -E 2015-12-31 zhangsan #过期zhangsan的密码 exit #登录zhangsan账户 Your account has expired; please contact your system administrator User account has expired #登不进去了 密码过期了 chage -l zhangsan Last password change : Jan 08, 2021 Password expires : never Password inactive : never Account expires : Dec 31, 2015 #过期时间 Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7 chage -E -1 zhangsan #设置回永不过期 chage -l zhangsan #再次查看 Last password change : Jan 08, 2021 Password expires : never Password inactive : never Account expires : never #变回来了 Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7
- tip: 用户默认有效期配置文件/etc/login.defs
cat /etc/login.defs ..... #有一堆注释信息 观感不好 #复习下awk好了 awk '!/#/&&!/^$/{print $0}' /etc/login.defs #检索出没有被注释的非空行 MAIL_DIR /var/spool/mail PASS_MAX_DAYS 99999 PASS_MIN_DAYS 0 PASS_MIN_LEN 5 PASS_WARN_AGE 7 UID_MIN 1000 UID_MAX 60000 SYS_UID_MIN 201 SYS_UID_MAX 999 GID_MIN 1000 GID_MAX 60000 SYS_GID_MIN 201 SYS_GID_MAX 999 CREATE_HOME yes UMASK 077 USERGROUPS_ENAB yes ENCRYPT_METHOD SHA512 #可以看见一些用户创建的参数都有默认值或者默认值范围 #复习下awk的运行流程 一次只能遍历一遍文件 awk '{print 1} {print 2}' /etc/login.defs 1 2 1 2 .... #可以判断两个代码块是交替执行的,不会因为有两个代码块跑两遍文本(这种情况应该是1111222的输出)。
passwd命令
-
passwd命令
- passwd -l 用户名称 锁定用户密码
- passwd -S 用户名称 查看用户状态 区别于 chage -l 看的东西不一样
- passwd -u 用户名称 解锁用户密码
passwd -l zhangsan #锁定zhangsan用户的密码 l --> lock Locking password for user zhangsan. passwd: Success passwd -S zhangsan #查看状态 S --> status zhangsan LK 2021-01-07 0 99999 7 -1 (Password locked.) #锁定密码了 exit #登录zhangsan Login incorrect #提示密码错误 passwd -u zhangsan #解锁 u --> unlock Locking password for user zhangsan. passwd: Success passwd -S zhangsan zhangsan PS 2021-01-07 0 99999 7 -1 (Password set, SHA512 crypt.) exit #登录zhangsan 登录成功
隐藏系统版本
/etc/issue配置文件保存登录提示信息 有操作系统内核的信息
#可以先看一下/etc/issue
cat /etc/issue #查看
\S #\S会被变量替换了 CentOS Linux7 (Core) 测试了下两个\S 就有两行版本信息
Kernel \r on an \m #\r和\m同上
#修改内容
vim /etc/issue
============================================
A camouflaged version of the system kernel
a ha
============================================
exit
#就可以看见登录页面上面的自建提示信息了
chattr和lsattr 文件隐藏属性
- chattr基本格式: chattr [±=][ASacdistu] 文件或目录名称
chattr选项和参数 | 说明 |
---|---|
+ | 增加某一个特殊参数 |
- | 移除一个特殊的参数 |
= | 重新设定 会修改原来的参数 |
A | 存取此文件、目录,他的访问时间atime将不会被修改 |
S | 文件是异步写入磁盘的,加上S会在文件任何修改的情况下同步到磁盘(防止重要数据丢失,但需要频繁写入) |
a | 设定之后,文件只能增加数据,不能删除和修改数据,只有root能设定 |
c | 设定后,会自动将文件压缩,读取时自动解压缩,但是在储存时,将会进行压缩后存储,大文件适合 |
d | 不会被dump备份 |
i | 不能被删除、改名、设定连结也无法写入或新增数据! 只有root能设定 |
s | 当这个文件被删除,他将会被完全移除出这个硬盘空间 |
u | 与s相反,文件被删除,则数据内容还在磁盘空间,可以用来救援文件 |
lsattr基本格式:lsattr 文件或目录名称
sudo分配管理权限
- su - 账户名称 -c ‘命令’
cd /home/zhangsan
touch 1.txt
su - zhangsan -c 'ls' #变成zhangsan用户查看当前目录
1.txt
su - zhangsan -c 'echo 1243 > 1.txt' #执行写操作
-bash: 1.txt: Permission denied #失败了
ls -l
-rw-r--r--. 1 root root 0 Jan 8 06:04 1.txt #属于root用户 属于其他人的zhangsan无写入权限
- whoami 查看当前是什么省份
whoami
root
su - zhangsan #变成zhangsan
whoami
zhangsan
- /etc/sudoers配置文件
useradd useradm
echo 123456 | passwd --stdin useradm
vim /etc/sudoers #也可以visudo来修改
==================================================
useradm ALL=(ALL) /usr/bin/passwd,!/usr/bin/passwd root,/usr/sbin/user*,!/usr/sbin/user* * root
=================================================
#允许useradm执行passwd命令 不能执行passwd root操作 能执行user*操作 不能执行 user* * root操作
#总结 格式匹配的缺点想的不完善就不太行 echo 12345 | passwd --stdin root 还是可以修改
- 执行sudo操作产生日志文件
visudo
===========================================
Defaults logfile="/var/log/sudo" #只能双引号
============================================
SSH服务端安全性调整
vim /etc/ssh/sshd_config
===============================
........
PermitRootLogin no #禁止root用户登录
UseDNS no #不解析客户机地址
LoginGraceTime 1m #限时登录
MaxAuthTries 3 #每连接最多认证次数
.........
=====================================
systemctl restart sshd
#或者仅允许白名单登录
vim /etc/ssh/sshd_config
===========================
....
AllowUsers zhangsan tom useradm@192.168.2.0/24
##DenyUsers USER1 USER2 #定义账户黑名单
##DenyGroups GROUP1 GROUP2 #定义组黑名单
##AllowGroups GROUP1 GROUP2 #定义白名单
==================================================
#允许来自192.168.2.0的使用useradm远程登录 允许使用zhangsan tom远程登录
systemctl restart sshd
#密钥配置信息
ssh-keygen -f /root/.ssh/id_rsa -N ''
ssh-copy-id root@192.168.2.5 #公钥发送给2.5
#2.5配置禁用口令登录
vim /etc/ssh/sshd_config
===========================
.....
PasswordAuthentication no #默认yes改成no
==================================
SElinux安全防护
chcon命令修改文件目录安全信息上下文
#2.5开启SELinux
vim /etc/selinux/config
===========================
SELINUX=enforcing #设置SELinux为强制模式
SELINUXTYPE=targeted #保护策略为保护主要的网络服务安全
=============================
setenforce 1 #变成强制模式 修改配置文件启动生效
yum -y install vsftpd
systemctl start vsftpd
tar -czf /var/ftp/log1.tar /var/log #直接压缩到ftp共享目录/var/ftp下
tar -czf /var/ftp/log2.tar; mv log2.tar /var/ftp/ #压缩到家目录 再移动过去
ls -Z /var/ftp/ #查看标签
-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 log1.tar
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 log2.tar #标签不一样
drwxr-xr-x. root root system_u:object_r:public_content_t:s0 pub
#新建文件标签自动继承上层目录的 SELinux主要看倒数第二项
#2.100测试
wget ftp://192.168.2.5/log1.tar #成功下载
wget ftp://192.168.2.5/log2.tar #没有该文件
curl ftp://192.168.2.5 #访问看看怎么回事
-rw-r--r-- 1 0 0 919711 Jan 08 15:36 log1.tar
drwxr-xr-x 2 0 0 6 Aug 03 2017 pub
#发现只有log1.tar log2.tar因为标签不一样被2.5的SElinux拦住了 所以没有了
#2.5修改标签
chcon -t public_content_t /var/ftp/log2.tar #修改标签 也可以semanage命令
ls -Z /var/ftp/log2.tar #查看下标签
-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 /var/ftp/log2.tar
# 改了
#2.100查看
curl ftp://192.168.2.5
-rw-r--r-- 1 0 0 919711 Jan 08 15:36 log1.tar
-rw-r--r-- 1 0 0 919711 Jan 08 15:37 log2.tar #出来了
drwxr-xr-x 2 0 0 6 Aug 03 2017 pub
SELinux端口标签
- semanage port -l 查看端口标签
semanage port -l | grep 80$
geneve_port_t tcp 6080
jabber_interserver_port_t tcp 5269, 5280
ocsp_port_t tcp 9080
- semanage port -a -t port_label -p tcp | udp PORT
semanage port -a -t http_port_t -p tcp 8998 #8998端口添加http_port_t标签
- semanage port -m -t port_label -p tcp|udp PORT
semanage port -m -t http_port_t -p tcp 8998 #修改8998端口标签为http_port_t
SELinux的布尔值
-
布尔值规则
- getsebool
- setsebool
-
查看bool命令
- getsebool [-a] [boolean]
- semanage boolean -l
- semanage boolean -l -C 查看修改过的布尔值
getsebool -a | grep ftp
-
设置bool值命令
- setsebool [-P] boolean value(on, off)
- setsebool [-P] boolean value(0, 1)
setsebool -P ftpd_anon_write=1 #P 永久生效 该规则允许ftp匿名上传