Как добавить правила в исходную таблицу iptables?

Если у вас есть доступ к perl-rename (называется rename в системах на основе Debian, включая Ubuntu, perl-rename в Arch и prename на других), вы можете сделать:

perl-rename -n 's/(\[.*?\])\s*(.*)/$2 - $1/' ./\[*

Объяснение

  • -n : это заставляет perl-rename печатать то, что он будет делать, фактически ничего не переименовывая. Запустите его таким образом и, если он работает так, как ожидалось, удалите -n, чтобы он действительно переименовывался.
  • s/from/to/ : заменит from на to .
  • s/(\[.*?\])\s*(.*)/$2 - $1/' : здесь from — это все, что находится между первым [ и первый ] (\[.*?\]). Затем 0 или более пробельных символов (\s*), а затем все остальное (.*). Круглые скобки вокруг шаблонов будут захватывать их, позволяя нам использовать их как $1 и $2 соответственно в правой части подстановки. Итак, это поместит все после [ ] ($2) перед скобками ($1).
  • ./\[* запустить его для всех файлов и каталогов в текущем каталоге, имя которого начинается с [.
1
07.04.2017, 08:59
2 ответа

С помощью iptables-save , я выяснил, какой правильный формат, при сохранении его в:

/etc/iptables/rules.v4

Пример правил для ссылки в вопросе:

*raw
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -p icmp -m u32 ! --u32 "0x4&0x3fff=0x0" -j DROP
-A PREROUTING -p icmp -m length --length 1492:65535 -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
COMMIT
0
28.01.2020, 01:06

Здесь, я предполагаю, вы не заботитесь об IPv6. Итак, файл, который вы хотите отредактировать:

/etc/sysconfig/iptables

Поместите это в начало вашего файла iptables. Это скелетная реализация таблицы RAW, которая используется перед любой таблицей, связанной с маршрутизацией (например, FILTER). Обратите внимание, что каждая таблица имеет свою собственную команду COMMIT в нижней части своих определений:

*raw
:TCPFLAGS - [0:0]

# the two rules below assure that only TCP packets get examined. All others continue into the *filter table.
-A PREROUTING -p tcp -j TCPFLAGS
-A PREROUTING -j ACCEPT

# quickly accept standard handshakes
# ALLOW ACK or ACK/SYN
#-A TCPFLAGS -j ACCEPT
-A TCPFLAGS -p tcp --tcp-flags FIN,ACK,URG,PSH,RST ACK  -j ACCEPT

# allow ACK/FIN with either URG or PSH, or both, or neither
# but SYN and RST can't be set
-A TCPFLAGS -p tcp --tcp-flags FIN,SYN,ACK,RST  ACK,FIN -j ACCEPT

# allow SYN or ACK/SYN
-A TCPFLAGS -p tcp --tcp-flags FIN,SYN,URG,PSH,RST SYN -j ACCEPT

# allow RST or ACK/RST
-A TCPFLAGS -p tcp --tcp-flags FIN,SYN,URG,PSH,RST RST -j ACCEPT

# this rule catches xmas-tree and fin attacks
-A TCPFLAGS -p tcp --tcp-flags FIN     FIN     -j DROP

# this rule catches xmas-tree and syn/rst attacks
-A TCPFLAGS -p tcp --tcp-flags SYN     SYN     -j DROP

# this rule catches null attacks
-A TCPFLAGS -p tcp --tcp-flags ALL     NONE    -j DROP

#-A TCPFLAGS -p tcp -ecn-tcp-cwr -j DROP
# these rules catch bad ack combinations
#-A TCPFLAGS -p tcp --tcp-flags ACK     ACK     -j ACC
-A TCPFLAGS -j ACCEPT

# so, what do we accept for tcp?
# handshakes (ACK/FIN), (ACK/SYN), (SYN), (ACK), (RST), (ACK/RST), and data packets with 
# PSH or URG or FIN or ACK

COMMIT

Приведенное выше находится над определениями *фильтра. Я не делаю никаких утверждений относительно правильности этих правил. Обратите внимание, что я закомментировал некоторые правила, которые не сработали для меня. Если вы найдете что-то неправильное в моих правилах, пожалуйста, напишите об этом ниже.

0
28.01.2020, 01:06

Теги

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