در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

آموزش لینوکس : مدیریت سیستم : قسمت 14 : آشنایی با IPTables

سلام و وقت بخیر. در این جلسه میخوایم کانفیگ فایروال لینوکس یعنی iptable رو یاد بگیریم. در کل میتوان کارهایی که فایروال انجام میدهد را در 5 دست کلی تقسیم بندی کرد.

1- NAT

2- PAT

3- Filtering

4- QOS

5- Mangling

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

برای اینکه ببینید iptable در چه وضعیتی قرار داره دستور زیر را وارد کنید.

[root@centos6 ~]# service iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

[root@centos6 ~]# 

اگه iptables روشن نبود با دستور service iptables start روشنش کنید. اگر سیستمتون آموزشیه و چیزی به غیر از خروجی بالا میبینید، دستور iptables -F رو بزنید تا تمام rules های فایروال پاک بشه. میخوایم از صفر شروع کنیم فایروال رو کانفیگ کنیم. به خروجی دستورات زیر دقت کنید

[root@centos6 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

[root@centos6 ~]# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

[root@centos6 ~]# iptables -L -t mangle
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

[root@centos6 ~]# iptables -L -t filter
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@centos6 ~]# 

اگر دستور iptables رو با سویچ L- بزنم بصورت پیش فرض جدول filtering رو نشون میده. بعدش با سویچ t- جدول های دیگه رو چاپ کردم. اینا جداول پیش فرض iptable هستن که نمیتونید پاکشون کنید ولی میتونید در موارد خاص برای خودتون جدول هم بسازید ولی در بیشتر موارد با همین جدولا کارمون راه میفته. بیشتر در محیط های enterprise که لود خیلی زیاده توجیه داره جدول جدا نوشتن که سرعت پاسخ گویی سیستم پایین نیاد و یا بخوایم برای یک شرایط خاص تدابیر خاصی درنظر بگیریم.

هر کذوم از این جدول ها chain دارن. توی chain ها rule ها رو مینویسبم. chain ها یه جور طبق بندی محسوب میشه. الان جدول filter من 3 تا chain داره به نام های input و output و forwarding . توی این chain ها policy های دسترسی نوشته میشه. هر پکتی وارد سیستم میشه از این policy ها عبور میکنه. در کل 2 استراتژیک کلی برای کانفیگ فایروال داریم. اول اینکه همه چی بسته باشه، چیزایی که میخوام رو باز میکنم. دوم اینکه همه چی باز باشه و چیزایی که نمیخوام رو میبیندم. مورد اول معمولا استغاده میشه. کلا همه چی رو جلوشو میگریم، بعدش تک تک به سرویس هایی که راه اندازی میکنم، اجازه دسترسی میدم.

این 3 تا chain که گفتم از اسمش مشخصه که روی چی حساسن. حالا میام استراتژی مورد اول رو پیاده سازی میکنم. همه چی رو میبندم. خود جلوی جیزی رو گرفتن 2 حالت داره، reject کردن و drop کردن. فرقشون اینه که drop انجام بشه log نمیندازه ولی reject اتفاق بیفته log میندازه.الان policy پیش فرض accept هست، ینی همه چی بازه. حالا با دستور زیر policy رو drop میکنم.

[root@centos6 ~]# iptables -P INPUT DROP
[root@centos6 ~]# iptables -P OUTPUT DROP
[root@centos6 ~]# iptables -P FORWARD DROP
[root@centos6 ~]# iptables -L -t filter
Chain INPUT (policy DROP)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
[root@centos6 ~]# 

الان دیگه حتی پینگ هم نمیشه کرد. گفتم اگر خواستیم میتونیم chain درست کنیم علاوه بر chain های پیش فرض. حالا اگه 1000 خط rule نوشته باشم، بیخود همه هزار خط خونده میشه تا برسه مثلا به خطی که ssh رو اجازه عبور میده. در این مورد میام یه chain درست میکنم واسه ssh و به جای اینکه اون هزار خط چک بشه، میگم اگه مثلا پورت مقصدت 22 هستش jump کن توی chain مربوط به ssh. حالا میخوام همین کار رو بکنم. ابتدا یک chain درست میکنم و میگم هر چی مربوط به پورت 22 بود jump کنه توی این chain. توی chain میگم چه کار کنه باهاش، مثلا اجازه بده یا هرچی.

SSH

@centos6 ~]# iptables -N SSH_RULES
[root@centos6 ~]# iptables -A INPUT -p tcp --dport 22 -j SSH_RULES
[root@centos6 ~]# iptables -A OUTPUT -p tcp --sport 22 -j SSH_RULES
[root@centos6 ~]# iptables -A SSH_RULES -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
[root@centos6 ~]# iptables -A SSH_RULES -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
[root@centos6 ~]# iptables -L -t filter
Chain INPUT (policy DROP)
target     prot opt source               destination         
SSH_RULES  tcp  --  anywhere             anywhere            tcp dpt:ssh 

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
SSH_RULES  tcp  --  anywhere             anywhere            tcp spt:ssh 

Chain SSH_RULES (2 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh state NEW,ESTABLISHED 
ACCEPT     tcp  --  anywhere             anywhere            tcp spt:ssh state ESTABLISHED 
[root@centos6 ~]# 

خط اول یک chain درست کردم. اسمش هر چی میتونه باشه. خط دوم توی جدول input گفتم که هر چی اومد و پورت مقصدش 22 بود، به ssh-rules مراجعه کن. خط بعد هم همینکار واسه جدول output یعنی هر چی خواست خارج بشه که پورت مبداش 22 بود به ssh-rules مراجعه کن. سویچ A- یعنی append و j- یعنی jump و p- یعنی پروتکل. خط سوم و چهارم توی ssh-rules اضافه شده. یکی برای ورود و یکی برای خروج. میتونستم interface رو هم محدود کنم مثلا برای ورود مینوشتم i- eth1 یعنی فقط از eth1 و برای خروج هم مث همین فقط با سویچ o-. اینطوری دیگه از هیچ اینترفیس دیگه ای نمیشد ssh زد. اگر هم میخواستید که از یک شبکه خاص فقط بشه ssh زد، با سویچ s- و رنج آی پی، اون شبکه رو مجاز میکردیم.

حالا هر چی کد نوشتیم توی حافظه جاری سیستم قرار داره و اگه سیستم ریست بشه یا سرویس رو restart کنیم، همه چی پاک میشه. برای ذخیره دستور زیر را وارد کنید. به مسیر کانفیگ فایل پیش فرض دقت کنید.

[root@centos6 ~]# /etc/init.d/iptables save
iptables:    Saving firewall rules to  /etc/sysconfig/iptables:         [  OK  ]
[root@centos6 ~]# 

HTTP HTTPS

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

[root@centos6 ~]# iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
[root@centos6 ~]# iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
[root@centos6 ~]# iptables -L -t filter
Chain INPUT (policy DROP)
target     prot opt source               destination         
SSH_RULES  tcp  --  anywhere             anywhere            tcp dpt:ssh 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http state NEW,ESTABLISHED 

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
SSH_RULES  tcp  --  anywhere             anywhere            tcp spt:ssh 
ACCEPT     tcp  --  anywhere             anywhere            tcp spt:http state ESTABLISHED 

Chain SSH_RULES (2 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh state NEW,ESTABLISHED 
ACCEPT     tcp  --  anywhere             anywhere            tcp spt:ssh state ESTABLISHED 
[root@centos6 ~]# 

حالا یکم سویچ هاشو هم یاد بگیریم، با سویچ R- میشه یک خط رو جایگزین کرد. میتونید insert هم بکنید با سویچ I-

[root@centos6 ~]# iptables -R OUTPUT 2 -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED -j ACCEPT
[root@centos6 ~]# iptables -R INPUT 2 -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
[root@centos6 ~]# 
[root@centos6 ~]# iptables -L -t filter
Chain INPUT (policy DROP)
target     prot opt source               destination         
SSH_RULES  tcp  --  anywhere             anywhere            tcp dpt:ssh 
ACCEPT     tcp  --  anywhere             anywhere            multiport dports http,https state NEW,ESTABLISHED 

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
SSH_RULES  tcp  --  anywhere             anywhere            tcp spt:ssh 
ACCEPT     tcp  --  anywhere             anywhere            multiport sports http,https state ESTABLISHED 

Chain SSH_RULES (2 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh state NEW,ESTABLISHED 
ACCEPT     tcp  --  anywhere             anywhere            tcp spt:ssh state ESTABLISHED 
[root@centos6 ~]# 

ICMP

حالا میخوام ما بتونیم بقیه رو پینگ کنیم ولی بقیه نتونن ما رو پینگ کنن.

[root@centos6 ~]# iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
[root@centos6 ~]# iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
[root@centos6 ~]# ping 192.168.1.33
PING 192.168.1.33 (192.168.1.33) 56(84) bytes of data.
64 bytes from 192.168.1.33: icmp_seq=1 ttl=128 time=1.61 ms
64 bytes from 192.168.1.33: icmp_seq=2 ttl=128 time=0.544 ms
64 bytes from 192.168.1.33: icmp_seq=3 ttl=128 time=0.450 ms
^C
--- 192.168.1.33 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2871ms
rtt min/avg/max/mdev = 0.450/0.870/1.618/0.530 ms
[root@centos6 ~]# 

میتونم از توی centos که روی vm نصبه ویندوزم رو پینگ کنم ولی از روی ویندوزم نمیتونم centos رو پینگ کنم.

آموزش لینوکس : مدیریت سیستم : قسمت 14 : آشنایی با IPTables

اگه خواستید پینگ از بیرون باز باشه:

[root@centos6 ~]# iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
[root@centos6 ~]# iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

عکس اینو دیگه نمیزارم جا میگیره!!!

گفتم چطوری تنظیمات iptable رو باید ذخیره کنید تا با راه اندازی محدد ، تنظیمات حفظ بشن. مسیر جایی که ذخیره میشد رو هم دیدید در خروجی دستور. حالا اگه خواستم یه backup برای خودم بگیرم دستور زیر رو میزنم و اگه خواستم از backup برای restore کردن iptable استفاده کنم، دستور بعدیشو.

[root@centos6 ~]# iptables-save > ~/iptable.backup
[root@centos6 ~]# iptables-restore ~/iptable.backup 
[root@centos6 ~]# 

صفحه manual رو حتما بخونید. تمام سویچ ها برای insert و delete و flush کردن و ... رو کامل نوشته. یادتون باشه که با دستور iptable و سویچ F- تمام تنظیمات پاک میشه و از کانفیگ پیش فرض بالا میاد. در ادامه یک سری از دستورات مهم iptable رو نوشتم.

1. Delete Existing Rules

iptables -F  (or)  iptables --flush

2. Set Custome Chain Policies

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

3. Block a Specific ip-address

BLOCK_THIS_IP="x.x.x.x"
iptables -A INPUT -s "$BLOCK_THIS_IP" -j DROP

iptables -A INPUT -i eth0 -s "$BLOCK_THIS_IP" -j DROP
iptables -A INPUT -i eth0 -p tcp -s "$BLOCK_THIS_IP" -j DROP

4. Allow ALL Incoming SSH

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

5. Allow Incoming SSH only from a Sepcific Network

iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

6. Allow Incoming HTTP and HTTPS

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

7. Combine Multiple Rules Together using MultiPorts

iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -m state --state ESTABLISHED -j ACCEPT

8. Allow Outgoing SSH

iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

9. Allow Outgoing SSH only to a Specific Network

iptables -A OUTPUT -o eth0 -p tcp -d 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

10. Allow Outgoing HTTPS

iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

11. Load Balance Incoming Web Traffic

iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.101:443
iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 1 -j DNAT --to-destination 192.168.1.102:443
iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 2 -j DNAT --to-destination 192.168.1.103:443

12. Allow Ping from Outside to Inside

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

13. Allow Ping from Inside to Outside

iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

14. Allow Loopback Access

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

15. Allow Internal Network to External network.

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

16. Allow outbound DNS

iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT

17. Allow NIS Connections

iptables -A INPUT -p tcp --dport 111 -j ACCEPT
iptables -A INPUT -p udp --dport 111 -j ACCEPT
iptables -A INPUT -p tcp --dport 853 -j ACCEPT
iptables -A INPUT -p udp --dport 853 -j ACCEPT
iptables -A INPUT -p tcp --dport 850 -j ACCEPT
iptables -A INPUT -p udp --dport 850 -j ACCEPT

iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT

19. Allow MySQL connection only from a specific network

iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT

20. Allow Sendmail or Postfix Traffic

iptables -A INPUT -i eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT

21. Allow IMAP and IMAPS

iptables -A INPUT -i eth0 -p tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 143 -m state --state ESTABLISHED -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 993 -m state --state ESTABLISHED -j ACCEPT

22. Allow POP3 and POP3S

iptables -A INPUT -i eth0 -p tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT

The following rules allow POP3S access.

iptables -A INPUT -i eth0 -p tcp --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 995 -m state --state ESTABLISHED -j ACCEPT

23. Prevent DoS Attack

iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

24. Port Forwarding

iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 --dport 422 -j DNAT --to 192.168.102.37:22

iptables -A INPUT -i eth0 -p tcp --dport 422 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 422 -m state --state ESTABLISHED -j ACCEPT

25. Log Dropped Packets

iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7

iptables -A LOGGING -j DROP

بسیار خوب. این دوره آموزشی هم تمام شد. امیدوارم مفید بوده باشه. تا دوره بعد خدانگهدار.

پایان

نویسنده : سید محمد باقر موسوی

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

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است

#دوره_آموزشی_linux_فارسی #نوشتن_shell_script_در_لینوکس #آموزش_لینوکس_فارسی #آموزش_linux_مقدماتی #آموزش_shell_scripting #آموزش_دستورات_مقدماتی_لینوکس #آموزش_shell_scripting_در_لینوکس #دوره_آموزشی_shell_scripting_در_لینوکس #نوشتن_یک_shell_script_ساده
عنوان
1 آموزش لینوکس : مدیریت سیستم : قسمت 1 : Shell سفارشی : متغیرها رایگان
2 آموزش لینوکس : مدیریت سیستم قسمت 2 : Shell سفارشی : تنظیمات Shell رایگان
3 آموزش لینوکس : مدیریت سیستم : قسمت 3 : Shell سفارشی : Aliases رایگان
4 آموزش لینوکس : مدیریت سیستم : قسمت 4: Shell سفارشی: Login Scripts رایگان
5 آموزش لینوکس : مدیریت سیستم : قسمت 5 : ایجاد اسکریپت رایگان
6 آموزش لینوکس : مدیریت سیستم : قسمت 5 : Read User Input رایگان
7 آموزش لینوکس : مدیریت سیستم : قسمت 6 : IF Statement رایگان
8 آموزش لینوکس : مدیریت سیستم : قسمت 7 : Case Statement رایگان
9 آموزش لینوکس : مدیریت سیستم : قسمت 8 : Loops رایگان
10 آموزش لینوکس : مدیریت سیستم : قسمت 9 : Managing Users رایگان
11 آموزش لینوکس : مدیریت سیستم : قسمت 10 : Managing Groups رایگان
12 آموزش لینوکس : مدیریت سیستم : قسمت 11 : ارتباط با اکتیودایرکتوری رایگان
13 آموزش لینوکس : مدیریت سیستم : قسمت 12 : OpenLDAP رایگان
14 آموزش لینوکس : مدیریت سیستم : قسمت 13 : Cron AnaCron و Batch رایگان
15 آموزش لینوکس : مدیریت سیستم : قسمت 14 : آشنایی با IPTables رایگان
زمان و قیمت کل 0″ 0
1 نظر
AZARAKHSH

سلام دوست عزیز

واقعا عالی و کاربردی. ممنون بابت زحماتت

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

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