এসএসএল প্রয়োজন, এসইএলিনাক্স চালু রাখুন, লগগুলি নিরীক্ষণ করুন এবং একটি পোস্টগ্রিজ এসকিউএল সংস্করণ ব্যবহার করুন ।
সার্ভার পাশ
এসএসএল প্রয়োজন
ইন postgresql.conf
সেট ssl=on
এবং আপনি আপনার keyfile এবং certfile উপযুক্তভাবে ইনস্টল করা আছে (ডক্স এবং মন্তব্য দেখতে নিশ্চিত postgresql.conf
)।
আপনার যদি কোনও ক্লায়েন্টের বিশেষ সেটআপ ছাড়াই ক্লায়েন্টরা বিশ্বাস করতে চান তবে আপনার কোনও সিএ থেকে শংসাপত্র কিনতে হবে।
ইন pg_hba.conf
ভালো কিছু ব্যবহার:
hostssl theuser thedatabase 1.2.3.4/32 md5
... সম্ভবত ব্যবহারকারী এবং / অথবা ডাটাবেসগুলির জন্য "সমস্ত" এবং সম্ভবত একটি বৃহত্তর উত্স আইপি অ্যাড্রেস ফিল্টার সহ।
লগ ইন করতে পারে এমন ব্যবহারকারীদের সীমাবদ্ধ করুন, দূরবর্তী সুপারসার লগইনকে অস্বীকার করুন
সম্ভব হলে ব্যবহারকারীদের জন্য "সমস্ত" অনুমতি দিন না; আপনি যদি প্রয়োজনের অতিরিক্ত এড়াতে পারেন তবে দূরবর্তীভাবে সুপারজারের লগইনগুলির অনুমতি দিতে চান না।
ব্যবহারকারীদের অধিকার সীমাবদ্ধ করুন
ব্যবহারকারী (গুলি) লগ ইন করতে পারেন অধিকারকে সীমাবদ্ধ করুন। তাদের দেবেন না CREATEDB
বা CREATEUSER
অধিকার।
REVOKE
CONNECT
থেকে সরাসরি PUBLIC
আপনার সব ডাটাবেস উপর, তারপর এটি ফিরে শুধুমাত্র ব্যবহারকারীদের / ভূমিকা যে ডাটাবেসের অ্যাক্সেস করতে সক্ষম হওয়া উচিত দেব। (সরাসরি ব্যবহারকারীদের পৃথক পরিবর্তে ভোক্তাদের গোষ্ঠীভুক্ত করা এবং ভূমিকার অধিকার প্রদান করুন)।
নিশ্চিত করুন যে রিমোট অ্যাক্সেস সহ ব্যবহারকারীরা কেবল তাদের প্রয়োজনীয় ডিবিগুলির সাথে সংযোগ করতে পারবেন এবং কেবলমাত্র তাদের প্রয়োজনীয় স্কিমা, টেবিল এবং কলামগুলির অধিকার রয়েছে। এটি স্থানীয় ব্যবহারকারীদের পক্ষেও ভাল অনুশীলন, এটি কেবল বোধগম্য সুরক্ষা।
ক্লায়েন্ট সেটআপ
পিজজেডিবিসি-তে, প্যারামিটারটি পাস করুনssl=true
:
জেডিবিসি ড্রাইভারকে একটি এসএসএল সংযোগ স্থাপনের চেষ্টা করার জন্য নির্দেশ দেওয়ার জন্য আপনাকে অবশ্যই সংযোগের URL পরামিতি যুক্ত করতে হবে এসএসএল = সত্য।
... এবং ক্লায়েন্টের ট্রস্টস্টোরে সার্ভার শংসাপত্র ইনস্টল করুন, বা আপনি যদি না চান যে ব্যবহারকারীর শংসাপত্রটি ইনস্টল করতে হবে তবে জাভা-র অন্তর্নির্মিত ট্রাস্টস্টোরের কোনও সিএ দ্বারা বিশ্বাসযোগ্য একটি সার্ভার শংসাপত্র ব্যবহার করুন।
চলমান ক্রিয়া
এখন আপনি PostgreSQL আপডেট রাখছেন তা নিশ্চিত করুন । পোস্টগ্রেএসকিউএল-এর কেবল বেশ কয়েকটি প্রাক-প্রমাণ সুরক্ষা গর্ত রয়েছে তবে এটি শূন্যের চেয়ে বেশি, তাই আপ টু ডেট থাকুন। আপনার যাইহোক, বাগফিক্সগুলি রাখা ভাল জিনিস।
সামনে যদি বড় নেটব্লক / অঞ্চল থাকে আপনি জানেন যে আপনাকে কখনই অ্যাক্সেসের দরকার নেই সেদিকে সামনে একটি ফায়ারওয়াল যুক্ত করুন।
লগ সংযোগ এবং সংযোগ বিচ্ছিন্ন করুন (দেখুন postgresql.conf
)। ব্যবহারিক হলে প্রশ্নগুলি লগ করুন। ব্যবহারিক হলে অনুপ্রবেশ সনাক্তকরণ সিস্টেম বা ব্যর্থ 2 বা এটির সামনে অনুরূপ চালান। Postgres সহ ব্যর্থ 2 ব্যাবহারের জন্য, এখানে কীভাবে করা যায় তা সুবিধাজনক
লগ ফাইল নিরীক্ষণ।
বোনাস পারানো
এ সম্পর্কে ভাবার অতিরিক্ত পদক্ষেপ ...
ক্লায়েন্ট শংসাপত্র প্রয়োজন
আপনি যদি চান pg_hba.conf
তবে ক্লায়েন্টটি সার্ভারের দ্বারা বিশ্বস্ত X.509 ক্লায়েন্ট শংসাপত্র উপস্থাপন করতে হবে তাও আপনি ব্যবহার করতে পারেন । এটি সার্ভার শংসাপত্রের মতো একই সিএ ব্যবহার করার দরকার নেই, আপনি হোমব্রিউ ওপেনসেল সিএ দিয়ে এটি করতে পারেন। একটি জেডিবিসি ব্যবহারকারীর ক্লায়েন্ট শংসাপত্রটি তাদের জাভা কীস্টোরের সাথে তাদের কীস্টোরে জাভা নির্দেশ করার জন্য keytool
কিছু জেএসএসই সিস্টেম বৈশিষ্ট্য কনফিগার করতে হবে এবং এটি সম্পূর্ণ স্বচ্ছ নয়।
উদাহরণ পৃথক
আপনি যদি সত্যিই ভৌতিক হতে চান, তবে ক্লায়েন্টের জন্য পৃথক ধারক / ভিএম, বা কমপক্ষে একটি পৃথক ব্যবহারকারীর অ্যাকাউন্টের অধীনে কেবলমাত্র প্রয়োজনীয় ডাটাবেস (গুলি) ব্যবহার করুন।
যদি তারা পোস্টগ্র্যাসকিউএল উদাহরণটি আপস করে তবে তারা আর কিছুই পাবে না।
SELinux ব্যবহার করুন
আমাকে এটা বলতে হবে না, তবে ...
আরএইচইএল 6 বা 7 এর মতো সেলইনাক্স সমর্থন সহ একটি মেশিন চালান, এবং সেলইনাক্স বন্ধ করবেন না বা এটি অনুমতিমূলক মোডে সেট করবেন না । এটি প্রয়োগকারী মোডে রাখুন।
একটি ডিফল্ট পোর্ট ব্যবহার করুন
কেবল অস্পষ্টতার দ্বারা সুরক্ষা বোকামি। আপনি বুদ্ধিমান জিনিসগুলি একবার সম্পন্ন করার পরে সুরক্ষা যা কিছুটা অস্পষ্টতা ব্যবহার করে সম্ভবত ক্ষতি করবে না।
অটোমেটেড আক্রমণকারীদের জন্য জীবনকে আরও শক্ত করার জন্য একটি অ-ডিফল্ট পোর্টে পিজি চালান।
সামনে একটি প্রক্সি রাখুন
আপনি সংযোগ পুল এবং প্রক্সি হিসাবে অভিনয় করে পোস্টগ্রেএসকিউএল এর সামনে পিজবাউনার বা পিজপুল -২ চালাতে পারেন। এইভাবে আপনি প্রক্সি হ্যান্ডেল করতে পারবেন এসএসএল, আসল ডাটাবেস হোস্ট নয়। প্রক্সিটি পৃথক ভিএম বা মেশিনে থাকতে পারে।
ক্লায়েন্ট অ্যাপ্লিকেশনটিতে ইতিমধ্যে বিল্ট-ইন পুল না থাকলে, সংযোগ পুলিং প্রক্সিগুলির ব্যবহার সাধারণত পোস্টগ্রিজ এসকিউএল এর সাথে একটি ভাল ধারণা। বেশিরভাগ জাভা অ্যাপ্লিকেশন সার্ভার, রেলস ইত্যাদিতে বিল্ট-ইন পুলিং রয়েছে। তারপরেও, একটি সার্ভার সাইড পুলিং প্রক্সিটি সবচেয়ে খারাপ নির্দোষ।