จะติดตั้งไฟร์วอลล์แบบง่ายบน Ubuntu ได้อย่างไร


18

ใครสามารถให้ขั้นตอนง่ายๆกับตัวอย่างการกำหนดค่าวิธีการตั้งค่าไฟร์วอลล์อย่างง่ายบน Ubuntu (ใช้คอนโซลเท่านั้น)? ควรอนุญาตให้เข้าถึง ssh, http และ https เท่านั้น


คุณกำลังพูดถึงไฟร์วอลล์เครือข่ายหรือเพียงแค่ไฟร์วอลล์ระบบ?
แบรดกิลเบิร์

ไฟร์วอลล์เครือข่ายหมายความว่าอย่างไร มันเป็นไฟร์วอลล์บนเราเตอร์หรือไม่? ถ้าใช่ฉันกำลังพูดถึงไฟร์วอลล์ระบบ
klew

คำตอบ:


20

sudo ufw ค่าเริ่มต้นปฏิเสธ

sudo ufw อนุญาต http

sudo ufw อนุญาต https

sudo ufw อนุญาต ssh

sudo ufw เปิดใช้งาน


ถ้าฉันจะเรียกคำสั่งนี้ตามลำดับผ่าน ssh มันจะทำลายการเชื่อมต่อของฉันหรือไม่
klew

ฉันไม่เชื่อ แต่คุณควรตรวจสอบเพื่อให้แน่ใจ สิ่งนี้ถือเป็นสถานะระหว่างการรีสตาร์ทดังนั้นคุณควรทำเพียงครั้งเดียว
Nerdfest

ฉันจะตรวจสอบมันเมื่อฉันจะอยู่ใกล้กับคอมพิวเตอร์เครื่องนี้ ...
klew

คุณสามารถใส่ลงในสคริปต์และเรียกใช้แล้วแม้ว่าคุณจะถูกตัดการเชื่อมต่อคุณจะสามารถเชื่อมต่อใหม่ได้ในภายหลัง ดูคำตอบของฉันด้านล่างสำหรับสคริปต์
Hamish Downer

2
ความคิดเห็นก่อนหน้านี้ถูกต้อง โดยทั่วไปให้รันคำสั่งแรกในสคริปต์ด้านบนล่าสุด
Nerdfest

14

ใช้สคริปต์นี้

เพียงตัดสินใจว่าคุณต้องการอนุญาต ICMP ขาเข้า (ping) หรือไม่

# Clear any existing firewall stuff before we start
iptables --flush
iptables -t nat --flush
iptables -t mangle --flush

# As the default policies, drop all incoming traffic but allow all
# outgoing traffic.  This will allow us to make outgoing connections
# from any port, but will only allow incoming connections on the ports
# specified below.
iptables --policy INPUT DROP
iptables --policy OUTPUT ACCEPT

# Allow all incoming traffic if it is coming from the local loopback device
iptables -A INPUT -i lo -j ACCEPT

# Accept all incoming traffic associated with an established
# connection, or a "related" connection
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow incoming connections
# SSH
iptables -A INPUT -p tcp -i eth0 --dport 22 -m state --state NEW -j ACCEPT
# HTTP
iptables -A INPUT -p tcp -i eth0 --dport 80 -m state --state NEW -j ACCEPT
# HTTPS
iptables -A INPUT -p tcp -i eth0 --dport 443 -m state --state NEW -j ACCEPT

# Allow icmp input so that people can ping us
iptables -A INPUT -p icmp -j ACCEPT

# Reject all other incoming packets
iptables -A INPUT -j REJECT

8

ตามที่ระบุไว้ในความคิดเห็นของคำตอบอื่นคุณไม่ต้องการที่จะสูญเสียการเชื่อมต่อของคุณก่อนที่คุณจะอนุญาตให้พอร์ต ssh จากหน้าคน:

"การจัดการระยะไกล

เมื่อรัน ufw เปิดใช้งานหรือเริ่ม ufw ผ่าน initscript ของมัน ufw จะล้างโซ่ของมัน จำเป็นต้องมีสิ่งนี้เพื่อให้ ufw สามารถรักษาสถานะที่สอดคล้องกัน แต่อาจลดการเชื่อมต่อที่มีอยู่ (เช่น ssh) ufw สนับสนุนการเพิ่มกฎก่อนเปิดใช้งานไฟร์วอลล์ดังนั้นผู้ดูแลระบบสามารถทำได้:

ufw allow proto tcp from any to any port 22

ก่อนเปิดใช้งาน 'ufw enable' กฎจะยังคงถูกลบทิ้ง แต่พอร์ต ssh จะเปิดหลังจากเปิดใช้งานไฟร์วอลล์ โปรดทราบว่าเมื่อ ufw คือ 'เปิดใช้งาน' ufw จะไม่ล้างกลุ่มเมื่อเพิ่มหรือลบกฎ (แต่จะเมื่อแก้ไขกฎหรือเปลี่ยนนโยบายเริ่มต้น) "

ดังนั้นนี่คือวิธีการที่ใช้สคริปต์ในการตั้งค่า คุณจะออกจากระบบเมื่อคุณเรียกใช้สคริปต์นี้ แต่เมื่อรันแล้วคุณสามารถเข้าสู่ระบบได้อีกครั้งผ่าน ssh

ใส่ต่อไปนี้ในสคริปต์และเรียกว่า start-firewall.sh

#!/bin/sh
ufw allow ssh
ufw enable
ufw default deny
ufw allow http
ufw allow https

จากนั้นทำให้สามารถเรียกใช้และเรียกใช้ได้โดยทำ

$ chmod + x start-firewall.sh
$ sudo ./start-firewall.sh

ต้องการเรียนรู้เพิ่มเติมโปรดอ่านหน้าคน


2

หากคุณคุ้นเคยกับการเขียนสคริปต์iptablesคุณจะสามารถควบคุมความสามารถไฟร์วอลล์ทั้งหมดได้อย่างสมบูรณ์ มันไม่มีที่ไหนใกล้ได้ง่ายเท่ากับ Firestarter แต่สามารถทำได้ที่คอนโซลพร้อมnano/ viบรรณาธิการ ลองดูบทช่วยสอนนี้มุ่งสู่ Ubuntu


1

Quicktables ช่วยให้ฉันเรียนรู้กฎ iptables เพียงแค่เรียกใช้สคริปต์และมันจะสร้างสคริปต์ iptables ให้คุณ ... จากนั้นคุณสามารถเปิดและดูคำสั่งที่เกี่ยวข้องที่สร้างขึ้นโดยคำถามที่ถามถึงคุณ มันเป็นแหล่งเรียนรู้ที่ยอดเยี่ยม

น่าเสียดายที่มันไม่ได้รับการดูแลรักษาอีกต่อไป

http://qtables.radom.org/


1

ฉันชอบใช้firehol ( แพ็คเกจ )

หากต้องการสร้างกฎการตั้งค่าที่คุณต้องการคุณจะต้องแก้ไขไฟล์ / etc / default / firehol และเปลี่ยน START_FIREHOL = ใช่

และคุณต้องการทำให้ /etc/firehol/firehol.conf ของคุณเป็นแบบนี้

version 5

interface any IfAll
    client any AnyClient accept
    server "ssh http https" accept
    # Accept everything from trusted networks
    server anystateless AllInside accept src "10.3.27.0/24"

หนึ่งในสิ่งที่ดีเกี่ยวกับ firehol คือคำสั่ง 'ลอง' คุณสามารถปรับไฟล์การกำหนดค่าของคุณและลอง 'firehol ลอง' หากคุณเชื่อมต่อผ่าน ssh และบางอย่างเกี่ยวกับสิ่งที่คุณเปลี่ยนฆ่าการเข้าถึงเครือข่ายของคุณแล้ว firehol จะเปลี่ยนกลับการเปลี่ยนแปลง หากต้องการให้การเปลี่ยนแปลงมีผลบังคับใช้จริงคุณต้องตอบรับ


1
Firehol ยอดเยี่ยมสำหรับการจัดการกฎ iptables '$ firehol ลอง' "เปิดใช้งานไฟร์วอลล์ แต่รอจนกว่าผู้ใช้พิมพ์คำว่าหากไม่พิมพ์คำนี้ภายใน 30 วินาทีไฟร์วอลล์ก่อนหน้านี้จะถูกกู้คืน"
Gareth

โซโอคุณสามารถเพิ่ม / แก้ไข / ลบกฎแล้วทดสอบได้ หากคุณทำสิ่งนี้ผ่าน SSH จากระยะไกลมันจะไม่ล็อคคุณออกจากเซิร์ฟเวอร์ของคุณเอง!
Gareth


0

บางทีคุณอาจจะดูที่http://iptables-tutorial.frozentux.net/iptables-tutorial.html นอกจากนี้คุณสามารถค้นหาข้อมูลเพิ่มเติมได้ที่lartc.org


-1

sudo apt-get install firestarter

จากนั้นดูในเมนู System-> Administration


ผู้ถามต้องการใช้คอนโซลเท่านั้น
Mikeage

ความผิดพลาดของฉัน อีกทางเลือกหนึ่ง ผู้ดูแลระบบยังสามารถ ssh -X ลงในเซิร์ฟเวอร์และเรียกใช้ firestarter จากระยะไกล
spoulson

1
ฉันต้องติดตั้งเซิร์ฟเวอร์ X บางตัวเพื่อเริ่ม ssh -X :)
klew

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