15 روش برای ایمن نگه داشتن سرور لینوکس شما – اطلاعات امنیت ملی

1. دسترسی ایمن از راه دور

بعضی اوقات ما با استفاده از روش های از راه دور به سرور خود دسترسی پیدا می کنیم و اگر به هیچ وجه ایمن نباشد ، ممکن است سرور خود را به خطر بیندازیم. غیرفعال کردن روش تأیید رمز عبور SSH و فعال کردن روش تأیید اعتبار کلید عمومی

برای غیرفعال کردن روش رمز عبور ، ChallengeResponseAuthentication و گذرواژه تأیید اعتبار را به "نه" تغییر دهید.

ChallengeResponse تأیید اعتبار شماره 

مجوز کلید عمومی:

 RSAAuthentication بله
PubkeyAuthentication بله 

اکنون می توانید یک جفت کلید جدید تولید کنید:

 # ssh-keygen -t rsa 

b. غیرفعال کردن مستقیم ورود به سیستم به سیستم

اگر اجازه دسترسی مستقیم به سرور داده شود ، خطرات امنیتی وجود دارد.

در عوض ، باید با استفاده از حساب کاربری خود وارد شوید و سپس از آن استفاده کنید تا به عنوان root وارد شوید.

بنابراین ، باید PermitRootLogin 'بله' را به PermitRootLogin 'نه' تغییر دهید.

 PermitRootLogin no 

c. درگاه پیش فرض برای SSH (سابق: 8500)

  port 8500 

2 را تغییر دهید. گذرواژه GRUB bootloader

با محافظت از bootloader می توان از دسترسی به حالت تک کاربره که کاربر در آن به صورت خودکار به صورت root استفاده می کند جلوگیری کرد.

برای Debian:

 # grub-mkpasswd-pbkdf2 

برای Centos: [19659006] # grub2-mkpasswd-pbkdf2

3. پورت های شبکه

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

 # nmap -sT -O محلی

شروع Nmap 6.40 (http://nmap.org) در 2017-06-07 23:13 UTC
گزارش اسکن Nmap برای localhost (127.0.0.1)
میزبان بالا می رود (تأخیر 0.000061s).
آدرسهای دیگر برای localhost (اسکن نشده): 127.0.0.1
رکورد rDNS برای 127.0.0.1: centos-01
نشان داده نشده است: 995 پورت بسته
خدمات PORT STATE
22 / tcp ssh باز
smtp 25 / tcp باز
80 / TCP باز کردن http
111 / TCP rpcbind باز
2049 / tcp nfs open 

برای لیست تمام پورت های باز و برنامه های مرتبط ، از دستور زیر استفاده کنید:

 # netstat -tulpn
اتصالات فعال اینترنتی (فقط سرورها)
آدرس Poto / نام برنامه آدرس محلی Proto Recv-Q Send-Q آدرس محلی
tcp 0 0 0.0.0.0gment11 0.0.0.0:* LISTEN 1 / systemd
tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 

4. کاهش حقوق

برای محدود کردن خطرات ، حق پرونده های سیستم و پوشه ها را ببندید.

 # chmod 700 / root

# chmod 700 / var / log / audit

# chmod 740 /etc/rc.d/init.d/iptables

# chmod 740 / sbin / iptables

# chmod -R 700 / etc / skel

# chmod 600 /etc/rsyslog.conf

# chmod 640 /etc/securance/access.conf

# chmod 600 /etc/sysctl.confociation19659018†5. بررسی گذرواژه‌های خالی 

هر حساب با رمز عبور خالی به این معنی است که برای دسترسی غیرمجاز به شبکه باز است و باعث تضعیف امنیت سرور لینوکس می شود.

برای چک کردن رمزهای عبور خالی ، از دستور زیر استفاده کنید:

 # cat / و غیره / سایه | awk -F: '($ 2 == "") {$ 1 {چاپ کنید
paul 

کلمه عبور های خالی را قفل کنید:

# passwd -l paul

 قفل کردن رمز عبور برای پائول کاربر.
passwd: موفقیت 

6. پارامترهای هسته را پیکربندی کنید

برای بهینه سازی پارامترهای هسته ، پرونده /etc/sysctl.conf را ویرایش کنید.

Sysctl دستوری است که برای تغییر پارامترهای هسته در زمان اجرا در ترمینال استفاده می شود.

 # sysctl -a

# sysctl -A

# sysctl net.ipv4.conf.all.rp_filter 

برای بارگذاری تنظیمات ، وارد شوید:

 # sysctl -p 

محتوای زیر را در پرونده /etc/sysctl.conf کپی کنید.

 # execshield را روشن کنید
kernel.exec-shield = 1
kernel.randomize_va_space = 1

# محافظت در برابر جعل IP را فعال کنید
net.ipv4.conf.all.rp_filter = 1

# مسیریابی منبع IP را غیرفعال کنید
net.ipv4.conf.all.accept_source_route = 0

# نادیده گرفتن درخواست پخش
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_messages = 1

# حتماً بسته‌های جعلی وارد شوید
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1

# غیرفعال کردن تغییر مسیر یابی مسیریابی ICMP
sysctl -w net.ipv4.conf.all.accept_redirects = 0
sysctl -w net.ipv6.conf.all.accept_redirects = 0
sysctl -w net.ipv4.conf.all.send_redirects = 0
sysctl -w net.ipv6.conf.all.send_redirects = 0

# کلید جادویی-sysrq را غیرفعال می کند
kernel.sysrq = 0

# tcp_sack را خاموش کنید
net.ipv4.tcp_sack = 0

# tcp_timestamps را خاموش کنید
net.ipv4.tcp_timestamps = 0

# محافظت از کوکی TCP SYN را فعال کنید
net.ipv4.tcp_syncookies = 1

# محافظت از پیام خطای بد را فعال کنید
net.ipv4.icmp_ignore_bogus_error_responses = 1 

7. سرویس های ناخواسته را غیرفعال کنید

شما باید کلیه خدمات و داسون های ناخواسته (خدماتی که در پس زمینه در حال اجرا هستند) را از سیستم حذف کنید و در زمان راه اندازی در سطح 3 شروع به کار کنید.

 # chkconfig - لیست | grep '3: on' 

برای غیرفعال کردن خدمات ، انجام دهید:

 # سرویس خدمات
# خدمات chkconfigName off 

8. احتیاج به تأیید اعتبار برای حالت تک کاربر

توصیه می شود هنگام ورود به حالت تک کاربر ، رمزعبور root را وارد کنید.

پرونده / etc / sysconfig / init را باز کنید و خط را اضافه کنید:

 SINGLE = / sbin / sulogin 

9. Linux Enhanced Security (SELinux)

SELinux مجموعه ای از قوانین امنیتی است که تعیین می کند کدام پروسه می تواند به یک فایل ، فهرست ها ، پورت ها و غیره دسترسی پیدا کند.

هر پرونده ، فرآیند ، فهرست و پورت دارای یک برچسب امنیتی ویژه است.

یک زمینه به سادگی نامی است که توسط سیاست های SELinux استفاده می شود تا مشخص شود آیا یک فرآیند می تواند به یک فایل ، فهرست یا پورت دسترسی داشته باشد.

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

اگر هیچ مجوزی وجود ندارد ، دسترسی رد می شود.

فرمان getenforce به ما می گوید SELinux در کدام حالت قرار دارد.

ما می توانیم حالت SELinux را به تغییر دهیم. آنرا با تغییر SELINUX = اجرای مجدد به / etc / sysconfig / selinux

سه دستورالعمل در این پرونده وجود دارد ، مطابق شکل زیر.

  • اجرای : سیاست امنیتی SELinux اعمال می شود.
  • مجاز : SELinux هشدارها را چاپ می کند
  • غیرفعال شده : SELinux کاملاً غیرفعال است.

شما می توانید وضعیت SELinux را با دستور بررسی کنید:

 # sestatus
وضعیت SELinux: غیرفعال شده 

اکنون ما می بینیم که این وضعیت غیرفعال است ، برای فعال کردن سیاست های امنیتی ، دستور را اجرا کنید:

 # اجرای قانون 

10. نصب فایروال با استفاده از iptables

iptables یک برنامه کاربردی است که به مدیر سیستم امکان می دهد جداول ارائه شده توسط فایروال هسته لینوکس ، و همچنین زنجیره ها و قوانینی را که آن ذخیره می کند ، پیکربندی کند. نحوه تنظیم مجدد قوانین در iptables

a. بستن همه درگاه های ناخواسته

  # iptables -A INPUT -p tcp --dport PORT_NUMBER -j DROP 

b. مسدود کردن IP بد

  # iptables -A INPUT -s IP_ADDRESS -j DROP 

sec. مسدود کردن اتصالات به رابط شبکه

برای مسدود کردن اتصالات از یک آدرس IP خاص به یک رابط شبکه خاص ، از این دستور استفاده کنید:

 # iptables -A INPUT -i  ens0  -s 6  .6.6.6  -j DROP 

d. لیست قوانین iptables

شما می توانید تمام قوانین iptables را با دستور مشاهده کنید

 # iptables -L -n -v 

11. بررسی سیستم پرونده [

تمام پرونده های دارای بیت SUID / SGID می توانند در صورت داشتن پرونده امنیتی SUID / SGID با مشکلات امنیتی مورد استفاده قرار گیرند.

هر کاربر محلی یا از راه دور می تواند از چنین فایلی استفاده کند.

a. دودویی های ناخواسته SUID و SGID را کشف کنید

 چاپ # find /  (-perm -4000 -o -perm -2000 )
# find / -path -prune -o -type f -perm +6000 -ls 

b. تعیین پرونده های موجود برای نوشتن

  # find / dir -xdev - نوع d  (-perm -0002 -a! -Perm -1000 ) -print 

c. تعریف پرونده ها و پوشه های یتیم

  # find / dir -xdev  (-nouser -o -nogroup ) -print 

12. دایرکتوری / boot را به عنوان فقط خواندنی نگه دارید

هسته لینوکس و پرونده های مرتبط با آن در فهرست / boot قرار دارند ، که بصورت پیش فرض برای خواندن و نوشتن استفاده می شود.

تغییر آن برای خواندن ، خطر اصلاح غیرمجاز پرونده های مهم بوت را کاهش می دهد.

ما باید پرونده / etc / fstab را ویرایش کرده و خط زیر را وارد کنید [

 LABEL = / boot / boot ext2 پیش فرض ، ro 1 2 [19659099] 13. غیرفعال کردن تمام پوسته های TCP 

پوسته های TCP می توانند روشی سریع و آسان برای کنترل دسترسی به برنامه های مرتبط ارائه دهند .

بنابراین ، توصیه می شود همه برنامه های بلااستفاده را مسدود کنید ، و سپس فقط به برنامه های کاربردی اجازه دهید که مورد استفاده قرار گیرند.

به عنوان مثال ، همه برنامه ها را مسدود می کنیم ، اما ssh

 # echo "ALL: ALL" را مجاز می کنیم >> /etc/hosts.deny
# echo "sshd: ALL" >> /etc/hosts.allowociation19659052-0214. مسدود کردن کارها برای کاربران غیرمجاز. 

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

شما می توانید مشخص کنید که چه کسی می تواند و نمی تواند وظایف را انجام دهد.

این توسط پرونده هایی به نام /etc/cron.allow و /etc/cron.deny کنترل می شود.

برای مسدود کردن کاربر با استفاده از cron ، کافی است نام های کاربری را به cron.deny اضافه کنید و به کاربر اجازه دهید تا cron.allow را اضافه کند.

 # echo ALL >> / etc / cron.deny 

15. سرور خود را از سرریزهای بافر محافظت کنید

سرریزهای بافر وقتی اتفاق می افتد که یک برنامه یا فرایند سعی در ارسال اطلاعات بیشتر به یک بلوک از حافظه ثابت یا بافر نسبت به بافر اختصاص داده شده برای ذخیره سازی کند.

مهم است که از سرور خود در برابر این محافظت کنید حملات.

a. ExecShield

  # sysctl -w kernel.exec-shield = 1 

را روشن کنید همچنین می توانید خط زیر را به /etc/sysctl.conf:ociation19459018 موفق19659006†kernel.exec-shield = 1 [روشن کنید] 19659078] ب. بررسی / فعال کردن ASLR

رتبه بندی فضای آدرس یک ویژگی امنیتی است که سرریزهای بافر را دشوار می کند.

 # Sysctl -q -n -w kernel.randomize_va_space = 2 

اگر موجود نیست خط زیر را به /etc/sysctl.conf اضافه کنید:

 kernel.randomize_va_space = 2 

پاداش: استفاده راه حل آماده

در حالت ایده آل ، شما می توانید سرور اختصاصی خود را خریداری کنید و برنامه های خود را روی آن مستقر کنید.

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

نظارت بر روی VPS توسط حالت آن انجام خواهد شد.

بله ، این به پول احتیاج دارد (می توانید قیمت ها را در وب سایت https://www.hostzealot.ru/vps بررسی کنید) ، اما شما سرور خود را خواهید داشت که می توانید کارهای دیگری را انجام دهید چی، بدون تاثیر منابع است.

چرا من خاص HostZealot.ru؟

آنها ارائه قیمت های خوب و سرور به طور گسترده ای به لحاظ جغرافیایی توزیع شده است.