Иметь правильно настроенный брандмауэр является очень важно для общей безопасности на вашем сервере. На этом уроке мы собираемся показать вам, как настроить брандмауэр и открыть порты, которые нужны на вашем Linux VPS.
Хотя есть несколько мощных инструментов для управления брандмауэром на сервере Linux, мы будем использовать IPtables в этом учебнике. В случае, если вы используете UFW на Ubuntu или Firewalld на CentOS, вы можете проверить наши соответствующие гиды о том , как настроить межсетевой экран с UFW на Ubuntu или как настроить межсетевой экран с FirewallD на CentOS.
Прежде всего, подключитесь к Linux VPS через SSH и выведете список текущих правил Iptables с помощью следующей команды:
sudo iptables -L
Если вы недавно настроили ваш сервер, то не будет никаких правил Iptables и вывод должен быть похож на один ниже:
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
Если уже есть какие-то правила, которые вы не хотите, чтобы были там, вы можете очистить правила, используя следующую команду:
sudo iptables -F
Будьте осторожны с этой командой, особенно если политика по умолчанию на ваших цепях INPUT
и OUTPUT
устанавливается на нечто иное , чем ACCEPT
потому, что может заблокировать вас на вашего сервера.
Первое правило брандмауэра, которое необходимо добавить, заключается в следующем:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Это в основном говорит вашему брандмауэру, чтобы принять текущее соединение SSH. Следующий шаг, чтобы разрешить трафик на интерфейсе loopback и открыть некоторые основные порты, такие как 22
для SSH и 80
для HTTP.
sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A OUTPUT -o lo -j ACCEPT sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Теперь вы готовы открыть другие порты, к которым вы хотите разрешить трафик. Используйте ту же команду, как вы использовали, чтобы открыть порт 22 и 80 в предыдущем примере.
Составьте список существующих правил с помощью:
sudo iptables -L
Выход должен быть аналогичен приведенному ниже:
Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED ACCEPT all -- anywhere anywhere ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT tcp -- anywhere anywhere tcp dpt:http Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere
Для получения более подробной продукции вы можете использовать:
sudo iptables -nvL
И выход должен быть похож на этот:
Chain INPUT (policy ACCEPT 4 packets, 255 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 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 4 packets, 283 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
Теперь вы можете реализовать правило DROP
, которое будет блокировать все входящие пакеты, которые не соответствуют одному из правил ACCEPT
, котрое мы добавили ранее.
sudo iptables -P INPUT DROP
Последнее, что вам нужно сделать, это сохранить правила и сделать их постоянными. Если вы используете Ubuntu VPS, вы можете установить iptables-persistent
для этой цели.
sudo apt-get install iptables-persistent
В Ubuntu 14.04 можно использовать следующие команды, чтобы сохранить/перезагрузить правила Iptables:
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, вы можете использовать следующую команду, чтобы сохранить правила Iptables:
service iptables save
PS . Если вам понравился этот пост, поделитесь им с друзьями в социальных сетях c помощью кнопок на левой стороне поста или просто оставьте комментарий ниже.
Спасибо. У меня был домашний сервер под CentOS 7.6 и в нём была проблема с доступом из Linux по сети к ресурсам Samba, доступ к ним просто периодически пропадал, в то же время из Windows доступ к ресурсам Samba оставался, но только слегка затянутый, примерно 15 — 20 секунд против 0,5 секунды, когда Samba сервер работал нормально. Одновременно с этим на столько же увеличилось время доступа к серверу по SSH. Решение проблемы в CentOS сервере почти за год не нашел, заменил систему на Ubuntu 18.04.2 server и статья очень помогла настроить брандмауэр на сервере. Ещё раз спасибо. Николай.