目录
root@vulntarget.com:[/root]
# 管理员root用户
$ 普通用户
@ 前表示登录的用户名称,后表示主机名,再之后表示当前所在目录
/ 表示根目录
~ 表示当前用户家目录
uname -a 打印所有相关的系统信息
hostname 系统主机名
cat /proc/version 内核信息
cat /etc/*-release 发行版信息
cat /etc/issue 发行版信息
cat /proc/cpuinfo CPU信息
hostnamectl
#用于显示主机名和一些系统相关的信息
#可以简单的判断系统是否是虚拟机
id 当前用户信息
whoami 查看当前用户 #能比较直观看到当前系统时间信息
w 显示目前已登录,及正在运行
who 用于显示系统中目前哪些使用者
last 最后登录用户的列表
lastlog 所有用户上次登录的信息lastlog –u username 有关指定用户上次登录的信息
这里的 'still logged in' 也表示当前系统在线的用户, 这里的 '19:30 (00:28)' 表示用户登录的时间及登录的时长。
/var/run/utmp
#文件记录当前正在登录系统的用户信息
#默认是who和w命令的记录
#uptime记录系统启动时间
#将文件清空后w和who命令也就没有了相关的记录
date
#查看系统当前日期
#date -f 文件名 可从文件读取日期信息进行打印,不是日期信息则将文件内容打印
/var/log/wtmp
#记录当前正在登录和历史登录系统的用户信息,默认由last命令查看
#清空后last命令的记录也将被清除
/var/log/btmp
#文件记录失败的登录尝试信息,默认由lastb命令查看。
清空文件后lastb命令也将失去相关记录。
/var/run/utmp
/var/log/wtmp
/var/log/btmp
需要注意的是,通常3个文件都是二进制数据文件,并且文件结构相同,类似的还有
/var/log/btmp 记录所有用户错误登录信息,使用lastb命令查看
/var/log/wtmp 记录所有用户成功登录、注销信息,使用last命令查看
/run/utmp 记录当前已经登录的用户信息,使用w、who、users等命令查看
/var/log/secure 记录与安全相关的日志信息,涉及使用账户和密码登录的程序都会记录/var/log/auth.log 记录与安全相关的日志信息,涉及使用账户和密码登录的程序都会记录
/var/log/lastlog 记录所有用户最后一次的登录时间的曰志,使用lastlog命令查看
/var/log/messages 记录系统启动后的信息和错误日志
将相关文件的可读权限去掉,非root用户就不能用相关联的命令查看到相应的信息了,如果是btmp文件,手工创建的话注意权限必须为600,否则不能正确写入信息。
一键清除脚本:
#!/usr/bin/bash
echo > /var/log/syslog
echo > /var/log/messages
echo > /var/log/httpd/access_log
echo > /var/log/httpd/error_log
echo > /var/log/xferlog
echo > /var/log/secure
echo > /var/log/auth.log
echo > /var/log/user.log
echo > /var/log/wtmp
echo > /var/log/lastlog
echo > /var/log/btmp
echo > /var/run/utmp
rm ~/.bash_historybash ./res-history
history -c
/etc/group 存放系统上的所有组
/etc/passwd 存放系统存在的所有用户
/etc/sudoers 可以对用户做权限修改,通常非root用户不可读
/etc/shadow 存放用户相关信息包括密码
#Linux操作系统采用5中常用的加密算法,主要通过/etc/shadow文件账号后面的$x进行判断$1:Md5加密算法
$2:Blowfish加密算法
$5:sha-256加密算法
$6:sha-512加密算法
其他均为标准DES加密算法
grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}'
#列出所有的超级用户账户
awk -F: 'length($2)==0 {print $1}' /etc/shadow
#查看是否存在空口令用户
awk '/\$1|\$6/{print $1}' /etc/shadow
#查看可登录的账号
cat /etc/sudoers|grep "ALL=("
usermod -L user
#禁用帐号使帐号无法登录stat /etc/passwd
#查看密码文件上一次修改的时间,如果最近被修改过,那就可能存在问题
/etc/services #文件存放系统所有的服务
cat /etc/services | grep ssh #查询对应的服务
service --status-all #列出系统所有的服务状态
systemctl list-units --type=service --state=running #查询已经开启的服务
查找敏感文件
#find命令 -o参数 表示 或者 的意思
find / -type f -iname "*.bash_history" -o -iname "*config*" -o -iname "web.xml" -o -iname "*database*" -o -iname "*pass*" 2>/dev/null
查找SSH密钥
find / -name "id_dsa*" -o -name "id_rsa*" -o -name "known_hosts" -o -name "authorized_hosts" -o -name "authorized_keys" 2>/dev/null |xargs -r ls
history #命令查询历史命令记录
cat ~/.bash_history #查看当前用户历史命令记录
cat /home/user/.bash_history #查看其他用户的历史命令文件
/apache/apache/conf/httpd.conf
/apache/apache2/conf/httpd.conf
/apache/php/php.ini
/bin/php.ini
/etc/apache/apache.conf
/etc/apache/httpd.conf
/etc/apache2/apache.conf
/etc/apache2/httpd.conf
/etc/apache2/sites-available/default
/etc/apache2/vhosts.d/00_default_vhost.conf
/etc/httpd/conf.d/httpd.conf
/etc/httpd/conf.d/php.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/php.ini
/etc/init.d/httpd
/etc/php.ini
/etc/php/apache/php.ini
/etc/php/apache2/php.ini
/etc/php/cgi/php.ini
/etc/php/php.ini
/etc/php/php4/php.ini
/etc/php4.4/fcgi/php.ini
/etc/php4/apache/php.ini
/etc/php4/apache2/php.ini
/etc/php4/cgi/php.ini
/etc/php5/apache/php.ini
/etc/php5/apache2/php.ini
/etc/php5/cgi/php.ini
/etc/phpmyadmin/config.inc.php
/home/apache/conf/httpd.conf
/home/apache2/conf/httpd.conf
/home/bin/stable/apache/php.ini
/home2/bin/stable/apache/php.ini
/NetServer/bin/stable/apache/php.ini
/opt/www/conf/httpd.conf
/opt/xampp/etc/php.ini
/PHP/php.ini
/php/php.ini
/php4/php.ini
/php5/php.ini
/usr/lib/php.ini
/etc/nginx/nginx.conf
/usr/lib/php/php.ini
/usr/local/apache/conf/httpd.conf
/usr/local/apache/conf/php.ini
/usr/local/apache2/conf/httpd.conf
/usr/local/apache2/conf/php.ini
/usr/local/etc/php.ini
/usr/local/httpd/conf/httpd.conf
/usr/local/lib/php.ini
/usr/local/php/lib/php.ini
/usr/local/php4/lib/php.ini
/usr/local/php4/lib/php.ini
/usr/local/php4/php.ini
/usr/local/php5/etc/php.ini
/usr/local/php5/lib/php.ini
/usr/local/php5/php5.ini
/usr/local/share/examples/php/php.ini
/usr/local/share/examples/php4/php.ini
/usr/local/Zend/etc/php.ini
/var/apache2/config.inc
/var/httpd/conf/httpd.conf
/var/httpd/conf/php.ini
/var/httpd/conf/php.ini
/var/local/www/conf/httpd.conf
/var/local/www/conf/php.ini
/var/www/conf/httpd.conf
/web/conf/php.ini
/www/conf/httpd.conf
/www/php/php.ini
/www/php4/php.ini
/www/php5/php.ini
/xampp/apache/bin/php.ini
/xampp/apache/conf/httpd.conf
/etc/init.d/mysql
/etc/my.cnf
/etc/mysql/my.cnf
/etc/mysql/my.cnf
/var/lib/mysql/my.cnf
/var/lib/mysql/mysql/user.MYD
/usr/local/mysql/bin/mysql
/usr/local/mysql/my.cnf
/usr/share/mysql/my.cnf
#mysql默认会保留登陆日志
cat /var/log/mysql/error.log
find / -type f -prem 777 //查找777权限的文件
find / -perm /u=s //查找SUID文件
find / -prem /g=s //查找SGID文件
find / -prem /o=t //查找Sticky文件find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000-print2>/dev/null
find / -user root -perm -4000-exec ls -ldb {} ;
#查找能写或执行的目录
find / -writable -type d 2>/dev/null
find / -perm -o+w -type d 2>/dev/null
find / -perm -o+x -type d 2>/dev/null
查看已安装应用
rpm -qa --last #Redhat、CentOS
rpm -qa polkit #查看指定应用的安装版本
dpkg -l #ubuntu、debian
dpkg -l policykit-1 #查看指定应用的安装版本
dpkg -L xxx #查询某个软件所关联的文件
top #实时显示占用最多的进程
ps aux #以用户的格式显示所有进程,包括非终端的进程
ps -ef #显示所有进程,显示UID,PPIP(父进程),C与STIME栏位
ps -ef | grep java #查询某个应用的所有进程信息
lsof -c $PID #查看进程关联文件
/proc/$PID/cmdline #完整命令行信息
/proc/$PID/comm #进程的命令名
/proc/$PID/cwd #进程当前工作目录的符号链接
/proc/$PID/exe #运行程序的符号链接
/proc/$PID/environ #进程的环境变量
/proc/$PID/fd #进程打开文件的情况
cat /etc/resolv.conf #查看dns配置信息
dnsdomainname -V #打印DNS系统中FQDN名称中的域名
cat /etc/hosts #查看hosts域名解析文件
iptables -L
#查看防火墙配置,列出iptables的配置规则
#查看防火墙状态
systemctl status firewalld
service iptables status
#暂时关闭防火墙
systemctl stop firewalld
service iptables stop
#永久关闭防火墙
systemctl disable firewalld
chkconfig iptables off
#重启防火墙
systemctl enable firewalld
service iptables restart
linux下实用iptables封ip段的一些常见命令
#封单个IP的命令是
iptables -I INPUT -s 211.1.0.0 -j DROP#封IP段的命令是
iptables -I INPUT -s 211.1.0.0/16 -j DROP
iptables -I INPUT -s 211.2.0.0/16 -j DROP
iptables -I INPUT -s 211.3.0.0/16 -j DROP#封整个段的命令是
iptables -I INPUT -s 211.0.0.0/8 -j DROP#封几个段的命令是
iptables -I INPUT -s 61.37.80.0/24 -j DROP
iptables -I INPUT -s 61.37.81.0/24 -j DROP
让服务器启动自运行
1、把它加到/etc/rc.local中
2、iptables-save >/etc/sysconfig/iptables可以把你当前的iptables规则放到/etc/sysconfig/iptables中,系统启动iptables时自动执行
3、service iptables save 也可以把你当前的iptables规则放/etc/sysconfig/iptables中,系统启动iptables时自动执行。后两种更好此,一般iptables服务会在network服务之前启来,更安全。
解封
iptables -D INPUT -s IP地址 -j REJECT
#此命令执行后提示:no chain/target/match by that name.
#封停一个IP
iptables -I INPUT -s ***.***.***.*** -j DROP#解封一个IP
iptables -D INPUT -s ***.***.***.*** -j DROP-I是表示Insert(添加)
-D表示Delete(删除)后面跟的是规则
INPUT表示入站,***.***.***.***表示要封停的IP
DROP表示放弃连接
netstat -antup #查看所有端口
netstat -antp #tcp端口
netstat -anup #udp端口
查看所有80端口的连接数
netstat -nat|grep -i “80”|wc -l对连接的IP按连接数量进行排序
netstat -anp | grep ‘tcp\|udp’ | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -nr
netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -nr链接最多的前20
netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -nr|head -20
netstat -ntu | awk ‘{print $5}’ | egrep -o “[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}” | sort | uniq -c | sort -nr查找较多time_wait连接
netstat -n|grep TIME_WAIT|awk ‘{print $5}’|sort|uniq -c|sort -rn|head -n20查找较多的SYN连接
netstat -an | grep SYN | awk ‘{print $5}’ | awk -F: ‘{print $1}’ | sort | uniq -c | sort -nr | more查看TCP连接状态
netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -rn
netstat -n | awk ‘/^tcp/ {print $NF}’|sort|uniq -c|sort -rn
netstat -n | awk ‘/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}’
netstat -n | awk ‘/^tcp/ {++state[$NF]}; END {for(key in state) print key,”\t”,state[key]}’
netstat -n | awk ‘/^tcp/ {++arr[$NF]};END {for(k in arr) print k,”\t”,arr[k]}’
netstat -ant | awk ‘{print $NF}’ | grep -v ‘[a-z]’ | sort | uniq -c查看80端口连接数最多的20个IP
cat /www/web_logs/waitalone.cn_access.log|awk ‘{print $1}’|sort|uniq -c|sort -nr|head -100
tail -n 10000 /www/web_logs/waitalone.cn_access.log|awk ‘{print $1}’|sort|uniq -c|sort -nr|head -100
cat /www/web_logs/waitalone.cn_access.log|awk ‘{print $1}’|sort|uniq -c|sort -nr|head -100
netstat -anlp|grep 80|grep tcp|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -nr|head -n20
netstat -ant |awk ‘/:80/{split($5,ip,”:”);++A[ip[1]]}END{for(i in A) print A,i}’ |sort -rn|head -n20用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F”.” ‘{print $1″.”$2″.”$3″.”$4}’ | sort | uniq -c | sort -nr |head -20查找较多time_wait连接
netstat -n|grep TIME_WAIT|awk ‘{print $5}’|sort|uniq -c|sort -rn|head -n20查找较多的SYN连接
netstat -an | grep SYN | awk ‘{print $5}’ | awk -F: ‘{print $1}’ | sort | uniq -c | sort -nr | more
#!/bin/bash
#输出文件
filename=$(date +%s)'.log'echo "信息收集"
echo -e "\n" | tee -a $filename
echo "账户信息收集" | tee -a $filename
cat /etc/passwd | tee -a $filename
echo -e "\n" | tee -a $filename
echo "shadow" | tee -a $filename
cat /etc/shadow | tee -a $filename
echo -e "\n" | tee -a $filename
echo "进程信息收集" | tee -a $filename
ps aux | tee -a $filename
echo -e "\n" | tee -a $filename
echo "网络连接" | tee -a $filename
netstat -antlp | tee -a $filename
echo -e "\n" | tee -a $filename
echo "当前用户:" $(whoami) 2>/dev/null | tee -a $filename
echo -e "\n" | tee -a $filename
echo "端口监听" | tee -a $filename
netstat -lnpt | tee -a $filename
echo -e "\n" | tee -a $filename
echo "可登陆用户" | tee -a $filename
cat /etc/passwd | grep -E -v 'nologin$|false' | tee -a $filename
echo -e "\n" | tee -a $filename
echo "增加用户的日志" | tee -a $filename
grep "useradd" /var/log/secure | tee -a $filename
echo -e "\n" | tee -a $filename
echo "History操作提取" | tee -a $filename
cat ~/.*history | tee -a $filename
echo -e "\n" | tee -a $filename
echo "登录成功的IP" | tee -a $filename
grep "Accepted " /var/log/secure* | awk '{print $11}' | sort | uniq -c | sort -nr | more | tee -a $filename
echo -e "\n" | tee -a $filename
echo "查看路由表" | tee -a $filename
route -n | tee -a $filename
echo -e "\n" | tee -a $filename
echo "查看 SSH key" | tee -a $filename
sshkey=${HOME}/.ssh/authorized_keys
if [ -e "${sshkey}" ]; then
cat ${sshkey} | tee -a $filename
else
echo -e "SSH key文件不存在\n" | tee -a $filename
fi
echo -e "\n" | tee -a $filename
echo "查看 known_hosts" | tee -a $filename
cat ~/.ssh/known_hosts | tee -a $filename
echo -e "\n" | tee -a $filename
echo "查找WEB-INF" | tee -a $filename
find / -name *.properties 2>/dev/null | grep WEB-INF | tee -a $filename
echo -e "\n" | tee -a $filename
echo "user|pass|pwd|uname|login|db_" | tee -a $filename
find / -name "*.properties" | xargs egrep -i "user|pass|pwd|uname|login|db_" | tee -a $filename
echo -e "\n" | tee -a $filename
echo "jdbc:|pass=|passwd=" | tee -a $filename
find / -regex ".*\.properties\|.*\.conf\|.*\.config\|.*\.sh" | xargs grep -E "=jdbc:|pass=|passwd=" | tee -a $filename
echo -e "\n" | tee -a $filename
# Author cances
echo "ip和网卡信息" | tee -a $filename
ip a | awk '{print $2,$4}' | tee -a $filename
echo -e "\n" | tee -a $filename
echo "可登陆用户" | tee -a $filename
cat /etc/passwd | grep -E -v 'sync$|halt$|nologin$|false|shutdown' | tee -a $filename
echo -e "\n" | tee -a $filename
echo "用户登陆日志" | tee -a $filename
lastlog | tee -a $filename
echo -e "\n" | tee -a $filename
echo "查看 hosts" | tee -a $filename
cat /etc/hosts | tee -a $filename
echo -e "\n" | tee -a $filename
echo "查看 系统版本" | tee -a $filename
cat /etc/*-release | tee -a $filename
echo -e "\n" | tee -a $filename
echo "查看 内核版本" | tee -a $filename
uname -mrs | tee -a $filename
长大以后我们都喜欢说"小孩子才做选择",但现实是只有小孩子才有照单全收的资格,而我们不得不让理性压抑情感,才能做出一些从长远来看正确的决定。