userdel -r games
groupdel games
usermod -s /sbin/nologin nagios
服务名称 | 服务内容 |
---|---|
acpid | 用于电源管理,对于笔记本电脑和台式电脑很重要,建议开启 |
apmd | 高级电源能源管理服务,可以监控电池性能 |
kudzu | 检测硬件是否变化的服务,建议开启 |
crond | Linux计划任务服务,建议开启 |
atd | 定时服务,建议开启 |
keytables | 用于装载镜像键盘,可以选择启动 |
iptables | 防火墙管理客户端,建议启动 |
xinetd | 支持多种网络服务的托管程序,建议开启 |
xfs | 使用X Window桌面的系统必须安装 |
network | 网络服务,必须开启 |
sshd | ssh的守护进程,必须开启 |
syslog | 日志服务,建议开启 |
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.net
注释
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 #重新加载配置文件
HISTFILESIZE=4000 #.bash_history保存的命令数
HISTSIZE=4000 #history命令输出的记录数
HISTTIMEFORMAT='[%F %T] ' #为命令加上执行时间
export HISTTIMEFORMAT
#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命令的输出日期格式。
[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
参数 | 含义 |
---|---|
+ | 在原有参数配置的基础上,追加参数 |
- | 在原有参数配置的基础上,移除参数 |
= | 修改为指定参数 |
a | append,设定该参数后,只能向文件中添加数据,而不能删除。常用于保障日志文件的安全。只有root用户才可设置该属性。 |
c | compress,设定文件是否经压缩后再存贮。读取时需要经过自动解压操作 |
i | immutable,设定文件不能被修改,删除,重命名,设定链接等,同时不能写入或新增内容。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 . -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 / -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
Linux中的临时目录主要是/tmp和/var/tmp。
上述目录的特点是所有用户可读写,可执行。但临时目录修改权限会引起系统及应用程序出错。
/dev/shm是共享内存设备。Linux启动时系统默认加载/dev/shm,被加载的/dev/shm使用的是tmpfs文件系统。存储在tmpfs上的数据会完全驻留内存。这样通过/dev/shm就可以直接操纵系统内存。
/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,如果是独立分区,处理方法同/tmp。如果是目录可将/var/tmp目录下所有数据移动到/tmp分区下,然后制作/var/tmp到/tmp的软链接即可。
mv /var/tmp/* /tmp
ln -s /tmp /var/tmp
默认情况下,/dev/shm通过defaults选项来加载,需要修改挂载属性
tmpfs /dev/shm tmpfs defaults,nosuid,noexec,rw 0 0
安装软件包
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下最常见的木马后门工具。她可以通过替换系统文件来达到入侵和隐藏的目的。
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 | 显示测试内容 |
-d | debug模式,显示检测过程中的相关命令 |
-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
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