linux 主机安全.docx
- 文档编号:12265469
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:23
- 大小:24.83KB
linux 主机安全.docx
《linux 主机安全.docx》由会员分享,可在线阅读,更多相关《linux 主机安全.docx(23页珍藏版)》请在冰豆网上搜索。
linux主机安全
Linux主机安全
安全
物理安全
软件安全(kernel+softwares)
网络安全
系统安全
BIOS密码,更改合适启动选项(禁止改bios/禁止更改第一启动选项,防止恶意的引导)
GRUB密码
系统密码(密码策略)
分区加密
最小权限法(su/sudo)
最小服务法
文件安全(suid/sgid/stick/chattr)
pam模块的使用
升级系统和软件
网络安全
tcpwrappers
iptables
SSH
VPN
SELINUX
入侵检测(AIDE/rootkit)
系统安全:
一、BIOS密码(bios/cmos)
调整BIOS引导设置
修改启动顺序,正确做法:
第一启动选项为磁盘
开机-->一直按着delete-->Boot-->BootDevicepriority-->"1stBootDevice[STAT:
......]"
设置管理密码
开机-->一直按着delete-->Boot-->Security-->.......................
禁用Ctrl+Alt+Del重启热键
RHEL5:
--注释32行
#vim/etc/inittab
32#ca:
:
ctrlaltdel:
/sbin/shutdown-t3-rnow
#initq--让更改的配置马上生效,不需要重启服务器。
RHEL6:
#vim/etc/init/control-alt-delete.conf--注释以下两行
#startoncontrol-alt-delete
#exec/sbin/shutdown-rnow"Control-Alt-Deletepressed"
#initq
二、GRUB密码
两重密码:
1.修改菜单的密码
2.引导密码
--加密引导菜单的作用:
修改启动参数时需要验证密码
--进入所选择的系统前需要验证密码
在grub.conf文件中设置密码的方式
password明文密码串
password--md5加密密码串
密码设置行的位置
全局部分(第一个“title”之前)
系统引导参数部分(每个“title”部分之后)
#grub-md5-crypt-----先生成密文密码
$1$Qq15d$bEjy8VeMCrNcIJCEESqyY/
#vim/boot/grub/grub.conf
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
password--md5$1$Qq15d$bEjy8VeMCrNcIJCEESqyY/--修改启动菜单时需要输入此密码
titleRedHatEnterpriseLinuxServer(2.6.18-8.el5)
password123456--启动某个系统时需要输入的密码,一般不设置
root(hd0,0)
……
系统策略(密码策略)
1.检查系统中有无空密码账号:
测试:
创建一个u01帐号,无密码,去passwd以及shadow文件中删掉密码进行测试
#awk-F:
'($2==""){print}'/etc/shadow
u01:
:
16093:
0:
99999:
7:
:
:
#awk-F:
'($2==""){print}'/etc/passwd
u01:
:
502:
503:
:
/home/u01:
/bin/bash
2.检查系统中有无多余的管理员账号(管理员的uid为0):
#awk-F:
'($3=="0"){print}'/etc/passwd
3.设置账号的属性:
账号的过期时间设置:
#usermod-e2012-10-1u01--修改一个已经存在的账号的过期时间
#useradd-e2012-10-102--在新建用户时指定过期时间
#chage-M30-m7-W7-I3userName
#chage-d0userName
-M多长时间改一次密码
-m修改密码的最小间隔
-W密码过期警告时间
-I密码过期延时时间
-d定义第一次修改密码的时间,-d0从来都没改过密码,所以第一次登录时需要修改密码
4.检查程序用户的登录Shell是否异常
#awk-F:
'$7!
="/sbin/nologin"{print$1,$7}'/etc/passwd
root/bin/bash
sync/bin/sync
shutdown/sbin/shutdown
halt/sbin/halt
mysql/bin/bash
user01/bin/bash
user02/bin/bash
5.减少记录命令历史的条数
环境变量HISTSIZE
#vim/etc/profile
HISTSIZE=50
6.设置在命令行界面中超时自动注销(shell的超时时间)
环境变量TMOUT
#vim/etc/profile
TMOUT=300
7、记录用户的每个命令操作(录屏):
#vim/etc/profile
exec/usr/bin/script-t2>/tmp/$USER-$UID-`date+%Y%m%d%H%M`.date-a-f-q/tmp/$USER-$UID-`date+%Y%m%d%H%M`.log
exec:
后面的内容强制在当前shell执行
在0.182上执行这条命令,在客户机0.181上ssh一个普通用户登录上来,在0.182上的/tmp下:
#tail-faa-504-201401231832.log
Scriptstartedon2014年01月23日星期四18时32分19秒
那么在0.181上面的操作都会同步到0.182的这个终端上面。
8、查看用户登录情况(ssh上来的境况)
#last--查看所有用户在线的情况
-i不做反解,可以看到IP,对应的是/var/log/wtmp
#lastlog--查看用户最后一次登录的时间
对应的是/var/log/lastlog
#lastb--查看用户登录失败记录
对应的是/var/log/btmp
lastb-i-a---->不做反解,并把IP放在最后面一列,方便截取
在子节点中写了一个有关lastbssh被暴力破解btmp
#/var/log/secure--跟验证相关的日志信息在记录在此文件
给一个已经存在的分区加密(i/o-->disk-->partion-->crypt-->logic_partion(ext3))
简单的做法就是自己创建一个新的分区拿来做测试,这样就不会弄坏机器
#fdisk-cu/dev/sda
#partx-a/dev/sda--------刷新分区表
#ls/dev/sda*
/dev/sda/dev/sda1/dev/sda2/dev/sda3/dev/sda4/dev/sda5
#rpm-qcryptsetup-luks
cryptsetup-luks-1.2.0-7.el6.x86_64
#cryptsetup--help
-v,--verboseShowsmoredetailederrormessages
-y,--verify-passphraseVerifiesthepassphrasebyaskingforittwice
luksFormat
luksOpen
luksAddKey
#cryptsetup--verbose--verify-passphraseluksFormat/dev/sda5
WARNING!
========
Thiswilloverwritedataon/dev/sda5irrevocably.
Areyousure?
(Typeuppercaseyes):
YES
EnterLUKSpassphrase:
Verifypassphrase:
Commandsuccessful.
#cryptsetupluksOpen/dev/sda5chen
Enterpassphrasefor/dev/sda5:
#ls/dev/mapper/chen
/dev/mapper/chen
#mkfs.ext4/dev/mapper/chen
#mkdir/chen
#mount/dev/mapper/chen/chen/
[root@mailDesktop]#df-h|grepchen
/dev/mapper/chen1006M18M938M2%/chen
#vim/etc/crypttab
chen/dev/sda5/root/.password
#vim/root/.password
#cat/root/.password
redhat
#chmod600/root/.password
#cryptsetupluksAddKey/dev/sda5/root/.password
Enteranypassphrase:
#vim/etc/fstab
/dev/mapper/chen/chenext4defaults00
#reboot
#df-h|grepchen
/dev/mapper/chen1006M18M938M2%/chen
#cryptsetup--help|grepClose------这个是关闭,不用的时候就关掉这个分区,这样就需要密码来访问
luksClose
1.进入单用户模式
telinit1
2.Cpoydataandunmountyourexisting/home:
cp-a/home/*/backup
umount/home
3.如何无法卸载,可以使用强制杀死访问这个分区程序,然后再次卸载:
fuser-mvk/home
4.确认分区是否还被挂载着:
grephome/proc/mounts
5.给分区设置加密(加密的分区是无法访问的)
#rpm-qcryptsetup-luks--确认加密工具是否已经安装
#cryptsetup--verbose--verify-passphraseluksFormat/dev/VG00/LV_home
YES--回答大写的yes,这一步会把分区原来所有的数据全部清空
6.给加密分区设置映射名称:
cryptsetupluksOpen/dev/VG00/LV_homehome----随意名字
7.映射设备存放的路径:
/dev/mapper/home
ls-l/dev/mapper|grephome
8.格式化分区
mkfs.ext3/dev/mapper/home
9.挂载分区
mount/dev/mapper/home/home
10.Makesurethefilesystemisvisible:
df-h|grephome
实现加密分区的自动挂载:
#vim/etc/crypttab
xxx/home/mapper/GLSvg-lv_home/root/.password
映射设备原始设备加密密码
#vim/root/.password--输入假密码,不需要写真密码,提高安全性
uplooking
#chmod600/root/.password
#cryptsetupluksAddKey/dev/mapper/GLSvg-lv_home/root/.password--告知设备密码验证文件存储路径
EnteranyLUKSpassphrase:
Verifypassphrase:
keyslot0unlocked.
Commandsuccessful.
#vim/etc/fstab
/dev/mapper/xxx/mntext3defaults12
#reboot--检验一下是否能够开机自动挂载
最小服务法
关闭不需要的服务:
#vim/root/service.sh
#!
/bin/bash
servicexinetdstop
chkconfigxinetdoff
services="networksshdsysloglvm2-monitormessagebussendmailcrondgpmanacronauditdhaldaemonirqbalanceavahi-daemon"
offservices=`chkconfig--list|grep0:
|awk'{print$1}'`------找出所有服务
foriin$offservices
do
chkconfig$ioff-------先关闭所有服务
done
foriin$services
do
chkconfig$ion-------再开启我们需要的服务
done
reboot
禁止普通用户执行init.d目录中的脚本
#chmod-Ro=-/etc/rc.d/init.d
eg:
#chmodo=-/var/tmp/aa/-R
#ll
总用量4
drwxr-x---.2rootroot40961月2410:
13aa
文件安全(suid/sgid/stick/chattr)分区安全
需要独立划分分区的目录(分区的原则:
所有用户都能写的,建议分区;读或写频繁地,建议分区):
/
/boot
swap
/usr或/opt
/home
/varand/var/tmp
/tmp
装系统之前分出这两个分区,到时可以拿来做挂载点
/data------重要数据可以放在这里
/bak------备份
挂载关键选项(针对所有人的分区):
1.noexec--所有的二进制命令在此分区都无法运行,脚本也无法运行,可以考虑用来存放数据。
包含了nosuid
3.nodev--所有的字符文件和设备文件都无法在此分区中使用(如:
zero,sdaetc).
4.nosuid--不允许在此分区使用拥有冒险位和强制位的文件
5.noatime--不允许更新文件的访问时间,减少额外的IO开销
6.nodiratime--不允许更新目录访问时间
eg:
mount-oremount,noexec/设备/挂载点
CreateseparatepartitionsforApacheandFTPserverroots.Edit/etc/fstabfileandmakesureyouaddthefollowingconfigurationoptions:
Sample/etc/fstabentrytotolimituseraccesson/dev/sda5(ftpserverrootdirectory):
#vim/etc/fstab
/dev/sda5/ftpdataext3defaults,nodev,noexec12
使用磁盘配额(所有用户用写目录都需要做配额限制):
1.Enablequotasperfilesystembymodifyingthe/etc/fstab(usrquota)file.
2.Remountthefilesystem(s).mount-oremount/xx
3.Createthequotadatabasefilesandgeneratethediskusagetable.
quotacheck-cmu/xx;quotaon-vu/xx
4.Assignquotapolicies.
edquota-uuser01
edquota-puser01user02
setquota-uuser01100020001020
查询:
quota-uuser01
repquota-vu/xx
锁定重要文件的i(inode)节点
chattr命令、lsattr命令
#chattr+i/etc/passwd--完全锁定inode
#useraddnewuser
useradd:
无法打开密码文件
#chattr-ia.test减去这个限定
#lsattr/etc/passwd
----i--------/etc/passwd
#chattr+-a/file--只锁定旧inode与block的对应关系,允许追加新的block
inode里面放着与文件信息相关的东西,还放着block的链接
block里面放着的是实实在在的数据。
需要加锁的文件:
/boot/grub/grub.conf
/etc/passwd
/etc/shadow
/etc/sudoers
suid/sgid(分区挂选项:
nosuid)
1.手工找出系统中拥有suid/sgid的文件(快照)
#find/-typef-a-perm+6000-execls-lh{}\;
+6000----或(包括200040006000)
6000----权限等于6000
-6000----与
-a代表并且
-o代表或者
#find/-typef-perm+6000-ls
2.使用脚本的方法查找对比:
#find/-typef-perm+6000>/etc/sfilelist
#vimcheck_perm.sh
#!
/bin/bash
OLD_LIST=/etc/sfilelist
foriin`find/-typef-a-perm+6000`
do
grep-F"$i"$OLD_LIST&>/dev/null
[$?
-ne0]&&ls-lh$i
done
注意:
-F,--fixed-stringsPATTERN是一组由断行符分隔的定长字符串。
另一个脚本:
升级系统和软件
#yumlistinstalled
#yumlistpackageName
#yumremovepackageName
Updatesoftwares:
#yumupdate--升级整个系统
#yumupdatepackageName--升级单独的一个软件包或多个
方法:
1.6.3到6.4中找相应的包
2.到redhat的官方ftp找src包,自己编成rpm包安装升级
最小权限法(su/sudo)
su--完全提权,需要知道提权目标用户密码
su--不指定用户时,切换成为超级用户,但环境变量沿用的是上一个用户的变量
su---不指定用户时,切换成为超级用户,环境变量沿用的是当前用户的变量
suusername--切换成为指定的用户
su-username
su-lusername
susu-的区别
su不切换环境变量PATH
su-切换环境变量PATH
只限定某个用户或者某组拥有切换成root的权限,剩下的用户都无su提权的权限:
#vim/etc/pam.d/su
……
authrequiredpam_wheel.souse_uid--只有wheel组的成员才能使用su
……
#gpasswd-azhangsanwheel
#usermod-Gwheelzhangsan
使用ssh远程管理linux时,避免直接使用管理员登录,而是先使用普通用户普通至系统,然后再通过su/sudo方式来提权。
好处:
避免root被暴力破解
sudo--权限最小化,只分配指定权限而且不需要知道目标用户(root)的密码,最有效的权限分割
以下2种方法都可以编辑/etc/sudoers文件
#visudo--使用专业工具修改配置文件,可以检查语法错误,不需要强制就能保存
#vim/etc/sudoers--直接编辑配置文件,这种不能检查配置文件的语法问题,而且需要强制保存
配置文件的格式:
rootALL=(ALL)ALL
授予用户登录linux客户的源地址用户身份命令
组:
%
常用命令选项:
sudo-l查看允许执行的命令列表
sudo-k清除用户密码验证的时间戳
sudo-v重新校验密码
sudols通过sudo执行命令(sudo命令行)
sudo通配符:
*Matchesanysetofzeroormorecharacters.
?
Matchesanysinglecharacter.
[...]Matchesanycharacterinthespecifiedrange.
[0-9]
[abc]
[a-Z]
[0-9]
[1-2][0-9]10-29
[!
...]Matchesanycharacternotinthespecifiedrange.
vsftpd实例授权:
1、能够使用管理员安装和卸载vsftpd
2、能够重启vsftpd服务
3、能够修改vsftpd的配置文件
4、能够修改vsftpd匿名用户的文件权限
#visudo
u01ALL=/usr/bin/yum*vsftpd,/sbin/servicevsftpd*,/usr/bin/vim/etc/vsftpd/*,/bin/ch[mo]**/var/ftp/*
用户管理的权限:
1、能新建和删除用户,但不
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux 主机安全 主机 安全