ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как настроить брандмауэр с IPTables на Ubuntu и CentOS

Как настроить брандмауэр с IPTables на Ubuntu и CentOS

В этой статье, мы собираемся показать вам, как настроить брандмауэр с IPTables на Linux VPS под управлением Ubuntu или CentOS в качестве операционной системы. Iptables является инструментом администрирования для фильтрации IPv4 пакетов и NAT, и используется для создания и управления таблицами правил фильтрации пакетов IPv4 в ядре Linux.

Правильная настройка и настройка брандмауэра является одним из наиболее важных вещей, которые вы должны сделать, чтобы защитить сервер.

В IPTables, определены несколько различных таблиц соответствия пакетов и каждая таблица может содержать несколько встроенных цепей, а также некоторые цепочки, определенных пользователем. Цепи на самом деле списки правил, которые соответствуют набору пакетов и каждое правило определяет, что делать с согласованным пакетом.

Таблицей по умолчанию является таблица filter и содержит встроенные цепи INPUT, FORWARD, and OUTPUT. Цепь INPUT используется для пакетов, предназначенных для локальных сокетов, цепь FORWARD используется для пакетов, маршрутизируемых через локальный сокет, а цепь OUTPUT используются для локально-генерируемых пакетов.

Подключитесь к серверу через SSH и откройте список правил, определенных в конкретной цепи, используя следующий синтаксис:

sudo iptables -L CHAIN

 

Замените Chain на одной из встроенных цепочек, чтобы увидеть определенные правила. Если не выбрана ни одна цепочка, будут перечислены все сети в выходных данных.

sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

 

Правила брандмауэра указывают, что делать с определенным пакетом, если он соответствует определенным критериям, и в случае, если пакет не соответствует критериям, будет рассмотрено следующее правило брандмауэра указанное в цепочке. Это очень важно знать при определении правил брандмауэра, потому что вы можете легко заблокировать себя из вашего сервера, если вы определяете правило, которое принимает пакеты с вашего локального IP-адреса после правила блокировки.

Цели, которые можно использовать для правил брандмауэра ACCEPT, DROP, QUEUE и RETURN. ACCEPT позволит разрешить пакет, DROP отбросит пакет, QUEUE будет передавать пакет в пользовательское пространство, а RETURN остановит пакетное перемещение по текущей цепочке и будет возобновлено на следующем правиле в предыдущей цепочке. Политика цепи по умолчанию будет определять, что делать с пакетом, если он не соответствует определенному правилу брандмауэра. Как вы можете видеть на выходе первой команды, политика по умолчанию для всех встроенных цепочек устанавливаются ACCEPT. ACCEPT позволит пакету проходить и в принципе не имеет никакой защиты.

Перед добавлением каких-либо конкретных правил, добавьте следующий:

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

 

Это позволит предотвратить соединения, которые были уже созданы, и не будет отброшено и текущая SSH сессия будет оставаться активной.

Затем добавить правила, чтобы разрешить трафик на локальном интерфейсе:

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

 

Далее, разрешить доступ к серверу через SSH для вашего локального IP-адреса, так только вы можете получить доступ к серверу:

sudo iptables -A INPUT -s 111.111.111.111 -p tcp --dport 22 -j ACCEPT

 

Где 111.111.111.111 ваш локальный IP – адрес и 22 является портом прослушивания вашего SSH демона. В случае, если ваши локальные изменения IP адреса динамически, лучше опустить часть -s 111.111.111.111 и использовать другой метод, чтобы защитить службу SSH от нежелательного трафика.

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

 

Далее, разрешить доступ к важным услугам, как сервер HTTP/HTTPS:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Теперь список текущих правил и проверить все ли в порядке. Для детального вывода вы можете использовать следующую команду:
sudo iptables -nvL

 

Если у вас есть другие услуги, которым вы хотите разрешить доступ, лучше сделать это сейчас. После того, как вы закончите, вы можете установить политику по умолчанию для входной встроенной цепи DROP.

sudo iptables -P INPUT DROP

 

Это приведет к какому-либо пакету, который не соответствует критериям правил брандмауэра. Конечный результат должен быть похож на следующий:

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0

 

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

В случае, если вы используете  Ubuntu VPS необходимо установить дополнительный пакет для этой цели. Идите вперед и установите необходимый пакет с помощью следующей команды:

sudo apt-get install iptables-persistent

 

На Ubutnu 14.04 вы можете сохранить и перезагрузить правила брандмауэра , используя команды ниже:

sudo /etc/init.d/iptables-persistent save
sudo /etc/init.d/iptables-persistent reload

 

На Ubuntu 16.04 используйте следующие команды вместо:

sudo netfilter-persistent save
sudo netfilter-persistent reload

 

Если вы используете  CentOS VPS, вы можете сохранить правила брандмауэра с помощью команды ниже:

service iptables save

 

PS . Если вам понравился этот пост, можете поделиться им с друзьями в социальных сетях помощью кнопок ниже или просто оставить комментарий в разделе комментариев.

Exit mobile version