أنشئ واجهة HTML 5 RDP / SSH باستخدام Guacamole على Ubuntu 16.04 LTS

المقدمة

الهدف من هذا البرنامج التعليمي هو التخلص من اتصالات SSH العامة واتصالات RDP العامة. من خلال وضع كل هذا خلف عميل HTML5 مناسب جدًا ، يمكننا إضافة طبقة من الأمان للوصول إلى السحابة الخاصة بنا.

يسجل Guacamole أيضًا أي وصول عن بُعد ، لذلك يصبح الوصول غير المصرح به أكثر قابلية للتتبع.

ملاحظة: بالنسبة لـ Let's encrypt (الخيار B) ، نحتاج إلى اسم مجال. إذا لم يكن لديك واحد ، يمكنك تخطي هذه الخطوة وتنفيذ الخيار أ .

الخطوة 1 - إعداد النظام

ابدأ بتدوير VPS في منطقة Vultr المطلوبة. و 1024 MBسوف VPS يكون كافيا، وأطعمة نباتية ليست مطالبة.

تمكين IP الخاص

ابدأ بتمكين الشبكة الخاصة على VPS. هذا موثق جيدًا هنا

تحضير جدار الحماية

دعنا أولاً نصلب الصورة قليلاً. ولنتحقق مما إذا كانت الصورة التي تم توفيرها قد تم ufwتمكينها.

root@vultr:~# ufw status
Status: inactive

يتم تعطيله افتراضيًا ، لذلك سنحتاج إلى إضافة بعض القواعد.

  • القاعدة 1: ssh: منفذ TCP 22
  • القاعدة 2: http: منفذ TCP 8080 (قاعدة اختبار مؤقتة لـ Guacamole)

لنبدأ بتكوين هذه المنافذ.

ufw allow 22/tcp
ufw allow 8080/tcp

بعد ذلك قم بتمكين جدار الحماية.

ufw enable

لا تقلق إذا تلقيت تحذيرًا. إذا قمت بإضافة منفذ 22، فلن تواجه أي مشاكل.

root@vultr:~# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

بمجرد التمكين ، اطلب حالة جدار الحماية وسنرى تكوين منفذنا.

ufw status

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
8080/tcp                   ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
8080/tcp (v6)              ALLOW       Anywhere (v6)

الخطوة 2 - تثبيت Guacamole

تركيب جميع التبعيات

قبل أن نبدأ التثبيت ، نحتاج إلى تحديث الريبو وترقيته. مع حزم مثل Tomcat، التي تستند إلى Java ، هناك دفق مستمر من الأخطاء المكتشفة وإصلاحات الأخطاء المرتبطة بها. عادة ما يكون من الأفضل القيام بذلك أولاً بدلاً من التسرع مباشرة في التثبيت.

apt-get update
apt-get -y upgrade 

التالي هو كل التبعيات. يحتوي Guacamole على عدد قليل منهم. (يمكن العثور على قائمة كاملة بالتبعيات ووظيفتها هنا ). دعنا نكمل بتثبيت كل منهم.

apt-get -y install build-essential tomcat8 freerdp libcairo2-dev libjpeg-turbo8-dev libpng12-dev libossp-uuid-dev libavcodec-dev libavutil-dev libfreerdp-dev libpango1.0-dev libssh2-1-dev libtelnet-dev libvorbis-dev libwebp-dev mysql-server mysql-client mysql-common mysql-utilities libswscale-dev libvncserver-dev libpulse-dev libssl-dev

عندما يطلب المثبت كلمة مرور جذر MySQL ، قدم واحدة وتأكد من تدوينها. سنستخدم كلمة المرور هذه لاحقًا لإنشاء قاعدة بيانات Guacamole.

تنزيل Guacamole

الآن بعد أن أصبح لدينا كل تبعياتنا ، يمكننا الاستمرار في تنزيل Guacamole. يأتي Guacamole نفسه في الغالب في شكل مصدر ، وليس ثنائي. سننتقل أولاً إلى /tmpالمجلد لتجنب ازدحام أجزاء أخرى من القرص. ثم قم بتنزيل كافة التعليمات البرمجية المصدر.

هناك أربعة ملفات مصدر / ثنائية للتحميل:

  • guacamole-0.9.13-incubating.war: هذا هو تطبيق الويب. A WARالملف هو حزمة ويب مضغوط توفير موقع واحد استضافتها على موقع على شبكة الانترنت القط
  • guacamole-server-0.9.13-incubating.tar.gz: سيوفر هذا الملف guacdتطبيق الواجهة الخلفية . هذا يخلق تيارات من خلال RDP و SSH.
  • guacamole-auth-jdbc-0.9.13-incubating.tar.gz: سنستخدم قاعدة بيانات MySQL محلية ، لذا نحتاج إلى JDBCالموصل المرتبط بها .
  • mysql-connector-java-5.1.43.tar.gz: بدون مشغل قاعدة بيانات ، موصل JDBC لا يفعل شيئًا. يتم توفير هذا الملف من قبل فريق MySQL أنفسهم.

ملاحظة: تم حل التنزيلات إلى أقرب خادم .

cd /tmp
wget http://apache.belnet.be/incubator/guacamole/0.9.13-incubating/binary/guacamole-0.9.13-incubating.war
wget http://apache.cu.be/incubator/guacamole/0.9.13-incubating/source/guacamole-server-0.9.13-incubating.tar.gz
wget http://apache.cu.be/incubator/guacamole/0.9.13-incubating/binary/guacamole-auth-jdbc-0.9.13-incubating.tar.gz
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.43.tar.gz

بمجرد تنزيل كل هذه الملفات ، قم باستخراج الملف tar.gz.

tar -xzvf guacamole-server-0.9.13-incubating.tar.gz
tar -xzvf guacamole-auth-jdbc-0.9.13-incubating.tar.gz
tar -xzvf mysql-connector-java-5.1.43.tar.gz

تجميع جواكامول

الآن بعد أن استخرجنا جميع التعليمات البرمجية المصدر ، لنقم بإنشاء بعض guacamoleالمجلدات ، سيتم استخدامها من قبل تطبيق guacamole وتبعياته.

mkdir -p /etc/guacamole/lib
mkdir -p /etc/guacamole/extensions

كل شيء جاهز لثنائيات Guacamole الجديدة. يمكننا الآن بدء عملية التجميع والتثبيت. انتقل إلى مجلد خادم Guacamole المستخرج.

cd /tmp/guacamole-server-0.9.13-incubating

قم بتكوين التطبيق أيضًا لإنشاء init.dملف لتشغيله كخدمة لاحقًا.

./configure --with-init-dir=/etc/init.d

يجب أن ينتهي الأمر بـ "نعم" على كافة المكتبات والبروتوكولات. إذا لم يكن الأمر كذلك ، فارجع وتحقق من الأمر apt-get للتأكد من عدم تفويت أي حزمة.

------------------------------------------------
guacamole-server version 0.9.13-incubating
------------------------------------------------

   Library status:

     freerdp ............. yes
     pango ............... yes
     libavcodec .......... yes
     libavutil ........... yes
     libssh2 ............. yes
     libssl .............. yes
     libswscale .......... yes
     libtelnet ........... yes
     libVNCServer ........ yes
     libvorbis ........... yes
     libpulse ............ yes
     libwebp ............. yes

   Protocol support:

      RDP ....... yes
      SSH ....... yes
      Telnet .... yes
      VNC ....... yes

   Services / tools:

      guacd ...... yes
      guacenc .... yes

   Init scripts: /etc/init.d

Type "make" to compile guacamole-server.

بعد ذلك قم بتجميع خادم Gucamole وتثبيته.

make && make install

بمجرد الانتهاء من كل هذا ، قم بتشغيل ldconfigلإعادة بناء مسار البحث للمكتبات التي تمت إضافتها.

ldconfig

تابع باستخدام systemctlالإعداد guacd(Guacamole Daemon) لبدء التشغيل.

systemctl enable guacd

الثنائيات Guacamole مثبتة الآن. الآن سنقوم بتجهيز تطبيق الويب لـ Tomcat.

ابدأ بنقل warالملف إلى guacamoleالمجلد الذي أنشأناه للتو ، بمجرد القيام بذلك ، قم بإنشاء ارتباط منطقي في دليل catcat للإشارة إلى ملفنا war.

cd /tmp
mv guacamole-0.9.13-incubating.war /etc/guacamole/guacamole.war
ln -s /etc/guacamole/guacamole.war /var/lib/tomcat8/webapps/

ثم نحتاج إلى موصل mysql و JDBC. برنامج تشغيل JDBC مطلوب في extensionsالمجلد ، الموصل في libالمجلد.

cp mysql-connector-java-5.1.43/mysql-connector-java-5.1.43-bin.jar /etc/guacamole/lib/
cp guacamole-auth-jdbc-0.9.13-incubating/mysql/guacamole-auth-jdbc-mysql-0.9.13-incubating.jar /etc/guacamole/extensions/

تكوين Guacamole و Tomcat

بمجرد وجود الموصل و JDBC في مكانه ، نحتاج إلى تحرير tocamt8الملف. يحتوي هذا الملف على الكثير من tomcat8الإعدادات ، وفي حالتنا نحتاج إلى إضافة GUACAMOLE_HOMEالمتغير في نهاية الملف.

nano /etc/default/tomcat8

ألحق بما يلي.

GUACAMOLE_HOME=/etc/guacamole

إنشاء قاعدة البيانات

التالي هو إنشاء قاعدة البيانات. يخزن Guacamole تكوين اتصاله في قاعدة بيانات ، وليس داخل ملف.

قم بتسجيل الدخول باستخدامه root passwordأثناء التثبيت.

mysql -u root -p

الخطوة الأولى هي إنشاء قاعدة بيانات تسمى guacamole_db.

create database guacamole_db;

ثم قم بتشغيل create userالأمر. سيؤدي هذا إلى إنشاء مستخدم بكلمة مرور mysupersecretpassword، لن يتمكن هذا المستخدم من الاتصال منه إلا localhost.

create user 'guacamole_user'@'localhost' identified by "mysupersecretpassword";

منح CRUDعمليات لهذا المستخدم لقاعدة البيانات guacamole_db.

GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'localhost';

امتيازات الشطف والخروج من الصدفة.

flush privileges;
exit

انتهي بإضافة مخطط Guacamole إلى قاعدة البيانات التي تم إنشاؤها حديثًا.

cat /tmp/guacamole-auth-jdbc-0.9.13-incubating/mysql/schema/*.sql | mysql -u root -p guacamole_db

بمجرد القيام بذلك ، نحتاج إلى تحرير guacamole.propertiesالملف. يحتوي هذا الملف على تكوين خادم MySQL الذي أنشأناه مؤخرًا.

nano /etc/guacamole/guacamole.properties

إلحاق تفاصيل اتصال MySQL وبيانات الاعتماد.

mysql-hostname: localhost
mysql-port: 3306
mysql-database: guacamole_db
mysql-username: guacamole_user
mysql-password: mysupersecretpassword

انتهي بإنشاء رابط رمزي لمجلد مشاركة catcat ، حيث WARسيبحث الملف في هذه الخصائص.

ln -s /etc/guacamole /usr/share/tomcat8/.guacamole

اختبار الإعداد

إنهاء بإعادة تشغيل tomcat8الخادم وبدء البرنامج guacdالخفي.

service tomcat8 restart
service guacd start

يمكنك التحقق باستخدام الأمر status.

service tomcat8 status
service guacd status

الآن يمكنك التصفح إلى VPS الخاص بك على المنفذ 8080

http://<yourpublicip>:8080/guacamole/

استخدم اسم المستخدم guacadminونفس كلمة المرور guacadmin. سيمنحك هذا الوصول إلى خادم Guacamole فارغ.

انقر في الزاوية اليمنى العليا من اسم المستخدم الخاص بك guacadminوحدد Settings. بمجرد أن تكون في صفحة الإعدادات ، انتقل إلى Usersعلامة التبويب وحدد المستخدم guacadmin.

الآن قم بتغيير كلمة المرور الخاصة بك إلى شيء آخر أو قم بإنشاء مستخدم مسؤول جديد واحذف كلمة المرور الافتراضية guacadmin.

الخطوة 3 - الضبط والتنظيف

هذه هي الخطوات النهائية: التنظيف بعد الانتهاء.

حذف التعليمات البرمجية المصدر والثنائيات التي تم تنزيلها من /tmpالمجلد.

rm -rf /tmp/guacamole-*
rm -rf /tmp/mysql-connector-java-*

أيضًا ، اجعل تطبيق الويب Guacamole هو التطبيق الافتراضي. في النظام البيئي لـ catcat ، يكون التطبيق الذي يحصل على ROOTالمجلد هو التطبيق الذي يتم تشغيله افتراضيًا عند الوصول إلى موقع الويب.

حذف ROOTالعنصر النائب القديم .

rm -rf /var/lib/tomcat8/webapps/ROOT

وقم بعمل رابط رمزي لخادم guacamole ليكون هو ROOTالوحيد.

ln -s /var/lib/tomcat8/webapps/guacamole /var/lib/tomcat8/webapps/ROOT

هذا يتطلب إعادة تشغيل القط.

service tomcat8 restart

الخطوة 4 (الخيار أ) - يعمل على HTTP فقط

  • إذا كنت لن تستخدم شهادات Let's Encrypt ولا تستخدم DNS ، فقم بتنفيذ الإجراءات في هذه الخطوة وبعد ذلك انتقل مباشرةً إلى الخطوة 6. - الخيار A
  • إذا كنت ترغب في إنشاء موقع أكثر أمانًا ولديك نظام DNS جاهز ، يمكنك تخطي ذلك والانتقال مباشرة إلى الخيار B (الخطوة 5).

قم بتحرير tomcat8/server.xmlالملف وتغيير منفذ الموصل.

nano /etc/tomcat8/server.xml

ابحث عن Connector port.

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           URIEncoding="UTF-8"
           redirectPort="8443" />

واستبدالها 8080بـ 80.

بشكل افتراضي ، لا يسمح catcat بربط المنافذ أدناه 1024. لتمكين هذا نحتاج إلى إخبار tomcat8 لإنشاء روابط مصادقة.

قم بتحرير defaultملف tomcat8 وألغ تعليق AUTHBINDالخط واستخدم الخيارyes

nano /etc/default/tomcat8

AUTHBIND=yes

بمجرد أن يتم ذلك ، intall authbind.

apt-get install authbind

قم 80بتكوينه بحيث يمكن المطالبة بالمنفذ عن طريق tomcat8.

touch /etc/authbind/byport/80
chmod 500 /etc/authbind/byport/80
chown tomcat8 /etc/authbind/byport/80

اسمح بالمنفذ من 80خلال جدار الحماية وحذف قاعدة 8080.

ufw allow 80/tcp
ufw delete allow 8080/tcp

إعادة تشغيل القط.

service tomcat8 restart

هذا كل شيء ، الآن يجب أن يعمل Guacamole على المنفذ 80.

الخطوة 5 (الخيار B) - إعداد Nginx

تركيب وتكوين Nginx

Tomcat ليس من أفضل وأقوى التطبيقات للاستخدام certbot. لحسن الحظ Nginx. سنقوم فقط بتوكيل catcat إلى Nginx. تستخدم وظيفة certbot من خارج الصندوق على حساب التضحية بقليل من ذاكرة الوصول العشوائي.

apt-get install nginx

بمجرد التثبيت ، قم بتحرير التكوين الافتراضي.

nano /etc/nginx/sites-available/default

احذف جميع تكوينات الأمثلة وأضف التكوين التالي.

server {      
  listen 0.0.0.0:80;

  proxy_request_buffering off;
  proxy_buffering off;

  location / {
     proxy_pass http://127.0.0.1:8080;
     proxy_redirect     off;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;
  }
}

سيؤدي هذا إلى إنشاء وكيل للموقع الذي يعمل على 8080. أعد تشغيل Nginx ، وقم بتمكينه عند التمهيد.

systemctl restart nginx
systemctl enable nginx

تحقق مما إذا كان كل شيء يعمل.

systemctl status nginx

قم بتعطيل منفذ الاختبار 8080والسماح بحركة المرور على المنفذ 80.

ufw allow 80/tcp
ufw delete allow 8080/tcp

تثبيت Let's Encrypt

قبل أن نتمكن من استخدام certbot، نحتاج إلى إضافة الصحيح ppaإلى النظام الذي يحتوي على حزم سيرتبوت لدينا.

add-apt-repository ppa:certbot/certbot

اضغط على " ENTER" لقبول تغيير التكوين.

تحديث aptلتجميع الحزم الجديدة.

apt-get update

أخيرًا ، قم بتثبيت وحدة Nginx لتعيين الشهادات.

apt-get -y install python-certbot-nginx

تكوين Nginx لاستخدام الشهادات

تكوين جدار الحماية للسماح HTTPS.

ufw allow 443/tcp

قبل أن نتمكن من طلب شهادات جديدة ، نحتاج إلى اسم DNS.

nano /etc/nginx/sites-available/default

أضف server_nameالإعداد التالي .

server_name rdp.example.com;

قم بتغيير التكوين ليعكس هذا الإعداد الجديد.

server {
  server_name rdp.example.com;

  listen 0.0.0.0:80;

  proxy_request_buffering off;
  proxy_buffering off;

  location / {
     proxy_pass http://127.0.0.1:8080;
     proxy_redirect     off;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;
  }
}

تحقق مما إذا كان كل شيء يعمل وإعادة Nginx.

nginx -t
service nginx restart

الآن طلب شهادة مع سيرتبوت.

certbot --nginx -d rdp.example.com

قدم بريدك الإلكتروني ووافق على الأسئلة التي طرحها المثبت. (يمكنك اختيار " No" مشاركة البريد الإلكتروني الخاص بك بأمان .) سيسألك Certbot تلقائيًا عما يجب أن يفعله HTTPS. سنقوم باستخدام الخيار 2: redirect to HTTPS.

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

آخر شيء سنقوم به هو تحديث DHالمعلمات. هذه ، بشكل افتراضي ، ضعيفة قليلاً لمعايير 2017.

إنشاء بعض جديدة.

openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

بعد ذلك ، قم بإضافتهم إلى الموقع الافتراضي في Nginx.

nano /etc/nginx/sites-available/default

قم بإضافتها إلى تكوين الخادم.

server {
  server_name rdp.example.com;

  listen 0.0.0.0:80;
  ssl_dhparam /etc/ssl/certs/dhparam.pem;

  proxy_request_buffering off;
  proxy_buffering off;

  location / {
     proxy_pass http://127.0.0.1:8080;
     proxy_redirect     off;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;
  }
}

تحقق من وجود أخطاء.

nginx -t

قم بتطبيق التغييرات بإعادة تشغيل الخادم.

service nginx restart

تنظيف 8080القاعدة القديمة

ufw delete allow 8080/tcp

ملاحظة: إذا كان يجب أن تتلقى "502 Bad Gateway" ، فستحتاج إلى إعادة تشغيل tomcat8 .

service tomcat8 restart

تجديد الشهادات تلقائيًا

دعونا تشفير الشهادات تتطلب التجديد. يمكننا إنشاء وظيفة كرون لهذا. ابدأ بتحرير ملف crontab.

crontab -e

أضف السطر التالي.

00 2 * * * /usr/bin/certbot renew --quiet

سيتحقق هذا في الساعة 2:00 صباحًا إذا كانت هناك أي شهادات تتطلب التجديد وسيتم تجديدها إذا تطلبت ذلك.

الخطوة 6 - اختبار كل شيء

انتقل إلى خادم Guacamole (إما http://<ip>/أو https://rdp.example.com)).

لهذا الاختبار ، ستحتاج إلى حالتين إضافيتين: أحدهما Linux VM وآخر Windows Server 2012 R2 مع تمكين IP خاص على كليهما.

إضافة اتصال Windows RDP

انقر على " username" في الزاوية اليمنى العليا وانتقل إلى " Settings". ثم انتقل إلى " Connections" وحدد " New Connection".

املأ الإعدادات التالية (يمكنك ترك الإعدادات الافتراضية الأخرى).

Name: Windows Server 2012 R2
Location: ROOT
Protocol: RDP
Maximum number of connections: 1
Maximum number of connections per user: 1
Parameters > Hostname: 10.99.0.12
Parameters > Port: 3389
Username: Administrator
Password: <password> (provided by Vultr)
Security mode: Any
Ignore server certificate: <checked>

اضغط على " save" وارجع إلى الشاشة الرئيسية. الآن يمكنك النقر على Windows Server 2012 R2اتصال " " وسيصل هذا الجهاز إلى RDP.

إضافة اتصال Linux SSH

اضغط على " Ctrl+Shift+Alt". سيؤدي ذلك إلى ظهور القائمة على الجانب. هنا يمكنك فصل أو تنفيذ مهام إدارية أخرى لـ Guacamole.

انقر usernameعلى الجزء العلوي في القائمة وانتقل إلى " Settings". ثم انتقل إلى Connectionsعلامة التبويب " New Connection" وحدد " ".

املأ الإعدادات التالية (يمكنك ترك الإعدادات الافتراضية الأخرى).

Name: Linux
Location: ROOT
Protocol: SSH
Maximum number of connections: 5
Maximum number of connections per user: 2
Parameters > Hostname: 10.99.0.11
Parameters > Port: 22
Username: root
Password: <password> (provided by Vultr)

اضغط على " save" وارجع إلى الشاشة الرئيسية. الآن يمكنك النقر فوق هذا الاتصال الذي تم إنشاؤه حديثًا والاتصال بخادم Linux عبر SSH.

استنتاج

لديك الآن بوابة الويب RDP / SSH HTML5. يمكنك الآن حماية جدار الحماية من وصول RDP و SSH العام لمنصتك والوصول إلى بيئتك من أي متصفح حديث. لمزيد من المعلومات حول ما يمكن أن تقدمه Guacamole ، هناك مقطع فيديو رائع يعرض جميع إمكانيات النظام الأساسي هنا .



Leave a Comment

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

6 أشياء شديدة الجنون حول نينتندو سويتش

6 أشياء شديدة الجنون حول نينتندو سويتش

يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.

وظائف طبقات معمارية مرجعية للبيانات الضخمة

وظائف طبقات معمارية مرجعية للبيانات الضخمة

اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد