Сегодня мы покажем вам некоторые общие правила и команды брандмауэра в iptables. Iptables – полезная утилита командной строки для настройки брандмауэра ядра Linux. Iptables содержит пять таблиц: raw, filter, nat, mangle и security. Каждая таблица состоит из цепей. Цепь – это список правил брандмауэра, которые следуют по порядку. Давайте начнем с некоторых общих правил и команд брандмауэра в iptables.
Установить iptables
Войдите в свой VPS через SSH в качестве пользователя root:
ssh root@IP_Address -p Port_number
Установка iptables очень проста. Если у вас есть Ubuntu VPS или Debian VPS, выполните следующие команды:
apt-get update apt-get upgrade apt-get install iptables iptables-persistent
Если на вашем VPS установлен CentOS или Fedora, выполните следующие команды:
yum clean all yum update yum install iptables
Вот и все, теперь вы должны успешно установить iptables на свой сервер.
Общие правила брандмауэра в iptables
Ниже перечислены примеры общих правил брандмауэра.
Принять все пакеты ESTABLISHED и RELATED:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Разрешать соединения HTTP и HTTPS из любого места:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Разрешить доступ к порту 21 только с определенного IP-адреса (например, 192.168.1.123) и блокировать доступ со всех других IP-адресов на сервер (например, IP-адрес сервера 192.168.1.100):
iptables -A INPUT -s 192.168.1.123 -d 192.168.1.100 -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT iptables -A INPUT -d 192.168.1.100 -p tcp -m tcp --dport 21 -j DROP iptables-save
Блокировать IP-адрес (например, 192.168.1.21):
iptables -A INPUT -s 192.168.1.21 -j DROP
Заблокируйте диапазон IP и отклоните все пакеты (например, 192.168.1.0/24):
iptables -A INPUT -s 192.168.1.0/24 -j REJECT
Чтобы заблокировать исходящий трафик на порт (например, порт 123), используйте:
iptables -A OUTPUT -p tcp --dport 123 -j DROP
Общие команды iptables
Перечислите все правила во всех цепочках в подробном режиме и покажите IP-адреса и номера портов вместо имен хостов и служб, включая имя интерфейса, параметры правил (если есть) и маски TOS:
iptables -nvL | less
Chain INPUT (policy ACCEPT 17M packets, 3161M bytes) pkts bytes target prot opt in out source destination 90M 18G cP-Firewall-1-INPUT all -- * * 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 cP-Firewall-1-INPUT all -- * * 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT 16M packets, 5107M bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 25,465,587 owner GID match 32006 18618 9100K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 25,465,587 owner GID match 12 0 0 ACCEPT tcp -- * * 0.0.0.0/0 127.0.0.1 multiport dports 25,465,587 owner UID match 32001 10686 946K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 25,465,587 owner UID match 0 Chain cP-Firewall-1-INPUT (2 references) pkts bytes target prot opt in out source destination 39 2264 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:993 54 2872 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:53 7509 450K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:21 557K 34M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:443 19655 1142K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 1057 43388 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:8080 7533 452K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:143 382 16664 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 2871K 173M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:995 23539 1284K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:110 8353 500K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25 71 3680 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:465 519K 31M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3306 132 9948 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:53
Чтобы отображать правила в цепочках с номерами правил, используйте:
iptables -nvL --line-numbers
Это полезно, если вы хотите удалить правило (например, удалить номер правила 9 из цепочки INPUT):
iptables -D INPUT 9
Или добавьте правило между двумя существующими правилами (например, добавьте правило брандмауэра между правилами № 2 и 3):
iptables -I OUTPUT 3 -d 127.0.0.1/32 -p tcp -m multiport --dports 25,465,587 -m owner --uid-owner 201 -j ACCEPT
Чтобы перечислить все команды, которые использовались для создания используемых в настоящее время правил iptables, используйте следующую команду:
iptables -S
Эта команда полезна, если вам нужно отредактировать или удалить некоторые правила брандмауэра.
-P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT -N cP-Firewall-1-INPUT -A INPUT -j cP-Firewall-1-INPUT -A FORWARD -j cP-Firewall-1-INPUT -A OUTPUT -p tcp -m multiport --dports 25,465,587 -m owner --gid-owner mailman -j ACCEPT -A OUTPUT -p tcp -m multiport --dports 25,465,587 -m owner --gid-owner mail -j ACCEPT -A OUTPUT -d 127.0.0.1/32 -p tcp -m multiport --dports 25,465,587 -m owner --uid-owner cpanel -j ACCEPT -A OUTPUT -p tcp -m multiport --dports 25,465,587 -m owner --uid-owner root -j ACCEPT -A cP-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 993 -j ACCEPT -A cP-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT -A cP-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT -A cP-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT -A cP-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A cP-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT -A cP-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 143 -j ACCEPT -A cP-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A cP-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 995 -j ACCEPT -A cP-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 110 -j ACCEPT -A cP-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT -A cP-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 465 -j ACCEPT -A cP-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT -A cP-Firewall-1-INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
Очистить все правила брандмауэра:
iptables -F
Использовать ‘iptables -h | less ‘для получения дополнительной информации обо всех параметрах команды iptables.