LINUX.ORG.RU
ФорумAdmin

IPtables -Закрытие портов для всех кроме одного IP


0

1

Уважаемые форумчане подскажите начинающему, как осуществить закрытие портов по средством iptables, для порта к примеру 20 и 80, так что бы тот и другой порт был закрыт для всех из вне и доступен только владельцу определённого ip-адресса.

Ответ на: комментарий от dreamer

Понимаете ли я не понимаю каким образом составляется правило. Прочитав о iptables на wikipedia я не нашёл ответа на этот вопрос. Не могли бы вы поподробнее описать, привести пример составления данного правила. И последующих строк на примере IP 109.107.123.13

fdeadalf
() автор топика

Задаешь политику, что не разрешено, то запрещено. Разрешаешь владельца.

iptables -P INPUT -j DROP iptables -A INPUT -s 1.2.3.4 -j ACCEPT

anonymous
()
Ответ на: комментарий от fdeadalf

iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A INPUT -m state --state NEW -p tcp -s 109.107.123.13 --dport 20 -j ACCEPT

iptables -A INPUT -m state --state NEW -p tcp -s 109.107.123.13 --dport 80 -j ACCEPT

iptables -A INPUT -j REJECT

alexa_k
()
Ответ на: комментарий от fdeadalf

это закрыто вообще все, но открыто два порта для нужного ИП и для локалхоста открыто все

alexa_k
()
Ответ на: комментарий от fdeadalf

А не могли бы вы с первой по последнюю строчку написать так как это должно быть вписано?

# запретить всё, что не разрешено для входящих
iptables -P INPUT DROP 

# разрешить подключаться с IP-адреса 1.2.3.4 по протоколу TCP на порт 20
iptables -A INPUT -s 1.2.3.4 -p tcp --dport 20 -j ACCEPT

# разрешить подключаться с IP-адреса 1.2.3.4 по протоколу TCP на порт 80
iptables -A INPUT -s 1.2.3.4 -p tcp --dport 80 -j ACCEPT

# посмотреть таблицу установленных правил
iptables -nL
anonymous
()
Ответ на: комментарий от alexa_k

вводить строчки в консоли от рута, по одной. Если уже че-то чудили, то сперва ввести: iptables -F iptables -X

alexa_k
()
Ответ на: комментарий от fdeadalf

Если вы не знаете как работает файрвол то не стоит что либо фильтровать, потому что это мнимая безопасность. Лучше займитесь изучением, а потом настраивайте.

ventilator ★★★
()

ТС без понимания как работает iptables настраивать его нереально, даже по советам других людей.

Почитай доку, тебе линков уже накидали. Не поленись, пару месяцев почитаешь и поймешь.

MikeDM ★★★★★
()
Ответ на: комментарий от MikeDM

ясен красен не во все. в общий принцип.

этого вполне достаточно чтобы изучать тонкости по мере необходимости

tazhate ★★★★★
()
Ответ на: комментарий от anonymous

Ужас. А макроподстановки не работают? Разве в IPTABLES нельзя заранее определить макросы для числовых констант, чтобы не искать «магические номера» по всей простыне правил?

К примеру, решение для PF:

# Макросы
allowed_tcp="{ 1.2.3.4 }"
allowed_tcp_services="{ 20, www }"
# Блокировка всего трафика
block all
# Разрешающие правила
pass inet proto tcp from $allowed_tcp to port $allowed_tcp_services
pass out all

iZEN ★★★★★
()

как более хитрый вариант можете посмотреть knockd,
он открывает доступ к порту по секретной комбинации тыканий по другим портам

Sylvia ★★★★★
()
Ответ на: комментарий от iZEN

Разве в IPTABLES нельзя заранее определить макросы для числовых констант

@def $HOSTS = (1.2.3.4 1.2.3.5)
@def $PORTS = (20 www)

table filter {
  chain INPUT {
    policy DROP;
    proto tcp saddr $HOSTS dport $PORTS ACCEPT;
  }

  chain OUTPUT policy ACCEPT;
}

Круто, да?

anonymous
()
Ответ на: комментарий от anonymous

Круто, да?

Впервые увидел человеческую программу на IPTABLES вместо тупой последовательности команд. Программисты поймут, админы — нет. Закапывайте.

iZEN ★★★★★
()
Ответ на: комментарий от iZEN

Ну, сам iptables так не умеет. Это ferm, парсер к нему такой.

Программисты поймут, админы — нет. Закапывайте.

Толсто.

Можно еще на баше запрограммировать, только криво получится и недекларативно.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.