Может кто-нибудь дать несколько простых шагов с примером конфигурации, как настроить простой брандмауэр в Ubuntu (используя только консоль)? Только ssh, http и https доступ должен быть разрешен.
Если я буду вызывать эти команды последовательно через 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
Как отмечено в комментариях к другому ответу, вы не хотите терять соединение, прежде чем разрешите порт 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
Если вы ознакомитесь со сценариями iptables, вы получите полный контроль над всеми возможностями брандмауэра. Это далеко не так дружелюбно, как Firestarter, но это можно сделать в консоли с помощью nano/ vieditors. Посмотрите это руководство, ориентированное на Ubuntu.
Quicktables помогли мне узнать правила iptables. Просто запустите скрипт, и он сгенерирует скрипт iptables для вас ... затем вы можете открыть его и просмотреть связанные команды, сгенерированные вопросами, которые он задавал вам. Это отличный учебный ресурс.
Мне очень нравится использовать firehol ( пакет ).
Чтобы создать правила настройки, которые вам нравятся, вам нужно отредактировать файл / etc / default / firehol и изменить START_FIREHOL = YES
И вы бы хотели, чтобы ваш /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 является команда try. Вы можете настроить свой файл конфигурации и выполнить «попытку firehol», если вы подключились через ssh и что-то о том, что вы изменили, заблокировало ваш доступ к сети, то firehol отменит изменения. Чтобы изменения вступили в силу, вы должны сказать commit.
Firehol великолепен для манипулирования правилами iptables. «$ firehol try» «Активирует брандмауэр, но ждет, пока пользователь не введет слово commit. Если это слово не будет введено в течение 30 секунд, предыдущий брандмауэр будет восстановлен».
Гарет
Так что вы можете добавлять / редактировать / удалять правила, а затем тестировать их. Если вы делаете это через SSH удаленно, это не приведет к блокировке вашего собственного сервера!
Гарет
1
Я бы предпочел Shorewall . Он прост в настройке, но в то же время гибкий.
Ах, моя ошибка. В качестве альтернативы. администратор все еще может подключиться к серверу через ssh -X и запустить firestarter удаленно.
Спулсон
1
Я также должен был бы установить некоторый X-сервер, чтобы запустить ssh -X :).
KLEW
@klew, вам не нужно устанавливать полный X-сервер для запуска X-приложений через ssh. Вам нужно несколько библиотек, но вам не нужно все. Для минимума вам нужны только пакеты xauth и xbase-clients.
Ответы:
sudo ufw по умолчанию отрицать
sudo ufw разрешить http
sudo ufw разрешить https
sudo ufw разрешить ssh
sudo ufw enable
источник
Используйте этот скрипт.
Просто решите, хотите ли вы разрешить входящий ICMP (ping) или нет.
источник
Как отмечено в комментариях к другому ответу, вы не хотите терять соединение, прежде чем разрешите порт ssh. Со страницы руководства:
"УДАЛЕННОЕ УПРАВЛЕНИЕ
При запуске ufw enable или запуске ufw через initscript, ufw очистит свои цепочки. Это необходимо для того, чтобы ufw мог поддерживать согласованное состояние, но он может отбрасывать существующие соединения (например, ssh). ufw поддерживает добавление правил перед включением брандмауэра, поэтому администраторы могут:
перед запуском 'UFW Enable'. Правила все еще будут сброшены, но порт ssh будет открыт после включения брандмауэра. Обратите внимание, что после того, как ufw будет «включен», ufw не будет сбрасывать цепочки при добавлении или удалении правил (но будет при изменении правила или изменении политики по умолчанию). "
Итак, вот подход, который использует скрипт для его установки. Когда вы запустите этот скрипт, вы выйдете из системы, но, запустив его, вы сможете снова войти через ssh.
Поместите следующее в скрипт и назовите его start-firewall.sh
А затем сделать его исполняемым и запустить его, выполнив
Чтобы узнать больше, прочитайте справочную страницу .
источник
Если вы ознакомитесь со сценариями
iptables
, вы получите полный контроль над всеми возможностями брандмауэра. Это далеко не так дружелюбно, как Firestarter, но это можно сделать в консоли с помощьюnano
/vi
editors. Посмотрите это руководство, ориентированное на Ubuntu.источник
Quicktables помогли мне узнать правила iptables. Просто запустите скрипт, и он сгенерирует скрипт iptables для вас ... затем вы можете открыть его и просмотреть связанные команды, сгенерированные вопросами, которые он задавал вам. Это отличный учебный ресурс.
К сожалению, это больше не поддерживается.
http://qtables.radom.org/
источник
Мне очень нравится использовать firehol ( пакет ).
Чтобы создать правила настройки, которые вам нравятся, вам нужно отредактировать файл / etc / default / firehol и изменить START_FIREHOL = YES
И вы бы хотели, чтобы ваш /etc/firehol/firehol.conf выглядел следующим образом.
Одной из замечательных особенностей firehol является команда try. Вы можете настроить свой файл конфигурации и выполнить «попытку firehol», если вы подключились через ssh и что-то о том, что вы изменили, заблокировало ваш доступ к сети, то firehol отменит изменения. Чтобы изменения вступили в силу, вы должны сказать commit.
источник
Я бы предпочел Shorewall . Он прост в настройке, но в то же время гибкий.
источник
Может быть, вам стоит взглянуть на http://iptables-tutorial.frozentux.net/iptables-tutorial.html . Также вы можете найти больше информации на lartc.org
источник
sudo apt-get install firestarter
Затем посмотрите в меню Система-> Администрирование.
источник