Linux侵入のトラブルシューティング
序文
企業がハッキング、システムクラッシュ、またはビジネスの通常の運用に影響を与えるその他のセキュリティインシデントが発生した場合、企業のネットワーク情報システムが最短時間で通常の作業を再開できるように、できるだけ早く対処することが急務です。 、さらに侵入の原因を特定し、侵入事故のプロセスを復元します。同時に、企業の経済的損失を回復または削減するための解決策と予防策が提供されます。
一般的な攻撃イベントを考慮して、作業中の緊急対応インシデントの分析と解決を組み合わせて、Linuxサーバーへの侵入を調査するためのいくつかのアイデアを要約します。
1.侵入調査のアイデア
アカウントのセキュリティ
基本的な使用法:
1、用户信息文件 /etc/passwd
root:x:0:0:root:/root:/bin/bash
account:password:UID:GID:GECOS:directory:shell
用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后的 shell
注意:无密码只允许本机登陆,远程不允许登陆
2、影子文件 /etc/shadow
root:$6$oGs1PqhL2p3ZetrE$X7o7bzoouHQVSEmSgsYN5UD4.kMHx6qgbTqwNVC5oOAouXvcjQSt.Ft7ql1WpkopY0UV9ajBwUt1DpYxTCVvI/:16809:0:99999:7:::
用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留
who 查看当前登录用户(tty 本地登陆 pts 远程登录)
w 查看系统信息,想知道某一时刻用户的行为
uptime 查看登陆多久、多少用户,负载状态
侵入調査:
1、查询特权用户特权用户(uid 为0)
[root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd
2、查询可以远程登录的帐号信息
[root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow
3、除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限
[root@localhost ~]# more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
4、禁用或删除多余及可疑的帐号
usermod -L user 禁用帐号,帐号无法登录,/etc/shadow 第二栏为 ! 开头
userdel user 删除 user 用户
userdel -r user 将删除 user 用户,并且将 /home 目录下的 user 目录一并删除
履歴コマンド
基本的な使用法:
.bash_historyファイルを介してアカウントによって実行されたシステムコマンドを表示します
1、root 用户的历史命令
histroy
2、打开 /home 各帐号目录下的 .bash_history,查看普通帐号执行的历史命令。
为历史的命令增加登录的 IP 地址、执行命令时间等信息:
1)保存1万条命令
sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile
2)在/etc/profile的文件尾部添加如下行数配置信息:
######jiagu history xianshi#########
USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
export HISTTIMEFORMAT="%F %T $USER_IP `whoami` "
shopt -s histappend
export PROMPT_COMMAND="history -a"
######### jiagu history xianshi ##########
3)source /etc/profile 让配置生效
生成效果: 1 2018-07-10 19:45:39 192.168.204.1 root source /etc/profile
3、历史操作命令的清除:history -c
但此命令并不会清除保存在文件中的记录,因此需要手动删除 .bash_profile 文件中的记录。
侵入調査:
进入用户目录下,导出历史命令。
cat .bash_history >> history.txt
異常なポートを確認してください
netstat network connectionコマンドを使用して、疑わしいポート、IP、PIDを分析します
netstat -antlp | more
查看下 pid 所对应的进程文件路径,
运行 ls -l /proc/$PID/exe 或 file /proc/$PID/exe($PID 为对应的 pid 号)
異常なプロセスをチェックします
psコマンドを使用してプロセスを分析します
ps aux | grep pid
スタートアップ項目を確認する
基本的な使用法:
システム操作レベルの概略図:
ランレベル | 意味 |
---|---|
0 | シャットダウン |
1 | シングルユーザーモードは、主にシステムの修復に使用されるWindowsのセーフモードとして想像できます。 |
2 | NFSサービスなしの不完全なコマンドラインモード |
3 | 完全なコマンドラインモードは、標準の文字インターフェイスです |
4 | システム予約 |
5 | グラフィックモード |
6 | 再起動 |
実行レベルのコマンドを表示する runlevel
システムのデフォルトのアクセス許可レベル
vi /etc/inittab
id=3:initdefault #系统开机后直接进入哪个运行级别
ブート構成ファイル
/etc/rc.local
/etc/rc.d/rc[0~6].d
例:独自のスクリプトを起動する必要がある場合は、実行可能スクリプトを/etc/init.dディレクトリにドロップしてから、/ etc / rc.d / rc * .dファイルにソフトリンクを作成するだけです。
注:ここでの*は、0、1、2、3、4、5、6の7つのレベルを表します。
root@localhost ~]# ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh
ここで、sshdは特定のサービスのスクリプトファイル、S100sshはそのソフトリンク、Sの先頭はロード時の自動開始を表します。Kで始まるスクリプトファイルの場合は、実行レベルで閉じる必要があることを表します。がロードされます。
侵入調査:
スタートアップファイル:
more /etc/rc.local
/etc/rc.d/rc[0~6].d
ls -l /etc/rc.d/rc3.d/
スケジュールされたタスクを確認する
基本的な使用法
1.crontabを使用してスケジュールされたタスクを作成します
-
基本コマンド
crontab -l 列出某个用户cron服务的详细内容 Tips:默认编写的crontab文件会保存在 (/var/spool/cron/用户名 例如: /var/spool/cron/root crontab -r 删除每个用户cront任务(谨慎:删除所有的计划任务) crontab -e 使用编辑器编辑当前的crontab文件 如:*/1 * * * * echo "hello world" >> /tmp/test.txt 每分钟写入文件
2. anacronコマンドを使用して、非同期タイミングタスクスケジューリングを実現します
-
ユースケース
每天运行 /home/backup.sh 脚本: vi /etc/anacrontab @daily 10 example.daily /bin/bash /home/backup.sh 当机器在 backup.sh 期望被运行时是关机的,anacron会在机器开机十分钟之后运行它,而不用再等待 7天。
侵入調査
次のディレクトリに悪意のあるスクリプトがあるかどうかに注目してください
/var/spool/cron/*
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/
/etc/anacrontab
/var/spool/anacron/*
チップ:
more /etc/cron.daily/* 查看目录下所有文件
サービスを確認する
サービスは自動的に開始されます
最初の変更方法:
chkconfig [--level 运行级别] [独立服务名] [on|off]
chkconfig –level 2345 httpd on 开启自启动
chkconfig httpd on (默认level是2345)
2番目の変更方法:
修改 /etc/re.d/rc.local 文件
加入 /etc/init.d/httpd start
3番目の変更方法:
ntsysvコマンドを使用して自動起動を管理します。独立したサービスとxinetdサービスを管理できます。
侵入調査
1.インストールされているサービスを照会します。
RPMパッケージインストールサービス
chkconfig --list 查看服务自启动状态,可以看到所有的RPM包安装的服务
ps aux | grep crond 查看当前服务
系统在3与5级别下的启动项
中文环境
chkconfig --list | grep "3:启用\|5:启用"
英文环境
chkconfig --list | grep "3:on\|5:on"
ソースコードパッケージインストールサービス
查看服务安装位置 ,一般是在/user/local/
service httpd start
搜索/etc/rc.d/init.d/ 查看是否存在
異常ファイルを確認する
1. / tmpディレクトリ内のファイルなど、機密性の高いディレクトリを表示し、非表示のフォルダに注意します。「...」という名前のフォルダには非表示の属性があります
2. WEBSHELLとリモートコントロールトロイの木馬の発見の作成時間を取得します。同じ時間範囲で作成されたファイルを見つける方法は?
find / opt -iname“ *” -atime 1 -type fなどのfindコマンドを使用して、前日に/ optがアクセスしたファイルを検索できます。
3.疑わしいファイルの場合、statを使用して時刻を作成および変更できます。
システムログを確認する
ログのデフォルトの保存場所:/ var / log /
ログ構成の表示:詳細/etc/rsyslog.conf
ログファイル | 説明 |
---|---|
/ var / log / cron | システムタイミングタスクに関連するログが記録されます |
/ var / log / cups | 印刷情報のログ |
/ var / log / dmesg | システムの電源がオンになっているときにカーネルのセルフチェック情報を記録します。dmesgコマンドを使用して、カーネルのセルフチェック情報を直接表示することもできます。 |
/ var / log / mailog | メール情報を記録する |
/ var / log / message | システムに関する重要な情報を記録するログ。このログファイルには、Linuxシステムの重要な情報のほとんどが記録されます。システムに問題がある場合、最初に確認するのはこのログファイルです。 |
/ var / log / btmp | エラーログインログを記録します。このファイルはバイナリファイルであり、viで直接表示することはできません。代わりに、lastbコマンドを使用して表示してください。 |
/ var / log / lastlog | システム内のすべてのユーザーの最終ログイン時刻のログを記録します。このファイルはバイナリファイルであり、直接viではありませんが、lastlogコマンドを使用して表示します。 |
/ var / log / wtmp | すべてのユーザーのログイン情報とログアウト情報、およびシステムの起動、再起動、シャットダウンのイベントを永続的に記録します。同じファイルもバイナリファイルであり、直接viすることはできませんが、最後のコマンドを使用して表示する必要があります |
/ var / log / utmp | 現在ログインしているユーザーの情報を記録します。このファイルは、ユーザーのログインとログアウトに応じて変化し続け、現在ログインしているユーザーの情報のみを記録します。同様に、このファイルを直接viにすることはできませんが、w、who、users、およびその他のコマンドを使用してクエリを実行します |
/ var / log / secure | SSHログイン、suスイッチユーザー、sudo認証など、アカウントとパスワードを含むプログラムが記録される限り、認証と認証情報を記録します。ユーザーの追加やユーザーパスワードの変更もこのログファイルに記録されます。 |
ログ分析スキル:
1、定位有多少IP在爆破主机的root帐号:
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
定位有哪些IP在爆破:
grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c
爆破用户名字典是什么?
grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
2、登录成功的IP有哪些:
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
登录成功的日期、用户名、IP:
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
3、增加一个用户kali日志:
Jul 10 00:12:15 localhost useradd[2382]: new group: name=kali, GID=1001
Jul 10 00:12:15 localhost useradd[2382]: new user: name=kali, UID=1001, GID=1001, home=/home/kali
, shell=/bin/bash
Jul 10 00:12:58 localhost passwd: pam_unix(passwd:chauthtok): password changed for kali
#grep "useradd" /var/log/secure
4、删除用户kali日志:
Jul 10 00:14:17 localhost userdel[2393]: delete user 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed group 'kali' owned by 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed shadow group 'kali' owned by 'kali'
# grep "userdel" /var/log/secure
5、su切换用户:
Jul 10 00:38:13 localhost su: pam_unix(su-l:session): session opened for user good by root(uid=0)
sudo授权执行:
sudo -l
Jul 10 00:43:09 localhost sudo: good : TTY=pts/4 ; PWD=/home/good ; USER=root ; COMMAND=/sbin/shutdown -r now
2.ツール
ルートキットの殺害
-
chkrootkit
ウェブサイト:http://www.chkrootkit.org
使用方法: wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz tar zxvf chkrootkit.tar.gz cd chkrootkit-0.52 make sense #编译完成没有报错的话执行检查 ./chkrootkit
-
rkhunter
ウェブサイト:http://rkhunter.sourceforge.net
使用方法: Wget https://nchc.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.4/rkhunter-1.4.4.tar.gz tar -zxvf rkhunter-1.4.4.tar.gz cd rkhunter-1.4.4 ./installer.sh --install rkhunter -c
ウイルスの殺害
-
Clamav
ウェブサイト:http://www.clamav.net/download.html
インストール方法1:
1、安装 zlib: wget http://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.7/zlib-1.2.7.tar.gz tar -zxvf zlib-1.2.7.tar.gz cd zlib-1.2.7 #安装一下gcc编译环境: yum install gcc CFLAGS="-O3 -fPIC" ./configure --prefix= /usr/local/zlib/ make && make install 2、添加用户组 clamav 和组成员 clamav: groupadd clamav useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav 3、安装 Clamav tar –zxvf clamav-0.97.6.tar.gz cd clamav-0.97.6 ./configure --prefix=/opt/clamav --disable-clamav -with-zlib=/usr/local/zlib make make install 4、配置 Clamav mkdir /opt/clamav/logs mkdir /opt/clamav/updata touch /opt/clamav/logs/freshclam.log touch /opt/clamav/logs/clamd.log cd /opt/clamav/logs chown clamav:clamav clamd.log chown clamav:clamav freshclam.log 5、ClamAV 使用: /opt/clamav/bin/freshclam 升级病毒库 ./clamscan –h 查看相应的帮助信息 ./clamscan -r /home 扫描所有用户的主目录就使用 ./clamscan -r --bell -i /bin 扫描bin目录并且显示有问题的文件的扫描结果
インストール方法2:
#安装 yum install -y clamav #更新病毒库 freshclam #扫描方法 clamscan -r /etc --max-dir-recursion=5 -l /root/etcclamav.log clamscan -r /bin --max-dir-recursion=5 -l /root/binclamav.log clamscan -r /usr --max-dir-recursion=5 -l /root/usrclamav.log #扫描并杀毒 clamscan -r --remove /usr/bin/bsd-port clamscan -r --remove /usr/bin/ clamscan -r --remove /usr/local/zabbix/sbin #查看日志发现 cat /root/usrclamav.log |grep FOUND
ウェブシェル殺害
Linux 版:
河马 WebShell 查杀:http://www.shellpub.com
RPMチェック
システムの整合性は、rpmに付属の-Vaを使用して確認できます。すべてのrpmソフトウェアパッケージをチェックして、置き換えられたコマンドを確認してください。
./rpm -Va > rpm.log
すべてが適切にチェックされている場合、出力は生成されません。不整合がある場合は、それらが表示されます。出力形式は8ビット長の文字列であり、各文字はファイルとの属性との比較を表すために使用されます。 RPMデータベース。結果(ドット)の場合は、テストに合格したことを意味します。
验证内容中的8个信息的具体内容如下:
S 文件大小是否改变
M 文件的类型或文件的权限(rwx)是否被改变
5 文件MD5校验是否改变(可以看成文件内容是否改变)
D 设备中,从代码是否改变
L 文件路径是否改变
U 文件的属主(所有者)是否改变
G 文件的属组是否改变
T 文件的修改时间是否改变
コマンドが置き換えられた場合、コマンドを復元した場合:
文件提取还原案例:
rpm -qf /bin/ls 查询 ls 命令属于哪个软件包
mv /bin/ls /tmp 先把 ls 转移到 tmp 目录下,造成 ls 命令丢失的假象
rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls 提取 rpm 包中 ls 命令到当前目录的 /bin/ls 下
cp /root/bin/ls /bin/ 把 ls 命令复制到 /bin/ 目录 修复文件丢失
Linuxセキュリティチェックスクリプト
Githubプロジェクトのアドレス:
https://github.com/grayddq/GScan
https://github.com/ppabc/security_check
https://github.com/T0xst/linux