(/ etc / sysconfig / iptables)“ ไม่แนะนำให้ปรับแต่งไฟล์นี้ด้วยตนเอง” เพราะเหตุใด


20

การแก้ไขไฟล์นี้โดยตรง

/etc/sysconfig/iptables 

สามารถช่วยฉันปวดหัวมากเวลามากและ ...

และยังอยู่ด้านบนสุดของไฟล์มันบอกว่า ..

Manual customization of this file is not recommended.

นี่คือ '/ etc / sysconfig / iptables' ที่เพิ่งมาพร้อมกับคลาวด์เซิร์ฟเวอร์ centos ใหม่ 6.4

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

เพื่อเปิดพอร์ต 80 ฉันสามารถโคลนบรรทัด ..

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

จากนั้นเปลี่ยน "22" เป็น "80" แล้วบันทึกไฟล์นี้จากนั้นรีบูตระบบทั้งหมด

นี่จะเปิดพอร์ต 80 สำหรับฉัน

นี่เป็นการดำเนินการที่เรียบง่าย และไฟล์ยังบอกว่าไม่แนะนำให้แก้ไขด้วยตนเอง

ทำไมฉันควรทำตามคำแนะนำ?

คำตอบ:


18

เพราะเครื่องมือที่เรียกว่าsystem-config-firewall(หรือพี่ชายตาม ncurses system-config-firewall-tui) จัดการไฟล์นี้ ทุกครั้งที่คุณใช้เครื่องมือนี้เพื่อสร้างกฎ iptables /etc/sysconfig/iptablesใหม่ก็จะเขียนทับ

Manpageที่เกี่ยวข้อง: 28.1.16 / etc / sysconfig / iptables-config

ด้วยเหตุนี้จึงไม่แนะนำ แต่ไม่ได้ห้าม วิธีที่ดีที่สุดในการบันทึกกฎของคุณโดยใช้ CentOS หรือรุ่นอื่น ๆ ของ EL คือการใช้บริการ iptables หลังจากที่คุณเพิ่มกฎบางอย่างในหน่วยความจำ:

# service iptables save

คำถามที่เกี่ยวข้อง: ทำไม iptables ไม่สามารถดึงข้อมูลจาก / etc / sysconfig / iptables บน centOs ได้?

เหตุผลที่ไม่แก้ไขไฟล์นี้ ( /etc/sysconfig/iptables) โดยตรง:

  • เพราะมันเป็นไฟล์ที่สร้างขึ้นโดยอัตโนมัติ /etc/init.d/iptablesเนื้อหาของมันมาจากสคริปต์ / ภูต
  • การดำเนินการบางอย่างเช่นการรีเซ็ตหรือหยุด iptables daemon อาจส่งผลให้ข้อมูลสูญหายเนื่องจากจะเขียนทับไฟล์ ตัวแปรที่น่าสนใจในเรื่องนี้: IPTABLES_SAVE_ON_STOP=""และIPTABLES_SAVE_ON_RESTART=""ภายใน/etc/sysconfig/iptables-configไฟล์ บางทีการปรับแต่งสิ่งเหล่านั้นจะทำให้การเปลี่ยนแปลงของคุณ/etc/init.d/iptablesไม่หยุดชะงัก
  • เพราะเอกสารดังกล่าวกล่าวว่า . Red Hat แนะนำว่านี่เป็นวิธีที่ดีที่สุดในการใช้โครงสร้างพื้นฐานไฟร์วอลล์ของพวกเขา

เป็นโซลูชั่นทางเลือกนี้ "เขียนทับกฎไฟร์วอลล์ของฉัน" mindf *** โดยสิ้นเชิงคือการปิดการใช้งานสคริปต์เหล่านั้นและพึ่งพาวิธีการที่กำหนดเองของการจัดการไฟร์วอลล์อย่างหนึ่งที่เปิดเผยโดยGoldilocks


ฟังดูคล้ายกับการโต้แย้งการมิกซ์และจับคู่การแก้ไขไฟล์โดยตรงและการเพิ่มกฎโดยใช้system-config-firewallเครื่องมือ คุณขยายได้ไหมว่าทำไมการแก้ไขไฟล์แทนการใช้เครื่องมือถึงไม่ดี?
มิเชล

เพิ่มข้อมูลเพิ่มเติม ขอบคุณสำหรับเคล็ดลับ @Michelle

8

และยังอยู่ด้านบนสุดของไฟล์มันบอกว่า ..

อืมมันแปลกมาก ที่ด้านบนของฉันมันพูดว่า:

# Manual customization of this file is strongly encouraged.

ใครบางคนต้องเปลี่ยนมัน;) และในความเป็นจริงแม้จะย้ายออกไป/etc/sysconfigดังนั้นมันจะไม่ได้รับ "auto uncustomized" โดยผู้จัดการแพคเกจหรือสิ่งอื่นใด;);)

ฉันคิดว่าจุดนี้โดยทั่วไปกับไฟล์กำหนดค่าคือถ้าคุณไม่รู้ว่าคุณกำลังทำอะไรอยู่อย่าทำอย่างนั้น บางครั้งก็มีคำเตือนว่าไฟล์จะถูกเขียนทับโดยระบบเป็นครั้งคราว นี่อาจเป็นได้โดยผู้จัดการแพ็คเกจในการอัพเกรด - แม้ว่าบางครั้ง PM จะบันทึกไฟล์ที่ถูกเปลี่ยนแปลงด้วยตนเองและไม่เขียนทับหรือบันทึกสำเนา ฯลฯ - และอาจเป็นเครื่องมืออื่นที่รับผิดชอบการกำหนดค่านี้ใน โดยเฉพาะ (ดูคำตอบของ nwildner )

ส่วนหนึ่งของ "การรู้ว่าคุณกำลังทำอะไรอยู่" คือการตระหนักถึงมุมเช่นนี้ ฉันปรับแต่งบริการ init สำหรับ iptables เพื่อใช้ตำแหน่งอื่นสำหรับไฟล์ปรับแต่งและที่สำคัญที่สุดคือฉันเป็นคนเดียวที่ใช้คอมพิวเตอร์เครื่องนี้

สมมติว่ามีบุคคลอื่นที่มีสิทธิ์เข้าถึงรูทฉันจะไม่ทำสิ่งนี้บนเซิร์ฟเวอร์ที่ฉันรับผิดชอบเว้นแต่จะมีเหตุผลที่ดีกว่า "ฉันชอบแบบนี้" เพราะอาจทำให้สับสนและทำให้คนอื่นปวดหัว ในบางจุด. แต่ถ้าคุณเป็นผู้ใช้คนเดียวและไม่มีใครขึ้นอยู่กับระบบคุณมีอิสระที่จะทำสิ่งที่คุณต้องการ "วิธีที่ต้องการ" ของฉันสำหรับการกำหนดค่าไฟร์วอลล์มีลักษณะดังนี้:

#!/bin/bash

if [[ ! -n "$IPTSET_FILE" ]]; then
        IPTSET_FILE=/etc/iptables.current
fi

if [[ ! -e $IPTSET_FILE ]]; then
        echo "$IPTSET_FILE does not exist!"
        exit 1
fi

vim $IPTSET_FILE
iptables-restore < $IPTSET_FILE

/etc/iptables.currentถูกสร้างเมื่อบูตโดยการคัดลอก/etc/iptables(ซึ่งบริการ iptables ได้รับการกำหนดค่าให้โหลดในตอนแรก) วิธีนี้ฉันสามารถแก้ไขสิ่งต่าง ๆ ได้ทันทีขณะที่ยังคงจุดอ้างอิงที่ระบบเริ่มต้น

ซึ่งนำเราไปสู่จุดสำคัญหากคุณต้องการหลอกด้วยการกำหนดค่าที่มีคำเตือนประเภทนี้: สร้างสำเนาสำรองของต้นฉบับก่อนเสมอ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.