چگونه یک گروه CSF برای همگام‌سازی Blacklists و Whitelists ایجاد کنیم؟

970views
ما دیده‌ایم که بسته‌های کانفیگ فایروال سرور (CSF) یک راه‌حل امنیتی استاندارد قدرتمند است برای سرورهایی که درحال اجرای WHM هستند.
یکی از اجزای فعال که lfd نامیده می‌شود (Login Failure Daemon) که همه سوابق و تلاش‌هایی که برای Login شدن به سرور از طریق SSH و یا از طریق رابط گرافیکی GUI و ایجاد لیست‌های سفید و سیاه از IP آدرس‌ها به منظور جلوگیری از حملات را ثبت می‌کند.اگر شما تعدادی سرور درحال اجرای WHM دارید و اگر یک گروه DNS تنظیم کرده‌اید شما قطعا هر نمونه از CSF که شامل لیست‌های سفید و سیاه مرتبط با خود باشد را نگهداری خواهید کرد. به جای تکرار این عمل در هر زمان، راحت‌تر نیست  اگر سرویس‌دهنده شما این اطلاعات را خودشان به اشتراک بگذارند؟ بنابراین اگر یکی از آنها یک حمله brute force که از یک آدرس IP خاص صورت گرفته را تشخیص دهد دیگران نیاز نیست قبل از این‌که بیش از حد محاصره شوند، صبر کنند. آن‌ها می‌توانند این اطلاعات را برای پیش‌دستی کردن در مقابل حملات به یکدیگر انتقال دهند.
این به عنوان یک گروه CSF شناخته می‌شود. گروه‌هایی از سرورها که لیست‌های سفید و سیاه را به اشتراک می‌گذارند. انجام این تنظیمات بسیار آسان است وتنها نیاز به چند تغییر در فایل “csf.conf” بر روی هر یک از اعضای گروه دارد. در این‌جا به شما آموزش می‌دهیم که چگونه این کار را انجام دهید:

پیکربندی سرورها:

برای شرکت در یک گروه CSF سرورها باید در حال اجرای WHM یا DNSONLY با CSF به علاوه installed.In باشند. در فایل “csf.conf” پارامتر “TESTING” باید با مقدار ۰ تنظیم شود و یا اینکه lfd شروع نشود. در هنگام نصب و راه‌اندازی CSF به طور پیش‌فرض TESTING فعال است. بنابراین این گزینه را باید برای هر سرور انجام دهید.
در این مثال ما قصد داریم از ConfigServer اکسپلورر (CSE) به عنوان سیستم مدیریت فایل استفاده کنیم. شما می‌توانید در صورت تمایل از نرم‌افزار ویرایش فایل‌هایتان را به طور مستقیم از CLI استفاده کنید.

مشخص کردن گروه‌ها:

اولین کاری که شما باید انجام دهید این است که آدرس IP همه اعضای شرکت کننده در گروه را بدست آورید. در این مثال ما فقط دو آدرس IP داریم:
87.76.280.180
176.58.116.232
فایل csf.conf موجود در دایرکتوری etc/csf/ در زیر نمایش داده شده است را باز کنید.
اکنون در فایلی که در پیش رو دارید دو پارامتر زیر را جستجو کنید:
CLUSTER_SENDTO
CLUSTER_RECVFROM
آدرس IP هر دو سرور را با استفاده از کاما از هم جدا کنید و هر دو IP را مانند شکل زیر در داخل یک ” ” قرار دهید:
۱۰۷-cfs
با این تنظیمات تمام اعضای درون گروه قادر به ارسال و دریافت اطلاعات لیست سیاه و لیست سفید با یکدیگر هستند. شما در حال ایجاد یک نوع شبکه هستید که هر سرور با دیگر سرورها یک لینک مستقیم دارد.
گزینه بعدی که باید فعال شود CLUSTER_BLOCK نامیده می‌شود. این گزینه به صورت پیش‌فرض فعال است مگر اینکه در جایی چیزی تغییر کرده باشد. شما نیازی نیست آن را تغییر دهید:
مقدار CLUSTER_PORT یک شماره پورت است که نیاز است در بین تمامی سرورهای به اشتراک گذاشته شود. فقط مطمئن شوید که هر فایل csf.conf همان متغییر CLUSTER_PORT را دارد.
CLUSTER_KEY مسئولیت تضمین تمامی ارتباطات رمزگذاری شده بین تمای سرورها را بر عهده  دارد. یک رشته عدد و الفبا بین ۸ تا ۵۶ کاراکتر انتخاب کنید و توصیه می‌شود که ترجیحا بیش از ۲۰ کاراکتر باشد. ضروری است که این کلید در فایل‌های  csf.conf تمامی سرورها یکسان باشد و مخفی نگه داشته شود. اگر این‌گونه نباشد ممکن است حمله کننده یک پیغام را از سمت سرور شما شناسایی کنند و امنیت سرور شما  را به خطر بیندازد.

تغییرات فایل csf.conf طول می‌کشد. مطمئن شوید که برای هر نود (node) در گروه خود این تغییرات را انجام داده‌اید.

راه‌اندازی مجدد و پینگ کردن:

هنگامی که فایل csf.conf اصلاح شد، نیاز داریم که هر دو CSF و همچنین lfd را Restart کنیم. برای انجام این کار از طریق SSH به سرورها Login کنید و دستورات زیر را تایپ کنید:
csf -r
service lfd restart
هنگامی‌که این دو سرویس Restart شد باید گروه را تست کنیم. از طریق ترمینال SSH دستور زیر را تایپ کنید:
csf --cping
اگر تمامی مراحل به درستی انجام شده باشد سرور باید تمامی آدرس IPهای اضافه شده به فایل csf.config را بدون هیچ مشکلی Ping کند.
اگر نتوانید با یکی از سرورها ارتباط برقرار کنید به شما اطلاع‌رسانی شکست خواهد شد. ایجاد یک گروه CSF به شما اجازه می‌دهد که تشخیص خطرات خود را بهبود دهید و این بخش مهمی از معماری امنیتی است.

نصب ZFS روی یک سرور لینوکس CentOS 6

846views

فایل سیستم ZFS برای لینوکس به صورت source code وجود دارد که شما می‌توانید به صورت ماژول کرنل آن را اجرا کنید. از یک سری ابزارها مانند ZFS، Zpool و غیره استفاده می‌کنند.

این آزمون بر روی یک CentOS6 انجام شده:

$ cat /etc/redhat-release
CentOS release 6.5 (Final)

نصب متعلقات:

$ yum install gcc kernel-devel zlib-devel libuuid-devel libblkid-devel libselinux-devel parted lsscsi rpm-build

هنگامی که نصب تمام شد ، شما می توانید پکیج های ZFS و SPL را از لینک زیر اصلاح و یا ایجاد کنید:

http://zfsonlinux.org/download.html

پس از دانلود مراحل زیر را انجام دهید:

$ tar xfvz spl-0.6.0-rc14.tar.gz
$ cd spl-0.6.*

$ ./configure
$ make rpm

$ rpm -Uvh *.x86_64.rpm

Preparing... ########################################### [100%]
۱:spl-modules-devel ########################################### [ 33%]
۲:spl-modules ########################################### [ 67%]
۳:spl ########################################### [100%]

$ wget http://github.com/downloads/zfsonlinux/zfs/zfs-0.6.0-rc6.tar.gz

$ tar xfvz zfs-0.6.0-rc14.tar.gz
$ cd zfs-0.6.*

$ ./configure
$ make rpm

$ rpm -Uvh *.x86_64.rpm

Preparing... ########################################### [100%]
۱:zfs-test ########################################### [ 17%]
۲:zfs-modules-devel ########################################### [ 33%]
۳:zfs-modules ########################################### [ 50%]
۴:zfs-dracut ########################################### [ 67%]
۵:zfs-devel ########################################### [ 83%]
۶:zfs ########################################### [100%]

اگر همه مراحل به درستی انجام شود ماژول‌های کرنل ZFS و موارد کاربردی userland نصب می‌شوند. برای استفاده از ZFS نیاز است که بار اول ماژول‌های کرنل modprobe بارگذاری نمائید.

$ modprobe zfs

برای بررسی ماژول اجرایی شما می‌توانید مسیر /var/log/messages را دنبال کنید:

Feb 12 17:54:27 centos6 kernel: SPL: Loaded module v0.6.0, using hostid 0x00000000
Feb 12 17:54:27 centos6 kernel: zunicode: module license 'CDDL' taints kernel.
Feb 12 17:54:27 centos6 kernel: Disabling lock debugging due to kernel taint
Feb 12 17:54:27 centos6 kernel: ZFS: Loaded module v0.6.0, ZFS pool version 28, ZFS filesystem version 5

و lsmode را به منظور بررسی آن‌ها اجرا کنید:

$ lsmod | grep -i zfs

zfs 1038053 0
zcommon 42478 1 zfs
znvpair 47487 2 zfs,zcommon
zavl 6925 1 zfs
zunicode 323120 1 zfs
spl 210887 5 zfs,zcommon,znvpair,zavl,zunicode

برای ایجاد اولین pool ما می‌توانیم با استفاده از کاربردهای zpool، این مورد را ایجاد کنیم:

$ zpool create mysqlpool mirror sdb sdc

در مثال بالا یک mirrored pool در دستگاه‌های sdb و sdc ایجاد شده است. ما می‌توانیم این طرح را در خروجی zpool status ببینیم:

$ zpool status -v

pool: mysqlpool
state: ONLINE
scan: none requested
config:

NAME STATE READ WRITE CKSUM
mysqlpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0

errors: No known data errors

pool version 28h به ما این امکان را می‌دهد که atime updates را غیرفعال و compression و deduplication را فعال کنیم.

$ zfs set compression=on mysqlpool
$ zfs set dedup=on mysqlpool
$ zfs set atime=off mysqlpool

برای یک آزمون واقعی یکی از MySQL slaves را متوقف کردیم و در مسیر /var/lib/mysql یک pool را بارگذاری کردیم. اطلاعات قبلی روی سیستم فایل ZFS را همگام‌سازی کردیم و بعد از آن MySQL به خوبی شروع به کار کرد.

$ dd if=/dev/zero of=/dev/sdb
$ zpool scrub mysqlpool

اجازه می‌دهیم که این دستور چند دقیقه اجرا شود بعد از اتمام آن zpool status به منظور بررسی اسکراب ثابت همه موارد اجرا شود:

$ zpool status -v
pool: mysqlpool
state: ONLINE
status: One or more devices has experienced an unrecoverable error. An
attempt was made to correct the error. Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
using 'zpool clear' or replace the device with 'zpool replace'.
see: http://www.sun.com/msg/ZFS-8000-9P
scan: scrub repaired 966K in 0h0m with 0 errors on Sun Feb 12 18:54:51 2012
config:

NAME STATE READ WRITE CKSUM
mysqlpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdb ONLINE 0 0 175
sdc ONLINE 0 0 0

سرور و کلاینت NFS

سرور و کلاینت NFS: نحوه راه‌اندازی روی CentOS 7.2

2.9kviews

در این مقاله چگونگی راه‌اندازی یک سرور NFS و یک کلاینت NFS روی یک CentOS 7.2 آموزش داده می‌شود. از طریق NFS یک کلاینت می‌تواند به صورت Remote روی یک سرور NFS دسترسی (خواندن و نوشتن ) داشته باشد به صورتی‌که فایل‌هایی که بر روی سرور هستند انگار که روی کامپیوتر خود شخص قرار دارند. ما به عنوان پایه از یک سرور CentOS 7.2 minimal برای نصب و راه‌اندازی استفاده می‌کنیم.

۱- نکات مقدماتی‌ سرور و کلاینت NFS:

ما در اینجا از دو سیستم CentOS استفاده می‌کنیم:

• NFS Server: server.example.com, IP address: 192.168.1.100
• NFS Client: client.example.com, IP address: 192.168.1.101

در این آموزش از یک ویرایشگر نانو برای ویرایش فایل‌های پیکربندی استفاده می‌کنیم. نانو می‌تواند با استفاده از دستور زیر نصب شود:

yum -y install nano

۲- پیکربندی فایروال:

توصیه می‌کنیم که یک فایروال نصب شده داشته باشید. اگر فایروالی نصب ندارید و می‌خواهید از فایروال استفاده کنید با استفاده از دستور زیر می‌توانید آنرا نصب کنید:

yum -y install firewalld

شروع فایروال و فعال شدن آن در زمان بوت آغاز می‌شود.

systemctl start firewalld.service
systemctl enable firewalld.service

در ادامه بعد از باز کردن SSH و پورت‌های NFS مطمئن شوید که از طریق SSH قادر خواهید بود که به سرور متصل شوید برای انجام اهداف مدیریتی توسط NFS و کلاینهای NFS.

firewall-cmd --permanent --zone=public --add-service=ssh
firewall-cmd --permanent --zone=public --add-service=nfs
firewall-cmd --reload

۳- نصب NFS:

سرور:

برای سرور NFS دستور زیر را اجرا می کنیم:

yum -y install nfs-utils

سپس برای فعال‌سازی و شروع سرویس‌های NFS دستورات زیر را اجرا کنید:

systemctl enable nfs-server.service
systemctl start nfs-server.service

کلاینت:

بر روی کلاینت‌ها می‌توانیم NFS را مطابق زیر نصب کنیم (در واقع بر روی همان سرور است):

yum install nfs-utils

۴- مسیرهای خروجی بر روی سرور و کلاینت NFS:

سرور:

ما می‌خواهیم دایرکتوری home/ و var/nfs/ برای کلاینت‌ها در دسترس باشد. بنابراین باید آن‌ها را بر روی سرور Export کنیم.
وقتی که یک کلاینت به یک NFS share دسترسی داشته باشد به طور معمول به عنوان کاربر nfsnobody است. معمولا دایرکتوری home/ متعلق به nfsnobody نیست (و من توصیه می‌کنم که مالکیت آنرا به nfsnobody تغییر ندهید) و چون ما می‌خواهیم در home/ بخوانیم و بنویسیم پس باید دسترسی به NFS share به عنوان root ایجاد شود (اگر home فقط خواندنی باشد نیازی به انجام این کار نیست). دایرکتوری var/nfs/ وجود ندارد، بنابراین ما می‌توانیم آن را ایجاد کنیم و مالکیت آن را به کاربر و nfsnobody تغییر دهیم.

mkdir /var/nfs
chown nfsnobody:nfsnobody /var/nfs
chmod 755 /var/nfs

اکنون ما باید /etc/exports که NFS shares خود را export می‌کنیم را اصلاح کنیم. ما home/ و var/nfs/ را به عنوان NFX share مشخص می‌کنیم و دسترسیhome/ را به عنوان root ایجاد می‌کنیم.

man 5 exports
nano /etc/exports
/home 192.168.1.101(rw,sync,no_root_squash,no_subtree_check)
/var/nfs 192.168.1.101(rw,sync,no_subtree_check)

گزینه no_root_squash باعث می شود که home/ به عنوان ریشه در دسترس باشد.
هر زمان که ما /etc/exports را اصلاح کردیم باید دستور زیر را اجرا کنیم:

exportfs –a

پس از آن،ایجاد تغییرات موثر است.

۵- نصب و راه‌اندازی NFS Shares روی سرور و کلاینت NFS:

کلاینت:

در ابتدا ما یک دایرکتوریهایی را ایجاد می کنیم که می خواهیم NFS shares در آن قرار بگیرند مانند:

mkdir -p /mnt/nfs/home
mkdir -p /mnt/nfs/var/nfs

در ادامه می‌توانیم به صورت زیر آن‌ها را مقدار دهیم:

mount 192.168.1.100:/home /mnt/nfs/home
mount 192.168.1.100:/var/nfs /mnt/nfs/var/nfs

اکنون باید دو فایل NFS shares در خروجی داشته باشید:

[root@client ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 28G 1.7G 26G 7% /
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 8.6M 910M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/sda1 497M 208M 290M 42% /boot
tmpfs 184M 0 184M 0% /run/user/0
۱۹۲٫۱۶۸٫۱٫۱۰۰:/home 28G 1.2G 27G 5% /mnt/nfs/home
۱۹۲٫۱۶۸٫۱٫۱۰۰:/var/nfs 28G 1.2G 27G 5% /mnt/nfs/var/nfs

و

mount
mount[root@client ~]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=930320k,nr_inodes=232580,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=25,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
nfsd on /proc/fs/nfsd type nfsd (rw,relatime)
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=188060k,mode=700)
۱۹۲٫۱۶۸٫۱٫۱۰۰:/home on /mnt/nfs/home type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.101,local_lock=none,addr=192.168.1.100)
۱۹۲٫۱۶۸٫۱٫۱۰۰:/var/nfs on /mnt/nfs/var/nfs type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.101,local_lock=none,addr=192.168.1.100)-

 

۶- تست کردن سرور و کلاینت NFS:

اکنون شما می‌توانید روی کلاینت یک فایل تست در NFS shares ایجاد کنید:

کلاینت:

touch /mnt/nfs/home/test.txt
touch /mnt/nfs/var/nfs/test.txt

اکنون به سرور بروید و بررسی کنید که آیا هر دو فایل تست را می‌توانید مشاهده کنید:

سرور:

ls -l /home/
[root@server1 ~]# ls -l /home/
total 0
drwx------. 2 administrator administrator 59 Jun 21 16:13 administrator
-rw-r--r--. 1 root root 0 Jun 29 13:07 test.txt
ls -l /var/nfs
[root@server1 ~]# ls -l /var/nfs
total 0
-rw-r--r--. 1 nfsnobody nfsnobody 0 Jun 29 13:07 test.txt

(لطفا به مالکیت‌های مختلف فایل‌های تست توجه داشته باشید. home NFS share/ بعنوان ریشه (root) دیده می‌شود. بنابراین /home/test.txt متعلق به ریشه است. /var/nfs share به عنوان nobody/65534 دیده می‌شود بنابراین /var/nfs/test.txt متعلق به nobody است).

۷- نصب و راه‌اندازی NFS Shares در زمان بوت:

به جای نصب و راه‌اندازی NFS Shares به صورت دستی روی سرور، شما می‌توانید /etc/fstab را تغییر دهید به‌صورتی‌که NFS shares به طور خودکار هنگامی‌که کلاینت بوت می‌شود نصب و راه‌اندازی شود.

کلاینت:

etc/fstab/ را باز کنید و خطوط زیر را دنبال کنید:

nano /etc/fstab
[...]
۱۹۲٫۱۶۸٫۱٫۱۰۰:/home /mnt/nfs/home nfs rw,sync,hard,intr 0 0
۱۹۲٫۱۶۸٫۱٫۱۰۰:/var/nfs /mnt/nfs/var/nfs nfs rw,sync,hard,intr 0 0

به جای rw,sync,hard,intr شما می‌توانید گزینه‌های مختلفی استفاده کنید. برای کسب اطلاعات بیشتر در مورد گزینه‌های موجود نگاهی بیندازید به:

man nfs

برای اینکه تست کنید که فایل اصلاح شده /etc/fstab کار می‌کند، کلاینت را reboot کنید:

Reboot

پس از راه‌اندازی مجدد سیستم، شما باید دو NFS shares در خروجی داشته باشید:

df –h
[root@client ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 28G 1.7G 26G 7% /
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 8.6M 910M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/sda1 497M 208M 290M 42% /boot
tmpfs 184M 0 184M 0% /run/user/0
۱۹۲٫۱۶۸٫۱٫۱۰۰:/home 28G 1.2G 27G 5% /mnt/nfs/home
۱۹۲٫۱۶۸٫۱٫۱۰۰:/var/nfs 28G 1.2G 27G 5% /mnt/nfs/var/nfs

و

mount
[root@client ~]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=930320k,nr_inodes=232580,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=25,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
nfsd on /proc/fs/nfsd type nfsd (rw,relatime)
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=188060k,mode=700)
۱۹۲٫۱۶۸٫۱٫۱۰۰:/home on /mnt/nfs/home type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.101,local_lock=none,addr=192.168.1.100)
۱۹۲٫۱۶۸٫۱٫۱۰۰:/var/nfs on /mnt/nfs/var/nfs type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.101,local_lock=none,addr=192.168.1.100)

 

۸- لینک‌های سرور و کلاینت NFS:

Linux NFS: http://nfs.sourceforge.net/
CentOS: http://www.centos.org/

بررسی فرآیندهای در حال اجرا روی لینوکس با استفاده از دستورات PS

2.9kviews

دستورات بسیاری وجود دارد که با استفاده از آن‌ها می‌توان فرآیندهای درحال اجرای بر روی سیستم لینوکس را بررسی کرد. در این مقاله شما را برخی از این دستورات آشنا می کنیم.

دستور PS یک گزارش تصویری از فرآیندهای جاری را برای ما نشان می‌دهد. دستور PS بدون هیچ گزینه‌ای خروجی زیر را نشان می‌دهد.

[root@fedora ~]# ps
PID TTY TIME CMD
۲۷۰۸ pts/1 00:00:00 bash
۲۹۵۸ pts/1 00:00:00 ps

PID: این گزینه IP فرآیند در حال اجرا است.
TTY: مکانی است که دستور در آن اجرا می‌شود.
TIME: زمانی که CPU توسط فرآیند در حال اجرا استفاده می‌شود.
CMD: دستوری است که توسط فرآیند فعلی اجرا می‌شود.

برای مشاهده همه فرآیندهای فعال بر روی سیستم از دستورات زیر استفاده کنید، دستور ps aux # جزئیات بیشتری از فرآیندها برای شما نشان می‌دهد.

# ps ax
# ps axu

با استفاده از گزینه “u” و یا “f-” مطابق با دستورات زیر می‌توانید جزئیات دقیق مربوط به هر فرآیند را مشاهده کنید.

$ ps aux
$ ps -ef -f

با اضافه کردن گزینه “u” و افزودن username در انتهای دستور می‌توانید فرآیندهای مربوط به یک کاربر را مشخص کنید.

$ ps -f -u username

برای جستجو در فرآیندها بر اساس نام و یا دستور استفاده شده “c” در دنباله دستور استفاده می‌کنیم.

$ ps -C apache2
PID TTY TIME CMD
۲۳۵۹ ? ۰۰:۰۰:۰۰ apache2
۴۵۲۴ ? ۰۰:۰۰:۰۰ apache2
۴۵۲۵ ? ۰۰:۰۰:۰۰ apache2
...

مدیران سیستم اغلب می‌خواهند فرآیندهایی که درحال مصرف بیش از اندازه از حافظه و یا CPU هستند را پیدا کنند، با استفاده از دستور زیر می‌توانید فرآیندها را بر اساس میزان مصرف CPU و یا میزان مصرف حافظه مرتب کرد. اگر بخواهیم بر اساس چند مورد جستجو را انجام دهیم با استفاده از کاما آنها را از هم جدا می‌کنیم. با استفاده از “+” و یا “- ” می‌توانیم مشخص کنیم که جستجو صعودی باشد یا نزولی.

$ ps aux --sort=-pcpu,+pmem

دستور زیر ۵ پروسه‌ای که بیشترین مصرف CPU را دارد نمایش می‌دهد:

$ ps aux --sort=-pcpu | head -5

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

# ps -ejH
# ps axjf

دستورات مفید SSH برای مدیریت CFS

1.3kviews

CFS یکی از بهترین نرم‌افزارهای فایروال برای سرورهای لینوکسی است. در این مقاله برخی از دستورات SSH که برای تنظیمات CSF استفاده می‌شود برای شما آورده شده است.

برای ری‌استارت کردن CSF از دستور زیر استفاده می شود:

csf -r

دستور زیر برای start کردن ruleهای فایروال استفاده می‌شود:

csf –s

دستور زیر یک آدرس IP را از لیست csf.deny (IP های حذف شده) پاک می‌کند و IP را آزاد می‌کند:

csf -dr IP address

با استفاده از دستور زیر می‌توان یک IP آدرس را در لیست csf.deny قرار دهیم ( بلاک کردن IP):

csf -d IP address

با استفاده از دستور زیر می‌توانیم یک IP آدرس را در لیست سفید (whitelist) فایروال قرار دهیم:

csf -a IP address

برای اضافه کردن یک IP به لیست temp IP ban از دستور زیر استفاده می‌کنیم:

csf -td IP address

دستور زیر به ما این امکان را می‌دهد که یک IP برای یک مدت مشخص با استفاده از port مشخص در لیست سفید قرار بگیرد.

csf -ta ipaddress TTL [-p port] [-d direction] [comment]

در دستور بالا TTL برای مشخص کردن زمان برحسب ثانیه است. Port شماره پورت مورد نظر و direction برای مشخص کردن in یا outbound است و از comment هم برای درج پیام استفاده می‌شود.

دستور زیر یک IP آدرس را بطور موقت از لیست حذف می‌کند و یا اجازه میدهد موقتا در لیست باشد.

csf -tr

نحوه باز کردن فایل‌ های فشرده rar در لینوکس

نحوه باز کردن فایل‌ های فشرده rar در لینوکس

7.7kviews

فایل‌ های فشرده rar، یکی از محبوبترین ابزارهای فشرده‌سازی و ایجاد و استخراج فایل است. هنگامی‌که ما یک فایل فشرده را از وب دانلود می‌کنیم نیاز به ابزارهایی داریم که بتوانیم آنرا باز کنیم. در زاگریو ما به شما چگونگی نصب و استفاده برنامه‌های لازم برای باز کردن فایل‌های RAR را برای شما آموزش می‌دهیم.

در ابتدا با استفاده از دستورات زیر پکیج‌های مورد نیاز را برای باز کردن فایل‌ های فشرده rar نصب می‌کنیم

فایل‌ های فشرده rar

yum install libc.so.6
yum install libgcc_s.so.1
yum install libstdc++.so.6

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

wget http://packages.sw.be/unrar/unrar-4.0.6-1.el5.rf.i386.rpm
rpm -Uvh unrar-4.0.6-1.el5.rf.i386.rpm

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

unrar e file.rar

مشاهده لیست آدرس‌ های ip متصل به سرور

14.1kviews

امروز در زاگریو، قصد داریم تا لیست آدرس‌ های ip متصل به سرور را به شما عزیزان، به صورت کامل توضیح دهیم، زیرا ممکن است گاهی به این فکر کنید که به سرور شما حمله شده است و می‌خواهید بدانید که چه کسی سرور شما را مورد حمله Ddos قرار داده است. شما با پیدا کردن IP شخص حمله کننده می توانید که IP آن را مسدود کنید.

دستورات در UNIX | ای پی سرور

با استفاده از دستور زیر در UNIX می‌توانید کلیه آدرس‌های متصل به پورت ۸۰ سرور خود را مشاهده کنید:

netstat -tn 2>/dev/null | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head

نمونه خروجی : تمامی آدرس‌ های ip متصل، به ترتیب تعداد اتصال از بیشتر به کمتر

97 114.198.236.100
56 67.166.157.194
44 170.248.43.76
38 141.0.9.20
37 49.248.0.2
37 153.100.131.12
31 223.62.169.73
30 65.248.100.253
29 203.112.82.128
29 182.19.66.187

نکته: این دستور برای نشان دادن این‌که آیا حمله DDoS ای بر روی سرور شما در حال وقوع است به کار می‌رود.

مدیریت سرور

اجاره دهید دستور بلند بالا را در قسمت‌های کوچک برای شما توضیح دهیم:

1- netstat -tn 2>/dev/null

با استفاده از دستور netstat تمامی ارتباطات ورودی و خروجی سرور خود را می‌توانید مشاهده کنید.
n- آدرس‌های را به صورت عدد به جای نام به شما نشان می‌دهد.
t- صرفا ارتباطات به پورت‌های TCP را به شما نشان می‌دهد.
/dev/null خروجی‌های ناخواسته را به مکانی خاص منتقل می‌کند تا درخواست شما مرتب نمایش داده شود.

خروجی:

#Examples - 7 connections
tcp 0 0 64.91.*.*:80 114.198.236.100:12763 TIME_WAIT
tcp 0 0 64.91.*.*:80 175.136.226.244:51950 TIME_WAIT
tcp 0 0 64.91.*.*:80 175.136.226.244:51951 TIME_WAIT
tcp 0 0 64.91.*.*:23 202.127.210.2:14517 TIME_WAIT
tcp 0 0 64.91.*.*:80 149.238.193.121:65268 TIME_WAIT
tcp 0 0 64.91.*.*:80 114.198.236.100:44088 ESTABLISHED
tcp 0 0 64.91.*.*:80 175.136.226.244:51952 TIME_WAIT
2- grep:80

صرفا آدرس‌ های ip را نشان می‌دهد که به پورت ۸۰ سرور شما متصل شده‌اند.

tcp 0 0 64.91.*.*:80 114.198.236.100:12763 TIME_WAIT
tcp 0 0 64.91.*.*:80 175.136.226.244:51950 TIME_WAIT
tcp 0 0 64.91.*.*:80 175.136.226.244:51951 TIME_WAIT
tcp 0 0 64.91.*.*:80 149.238.193.121:65268 TIME_WAIT
tcp 0 0 64.91.*.*:80 114.198.236.100:44088 ESTABLISHED
tcp 0 0 64.91.*.*:80 175.136.226.244:51952 TIME_WAIT
3- awk ‘{print $5}’

awk به شما کمک می‌کند تا رکورد شماره ۵ (آدرس‌ های ip به همراه پورت مربوطه که در خروجی بالا نمایش داده شده‌اند) به صورت جداگانه نمایش داده شود:

۱۱۴٫۱۹۸٫۲۳۶٫۱۰۰:۱۲۷۶۳
۱۷۵٫۱۳۶٫۲۲۶٫۲۴۴:۵۱۹۵۰
۱۷۵٫۱۳۶٫۲۲۶٫۲۴۴:۵۱۹۵۱
۱۴۹٫۲۳۸٫۱۹۳٫۱۲۱:۶۵۲۶۸
۱۱۴٫۱۹۸٫۲۳۶٫۱۰۰:۴۴۰۸۸
۱۷۵٫۱۳۶٫۲۲۶٫۲۴۴:۵۱۹۵۲

4- cut -d: -f1

دستور cut کمک می‌کند تا محتوای مورد نظر شما از محتوای ناخواسته جدا شود:
۱٫ d- کاراکتری را که بلافاصله پس از دستور d- نمایش داده می‌شود را مشخص می‌کند، در این مثال : است. به صورت پیش‌فرض tab را انتخاب می‌کند.
۲٫ f- مشخص می‌کند که چه لیستی از کارکترها، بایت‌ها یا قسمت‌ها باید انتخاب شوند.

5- sort | uniq -c | sort -nr
این دستور لیست را مرتب می‌کند، آن‌ها را در یک گروه قرار می‌دهد و مجددا آن‌ها را به صورت ترتیبی مرتب می‌کند:
1٫ sort

۱۱۴٫۱۹۸٫۲۳۶٫۱۰۰
۱۱۴٫۱۹۸٫۲۳۶٫۱۰۰
۱۴۹٫۲۳۸٫۱۹۳٫۱۲۱
۱۷۵٫۱۳۶٫۲۲۶٫۲۴۴
۱۷۵٫۱۳۶٫۲۲۶٫۲۴۴
۱۷۵٫۱۳۶٫۲۲۶٫۲۴۴

۲٫ uniq -c – آن‌ها را در گروه قرار می‌دهد.

۲ ۱۱۴٫۱۹۸٫۲۳۶٫۱۰۰
۱ ۱۴۹٫۲۳۸٫۱۹۳٫۱۲۱
۳ ۱۷۵٫۱۳۶٫۲۲۶٫۲۴۴

۳٫ sort -nr آن‌ها را بر اساس شماره، از بیشتر به کمتر مرتب می‌کند.

۳ ۱۷۵٫۱۳۶٫۲۲۶٫۲۴۴
۲ ۱۱۴٫۱۹۸٫۲۳۶٫۱۰۰
۱ ۱۴۹٫۲۳۸٫۱۹۳٫۱۲۱

۶- دستور head اختیاری است و صرفا ۱۰ رکورد اول را به شما نشان می‌دهد.

میزبانی وب زاگریو

۵ روش برای افزایش سرعت بازسازی و Rebuild درایوهای نرم‌افزاری RAID

1.7kviews

ایجاد، تایید و بازسازی RAID های نرم‌افزاری برای درایوهایی که سایز کوچکی دارند مشکلی ندارد، اما برای مواقعی که اطلاعات شما زیاد هستند و یا از دیسک‌های حجیم برای این کار استفاده می‌کنید، این عمل ممکن است تا روزها نیز ادامه داشته باشد، همیشه به یاد داشته باشید که شما می‌توانید سرعت انجام این کار برای درایوهای RAID 0/1/5/6 را افزایش دهید.
اخیرا یک NAS با ۵ هارد ۴ ترابایتی را در یک محیط RAID 6 برای یک مشتری پیاده‌سازی کردم، با زدن دستور cat /proc/mdstat وضعیت درایو md0 در حالت فعال و بازیابی اطلاعات بود، سرعت این بازیابی حدود ۴۰۰۰K/sec بود که حدود ۲۲ ساعت دیگر به پایان می‌رسید و من زمان کافی برای این کار نداشتم و نیازمند پایان یافتن آن به سریعتر حالت ممکن بودم.

روش اول:

فایل /proc/sys/dev/raid/speed_limit_min حاوی تنظیماتی است که مشخص می‌کند در زمان‌هایی که درایو فعالیتی در حال انجام دارد با چه سرعتی عملیات بازسازی را انجام دهد. سرعت بر مبنای کیلوبایت بر ثانیه و به ازای هر دستگاه محاسبه می‌شود و نه درایو RAID. مقدار پیش‌فرض ۱۰۰۰ است.
فایل /proc/sys/dev/raid/speed_limit_max حاوی تنظیماتی است که مشخحص می‌کند در زمانهایی که درایر فعالیتی ندارد با سرعت درج شده در این فایل عملیات بازسازی را انجام می‌دهد.

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

# sysctl dev.raid.speed_limit_min
# sysctl dev.raid.speed_limit_max

نمونه‌های خروجی:

dev.raid.speed_limit_min = 10000
dev.raid.speed_limit_max = 20000

نکته: این روش‌ها صرفا برای بازیابی درایوهای RAID نرم‌افزاری لینوکس و افزایش سرعت آن‌ها کاربرد دارد، هر چند تنظیمات این موارد مشکلی برای سیستم ایجاد نمی‌کند اما میزان فشار بر سرور و مصرف منابع CPU و RAM را به میزان چشمگیری افزایش می‌دهد.

برای افزایش سرعت:

echo value > /proc/sys/dev/raid/speed_limit_min

یا

sysctl -w dev.raid.speed_limit_min=value

در این مثال مقدار را ما بر روی ۵۰۰۰۰K/Sec قرار می‌دهیم:

# echo 50000 > /proc/sys/dev/raid/speed_limit_min

یا

# sysctl -w dev.raid.speed_limit_min=50000

اگر می‌خواهید تنظیمات پیش‌فرض را تغییر دهید، این دو مقدار را در فایل /etc/sysctl.conf وارد نمائید.

#################NOTE ################
## You are limited by CPU and memory too #
###########################################
dev.raid.speed_limit_min = 50000
## good for 4-5 disks based array ##
dev.raid.speed_limit_max = 2000000
## good for large 6-12 disks based array ###
dev.raid.speed_limit_max = 5000000

روش دوم:

تنظیمات readahead (پیش خوان در سکتورهای ۵۱۲ بایتی) را به ازای هر درایو افزایش دهید:

# blockdev --setra 65536 /dev/mdX
## Set read-ahead to 32 MiB ##
# blockdev --setra 65536 /dev/md0
# blockdev --setra 65536 /dev/md1

روش سوم:

مقدار stripe_cache_size را برای RAID5 یا RAID6 تنظیم کنید.
این تنظیم فقط برای RAID 5/6 امکان‌پذیر است و بهره‌وری این درایوها را بین ۳ تا ۶ برابر افزایش می‌دهد. مقدار مندرج بلاک‌های سایز کش را برای ذخیره اطلاعات و خواندن اطلاعات در حافظه رم ذخیره می‌کند، مقدار پیش‌فرض ۲۵۶ است و مقادیر ۱۷ تا ۳۲۷۶۸ قابل تنظیم است. هر چند افزایش این مقدار تاثیر بسزایی در سرعت این درایوها دارد اما میزان بسزایی از RAM سرور را اشغال می‎کند، تنظیم این مقدار به عدد بسیار زیاد باعث به وجود آمدن مشکل “out of memory” می‎شود.

فرمول محاسبه:

memory_consumed = system_page_size * nr_disks * stripe_cache_size

مقدار رم مصرف شده = حجم system page * تعداد دیسک * stripe_cache_size
برای تنظیم این مقدار بر روی ۱۶MiB برای درایو md0:

# echo 16384 > /sys/block/md0/md/stripe_cache_size

برای تنظیم این مقدار بر روی ۳۲MiB برای درایو md3:

# echo 32768 > /sys/block/md3/md/stripe_cache_size

روش چهارم:

غیر فعال کردن NCQ برای تمامی دیسک ها
دستور زیر NCQ را برای تمامی دیسک ها /dev/sda, /dev/sdb و .. غیر فعال میکند:

for i in sd[abcde]
do
echo 1 > /sys/block/$i/device/queue_depth
done

روش پنجم:

مقدار Bitmap زمان بازسازی دیسک ها را در صورت خراب شدن و یا در صورت جابجایی دییک ها بهینه می‌کنند.
با استفاده از دستور زیر آن را فعال کنید:

# mdadm --grow --bitmap=internal /dev/md0

پس از اتمام rebuild آن را با دستور زیر غیرفعال کنید:

# mdadm --grow --bitmap=none /dev/md0

نتیجه:

سرعت من از ۴k به ۵۱k افزایش یافت:

cat /proc/mdstat

نمونه خروجی:

 

Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath]
md5 : active raid1 sde2[2](S) sdd2[3](S) sdc2[4](S) sdb2[1] sda2[0]
۵۳۰۰۴۸ blocks [2/2] [UU]

md0 : active raid6 sde3[4] sdd3[3] sdc3[2] sdb3[1] sda3[0]
۵۸۵۵۸۳۶۸۰۰ blocks level 6, 64k chunk, algorithm 2 [5/5] [UUUUU]
[============>........] resync = 61.7% (1205475036/1951945600) finish=242.9min speed=51204K/sec

 

برای مشاهده real-time مانند یک حرفه ای با دستور زیر آن را بررسی کنید:

# watch -n1 cat /proc/mdstat

نمونه خروجی:

 

Rebuild-raid01

 

تصویر۱: وضعیت بهره‌وری و بهینه‌سازی درایو raid6 برای /dev/md2

دستور زیر گزارش درایو /dev/md2 را از نظر وضعیت و سلامتی به شما می‌دهد:

# mdadm --detail /dev/md2

Rebuild-raid02

تصویر دوم: دریافت اطلاعات در خصوص درایو md2 raid array

 

همچنین با دستور iostat نیز می‌توانید وضعیت فعلی دیسک‌ها را مشاهده کنید:

watch iostat -k 1 2
watch -n1 iostat -k 1 2

 

Rebuild-raid03

تصویر سوم: میزان مصرف منابع CPU و اطلاعات I/O برای درایو ها و پارتیشن‌ها

نصب Postfix Dovecot ClamAVRoundcube و Fail2ban روی سرور لینوکس با استفاده از iRedmail

2.9kviews

در هفته‌های گذشته درخواست‌هایی را در خصوص ارائه آموزش نصب و راه‌اندازی سرور ایمیل امن از کاربران و بازدید کنندگان خود دریافت کردیم.

سرورهای مجازی ایمیل لینوکس به همراه وب میل اغلب برای کسب و کارهای کوچک که تمایل دارند خودشان سرور ایمیل داشته باشند و یا افرادی که نیاز به ارسال ایمیل‌های تعداد بالا دارند ممکن است کمی چالش برانگیز باشد.

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

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

حال به اصل موضوع می‌پردازیم.

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

بسته‌های مورد نیاز جهت داشتن یک سرور ایمیل امن و آنلاین به شرح ذیل است:

 

نام

توضیحات

Postfix

Mail Transfer Agent (MTA)
عامل انتقال ایمیل

Dovecot

POP3, IMAP and Managesieve server
عامل اتصال کاربری

ApacheNginx

Web server
سرویس دهنده وب

OpenLDAPldapd(8)

LDAP server, used for storing mail accounts – optional
اتصال به Active Directory و نرم‌افزارهای مشابه (اختیاری)

MySQLMariaDBPostgreSQL

SQL server used to store application data. Could be used to store mail accounts too
بانک اطلاعاتی جهت ذخیره‌سازی اطلاعات و حساب‌های کاربری

Amavisd-new

Interface between Postfix and SpamAssassin, ClamAV. it calls SpamAssassin and ClamAV for content-based spam/virus scanning
رابط بین Postfix و SpamAssassin و آنتی ویروس ClamAV برای اسکن محتوای ایمیل‌ها از نظر ویروس و هرزنامه

SpamAssassin

Content-based spam scanner
اسکن محتوای ایمیل‌ها برای شناسایی هرزنامه‌ها

ClamAV

Virus scanner
اسکن ویروس

Roundcube

Webmail )
نرم‌افزار مدیریت ایمیل تحت وب به زبان پی‌اچ‌پی

SOGo Groupware

A groupware which provides calendar (CalDAV), contact (CardDAV), tasks and ActiveSync services
نرم‌افزارهای جانبی جهت پشتیبانی از تقویم، مدیریت مخاطبان، فعالیت‌ها و ActiveSync

Fail2ban

Scans log files and bans IPs that show the malicious signs — too many password failures, seeking for exploits, etc
بررسی فایل‌های log جهت مسدودسازی IP ها و اکانت‌هایی که ورود ناموفق داشته‌اند.

Awstats

Apache and Postfix log analyzer
نرم‌افزار تحلیل و آمار سرویس‌دهنده وب و ارسال‌کننده ایمیل

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

لازم است یک سرور Minimal که صرفا SSH Server بر روی آن نصب است در اختیار داشته باشید، به منظور عدم وجود اختلال در نصب بهتر است هیچ برنامه‌ای بر روی این سرور نصب نشده باشد.

1- بررسی Hostname

سرور باید حتما دارای یک نام FQDN باشد. جهت مشاهده:

$ hostname -f
mx.zagrio.com

در RHEL/CentOS/SL نسخه ۶ در فایل زیر:

/etc/sysconfig/network
HOSTNAME=mx.zagrio.com

در نسخه ۷ در فایل

/etc/hostname
mx.zagrio.com

و در فایل
/etc/hosts جهت اتصال IP ها به نامهای سرور

127.0.0.1 mx.zagrio.com mx localhost localhost.localdomain

پس از تغییر با دستور زیر بررسی کنید:

$ hostname -f
mx.zagrio.com

2- غیرفعال‌سازی SELinux در Centos/RHEL

فایل /etc/selinux/config را ویرایش و مقدار ذیل را جایگزین کنید:

SELINUX=disabled

و برای غیرفعال‌سازی فوری آن بدون نیاز به ری‌استارت دستور زیر را اجرا کنید:

# setenforce 0

3- فایل نصب در زمان نگارش این مقاله به شرح ذیل است، می‌توانید از صفحه دانلود آخرین نسخه را دانلود کنید و با دستورات ذیل آن را نصب نمائید:

# wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.9.5-1.tar.bz2
# cd /root/
# tar xjf iRedMail-0.9.5-1.tar.bz2
# cd /root/iRedMail-x.y.z/
# bash iRedMail.sh<br />

 

4- سپس مراحل نصب را مطابق تصاویر زیر به پیش ببرید.

 

 

5- در این قسمت محل ذخیره‌سازی ایمیل‌ها را مشخص کنید.

 

6- در این مرحله سرویس‌دهنده وب را انتخاب نمائید.

 

7- در این قسمت بانک اطلاعاتی مورد نظر خود را انتخاب کنید.

 

8- در این قسمت باید نام دامنه‌ای که مد نظرتان است را وارد نمائید.

 

9- در این قسمت رمز عبور postmaster خود را وارد نمائید. با این ایمیل به عنوان می‌توانید سیستم را مدیریت نمائید.

 

 

10- نرم‌افزارهای جانبی مورد نیاز خود را انتخاب نمائید.

 

11- در این قسمت اطلاعات نهایی را مشاهده و تایید نمائید تا عملیات نصب آغاز شود.

 

12- پس از نصب حتما موارد زیر را بررسی کنید.

13- فایل /root/iRedMail-x.y.z/iRedMail.tips دارای محتوای مورد نیاز شما در خصوص مسیر URL ها، مسیر دسترسی مدیریت، مسیر LOG ها و .. است که بایدحتما توسط شما مطالعه شود.

14- تنظیمات DNS خود را انجام دهید.

15- اکیدا پیشنهاد می‌شود به منظور حفظ امنیت ارتباطات خود یک گواهینامه امنیتی SSL برای خود تهیه و نصب نمائید.

16- مسیر ایمیل تحت وب: https://your_server/mail

17- مسیر پنل مدیریت: httpS://your_server/iredadmin

18- مسیر آمارگیر: httpS://your_server/awstats/awstats.pl?config=web (or ?config=smtp for SMTP traffic log)

CentOS 7: آموزش نصب Apache ،MariaDB و PHP

4.5kviews

در این مقاله نحوه نصب وب سرور آپاچی (آخرین نسخه)، بانک اطلاعاتی ماریا دی‌بی (آخرین نسخه) و پی‌اچ‌پی (آخرین نسخه) را به همراه ماژول‌های آن روی سیستم عامل‌های CentOS 7 با استفاده از مخزن EPEL و دستور YUM آموزش خواهیم داد.

Install-LAMP

آپاچی (Apache) چیست؟

آپاچی یک وب سرور HTTP متن باز رایگان است که روی تمامی توزیع‌های لینوکس و همچنین سیستم عامل ویندوز قابل نصب و اجراست. وب سرور آپاچی توانایی سرویس‌دهی به صفحات برنامه‌نویسی شده (.htm .php .pl .cgi .js) و موارد بسیاری دیگر را دارد. بر اساس آمارهای به دست آمده در اسفند ماه ۱۳۹۱ حدود ۶۵٫۲۴% دامنه‌های وب‌سایت‌های توسط آپاچی سرویس‌دهی می‌شوند.

ماریا دی بی (MariaDB) چیست؟

MariaDB یکی از محبوب‌ترین رابط‌های بانک‌های اطلاعاتی در جهان محسوب می‌شود که روی هر نوع سروری قابل اجراست توانایی دادن دسترسی چندین کاربر به چندین بانک اطلاعاتی را دارد. MariaDB نام جدید MySQL برای سرورهای CentOS 7 است.

پی اچ پی (PHP) چیست؟

یک زبان برنامه‌نویسی سرور محور متن باز رایگان است که از بهترین گزینه‌ها جهت گسترش صفحات وب است. این مفسر قابلیت تولید سایت‌های پویا (Dynamic) را داراست.

مرحله اول: نصب دایرکتوری مخزن EPEL

rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

 

مرحله دوم: نصب Apache ،MariaDB و PHP

yum -y install mariadb-server mariadb httpd php

مرحله سوم: نصب ماژول های PHP

yum -y install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel mod_ssl mod_security php-ioncube-loader php-mcrypt php-suhosin php-xml php-magickwand libexif php-imap openssl zip zlib

مرحله چهارم: فعال/غیرفعال کردن سرویس‌های Apache و MySQL

## Enable Apache and MariaDB on Run-Levels ##
## Apache Commands ##
systemctl start httpd.service
systemctl enable httpd.service
## MariaDB Commands ##
systemctl start mariadb.service
systemctl enable mariadb.service

مرحله پنجم: تنظیمات MariaDB

با استفاده از دستور زیر نسبت اعمال تنظیمات MariaDB اقدام کنید.

mysql_secure_installation

مرحله ششم: تنظیمات Firewall

با استفاده از دستورات زیر پورت ۸۰ و ۴۴۳ که مربوطه به HTTP و HTTPS است را در فایروال آزاد می‌کنیم.

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

مرحله هفتم: تنظیمات Hostname

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

hostnamectl set-hostname centos7.zagrio.com

مرحله هشتم: کنترل نصب Apache ،MySQL و PHP

۱- یک فایل با نام phpinfo.php بسازید، موارد زیر را درون آن قرار دهید و در مسیر /var/www/html/phpinfo.php ذخیره کنید.

<php
phpinfo ();
?>

۲- حالا بوسیله مرورگر خود آدرس http://SERVER_IP/phpinfo.php را باز نمائید. خروجی شما مانند صفحه زیر خواهد بود.

Install LAMP

در صورتی که با مشکلی مواجه شدید در تماس گرفتن با ما تردیدی نکنید.