Linux之系统安全及应用
账号安全
系统账号清理
- 将非登陆用户的Shell设为/sbin/nologin
[root@localhost ~]#cat /etc/passwd #查看系统有哪些用户
[root@localhost ~]#usermod -s /sbin/nologin 用户名 #将用户设置为不能登陆
- 锁定长期不适用的账号
[root@localhost ~]#passwd -l #锁定用户
[root@localhost ~]#usermod -L #锁定用户
[root@localhost ~]#passwd -u #解锁用户
[root@localhost ~]#usermod -U #解锁用户
[root@localhost ~]#passwd -S #查看用户状态
- 删除无用的账号
[root@localhost ~]#userdel 用户 #删除用户
[root@localhost ~]#userdel -r 用户 #将宿主目录一起删除
- 锁定账号文件passwd用户、shadow密码
[root@localhost ~]#chattr +i /etc/passwd
[root@localhost ~]#chattr +i /etc/shadow
#锁定文件
[root@localhost ~]#chattr -i /etc/passwd
[root@localhost ~]#chattr -i /etc/shadow
#解锁文件
[root@localhost ~]#lsattr /etc/passwd
[root@localhost ~]#lsattr /etc/shadow
#查看文件状态属性
#####例子
[root@localhost ~]#chattr +i /etc/passwd
[root@localhost ~]#lsattr /etc/passwd
----i----------- /etc/passwd
[root@localhost ~]#chattr -i /etc/passwd
[root@localhost ~]#lsattr /etc/passwd
---------------- /etc/passwd
[root@localhost ~]#chattr +i /etc/shadow
[root@localhost ~]#lsattr /etc/shadow
----i----------- /etc/shadow
[root@localhost ~]#chattr -i /etc/shadow
[root@localhost ~]#lsattr /etc/shadow
---------------- /etc/shadow
密码安全控制
- 设置密码有效期
[root@localhost ~]#chage -M 30 用户 #设置密码有效期30天 适用于已有用户
[root@localhost ~]#vim /etc/login.defs #适用于添加新用户
PASS_MAX_DAYS 99999 #可以把时间设置为30天
- 要求用户下次登陆时修改密码
[root@localhost ~]#chage -d 0 用户 #下次登陆必须修改密码
命令历史限制
- 减少记录的命令条数
- 注销时自动清空命令历史
[root@localhost ~]#vim /etc/profile #进入配置文件修改历史命令条数
HISTSIZE=10
[root@localhost ~]#. /etc/profile #刷新配置文件,使文件立即生效
[root@localhost ~]#export HISTSIZE=200
[root@localhost ~]#. /etc/profile #刷新配置文件,使文件立即生效
[root@localhost ~]#history -c #临时清理
[root@localhost ~]#vim ~/.bashrc
echo "">.bash_history #写入.bash_logout #注销时自动清理命令
终端自动注销
[root@localhost ~]#vim /etc/profile #对所有用户生效
export TMOUT=10
[root@localhost ~]#. /etc/profile #刷新配置文件,使文件立即生效
[root@localhost ~]#source /etc/profile #刷新配置文件,使文件立即生效
使用su命令切换用户
root切换普通用户不用密码验证
普通用户切换其他用户需要密码验证
su - 用户
#加 - 是完全切换 自立门户
#不加 - 是不完全切换 继承师尊遗产 会残留上一个用户的一些设置
[root@localhost ~]#su mtwm #切换到mtwm用户,从root用户切换不用密码
[mtwm@localhost root]$ su ww #从普通用户mtwm切换到普通用户ww,需要密码
密码:
[ww@localhost root]$ exit #按exit退出用户
exit
[mtwm@localhost root]$ exit
exit
[root@localhost ~]#whoami #whoami可以查看当前用户
root
[root@localhost ~]#vim /etc/pam.d/su
2 auth sufficient pam_rootok.so
6 #auth required pam_wheel.so use_uid
#默认情况下,使用root切换不需要密码,注释两行,所有账号都可以使用,但是root切换时需要密码
PAM安全认证模块
-
用户来访问我
首先确定用什么来访问 确定service类型 (用户名 密码 密钥 短信验证码)
根据配置文件确定是否放行
如果调用的相关的模块 -
配置文件:
主配置:/etc/security 只有功能强大的pam模块才会有主配置文件
次配置文件:/etc/pam.d 虽然他是次配置 他优先 -
模块文件:/usr/lib64/security
-
默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root) 的登录密码,带来安全风险;
为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换。
sudo
sudo 用户 #可以使用户临时以root执行命令
#####配置sudo授权
[root@localhost ~]#visudo #自带语法检查
visudo: /etc/sudoers.tmp 未更改
[root@localhost ~]#vim /etc/sudoers #不带语法检查
root ALL=(ALL) ALL
用户 主机列表 命令列表
###例子
mtwm ALL=(ALL) /usr/bin/mount /dev/cdrom /mnt
#命令尽量用绝对路径
#多条命令使用时用,分割
#支持使用* !等通配符
#NOPASSWD可以不需要密码验证
#权限生效之后,五分钟可以不用在输密码
#配置/etc/sudoers文件,可以授权用户较多的时使用
Host_Alias MYHOST= localhost #主机名
User_Alias MYUSER = yxp,zhangsan,lisi #需要授权的用户
Cmnd_Alias MYCMD = /sbin/*,/usr/bin/passwd #授权
MYUSER MYHOST = NOPASSWD : MYCMD #授权格式
#启用sudo操作日志
Defaults logfile = "/var/log/sudo"
暴力破解密码
#把下载好的安装包用过rz命令下到目录opy下(sz可以把linux系统中的文件传到自己的windows系统中):
[root@localhost ~]#cd /opt
[root@localhost ~]#rz
[root@localhost opt]#ls
john-1.8.0.tar.gz
#解压
[root@localhost opt]#tar zxvf john-1.8.0.tar.gz
#安装软件编译工具
[root@localhost src]#yum install gcc gcc-c++ make -y
#进行编译安装
[root@localhost src]#make clean linux-x86-64
#准备待破解的密码文件
[root@localhost src]#cd .. #切换至上级目录
[root@localhost src]#cp /etc/shadow /opt/shadow.txt #准备密码文件
#执行暴力破解
[root@localhost src]#cd /opt/john-1.8.0/run/
[root@localhost run]#./john /opt/shadow.txt
#查看已经破解出的密码
[root@localhost run]#./john --show /opt/shadow.txt
nmap扫描
nmap [扫描类型] [选项] <扫描目标>
nmap命令常用的选项和描类型
-p: 指定扫描的端口。
-n: 禁用反向DNS解析(以加快扫描速度) ip转换成 域名 12222 2www.baidu.com
-sS: TCP的SYN扫描 (半开扫描),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即
断开连接;否则认为目标端口并未开放。
-sT: TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监
听服务,否则认为目标端口并未开放。
-sF: TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对sYN数据包进行简单
过滤,而忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性。
-sU: UDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。
-sP: ICMP 扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描。
-P0: 跳过ping检测, 这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法
ping通而放弃扫描。
服务 | 端口号 |
---|---|
HTTP | 80 |
HTTPS | 443 |
Telnet | 23 |
FTP | 21 |
SSH(安全登录)、SCP(文件传输)、端口重定向 | 22 |
SMTP | 25 |
POP3 | 110 |
WebLogic | 7001 |
TOMCAT | 8080 |
WIN2003远程登录 | 3389 |
Oracle数据库 | 1521 |
MS SQL* SEVER数据库sever | 1433 |
MySQL 数据库sever | 3306 |