Настройка фаервола линукс

Краткое введение в вопрос

Для начала разберемся, что такое файрвол. Это подсистема, выполняющая обработку трафика, проходящего через интерфейсы машины. Определение не совсем академическое, но, надеюсь, понятное. Под обработкой может подразумеваться фильтрация пакетов на основании определенных правил (что пропустить, а что отбросить), модификация пакетов (например, подмена IP-адресов в ходе NAT-трансляции), перенаправление пакетов (форвардинг), контроль использования доступной полосы пропускания (трафик-шейпинг).

Изначально файрволы проектировались для работы на сетевом и транспортном уровнях модели OSI, то есть фильтрация выполнялась на основе информации, которую можно было получить из заголовков IP- и TCP/UDP-пакетов. Однако зачастую файрволы вторгаются и на другие уровни стека: канальный уровень (фильтрация по MAC-адресам), прикладной уровень (использование специфических для FTP-пакетов параметров) и т.д.

FreeBSD готова предложить тебе целых три файрвола, на любой вкус: родной IPFirewall (ipfw), присутствующий в ней с доисторических времен; IPFilter (ipf), разрабатываемый как независимый продукт и доступный для целой плеяды ОС (разве что Windows осталась обделенной); и PacketFilter (pf), портированный из OpenBSD, слава о безопасности которой уже, наверное, достигла ближайших к нам обитаемых миров. Поддержка ipf появилась во FreeBSD 4.0, pf чуть позже — начиная с 5.3. На границе четвертой и пятой ветвей претерпел некоторые изменения и доморощенный ipfw, предоставив пользователям ряд дополнительных возможностей. В 5.х новая версия стала доступна под именем ipfw2.

Поскольку сейчас проблемы стабильности пятой ветки в версиях 6.x успешно преодолены, то нет особого смысла ставить более древние версии. Так что будем считать, что «из коробки» тебе доступны все три файрвола — ipfw/ipfw2, ipf и pf.

Шаг 5 – Делаем защищенный FTP

По умолчанию, FTP не делает никакого шифрование данных, поэтому мы будем использовать TLS/SSL, чтобы позаботиться о безопасности. В качестве первого шага нам нужно создать SSL сертификат и использовать его для защиты Ubuntu FTP сервера. Для начала выполним следующую команду:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Флаг —days делает сертификат действующим в течение года и мы включаем 2048-битный приватный ключ RSA в этой же команде. Когда запросит нужные данные введите их в предоставленном поле.

После создания сертификата ещё раз откройте конфигурационный файл:

sudo nano /etc/vsftpd.conf

В конце файла есть строка с “_rsa”. Закомментируйте эти две строки:

# rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
# rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Вместо этого мы направим конфиг файл на сертификат, который мы создали. Добавьте такие строки:

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

Теперь мы включим SSL и убедимся, что только пользователи со включённым SSL могут с нами связываться. Измените значение ssl_enable на YES:

ssl_enable=YES

Теперь добавьте следующие строки для продолжения создания защиты (это запретить какие-либо анонимные соединения с использованием SSL):

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

Настройте TLS используя:

ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

Здесь мы добавим ещё 2 опции. Во-первых, повторное использование SSL не будет необходимым, потому что это может привести к разрывам у большого количества клиентов. Во-вторых, мы будем использовать высокозащищенный код шифрования, что будет означать, что длина ключа соответствует (или больше, чем) 128 бит.

require_ssl_reuse=NO
ssl_ciphers=HIGH

Сделаем ещё раз перезапуск, для вступления изменений в силу:

sudo systemctl restart vsftpd

Прекрасно! Вот вы и настроили FTP сервер на вашем Ubuntu VPS для работы с протоколом SSL/TLS.

Step 3 — Setting Up Default Policies

If you’re just getting started with your firewall, the first rules to define are your default policies. These rules control how to handle traffic that does not explicitly match any other rules. By default, UFW is set to deny all incoming connections and allow all outgoing connections. This means anyone trying to reach your server would not be able to connect, while any application within the server would be able to reach the outside world.

Let’s set your UFW rules back to the defaults so we can be sure that you’ll be able to follow along with this tutorial. To set the defaults used by UFW, use these commands:

These commands set the defaults to deny incoming and allow outgoing connections. These firewall defaults alone might suffice for a personal computer, but servers typically need to respond to incoming requests from outside users. We’ll look into that next.

Step 4 — Allowing SSH Connections

If we enabled our UFW firewall now, it would deny all incoming connections. This means that we will need to create rules that explicitly allow legitimate incoming connections — SSH or HTTP connections, for example — if we want our server to respond to those types of requests. If you’re using a cloud server, you will probably want to allow incoming SSH connections so you can connect to and manage your server.

To configure your server to allow incoming SSH connections, you can use this command:

This will create firewall rules that will allow all connections on port , which is the port that the SSH daemon listens on by default. UFW knows what port means because it’s listed as a service in the file.

However, we can actually write the equivalent rule by specifying the port instead of the service name. For example, this command works the same as the one above:

If you configured your SSH daemon to use a different port, you will have to specify the appropriate port. For example, if your SSH server is listening on port , you can use this command to allow connections on that port:

Now that your firewall is configured to allow incoming SSH connections, we can enable it.

Allow Other Connections

Now you should allow all of the other connections that your server needs to respond to. The connections that you should allow depends your specific needs. Luckily, you already know how to write rules that allow connections based on a service name or port—we already did this for SSH on port 22.

We will show a few examples of very common services that you may need to allow. If you have any other services for which you want to allow all incoming connections, follow this format.

HTTP—port 80

HTTP connections, which is what unencrypted web servers use, can be allowed with this command:

If you’d rather use the port number, 80, use this command:

HTTPS—port 443

HTTPS connections, which is what encrypted web servers use, can be allowed with this command:

If you’d rather use the port number, 443, use this command:

FTP—port 21

FTP connections, which is used for unencrypted file transfers (which you probably shouldn’t use anyway), can be allowed with this command:

If you’d rather use the port number, 21, use this command:

Step 5 — Allowing Other Connections

At this point, you should allow all of the other connections that your server needs to respond to. The connections that you should allow depends your specific needs. Luckily, you already know how to write rules that allow connections based on a service name or port; we already did this for SSH on port . You can also do this for:

  • HTTP on port 80, which is what unencrypted web servers use, using or
  • HTTPS on port 443, which is what encrypted web servers use, using or
  • FTP on port 21, which is used for unencrypted file transfers (which you probably shouldn’t use anyway), using or

There are several others ways to allow other connections, aside from specifying a port or known service.

Specific Port Ranges

You can specify port ranges with UFW. Some applications use multiple ports, instead of a single port.

For example, to allow X11 connections, which use ports -, use these commands:

When specifying port ranges with UFW, you must specify the protocol ( or ) that the rules should apply to. We haven’t mentioned this before because not specifying the protocol simply allows both protocols, which is OK in most cases.

Specific IP Addresses

When working with UFW, you can also specify IP addresses. For example, if you want to allow connections from a specific IP address, such as a work or home IP address of , you need to specify , then the IP address:

You can also specify a specific port that the IP address is allowed to connect to by adding followed by the port number. For example, If you want to allow to connect to port (SSH), use this command:

Subnets

If you want to allow a subnet of IP addresses, you can do so using CIDR notation to specify a netmask. For example, if you want to allow all of the IP addresses ranging from to you could use this command:

Likewise, you may also specify the destination port that the subnet is allowed to connect to. Again, we’ll use port (SSH) as an example:

Connections to a Specific Network Interface

If you want to create a firewall rule that only applies to a specific network interface, you can do so by specifying “allow in on” followed by the name of the network interface.

You may want to look up your network interfaces before continuing. To do so, use this command:

The highlighted output indicates the network interface names. They are typically named something like or .

So, if your server has a public network interface called , you could allow HTTP traffic (port ) to it with this command:

Doing so would allow your server to receive HTTP requests from the public Internet.

Or, if you want your MySQL database server (port ) to listen for connections on the private network interface , for example, you could use this command:

This would allow other servers on your private network to connect to your MySQL database.

Step 7 — Deleting Rules

Knowing how to delete firewall rules is just as important as knowing how to create them. There are two different ways specify which rules to delete: by rule number or by the actual rule (similar to how the rules were specified when they were created). We’ll start with the delete by rule number method because it is easier, compared to writing the actual rules to delete, if you’re new to UFW.

By Rule Number

If you’re using the rule number to delete firewall rules, the first thing you’ll want to do is get a list of your firewall rules. The UFW status command has an option to display numbers next to each rule, as demonstrated here:

If we decide that we want to delete rule 2, the one that allows port 80 (HTTP) connections, we can specify it in a UFW delete command like this:

This would show a confirmation prompt then delete rule 2, which allows HTTP connections. Note that if you have IPv6 enabled, you would want to delete the corresponding IPv6 rule as well.

By Actual Rule

The alternative to rule numbers is to specify the actual rule to delete. For example, if you want to remove the rule, you could write it like this:

You could also specify the rule by , instead of by service name:

This method will delete both IPv4 and IPv6 rules, if they exist.

Allow SSH Connections

If we enabled our UFW firewall now, it would deny all incoming connections. This means that we will need to create rules that explicitly allow legitimate incoming connections—SSH or HTTP connections, for example—if we want our server to respond to those types of requests. If you’re using a cloud server, you will probably want to allow incoming SSH connections so you can connect to and manage your server.

To configure your server to allow incoming SSH connections, you can use this UFW command:

This will create firewall rules that will allow all connections on port 22, which is the port that the SSH daemon listens on. UFW knows what “ssh”, and a bunch of other service names, means because it’s listed as a service that uses port 22 in the file.

We can actually write the equivalent rule by specifying the port instead of the service name. For example, this command works the same as the one above:

If you configured your SSH daemon to use a different port, you will have to specify the appropriate port. For example, if your SSH server is listening on port 2222, you can use this command to allow connections on that port:

Now that your firewall is configured to allow incoming SSH connections, we can enable it.

Шаг 7 — Удаление правил

Знать процедуру удаления правил брандмауэра так же важно, как и знать процедуру их создания. Существует два разных способа указывать правила для удаления: по номеру правила или по фактическому правилу (так же, как правила задавались при их создании)

Начнем с метода удаления по номеру правила, поскольку этот метод проще.

По номеру правила

Если вы используете номер правила для удаления правил брандмауэра, прежде всего нужно получить список правил брандмауэра. Команда UFW status имеет опцию отображение номеров рядом с каждым правилом, как показано здесь:

Если мы решим удалить правило 2, разрешающее соединения через порт 80 (HTTP), мы можем указать его в команде UFW delete, как показано здесь:

После этого откроется диалогового окна подтверждения удаления правила 2, разрешающего соединения HTTP. Если вы включили поддержку IPv6, вы можете также удалить соответствующее правило для IPv6.

По фактическому имени правила

Вместо номеров правил можно указывать фактические имена удаляемых правил. Например, если вы хотите удалить правило , вы можете использовать следующую команду:

Также вы можете указать это правило как , а не указывать имя службы:

Этот метод удалит правила IPv4 и IPv6, если они существуют.

Фаерволы для локальных сетей

Обычно корпоративные локальные сети больше нуждаются в обеспечении безопасности, чем домашние ПК. Одновременно создаются лучшие условия для построения нужной инфраструктуры. На практике в фирменной локальной сети за выход в Интернет и обеспечение безопасности часто отвечает отдельный компьютер. Все остальные сетевые службы работают на других компьютерах. В очень небольших сетях функции фаервола и сетевого сервера может выполнять один компьютер. Но такой подход не является оптимальным, так как на этом компьютере придется запустить и эксплуатировать множество сетевых служб, которые могут быть использованы для нанесения вреда сети. Правда, такое обеспечение безопасности все равно лучше, чем полное отсутствие фаервола.

В очень больших сетях часто бывает не один, а даже два фаервола. Первый фаервол служит лишь для обеспечения базовой безопасности, но является проницаемым для таких интернет-протоколов, как HTTP или FTP. Сетевое пространство в таком случае называется демилитаризованной зоной (DMZ). Этот термин означает, что внутри сети предпринимаются лишь ограниченные меры обеспечения безопасности. Как правило, в этой зоне располагается веб-сервер, а также другие сетевые серверы, которые должны быть общедоступны (то есть могут быть найдены через Интернет). Демилитаризованная зона отделяется от оставшейся части локальной сети вторым фаерволом. Уже за ним располагаются все другие службы, отвечающие за работу локальной сети и абсолютно недоступные извне. Однако конфигурация многоступенчатого фаервола — очень обширная тема, выходящая за рамки этой книги. Руководства по конфигурации таких барьеров даются в специальной литературе.

Passo 1 — Usando o IPv6 com o UFW (Opcional)

Este tutorial foi escrito tendo o IPv4 em mente, mas funcionará também com o IPv6, contanto que você o habilite. Se seu servidor Ubuntu tiver o IPv6 habilitado, certifique-se de que o UFW esteja configurado para dar suporte ao IPv6, para que ele gerencie as regras de firewall do IPv6, além das regras do IPv4. Para fazer isso, abra a configuração UFW com o ou seu editor favorito.

Então, certifique-se de que o valor seja . Deve se parecer com isto:

/etc/default/ufw excerpt

Salve e feche o arquivo. Agora, quando o UFW estiver habilitado, ele será configurado para escrever regras de firewall para ambos IPv4 e IPv6. No entanto, antes de habilitar o UFW, nós vamos querer garantir que seu firewall esteja configurado para permitir que você se conecte via SSH. Vamos começar configurando as políticas padrão.

Примеры использования ufw

  1. Для начала требуется разрешить ufw. Наберите в терминале:

Если его не оказалось на сервере (версия старая или по другим причинам), то для установки нужно выполнить команду:

  1. Открыть порт (в данном примере SSH):
  1. Правила могут быть добавлены с использованием нумерованного формата:
  1. Подобным образом можно закрыть открытый порт:
  1. Для удаления правила используйте delete:
  1. Также можно разрешить доступ к порту с определенных компьютеров или сетей. Следующий пример разрешает на этом компьютере доступ по SSH с адреса 192.168.0.2 на любой IP-адрес:

Замените 192.168.0.2 на 192.168.0.0/24 чтобы разрешить доступ по SSH для всей подсети.

  1. Добавление опции —dry-run команде ufw выведет список правил, но не применит их. Например, далее показано, что было бы применено, если открыть HTTP-порт:
  1. ufw можно выключить командой:

Отключение firewall в Ubuntu можно выполнить этой командой (UFW — это Uncomplicated Firewall).

  1. Чтобы посмотреть статус сетевой защиты:

  1. Для более полного отображения информации введите:

  1. Для отображения в виде формата numbered:

12. Для сброса правил воспользуйтесь командой sudo ufw reset, 2 пункт также можно использовать диапазон партов 2000:3000, пункт 13 Логирование, Для включения логов введите команду: sudo ufw logging on Ufw поддерживает несколько уровней логирования:

off –отключен.low – регистрирует все заблокированные пакеты, не соответствующие заданной политике (с ограничением скорости), а также пакеты, соответствующие зарегистрированным правилам.medium – все то же, что при значении low, плюс все разрешенные пакеты, не соответствующие заданной политике, все недопустимые пакеты, и все новые соединения. Все записи ведутся с ограничением скорости.high – работает так же, как и medium, плюс все пакеты с ограничением скорости.full – также как и high, но без ограничения скорости.

Чтобы задать уровень, укажите его как параметр:sudo ufw logging high

По умолчанию используется уровень low.

Для просмотра файлов, относящихся к логам ufw, используйте команду:ls /var/log/ufw*

Фаерволы для частных ПК

Еще несколько лет назад стремление защитить домашний ПК фаерволом могло показаться абсурдным. Но со временем ситуация изменилась: сегодня большинство частных ПК постоянно подключены к Интернету, доступны по фиксированному IP-адресу, назначаемому провайдером, азначит, подвергаются опасности. Если, к примеру, на компьютере действует SSH-сервер, то злоумышленник может попытаться войти в сеть через этот сервер. Для этого агрессоры используют сценарии, автоматически подбирающие логины, просто подставляя слова из словаря. Таким образом, хороший пароль дорогого стоит!

Другая опасность таится во WLAN: на настоящий момент хорошо защищенными можно считать только те сети WLAN, в которых применяется механизм WPA2, и то лишь при условии, что используемый пароль является достаточно длинным и сложным. Вы можете возразить, что атака на ваш компьютер не имеет смысла, так как находящиеся на нем данные вряд ли кого-то заинтересуют. Может быть, и так. Но не каждая атака предпринимается с целью выведать данные, а потом манипулировать ими. Часто злоумышленник хочет установить у вас на компьютере маленькую программку, которой позже сможет воспользоваться. Жертвами подобных атак становятся миллионы компьютеров с Windows, которые могут как бы «удаленно управляться» злоумышленниками.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector