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
इसलिए मेरे सभी नगनेक्स सर्वर में 80 और 443 पोर्ट हैं।
इस तरह से आप जो भी सामान्य कॉन्फ़िगरेशन चाहते हैं उसका निर्माण कर सकते हैं और अधिक विशिष्ट भूमिकाओं में अतिरिक्त नियम जोड़ सकते हैं।
ferm
यदि आपके पास नियम हैं जो ufw
संभाल नहीं सकते हैं, तो मुझे लगता है कि एक समाधान अच्छी तरह से काम करेगा ferm
; यह लगभग कुछ भी कर सकते हैं, और आप इसे कॉन्फ़िगर जैसे निर्देशिकाओं से नियमों को पढ़ने के लिए कर सकते हैं /etc/ferm/input.d/
, /etc/ferm/output.d/
, /etc/ferm/forward.d/
, आदि आप अपने कर सकता है common
भूमिका आवश्यक तैयार ferm
विन्यास और उसके बाद अन्य भूमिकाओं इन निर्देशिकाओं में से फ़ाइलें ड्रॉप है।
सादे iptables
ansible
एक अन्य तरीके से निर्दिष्ट नियमों के अतिरिक्त नियमों को निर्दिष्ट करने की आपकी आवश्यकता असामान्य है और स्पष्ट रूप से उपयोग करने के लिए अधिकांश बिंदुओं को धता बताती है ansible
। दुर्भाग्य से मैं इसे सादे के अलावा अन्य करने के लिए कोई रास्ता नहीं देखता iptables
, जो काफी बदसूरत होगा। यहाँ बंदरगाह खोलने का एक उदाहरण है roles/nginx/tasks/main.yml
(अप्राप्त) में 80 :
- 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
।