Bastilion عبارة عن وحدة تحكم SSH قائمة على الويب وتقوم بإدارة الوصول الإداري إلى الأنظمة مركزيًا. يتم دمج الإدارة المستندة إلى الويب مع إدارة وتوزيع مفاتيح SSH العامة للمستخدم. تعتمد إدارة المفاتيح وإدارتها على الملفات الشخصية المخصصة لمستخدمين محددين.
يمكن للمسؤولين تسجيل الدخول باستخدام المصادقة الثنائية باستخدام Authy أو Google Authenticator. ومن هناك يمكنهم إدارة مفاتيح SSH العامة الخاصة بهم أو الاتصال بأنظمتهم من خلال شبكة الويب. يمكن مشاركة الأوامر عبر الأصداف لتسهيل عملية التصحيح والتخلص من تنفيذ الأوامر الزائدة عن الحاجة.
يقوم Bastilion بوضع طبقات TLS/SSL أعلى SSH ويعمل كمضيف أساسي للإدارة. البروتوكولات مكدسة (TLS/SSL + SSH) بحيث لا يمكن كشف البنية التحتية من خلال إعادة توجيه النفق/المنافذ. يمكن العثور على مزيد من التفاصيل في المستند التقني التالي: تنفيذ نظام طرف ثالث موثوق به لـ Secure Shell. كما يتم تمكين إدارة مفاتيح SSH افتراضيًا لمنع المفاتيح العامة غير المُدارة وفرض أفضل الممارسات.
Bastilion متاح للاستخدام المجاني بموجب ترخيص Prosperity Public
https://github.com/bastillion-io/Bastillion/releases
أو الشراء من سوق AWS
https://aws.amazon.com/marketplace/pp/Loophole-LLC-Bastillion/B076PNFPCL
كما يمكن تثبيت Bastilion على FreeBSD عبر نظام منافذ FreeBSD. للتثبيت عبر الحزمة الثنائية، ما عليك سوى تشغيل:
pkg install security/bastillion
Open-JDK / Oracle-JDK - 1.9 أو أكبر
الرابطة بين الحصول على تثبيت openjdk-9-jdk
http://www.Oracle.com/technetwork/Java/javase/downloads/index.html
قم بتثبيت Authy أو Google Authenticator لتمكين المصادقة الثنائية مع Android أو iOS
طلب | أندرويد | دائرة الرقابة الداخلية |
---|---|---|
أوثي | جوجل بلاي | اي تيونز |
أداة مصادقة جوجل | جوجل بلاي | اي تيونز |
تحميل bastillion-jetty-vXX.XX.tar.gz
https://github.com/bastillion-io/Bastillion/releases
تصدير متغيرات البيئة
لنظام التشغيل Linux/Unix/OSX
export JAVA_HOME=/path/to/jdk
export PATH=$JAVA_HOME/bin:$PATH
لنظام التشغيل Windows
set JAVA_HOME=C:pathtojdk
set PATH=%JAVA_HOME%bin;%PATH%
ابدأ باستيليون
لنظام التشغيل Linux/Unix/OSX
./startBastillion.sh
لنظام التشغيل Windows
startBastillion.bat
مزيد من الوثائق على: https://www.bastillion.io/docs/index.html
قم بتثبيت Maven 3 أو أكبر
الرابطة بين الحصول على تثبيت مخضرم
http://maven.Apache.org
تصدير متغيرات البيئة
export JAVA_HOME=/path/to/jdk
export M2_HOME=/path/to/maven
export PATH=$JAVA_HOME/bin:$M2_HOME/bin:$PATH
في الدليل الذي يحتوي على تشغيل pom.xml
mvn package jetty:run
ملاحظة: سيؤدي إجراء تنظيف mvn إلى حذف قاعدة بيانات H2 ومسح كافة البيانات.
افتح المتصفح على https://<whatever ip>:8443
تسجيل الدخول مع
username:admin
password:changeme
ملاحظة: عند استخدام مثيل AMI، يتم تعيين كلمة المرور بشكل افتراضي إلى <معرف المثيل>. كما يستخدم AMI المنفذ 443 كما في https://<Instance IP>:443
افتراضيًا، سيقوم باستيليون بالكتابة فوق كافة القيم الموجودة في ملف المفاتيح المعتمدة المحدد للنظام. يمكنك تعطيل إدارة المفاتيح عن طريق تحرير ملف BastilionConfig.properties واستخدام Bastilion فقط كمضيف أساسي. يوجد هذا الملف في دليل jetty/bastillion/WEB-INF/classes. (أو دليل src/main/resources في حالة البناء من المصدر)
#set to false to disable key management. If false, the Bastillion public key will be appended to the authorized_keys file (instead of it being overwritten completely).
keyManagementEnabled=false
كما يتم أيضًا تحديث/تحديث ملف Author_keys بشكل دوري بناءً على العلاقات المحددة في التطبيق. إذا تم تمكين إدارة المفاتيح، فيمكن تحديد الفاصل الزمني للتحديث في ملف BastilionConfig.properties.
#authorized_keys refresh interval in minutes (no refresh for <=0)
authKeysRefreshInterval=120
افتراضيًا، سيقوم Bastilion بإنشاء وتوزيع مفاتيح SSH التي يديرها المسؤولون أثناء قيامهم بتنزيل المفاتيح الخاصة التي تم إنشاؤها. وهذا يفرض على المسؤولين استخدام عبارات مرور قوية للمفاتيح التي تم تعيينها على الأنظمة. المفتاح الخاص متاح للتنزيل مرة واحدة فقط ولا يتم تخزينه على جانب التطبيق. لتعطيل المسؤولين والسماح لهم بتعيين أي مفتاح عام، قم بتحرير BastilionConfig.properties.
#set to true to generate keys when added/managed by users and enforce strong passphrases set to false to allow users to set their own public key
forceUserKeyGeneration=false
يُنشئ Bastilion مفتاح SSH العام/الخاص الخاص به عند بدء التشغيل الأولي لاستخدامه عند تسجيل الأنظمة. يمكنك تحديد زوج مفاتيح SSH مخصص في ملف BastilionConfig.properties.
على سبيل المثال:
#set to true to regenerate and import SSH keys --set to true
resetApplicationSSHKey=true
#SSH Key Type 'dsa' or 'rsa'
sshKeyType=rsa
#private key --set pvt key
privateKey=/Users/kavanagh/.ssh/id_rsa
#public key --set pub key
publicKey=/Users/kavanagh/.ssh/id_rsa.pub
#default passphrase --leave blank if passphrase is empty
defaultSSHPassphrase=myPa$$w0rd
بعد بدء التشغيل وبمجرد تسجيل المفتاح، يمكن بعد ذلك إزالته من النظام. ستتم إزالة عبارة المرور والمسارات الرئيسية من ملف التكوين.
يمكن تعديل إعدادات قاعدة البيانات في خصائص التكوين.
#Database user
dbUser=bastillion
#Database password
dbPassword=p@$$w0rd!!
#Database JDBC driver
dbDriver=org.h2.Driver
#Connection URL to the DB
dbConnectionURL=jdbc:h2:keydb/bastillion;CIPHER=AES;
افتراضيًا، يتم تعيين مخزن البيانات على أنه مضمن، ولكن يمكن دعم قاعدة بيانات H2 البعيدة من خلال ضبط عنوان URL للاتصال.
#Connection URL to the DB
dbConnectionURL=jdbc:h2:tcp://<host>:<port>/~/bastillion;CIPHER=AES;
يمكن تمكين المصادقة الخارجية من خلال BastilionConfig.properties.
على سبيل المثال:
#specify a external authentication module (ex: ldap-ol, ldap-ad). Edit the jaas.conf to set connection details
jaasModule=ldap-ol
يجب تعيين تفاصيل الاتصال في ملف jaas.conf
ldap-ol {
com.sun.security.auth.module.LdapLoginModule SUFFICIENT
userProvider="ldap://hostname:389/ou=example,dc=bastillion,dc=com"
userFilter="(&(uid={USERNAME})(objectClass=inetOrgPerson))"
authzIdentity="{cn}"
useSSL=false
debug=false;
};
ستتم إضافة المسؤولين بمجرد مصادقتهم وقد يتم تعيين ملفات تعريف الأنظمة بواسطة مستخدمين يتمتعون بالامتيازات الكاملة.
يمكن تعيين أدوار LDAP للمستخدم إلى ملفات التعريف المحددة في Bastilion من خلال استخدام org.Eclipse.jetty.jaas.spi.LdapLoginModule.
ldap-ol-with-roles {
//openldap auth with roles that can map to profiles
org.eclipse.jetty.jaas.spi.LdapLoginModule required
debug="false"
useLdaps="false"
contextFactory="com.sun.jndi.ldap.LdapCtxFactory"
hostname="<SERVER>"
port="389"
bindDn="<BIND-DN>"
bindPassword="<BIND-DN PASSWORD>"
authenticationMethod="simple"
forceBindingLogin="true"
userBaseDn="ou=users,dc=bastillion,dc=com"
userRdnAttribute="uid"
userIdAttribute="uid"
userPasswordAttribute="userPassword"
userObjectClass="inetOrgPerson"
roleBaseDn="ou=groups,dc=bastillion,dc=com"
roleNameAttribute="cn"
roleMemberAttribute="member"
roleObjectClass="groupOfNames";
};
ستتم إضافة/إزالة المستخدمين من الملفات التعريفية المحددة عند تسجيل الدخول وعندما يتطابق اسم الدور مع اسم الملف الشخصي.
يتم تعطيل التدقيق بشكل افتراضي. يمكن تمكين سجلات التدقيق من خلال log4j2.xml عن طريق إلغاء التعليق على io.bastillion.manage.util.SystemAudit وتعريفات مُلحق التدقيق .
https://github.com/bastillion-io/Bastillion/blob/master/src/main/resources/log4j2.xml#L19-L22
التدقيق من خلال التطبيق ما هو إلا دليل على المفهوم. يمكن تفعيله في BastilionConfig.properties.
#enable audit --set to true to enable
enableInternalAudit=true
أتوجه بشكر خاص إلى هذه المشاريع الرائعة التي تجعل هذا (وغيره من المشاريع الرائعة) ممكنًا.
تم ذكر تبعيات الطرف الثالث في 3rdPartyLicenses.md
Bastilion متاح للاستخدام بموجب ترخيص Prosperity Public
Loophole, LLC - شون كافانا