ufw
Ansibleফায়ারওয়াল নিয়মগুলি পরিচালনা করার জন্য একটি ufwমডিউল রয়েছে। ইন roles/common/tasks/main.yml, যা আমার সমস্ত সার্ভার অন্তর্ভুক্ত করা হয়েছে, আমি (অন্যান্য বিষয় ছাড়াও) আছে:
- name: Install ufw
apt: name=ufw
- name: Allow ssh through firewall
ufw: proto=tcp port=22 rule=allow
- name: Set ufw policy
ufw: state=enabled direction=incoming policy=deny
সম্পাদনা : ডিফল্ট নীতিটি "অস্বীকার" করার জন্য সেট করার আগে এসএসএসের অনুমতি দেওয়া প্রয়োজন (মূলত এটি উপরের বিপরীতে ছিল), অন্যথায় আপনি দুটি ধাপের মধ্যেই লক আউট হয়ে থাকতে পারেন।
তারপরে, প্রতিটি ভূমিকায় আমার সেই ভূমিকার জন্য অতিরিক্ত ফায়ারওয়াল বিধি রয়েছে। উদাহরণস্বরূপ, এ roles/nginx/tasks/main.yml(আমার কাছে অন্যান্য জিনিসগুলির মধ্যে রয়েছে):
- name: Allow nginx firewall
ufw: proto=tcp port=80 rule=allow
- name: Allow nginx ssl firewall
ufw: proto=tcp port=443 rule=allow
সুতরাং আমার সমস্ত nginx সার্ভারের 80 এবং 443 পোর্ট খোলা আছে।
আপনি যেভাবে সাধারণ কনফিগারেশনটি চান তা তৈরি করতে পারেন এবং আরও নির্দিষ্ট ভূমিকাতে অতিরিক্ত নিয়ম যুক্ত করতে পারেন add
ferm
আপনি নিয়মটি যা থাকে ufwহ্যান্ডেল করতে পারে না, এক সমাধান আমি মনে করি চমত্কারভাবে কাজ চাই ferm; এটা প্রায় কিছু করতে পারেন, এবং আপনি এটি কনফিগার যেমন ডিরেক্টরি থেকে নিয়ম পড়তে পারেন /etc/ferm/input.d/, /etc/ferm/output.d/, /etc/ferm/forward.d/, ইত্যাদি আপনি আপনার বানাতে পারে commonভূমিকা অপরিহার্য প্রস্তুত fermকনফিগারেশন এবং তারপর অন্যান্য ভূমিকা এই ডিরেক্টরিগুলি থেকে ফাইলগুলিকে ড্রপ আছে।
প্লেইন iptables
ansibleঅন্য কোনওভাবে নির্দিষ্ট বিধিগুলির পাশাপাশি নিয়মগুলি নির্দিষ্ট করার জন্য আপনার প্রয়োজনীয়তা অস্বাভাবিক এবং স্পষ্টতই ব্যবহারের জন্য পয়েন্টটির বেশিরভাগ অংশকে অস্বীকার করে ansible। দুর্ভাগ্যক্রমে আমি সরল বাদে এটি করার কোনও উপায় দেখতে পাচ্ছি না iptables, যা বেশ কুৎসিত হবে। এখানে 80 টি roles/nginx/tasks/main.yml(অপরিশোধিত) পোর্ট খোলার উদাহরণ রয়েছে :
- name: Check if port 80 is allowed
shell: iptables -L | grep -q "Allow http" && echo -n yes || echo -n no
register: check_allow_http
changed_when: no
always_run: yes
- name: Allow port 80
command: >
iptables -A INPUT -p tcp -m tcp --dport 80
-m comment --comment "Allow http" -j ACCEPT
when: check_allow_http.stdout == "no"
notify:
- Save iptables
Save iptablesহ্যান্ডলার যেখানে চালিত হয় iptables-save। উপরের সমস্তগুলি লিখতে বেশ ক্লান্তিকর, তবে এটি উপযুক্ত হতে পারে, বিশেষত যদি আপনার সাথে পরিচালনা করার জন্য কয়েকটি নিয়ম থাকে ansible।