Мне нужен совет для правил iptables

Можете ли вы сказать, хороший ли сценарий iptables? Окончательные правила защищают от DOS-атак. Полезны ли они? У меня нет сервера, и мой компьютер используется только для серфинга в Интернете.

Вот мой скрипт:

iptables -t filter -F
iptables -t filter -X
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -A INPUT -o lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
or
iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -p icmp -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
iptables -A INPUT -m pkttype --pkt-type broadcast -j DROP
iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state ! --state INVALID -j ACCEPT
#if I want to open a port:
iptables -t filter -A INPUT -s 192.168.0.0/24 --dport 110 -j ACCEPT
iptables -t filter -A OUTPUT -s 192.168.0.0/24 --sport 110 -j ACCEPT
#
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix   "iptables denied: " --log-level 7
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p tcp --syn -m limit --limit 1/second -j ACCEPT
iptables -A FORWARD -p udp -m limit --limit 1/second -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/second -j ACCEPT
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

Спасибо заранее.

#

Итак, я изменил сценарий. Основное подключение (без сервера, без маршрутизатора, без DHCP и Ipv6 отключено)

Я сделал 2 скрипта. Второй, надеюсь, более безопасен. Как вы думаете?

script one:

  iptables -F
  iptables -X -t filter
  iptables -P INPUT DROP 
  iptables -P FORWARD DROP 
  iptables -P OUTPUT ACCEPT

  #lo
  iptables -A INPUT -i lo -j ACCEPT
  iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
  iptables -A OUTPUT -o lo -j ACCEPT

  #CONNECTION
  iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

  #PING ACCEPTED AND OPENING PORTS THAT I NEED
  iptables -A INPUT -p icmp --icmp-type echo-request -m conntrack --ctstate NEW -m limit --limit 1/s --limit-burst 1 -j ACCEPT
  iptables -A INPUT -p tcp --dport xxxx -j ACCEPT
  iptables -A INPUT -p udp --dport xxxx -j ACCEPT

  #LOG
  iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
  iptables -A FORWARD -j LOG

Сценарий 2 (более безопасный):

  iptables -F
  iptables -X -t filter
  iptables -P INPUT -j DROP
  iptables -P FORWARD DROP 
  iptables -P OUTPUT -j DROP

  modprobe ip-conntrack

  #lo
  iptables -A INPUT -i lo -j ACCEPT
  iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
  iptables -A OUTPUT -o lo -j ACCEPT

  #connection
  iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
  iptables -A OUTPUT -m state ! --state INVALID -j ACCEPT

  #PING ACCEPTED AND OPENING PORTS THAT I NEED
  iptables -A INPUT -p icmp --icmp-type echo-request -m conntrack --ctstate NEW -m limit --limit 1/s --limit-burst 1 -j ACCEPT
  iptables -A INPUT -d 0.0.0.0/0 -p tcp --sport xxxx -m state --state ESTABLISHED -j ACCEPT (I don't know if I must add 0.0.0.0/0 or 192.168.0.0/24)
  iptables -A INPUT -m limit --limit 7/s -j LOG

  #LOG
  iptables -A OUTPUT -m limit --limit 7/s -j LOG
  iptables -A FORWARD -m limit --limit 7/s -j LOG

Спасибо заранее.

1
задан 28 December 2016 в 18:32

1 ответ

Нет, ваш скрипт iptables не очень хорош (и извините, если это звучит жестко). Нет, ваши правила атаки DOS не полезны, и я думаю, что цепочка INPUT может помешать нормальной работе. Ваш FORWARD-цепочка не нужен, потому что вы не используете цепочку FORWARD (ваш компьютер не работает как маршрутизатор).

У вас много -t filter строк, но вы не определили цепочку

Я не знаком с модулем pkttype и поэтому не могу прокомментировать эту строку.

Думаю, вам нужно будет разрешить некоторые DHCP (порты 67 и 68) в зависимости от того, как вы назначаете свои IP-адреса.

0
ответ дан 23 May 2018 в 03:29
  • 1
    Почему вы подразумеваете под «quot;» вы не определили цепочку с названием «фильтр» & quot ;? Добавить ли фильтр в верхней части скрипта? DHCP для сервера, нет? Но у меня нет сервера. – Abigael 12 December 2016 в 22:41
  • 2
    Я имею в виду, что вы имеете в виду цепочку, которую вы не создали. Во всяком случае, и, например, я думаю, что вы хотите это iptables -P INPUT DROP вместо этого iptables -t filter -P INPUT DROP. Если вы используете DHCP, вам нужно разрешить его. – Doug Smythies 12 December 2016 в 23:35
  • 3
    Хорошо, спасибо. Еще один быстрый вопрос: это правило для открытия порта на моем частном языке: iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 6881 -j ACCEPT. Но если я подключусь к БЕСПЛАТНОму Wi-Fi-интернету, могу ли я использовать это правило или должен ли я сделать это правило: iptables -A INPUT -p tcp -dport 6881 -j ACCEPT? – Abigael 15 December 2016 в 15:42
  • 4
    @Abigael: вы можете попробовать версию команды, которая не указывает суб-сеть. Часто маршрутизаторы точек доступа Wi-Fi не разрешают клиентский трафик, поэтому он все еще может не работать. – Doug Smythies 16 December 2016 в 04:12
  • 5
    Спасибо. Я изменю сценарий – Abigael 19 December 2016 в 15:04

Другие вопросы по тегам:

Похожие вопросы: