Linux系统安全运维(含find的使用)

it2022-05-05  133

账号安全 可删除的账号 adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher等可删除的组 adm,lp,news,uucp,games,dip,pppusers,popusers,slipusers等 userdel -r games groupdel games 禁止用户的登陆功能 usermod -s /sbin/nologin nagios 系统必须运行的服务 服务名称服务内容acpid用于电源管理,对于笔记本电脑和台式电脑很重要,建议开启apmd高级电源能源管理服务,可以监控电池性能kudzu检测硬件是否变化的服务,建议开启crondLinux计划任务服务,建议开启atd定时服务,建议开启keytables用于装载镜像键盘,可以选择启动iptables防火墙管理客户端,建议启动xinetd支持多种网络服务的托管程序,建议开启xfs使用X Window桌面的系统必须安装network网络服务,必须开启sshdssh的守护进程,必须开启syslog日志服务,建议开启 sudo的使用 配置文件/etc/sudoers 配置命令visudo user01 ALL = /bin/more /etc/shadow 命令的使用 [user01@node1 ~]$ sudo more /etc/shadow

user01输入完密码后即可获得一张默认存活期为5分钟的“入场券”。 设置让普通用户无需输入密码

certern ALL=NOPASSWD: /etc/init.d/nagios restart user02 ALL=(ALL) NOPASSWD: ALL 删除banner

涉及文件

/etc/issue 记录操作系统的名称和版本号,用户通过本地终端/控制台登陆时显示其内容。/etc/issue.net 记录操作系统的名称和版本号,用户通过ssh/telnet远程登陆时显示其内容。默认ssh登陆后不显示,要显示需要配置/etc/ssh/sshd_config: Banner /etc/issue.net /etc/redhat-release 记录操作系统的名称和版本号(发行版)/etc/motd 系统的公告信息。每次用户登陆后,其内容就会显示在用户终端。通过该文件管理员可以发布一些信息。sshd的配置文件中PrintMotd yes可以控制显示/etc/motd中的内容。 禁止Ctrl + Alt + Del组合键 该组合键默认会迫使系统重启。 CentOS5.x系统修改/etc/inittab即可: 注释 ca::ctrlaltdel:/sbin/shutdown -t3 -r -now 然后执行 telinit q

CentOS6.x系统修改/etc/init/control-alt-delete.conf

注释 exec /sbin/shutdown -r now "Control-Alt-Delete pressed"

CentOS7.x系统有所不同

cat /etc/inittab 回显 # inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM. # # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target # # systemd uses 'targets' instead of runlevels. By default, there are two main targets: # # multi-user.target: analogous to runlevel 3 # graphical.target: analogous to runlevel 5 # # To view current default target, run: # systemctl get-default # # To set a default target, run: # systemctl set-default TARGET.target # 然而 $ ll /usr/lib/systemd/system/ctrl-alt-del.target lrwxrwxrwx. 1 root root 13 Jul 6 17:33 /usr/lib/systemd/system/ctrl-alt-del.target -> reboot.target 软链接!

删除软链接ctrl-alt-del.target

rm /usr/lib/systemd/system/ctrl-alt-del.target init q #重新加载配置文件 调整history vim /etc/bashrc HISTFILESIZE=4000 #.bash_history保存的命令数 HISTSIZE=4000 #history命令输出的记录数 HISTTIMEFORMAT='[%F %T] ' #为命令加上执行时间 export HISTTIMEFORMAT 加入简易操作审计功能(可用于排障) 功能: 将每个用户的shell命令执行历史以文件形式保存在/usr/share/.history/(可以定义得再隐蔽些)目录中。每个用户一个文件夹,并且文件夹下的每个文件以IP地址加shell命令操作时间的格式命名。 实现: vim + /etc/profile,并加入 #history USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'` HISTDIR=/usr/share/.history if [ -z $USER_IP ]; then USER_IP=`hostname` fi if [ ! -d $HISTDIR ]; then mkdir -p $HISTDIR chmod 777 $HISTDIR fi if [ ! -d $HISTDIR/${LOGNAME} ]; then mkdir -p $HISTDIR/${LOGNAME} chmod 300 $HISTDIR/${LOGNAME} fi export HISTSIZE=4000 DT=`date +%Y%m%d_%H%M%S` export HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.history.$DT" chmod 600 $HISTDIR/${LOGNAME}/*.history* 2>/dev/null

输出文件中每条命令前是#开头的时间戳:

#1563456636 history #1563456648 vim /etc/bashrc

可以如下处理:

cat 192.168.30.1.history.20190718_220636 | sed "s/#\([0-9]\+\)/date -d @\1 '+[%Y-%m-%d %H:%M:%S]:'/e"

注意:在/etc/profile中设置环境变量

export TIME_STYLE='+%Y/%m/%d %H:%M:%S'

只能修改ls命令的输出日期格式。

tcp_wrappers 检查是否已经安装 [root@node0 ~]# rpm -qa tcp_wrappers tcp_wrappers-7.6-77.el7.x86_64 或者 [root@node0 ~]# rpm -qa | grep tcp_ tcp_wrappers-libs-7.6-77.el7.x86_64 tcp_wrappers-7.6-77.el7.x86_64

应用服务一般通过引用libwrappered库文件启用tcp_wrappers功能。

[root@node0 ~]# ldd /sbin/sshd | grep libwrap libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fe9b4506000)

tcp_wrappers的配置 配置文件 /etc/hosts.allow /etc/hosts.deny 配置格式: service:hosts [:action] ~ service 服务名,如sshd,vsftpd等 ~ hosts 主机名或IP。可多个。 ~ action 动作 关键字: ~ ALL 所有服务或所有IP ~ ALL EXCEPT 从所有服务或IP中排除 配置使用 man HOSTS_ACCESS

设置文件属性 命令: chattr 须由root执行 命令常用参数 参数含义+在原有参数配置的基础上,追加参数-在原有参数配置的基础上,移除参数=修改为指定参数aappend,设定该参数后,只能向文件中添加数据,而不能删除。常用于保障日志文件的安全。只有root用户才可设置该属性。ccompress,设定文件是否经压缩后再存贮。读取时需要经过自动解压操作iimmutable,设定文件不能被修改,删除,重命名,设定链接等,同时不能写入或新增内容。root用户也不可修改文件。s安全地删除文件或目录,即文件删除后完全回收磁盘空间。u与s参数相反,系统会保留其数据块以便以后能恢复删除的文件。

lsattr 常用命令参数

参数含义-a列出目录中的所有文件,包括点开头的隐藏文件-d显示指定目录的属性-R以递归的方式列出目录下所有文件及子目录及其属性-v显示文件和目录版本

对于一些重要的目录和文件可以加上“i”锁。常见的有如下情况:

chattr -R +i /bin /boot /lib /sbin chattr -R +i /usr/bin /usr/include /usr/lib /usr/sbin chattr +i /etc/passwd chattr +i /etc/shadow chattr +i /etc/hosts chattr +i /etc/resolv.conf chattr +i /etc/fstab chattr +i /etc/sudoers chattr +a /var/log/messages chattr +a /var/log/wtmp 查找文件属性及权限并修改 find的常见基本用法 查找当前目录下的可执行文件 find . -type f -executable 其他类似参数 -readable:文件可读。 -writable:文件可写。 查找当前目录下u为 “指定权限(精确匹配)” 的文件或目录 find . -perm 700 -ls 等价命令 find . -perm u=rwx -ls 查找当前目录下 “包含读 ‘和’ 写” 权限的文件 find . -type f -perm -600 | xargs ls -l 查找当前目录下 “包含读 ‘或’ 写” 权限的文件 find . -type f -perm /600 | xargs ls -l 对于特殊权限,查找当前目录下包含SUID的文件 find . -perm -4000 | xargs ls -l 按文件名进行查找 -name filename:查找文件名为filename的文件。注意如果filename中包括*等特殊符号的时候,需要加引号。 -iname:-name的忽略大小写版本。 -lname filename:查找符号连接文件名为filename的文件。 -ilname:lname的忽略大小写版本。 在/目录下查找路径以/u开头并且以SS结尾的文件 find / -path "/u*SS" -ipath:path的忽略大小写版本 其他查找参数: -regex pattern:用正则表达式匹配文件名。 -iregex:regex的忽略大小写版本。 -empty:文件为空而且是一个普通文件或者目录。 -size n[cwbkMG]:指定文件长度查找文件。单位选择位: 1 . c:字节单位。 2 . b:块为单位,块大小为512字节,这个是默认单位。 3 . w:以words为单位,words表示两个字节。 4 . k:以1024字节为单位。 5 . M:以1048576字节为单位。 6 . G:以1073741824字节为单位。 n的数字指定也可以使用 + - 号作为前缀,表示找到小于(-)指定长度的文件或者大于(+)指定长度的文件。 -type c:以文件类型查找文件: c可以选择的类型为: 1 . b:块设备。 2 . c:字符设备。 3 . d:目录。 4 . p:命名管道。 5 . f:普通文件。 6 . l:符号连接。 7 . s:socket。 根据用户、组查找 -uid n:文件的所属用户uid为n。 -user name:文件的所属用户为name。 -gid n:文件的所属组gid为n。 -group name:所属组为name的文件。 -nogroup:没有所属组的文件。 -nouser:没有所属用户的文件。 查找/var下一周内访问过的无属主无属组的文件,并列出 find /var -type f -atime -7 \( -nouser -o -nogroup \) -ls 按照时间进行查找 -amin:以分钟为单位通过文件的最后存取时间(access time)查找文件。 -cmin:以分钟为单位通过文件的状态修改时间(change time)查找文件。 -mmin:以分钟为单位通过文件的数据修改时间(modify time)查找文件。 -atime:以天为单位通过文件的最后存取时间(access time)查找文件。 -ctime:以天为单位通过文件的状态修改时间(change time)查找文件。 -mtime:以天为单位通过文件的数据修改时间(change time)查找文件。 -newer:查找比当前文件数据修改时间更加新一点的另外的文件。 -anewer:查找比当前文件的最后存取时间更加新一点的另外的文件。 -cnewer:查找比当前文件的状态时间更加新一点的另外的文件。 +n:表示大于n。 -n:表示小于n。 n:表示等于n。 想找到文件修改时间比/etc/passwd文件的change time更新的文件 find /etc/ -newermc /etc/passwd “-newerXY”用法,如: -newermc就是拿待比较文件的modify time时间跟参数指定文件的change time进行比较。X和Y可以使用的字母为: a:文件access time。 c:文件change time。 m:文件modify time。 组合条件 -a 与 -o 或 -not 非 ! 非 动作 -print:默认的处理动作,显示至屏幕; -ls:类似于对查找到的文件执行“ls -l”命令 -delete:删除查找到的文件; -flsfile:查找到的所有文件的长格式信息保存至指定文件中 -ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令;对于每个文件执行命令之前,都会交互式要求用户确认。 -exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令。{}: 占位符,用于引用查找到的文件名。用 “| xargs cmd” 代替效率更高。 删除当前目录下大小为零的文件 find . -size 0 -exec rm {} \; 不带确认 find . -size 0 -ok rm {} \; 带确认 -exec的\和+ 对每个找到的文件执行一次命令 (因为有多条命令,所以要用;分割。\又对;转义) $ find . -maxdepth 1 -type f -name "zero*" -exec echo {} \; ./zero2 ./zero1 ./zero3 对所有找到的文件统一执行一次命令 $ find . -maxdepth 1 -type f -name "zero*" -exec echo {} + ./zero2 ./zero1 ./zero3 利用find完成文件安全性处理 查找系统中任何用户都有写权限的文件或目录 文件 find / -type f -perm -2 -o -perm -20 | xargs ls -la 目录 find / -type d -perm -2 -o -perm -20 | xargs ls -ld 查找系统中所有设置了SUID/SGID的程序 find / -type f -perm -4000 -o -perm -2000 | xargs ls -la find / -type f -perm /6000 | xargs ls -l find / -user root -perm -2000 -print -exec md5sum {} \; find / -user root -perm -4000 -print -exec md5sum {} \; 搜索没有属主及属组的文件 find / -nouser -o -nogroup -ls /tmp,/var/tmp,/dev/shm的安全

Linux中的临时目录主要是/tmp和/var/tmp。 上述目录的特点是所有用户可读写,可执行。但临时目录修改权限会引起系统及应用程序出错。 /dev/shm是共享内存设备。Linux启动时系统默认加载/dev/shm,被加载的/dev/shm使用的是tmpfs文件系统。存储在tmpfs上的数据会完全驻留内存。这样通过/dev/shm就可以直接操纵系统内存。

/tmp的安全加固

/tmp是独立分区: 修改/etc/fstab中/tmp分区的挂载属性为:nosuid,noexec,nodev 如

LABEL=/tmp /tmp ext3 rw,nosuid,noexec,nodev 0 0

注意:/boot也可以独立分区,大小取200M即可。

/tmp是分区下的目录:

dd if=/dev/zero of=/dev/tmpfs bs=1M count=10000 mke2fs -j /dev/tmpfs cp -av /tmp /tmp.old mount -o loop,noexec,nosuid,rw /dev/tmpfs /tmp chmod 1777 /tmp mv -f /tmp.old/* /tmp/ rm -rf /tmp.old

再编辑/etc/fstab,添加如下内容

/dev/tmpfs /tmp ext3 loop,nosuid,noexec,rw 0 0 /var/tmp的安全加固

对于/var/tmp,如果是独立分区,处理方法同/tmp。如果是目录可将/var/tmp目录下所有数据移动到/tmp分区下,然后制作/var/tmp到/tmp的软链接即可。

mv /var/tmp/* /tmp ln -s /tmp /var/tmp /dev/shm的安全加固

默认情况下,/dev/shm通过defaults选项来加载,需要修改挂载属性

tmpfs /dev/shm tmpfs defaults,nosuid,noexec,rw 0 0 系统软件安全管理 主要是及时更新软件包。 yum下载的软件包默认存放在/var/cache/yum目录下。 常用命令 安装软件包 yum install dhcp 删除软件包 yum remove licq 检查可更新的RPM包 yum check-update 更新 yum update yum upgrade 陈旧的包也会升级 更新内核 yum update kernel kernel-source 列出资源库中所有可安装或更新的RPM包信息 yum info 列出资源库中指定软件包信息 yum info vsftpd yum info perl* 列出资源库中所有可更新包信息 yum info updates 列出已安装的所有RPM包信息 yum info installed 列出包含在extras资源库中RPM包的信息 yum info extras 列出资源库中可更新的包信息 yum list updates 列出资源库中的软件包 yum list gcc* 在资源库中搜索包 yum search wget 搜索包含特定文件名的RPM包 yum provides realplay 清除缓存的RPM包 yum clean packages 清除缓存的RPM头文件 yum clean headers 清除RPM包文件和头文件 yum clean 或 yum clean all

常用的YUM源

EPEL https://fedoraproject.org/wiki/EPEL/zh-cn RPMForge http://repoforge.org http://pkgs.repoforge.org/rpmforge-release 后门入侵检测工具

rootkit是LInux下最常见的木马后门工具。她可以通过替换系统文件来达到入侵和隐藏的目的。

文件级别rootkit 同行容易被rootkit替换的文件有:login,ls,ps,ifconfig,du,find,netstat等。 一般可使用Tripwire,aide等工具定期文件系统的完整性,来判断系统是否已被rootkit入侵。内核级别的rootkit 目前没有有效防御手段。rootkit后门检测工具chkrootkit http://www.chkrootkit.org/ yum install -y gcc gcc-c++ make tar xzvf chkrootkit.tar.gz cd chkrootkit-* make sense cd .. cp -r chkrootkit-* /usr/local/chkrootkit rm -rf chkrootkit-* 显示chkrootkit详细用法 /usr/local/chkrootkit/chkrootkit -h 检测系统 /usr/local/chkrootkit/chkrootkit

chkrootkit命令参数

参数含义-l显示测试内容-ddebug模式,显示检测过程中的相关命令-q只显示有问题的内容-x显示所有检测结果-r指定检测的根目录-p dir1:dir2:dirN检测时使用的系统命令目录-n跳过NFS连接的目录

被rootkit入侵的系统,最安全有效的方式是备份数据并重新安装系统。 当然需要备份rootkit使用到的系统命令:

mkdir /usr/share/.commands cp `which --skip-alias awk cut echo find egrep id head ls netstat ps strings sed uname` /usr/share/.commands /user/local/chkrootkit/chkrootkit -p /usr/share/.commands/ cd /usr/share/ tar czvf commands.tar.gz .commands rootkit后门检测工具RKHunter RKHunter官网http://www.rootkit.nl/projects/rootkit_hunter.html 安装 tar xzvf rkhunter-1.4.0.tar.gz cd rkhunter-1.4.0 ./installer.sh --layout default --install 安装将rkhunter命令安装到/usr/local/bin

使用

/usr/local/bin/rkhunter-help 获得帮助 开始检测 /usr/local/bin/rkhunter -c 关注Warning标识的地方和红色标注。

命令参数

参数含义-c, --check必选,检测当前系统–configfile file使用特定的配置文件–cronjob作为cron任务定期运行–sk, --skip-keypress自动完成所有检测,跳过键盘输入–summary显示检测结果的统计信息–update检测更新内容-V, --version显示版本–versioncheck检测最新版本

可以在/etc/crontab中加入如下内容:

0 9 3 * * * root /usr/local/bin/rkhunter -c --cronjob

最新回复(0)