امیرحسین کریم پور
مدیر ارشد وب سایت توسینسو و مدرس و متخصص سرویس های مایکروسافت

آموزش تشخیص هک شدن لینوکس : از کجا بدانیم هک شده ایم؟

در این مقاله میخواهیم به شما مهم ترین روش ها را برای چک کردن اینکه سرور لینوکس شما هک شده یا خیر آموزش دهیم.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

1. آخرین یوزرهایی که به سرور لینوکس شما لاگین کرده اند را بررسی کنید. با اجرای دستور last میتوانید به این موضوع پی ببرید. این دستور به شما اسم یوزرهایی را که با موفقیت به سرور لاگین کرده اند را نمایش می دهد. پس با استفاده از این دستور میتوانید بفهمید که کسی دسترسی غیرمجاز به سرورتان داشته یا خیر. خروجی این دستور به صورت زیر است :

root@servername~# last 
root pts/0 10.10.50.3 Mon Jan 30 13:03:45 2017 still logged in
root pts/0 10.10.50.3 Mon Jan 30 13:00:27 2017 - Mon Jan 30 13:03:44 2017 (00:03)
root pts/0 10.10.50.3 Mon Jan 30 12:50:42 2017 - Mon Jan 30 13:00:26 2017 (00:09)
root pts/0 10.10.50.3 Fri Jan 27 09:17:39 2017 - Fri Jan 27 16:44:53 2017 (07:27

2. چک کردن نرم افزار های در حال اجرا روی سرور نیز گزینه خیلی خوبی است. با دستور ps -aux میتوانید تمام Process هایی را که چه توسط کاربر root و چه توسط سایر کاربرها روی سرور در حال اجرا است را بصورت لیست وار مشاهده کنید. اگر سوئیچ pux را بکار نبردید اطلاعات اضافه ای را این دستور به شما نمایش میدهد. من ترجیح میدهم از نرم افزار top استفاده کنم. با استفاده از دستور top میتوانید بصورت Real-time تمام پراسس های در حال اجرا روی سیستم را مشاهده کنید و همچنین اگر پراسس یا برنامه ای بیش از حد از منابع سخت افزاری استفاده کرد را میتوانید بصورت منظم مشاهده کنید. خروجی دستور top به شکل زیر است :

top - 11:33:21 up 21 days, 41 min, 1 user, load average: 0.02, 0.02, 0.05
Tasks: 90 total, 2 running, 88 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 6808648 total, 4629072 free, 306808 used, 1872768 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 5962784 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 125104 3648 2408 S 0.0 0.1 1:40.58 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.89 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:01.84 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh

بصورت پیش فرض دستور top تعداد کمی از نرم افزار های در حال اجرا را در خروجی نمایش میدهد. برای اینکه بخواهید تمام نرم افزار های در حال اجرا را مشاهده کنید دستور زیر را اجرا کنید :

# top | more

برای بستن یا Kill کردن یک Process میتوانید از دستور زیر استفاده کنید :

# kill 3445

در اینجا 3445 شماره پراسس یا PID مربوط به نرم افزار در حال اجرا است.

3. شما برای دسترسی به سرور لینوکس تان از سرویس SSH استفاده می کنید. حالا اگر کسی سعی کرده باشد به سرورتان SSH بزند شما براحتی با چک کردن Log های مربوط به SSH به این موضوع پی ببرید. اگر سرور لینوکس تان از خانواده سیستم عامل های Redhat یا CentOS است دستور زیر را اجرا کنید :

# tail -n 500 /var/log/secure | grep ‘sshd’

و اگر سرور لینوکس تان از خانواده سیستم عامل های Debian است دستور زیر را اجرا کنید :

# 'tail -n 500 /var/log/auth.log | grep 'sshd

مثال :

root@servername:~# tail -n 500 /var/log/auth.log | grep sshd
Jan 30 13:24:12 servername sshd[17655]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jan 30 13:26:43 servername sshd[17796]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.0.50.3 user=root
Jan 30 13:26:45 servername sshd[17796]: Failed password for root from 10.0.50.3 port 14238 ssh2
Jan 30 13:26:51 servername sshd[17804]: Accepted password for root from 10.0.50.3 port 14332 ssh2

دستور فوق 500 خط پایانی از فایل auth.log را نمایش خواهد داد. به پیغام های failure و authorized حتما توجه کنید. برای دانستن اینکه یوزر فعلی روی سرور اخیرا چه دستوراتی را روی سرور اجرا کرده دستور زیر را اجرا کنید :

# tail -n 100 ~/.bash_history | more

و برای اینکه بدانید یک یوزر خاصی اخیرا روی سرور چه دستوراتی را وارد کرده دستور زیر را اجرا کنید :

# tail -n 100 /home/username/.bash_history | more

4. با استفاده از دستور زیر میتوانید Session هایی که به سرور زده شده اند را به همراه Status و تعداد Send و Receive پکت ها را نمایش می دهد :

# netstat -tuna

زمانی که سرور شما کند شده باشد علت آن میتواند این باشد که یک آدرس IP از بیرون و یا داخل شبکه سرورتان را دچار Loop کرده و ترافیک شبکه تان را بالا برده است. اگر دیدید که تعداد Session ها خیلی زیاد شده اند احتمال دارد که سرور شما دچار حمله شده باشد.

5. با انجام موارد زیر تقریبا میتوانید بفهمید که سرورتان هک شده است یا نه. اما بهتر است موارد زیر را نیز چک کنید. به این لینک مراجعه کنید و چک کنید ببینید IP Public شما در Blacklist قرار گرفته است یا خیر. زیرا ممکن است سرور شما دچار حمله SSH Brute force شده باشد یا اینکه Spam شده باشد و یا دچار حمله DDoS شده باشد. البته این مورد به این معنا نیست که سرور لینوکس شما هک شده است بلکه ممکن است بدین معنی باشد که وب سایت یا Web Application یا Mail server شما دچار حمله شده است.

6. روش دیگر آن است که فایل Crontab را برای همه یوزر ها چک کنید. ممکن است یک Script مخرب یا نرم افزاری ناشناس یک Cronjob روی سرور ایجاد کرده باشد. برای پی بردن به این موضوع اگر سرور لینوکس تان از خانواده سیستم عامل های Debian است دستور زیر را اجرا کنید :

# cd /var/spool/cron/crontabs/ && grep

و اگر سرور لینوکس تان از خانواده سیستم عامل های Redhat یا CentOS است دستور زیر را اجرا کنید :

# cd /var/spool/cron && grep

این دو دستور تمامی Cronjob های یوزر ها را در خروجی نمایش می دهد.

7. با دستور زیر روی سرور یک آنتی ویروس نصب کنید و سرور را اسکن کنید :

# apt-get install clamav-scan

برای سیستم عامل های Redhat یا CentOS است دستور زیر را اجرا کنید :

# yum install clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd

حالا با دستو زیر آنتی ویروس را آپدیت کنید :

# freshclam

با دستور زیر سرور را اسکن کنید و نتیجه اسکن را درون یک فایل متنی ذخیره کنید :

# clamscan –r / | grep FOUND >> /var/log/av/AvReport.txt

امیرحسین کریم پور
امیرحسین کریم پور

مدیر ارشد وب سایت توسینسو و مدرس و متخصص سرویس های مایکروسافت

امیرحسین کریم پور هستم ، مدیر ارشد وب سایت توسینسو ، متخصص در حوزه سیستم عامل های کلاینت و سرور شرکت مایکروسافت و سرویس های مربوطه ، سیستم عامل لینوکس ، مجازی سازی سرور ، فایروال و ... سابقه کار با سازمان ها و شرکت های مختلف در زمینه سرویس های مایکروسافت در قالب پروژه ، مشاوره و آموزش. علاقه مند به حوزه امنیت اطلاعات و تست نفوذ سنجی

نظرات