RTFM.WIKI

Ordnung muß sein. Ordnung über alles (18+)

Инструменты пользователя

Инструменты сайта


Боковая панель


Навигация


Линкшэринг


WTF?!

Написать в спортлото

Донат Данкинс


Добавить новую страницу

Вы не можете добавлять страницы
linux:iptables:iptables_tips

Шпаргалка iptables

Разрешить DNS

iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 --dport 1024:65535 -j ACCEPT

Can't use -i with OUTPUT

-i опция для указания входящего интерфейса. Поэтому в цепочке OUTPUT это работать не будет. Для этого существует -o опция.

Как заблокировать пустые пакеты length 0

iptables -A INPUT -p tcp -d 192.168.10.252 -m length --length 0 -j DROP

Блокировать без флага

iptables -A INPUT -p tcp ! --syn -m conntrack --state NEW -j DROP

Заблокировать доступ к домену на сервере

На сервере расположен сайт foobar.com
Нужно заблокировать к нему доступ

iptables -A INPUT -p tcp --dport 80 -m string --string "Host: foobar.com" -j DROP
iptables -A INPUT -p tcp --dport 80 -m string --string "Host: www.foobar.com" -j DROP

Как сохранить правила iptables?

CentOS

FIX

Debian 7 / Wheezy

Устанавливаем пакет iptables-persistent

# apt-get install iptables-persistent

Сохраняем текущие правила iptables

# /etc/init.d/iptables-persistent save

Добавляем в автозагрузку

# update-rc.d iptables-persistent defaults

Debian 8 / Jessie

Устанавливаем пакет netfilter-persistent

# apt-get install netfilter-persistent iptables-persistent

Сохраняем текущие правила iptables

# netfilter-persistent save

Добавляем в автозагрузку

# systemctl enable netfilter-persisten

В некоторых случаях может появиться следующая ошибка при установке пакета netfilter-persistent

root@localhost:~# apt-get install iptables-persistent
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  netfilter-persistent
The following NEW packages will be installed:
  iptables-persistent netfilter-persistent
  
---cut---

update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
A dependency job for netfilter-persistent.service failed. See 'journalctl -xn' for details.
invoke-rc.d: initscript netfilter-persistent, action "start" failed.
dpkg: error processing package netfilter-persistent (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of iptables-persistent:
 iptables-persistent depends on netfilter-persistent (= 1.0.3); however:
  Package netfilter-persistent is not configured yet.

dpkg: error processing package iptables-persistent (--configure):
 dependency problems - leaving unconfigured
Processing triggers for systemd (215-17+deb8u3) ...
Errors were encountered while processing:
 netfilter-persistent
 iptables-persistent
E: Sub-process /usr/bin/dpkg returned an error code (1)

Workaround - закомментировать в /etc/modules строку acpiphp и перезагрузить машину.

root@localhost:~# cat /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

loop
# acpiphp



Warning: weird character in interface `eth0:1' (No aliases, :, ! or *).

Busted Deprecated! Не используйте алиасы. И ifconfig тоже.

Port Forwarding RDP / Переадресовываем пакеты

Перенаправление трафика

Клиент - x.x.x.x
RDP сервер на порту 65001 - y.y.y.y
VPS сервер z.z.z.z

Нужно подключаться к RDP серверу через IP адрес VPS. Т.е. осуществлять подключение к RDP не напрямую, а с адреса VPS.

net.ipv4.ip_forward = 1

iptables -t nat -A PREROUTING -d z.z.z.z -p tcp -m tcp --dport 65001 -j DNAT --to-destination y.y.y.y:65001
iptables -t nat -A POSTROUTING -d y.y.y.y -p tcp -m tcp --dport 65001 -j SNAT --to-source z.z.z.z
iptables -t nat -A OUTPUT -d z.z.z.z -p tcp -m tcp --dport 65001 -j DNAT --to-destination y.y.y.y

Как закрыть 8080 порт?

Пример: ISPmgr, nginx (80) + apache (8080) Нужно закрыть извне 8080 порт бэкенда.

http://serveradministrator.ru/apache/close-port-apache-8080/

iptables -A INPUT -p tcp --dport 8080 -s localhost -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j DROP
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT ! -s 109.68.191.13 -p tcp -m tcp --dport 8080 -j DROP
iptables -A INPUT ! -s 127.0.0.1 -p tcp -m tcp --dport 8080 -j DROP
iptables -I INPUT -i eth0 -s 127.0.0.1 -p tcp --dport 8080 -j ACCEPT

Блокировка трафика из сети TOR

Сброс правил iptables

nano iptables-hello-world.sh
#!/bin/sh
echo "Stopping iptables service"
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
chmod u+x /root/iptables-hello-world.sh
sh /root/iptables-hello-world.sh
# iptables -L

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

Как заблокировать подсеть

http://www.linux.org.ru/forum/admin/6473844#comment-6473941

iptables -A INPUT -s 91.20.0.0/16 -j REJECT
iptables -A OUTPUT -d 91.20.0.0/16 -j REJECT

List of Loaded iptables Modules

Как удалить iptables правило по номеру

http://www.opennet.ru/tips/info/603.shtml

iptables -L INPUT --line-numbers
iptables -D INPUT номер

iptables -t nat -L POSTROUTING --line-numbers
iptables -t nat -D POSTROUTING номер

Ошибка

postrouting iptables: No chain/target/match by that name

Не забываем про

-t nat

Настройка iptables для proftpd,vsftpd

(необходимо изменить ip 192.168.0.1 на ip вашего сервера)

service iptables stop
iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 192.168.0.1 --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -s 192.168.0.1 --sport 21 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 192.168.0.1 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p tcp -s 192.168.0.1 --sport 1024:65535 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp -s 192.168.0.1 --sport 20 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 192.168.0.1 --dport 20 -m state --state ESTABLISHED -j ACCEPT 

(необходимо добавить модуль iptables)

vi /etc/sysconfig/iptables-config
# Load additional iptables modules (nat helpers)
#   Default: -none-
# Space separated list of nat helpers (e.g. 'ip_nat_ftp ip_nat_irc'), which
# are loaded after the firewall rules are applied. Options for the helpers are
# stored in /etc/modprobe.conf.
IPTABLES_MODULES="ip_conntrack_netbios_ns"
IPTABLES_MODULES="ip_conntrack_ftp"
service iptables start

данное решение поможет устранить вам ошибку

notice: user : aborting transfer: Data connection closed
iptables -A OUTPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT

ip_conntrack: table full, dropping packet

wmod kernel: ip_conntrack: table full, dropping packet.
wmod kernel: printk: 2449 messages suppressed.
wmod kernel: ip_conntrack: table full, dropping packet.
wmod kernel: printk: 2041 messages suppressed.

Show current value

cat /proc/sys/net/ipv4/ip_conntrack_max # 

Set larger value

echo 65536 > /proc/sys/net/ipv4/ip_conntrack_max

Kernel Packet Traveling Diagram

http://www.docum.org/docum.org/kptd/

                            Network
                    -----------+-----------
                               |
                  +--------------------------+
          +-------+-------+        +---------+---------+
          |    IPCHAINS   |        |      IPTABLES     |
          |     INPUT     |        |     PREROUTING    |
          +-------+-------+        | +-------+-------+ |
                  |                | |   conntrack   | |
                  |                | +-------+-------+ |
                  |                | |    mangle     | | <- MARK WRITE  
                  |                | +-------+-------+ |
                  |                | |      IMQ      | |
                  |                | +-------+-------+ |
                  |                | |      nat      | | <- DEST REWRITE
                  |                | +-------+-------+ |     DNAT or REDIRECT or DE-MASQUERADE
                  |                +---------+---------+
                  +------------+-------------+
                               |
                       +-------+-------+
                       |      QOS      |
                       |    INGRESS    |
                       +-------+-------+
                               |
         packet is for +-------+-------+ packet is for
          this machine |     INPUT     | another address
        +--------------+    ROUTING    +--------------+
        |              |    + PDBB     |              |
        |              +---------------+              |
+-------+-------+                                     |
|   IPTABLES    |                                     |
|     INPUT     |                                     |
| +-----+-----+ |                                     |
| |   mangle  | |                                     |
| +-----+-----+ |                                     |
| |   filter  | |                                     |
| +-----+-----+ |                                     |
+-------+-------+                                     |
        |                               +---------------------------+
+-------+-------+                       |                           |
|     Local     |               +-------+-------+           +-------+-------+
|    Process    |               |    IPCHAINS   |           |    IPTABLES   |
+-------+-------+               |    FORWARD    |           |    FORWARD    |
        |                       +-------+-------+           | +-----+-----+ |
+-------+-------+                       |                   | |  mangle   | | <- MARK WRITE
|    OUTPUT     |                       |                   | +-----+-----+ |
|    ROUTING    |                       |                   | |  filter   | |
+-------+-------+                       |                   | +-----+-----+ |
        |                               |                   +-------+-------+
+-------+-------+                       |                           |
|    IPTABLES   |                       +---------------------------+
|     OUTPUT    |                                     |
| +-----------+ |                                     |
| | conntrack | |                                     |
| +-----+-----+ |                                     |
| |   mangle  | | <- MARK WRITE                       |
| +-----+-----+ |                                     |
| |    nat    | | <-DEST REWRITE                      |
| +-----+-----+ |     DNAT or REDIRECT                |
| |   filter  | |                                     |
| +-----+-----+ |                                     |
+-------+-------+                                     |
        |                                             |
        +----------------------+----------------------+
                               |
                  +------------+------------+
                  |                         |
          +-------+-------+       +---------+---------+
          |    IPCHAINS   |       |      IPTABLES     |
          |     OUTPUT    |       |    POSTROUTING    |
          +-------+-------        | +-------+-------+ |
                  |               | |    mangle     | | <- MARK WRITE  
                  |               | +-------+-------+ |
                  |               | |      nat      | | <- SOURCE REWRITE
                  |               | +-------+-------+ |      SNAT or MASQUERADE
                  |               | |      IMQ      | |
                  |               | +-------+-------+ |
                  |               +---------+---------+
                  +------------+------------+
                               |
                        +------+------+
                        |     QOS     |
                        |    EGRESS   |
                        +------+------+
                               |
                    -----------+-----------
                            Network

iptables mac address filtering

Фильтрация mac адресов будет работать только если пакет проходит одну из следующих цепочек:

  • PREROUTING
  • FORWARD
  • INPUT

Запретить все входящие соединения для mac адреса 00:1F:2B:02:04:08

iptables -A INPUT -m mac --mac-source 00:1F:2B:02:04:08 -j DROP

Разрешить входящие соединения на 22 порт для mac адреса 00:1F:2B:02:04:08

iptables -A INPUT -p tcp --destination-port 22 -m mac --mac-source 00:1F:2B:02:04:08 -j ACCEPT

Закрыть 81 порт в схеме фронт/бэк/nginx/apache

Вот так

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 81 -j DROP

Ранее в ISPmanager 4 Apache слушал внешний интерфейс и в итоге сайт мог быть доступен, как по 80 так и 81 порту (http://rtfm.wiki:81).

Правило для iptables в этом случае выглядит так

-A ISPMGR -s a.b.c.d/32 -p tcp -m tcp --dport 81 -j ACCEPT 
-A ISPMGR -p tcp -m tcp --dport 81 -j DROP 

Спасти HLDS

6 Important iptables Rules For Your HLDS Server

-A JOINPGN-INPUT -p tcp -m tcp --dport XXXXXX:XXXXXX-m length --length 0:32 -j DROP
-A JOINPGN-INPUT -p udp -m udp --dport XXXXXX:XXXXXX -m length --length 0:32 -j DROP
-A JOINPGN-INPUT -p tcp -m tcp --dport XXXXXX:XXXXXX -m length --length 222 -j DROP
-A JOINPGN-INPUT -p udp -m udp --dport XXXXXX:XXXXXX -m length --length 222 -j DROP
-A JOINPGN-INPUT -p tcp -m tcp --dport XXXXXX:XXXXXX -m length --length 222 -m string --hex-string "|a090909090909090901809a5000000000000000000000000000000000000000000000000|" --algo bm --to 65535 -j DROP
-A JOINPGN-INPUT -p udp -m udp --dport XXXXXX:XXXXXX -m length --length 222 -m string --hex-string "|a090909090909090901809a5000000000000000000000000000000000000000000000000|" --algo bm --to 65535 -j DROP

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
 
linux/iptables/iptables_tips.txt · Последние изменения: 2019/08/26 16:36 — dx