Як налаштувати простий брандмауер на Ubuntu?


18

Чи може хтось надати кілька простих кроків із прикладу конфігурації, як налаштувати простий брандмауер на Ubuntu (використовуючи лише консоль)? Потрібно дозволити доступ лише до ssh, http та https.


Ви говорите про мережевий брандмауер чи просто системний брандмауер?
Бред Гілберт

Що ви маєте на увазі під мережевим брандмауером? Це брандмауер на маршрутизаторі? Якщо так, то я говорив про системний брандмауер.
klew

Відповіді:


20

sudo ufw за замовчуванням відмовити

sudo ufw дозволити http

sudo ufw дозволяють https

sudo ufw дозволяють ssh

sudo ufw enable


Якщо я б назвав ці команди послідовно через ssh, чи порушить це з'єднання?
klew

Я не вірю в це, але ви повинні перевірити, щоб переконатися. Це також відповідає статусу між перезавантаженнями, тому вам потрібно це зробити лише один раз.
Nerdfest

Я перевірю це, коли я буду поруч із цим комп’ютером ...
klew

Ви можете вкласти його в сценарій і запустити його, а потім навіть якщо ви відключитесь, ви зможете знову підключитися. Дивіться мою відповідь нижче щодо сценарію.
Хаміш Даунер

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 enable або запуску 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

Швидкі таблиці допомогли мені вивчити правила 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 try' "Активує брандмауер, але чекає, поки користувач набере слово ввести. Якщо це слово не буде набрано протягом 30 секунд, попередній брандмауер буде відновлений."
Гарет

Так що ви можете додавати / редагувати / видаляти правила, а потім перевіряти їх. Якщо ви робите це через SSH віддалено, то це не збирається заблокувати вас із власного сервера!
Гарет



-1

sudo apt-get install firestarter

Потім загляньте в меню Система-> Адміністрація.


запитувач хоче використовувати лише консоль
Майк

Ах, моя помилка. Як варіант. адміністратор може ще ssh -X на сервер і віддалено запустити firestarter.
Spoulson

1
Також мені потрібно встановити якийсь X-сервер, щоб запустити ssh -X :).
klew

@klew, вам не потрібно встановлювати повний X-сервер для запуску X-програм через ssh. Вам потрібно кілька бібліотек, але вам не потрібно все. Для мінімуму вам потрібні лише пакети xauth та xbase-client.
Zoredache
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.