Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Не добавляется правило iptables

делаю
# iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
# service iptables restart
[root@centos1c sysconfig]# iptables-save
выдает:
# Generated by iptables-save v1.4.7 on Fri Jan  6 12:13:53 2017
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [8805:3697083]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 1322 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 7392 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -p udp -m multiport --dports 137,138 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -p tcp -m multiport --dports 139,445 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -p tcp -m tcp --dport 7392 -j ACCEPT
COMMIT
# Completed on Fri Jan  6 12:13:53 2017
[root@centos1c sysconfig]#
Ответ: () +
Вопрос: правило IPTABLES

Привет!
Помогите пожалуйста разобраться с правилом iptables. Что-то не получается.

Есть сервер, линукс. Соединён к интернету. Интернет через оптику (GPON) попадает на линукс сервер. В настройках GPONA-а нет настроек ни bridge нет ни роутинга. А просто установлено перенаправление со всех внешних портов на линукс.

Проблема вот в чём. Из вне по реальному айпи линукс сервер виден, а вот с самого сервера сам сервер по реальному айпи не отвечает.

пытаюсь сделать так:

Ответ:
это он хотел написать ifconfig ethx 1.23.4.5, но получилось что-то другое

или ifconfig ethx:0 1.23.4.5 up
Вопрос: Создать правила iptables для шлюза

Господа и дамы. Не пинайте.
Решил таки уйти от "пиратского" софта.Да и научиться новому.
Решил сделать полноценный шлюз на debian.
Встала огромная проблема с iptables. Штрудирование мануалов пока не дает результатов, везде по разному пишут, четкую информацию пока найти не смог. Кто обладает ссылкой на доступный, изложенный на более менее понятном языке учебник буду очень рад.
К проблеме: по мануалом смог накропать приблизительную таблицу iptsbles.
Вот она:
Кликните здесь для просмотра всего текста

#!/bin/bash
# Тут в принципе может и не надо этого всего но не помеха
# вдруг какой модуль не подгружен или форвардинг не включен
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
# Объявление переменных
export IPT="iptables"

# Интерфейс который смотрит в интернет
export WAN=ppp0

# Локальная сеть
export LAN=eth0
export LAN_IP_RANGE=7.0.0.0/24

# Очистка всех цепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

# Закрываем изначально ВСЁ (т.е. изначально все что не разрешено - запрещено):
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# разрешаем локальный траффик для loopback и внутренней сети
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -i $LAN -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A OUTPUT -o $LAN -j ACCEPT

# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
# Пропускать все уже инициированные соединения, а также дочерние от них
$IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Пропускать новые, а так же уже инициированные и их дочерние соединения
$IPT -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Разрешить форвардинг для новых, а так же уже инициированных
# и их дочерних соединений
$IPT -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Включаем фрагментацию пакетов. Необходимо из за разных значений MTU
$IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# Отбрасывать все пакеты, которые не могут быть идентифицированы
# и поэтому не могут иметь определенного статуса.
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP

# Приводит к связыванию системных ресурсов, так что реальный
# обмен данными становится не возможным.
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
# Разрешаем доступ из внутренней сети наружу
$IPT -A FORWARD -i $LAN -o $WAN -j ACCEPT

# Запрещаем доступ снаружи во внутреннюю сеть
$IPT -A FORWARD -i $WAN -o $LAN -j REJECT

# Маскарадинг
$IPT -t nat -A POSTROUTING -o $WAN -s $LAN_IP_RANGE -j MASQUERADE



# Открываем ISMP
$IPT -A INPUT -p icmp -j ACCEPT
$IPT -A OUTPUT -p icmp -j ACCEPT

# Открываем RDP
#$IPT -A INPUT -i $WAN -p tcp --dport 3389 -j ACCEPT
#$IPT -A PREROUTING -t nat -d $WAN -p tcp --dport 3389 -j DNAT --to-destination 7.0.0.2:3389
#$IPT -A OUTPUT -o $LAN -p tcp --sport 3389 -j ACCEPT
#$IPT -A FORWARD -i $WAN -d 7.0.0.2 -p tcp --dport 3389 -j ACCEPT

# Открываем порт для ssh
$IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT

# Вывод информации о состоянии таблиц.
route -n
$IPT -L
$IPT -L -v -n
$IPT -L -v -n -t nat


С горем пополам читаю два дня все те же горы мануалов смог таки включить ответ по ISMP.

Пытаюсь открыть порт и пробросить его на локальный сервер, и никак. Попробовал сначала просто открыть порт, по аналогии с 22, по другим инструкциям, писал сам все без успешно.

Хочется понять принцип... по этому прошу не пинать ногами,не писать "вот это вставь и будет счастье" а постараться объяснить, что делаю не так. Пытаюсь научиться и понять а не просто сделать "продукт".

Какие ошибки допустил, в общем интересно ВСЕ! особенно новые знания.
Ответ:
Сообщение от v-good
Штрудирование мануалов пока не дает результатов, везде по разному пишут, четкую информацию пока найти не смог. Кто обладает ссылкой на доступный, изложенный на более менее понятном языке учебник буду очень рад.
У вас неплохая для перевого раза таблица получилась, написанная в хорошем стиле и даже с комментариями, так что чтение мануалов релультаты даёт. Я бы посоветовал для начала оставить меньшее количество правил, добавляя по необходимости.
Неплохая статья об ИПтаблес есть на Опеннете. Курячий в своём курсе по Линуксу (есть на Интуите) тоже целую главу этому посвящает.
Попробую показать недочёты на примере цепочки форвардинга из таблицы filter.
Сообщение от v-good
# Разрешить форвардинг для новых, а так же уже инициированных
# и их дочерних соединений
$IPT -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Разрешаем доступ из внутренней сети наружу
$IPT -A FORWARD -i $LAN -o $WAN -j ACCEPT
# Запрещаем доступ снаружи во внутреннюю сеть
$IPT -A FORWARD -i $WAN -o $LAN -j REJECT
# Открываем RDP
#$IPT -A FORWARD -i $WAN -d 7.0.0.2 -p tcp --dport 3389 -j ACCEPT
Первым правилом вы практически полностью открыли форвардинг, пакеты покидают цепочку, не доходя до других правил.
Кроме того третьим (в этом примере) правилом вы закрыли доступ снаружи во внутренню сеть. Пакеты отбрасываются и до четверного правила не доходят.
В общем: DROP - пакеты немедленно отбрасываются
REJECT - отбрасываются, посылая уведомление по icmp.
ACCEPT - успешно покидают данную цепочку и становятся в очередь в следующую.
Распечатайте схему последовательности прохождения пакетами цепочек и держите на рабочем месте. Я встречал несколько очень наглядных рисунков. Их легко найти через поиск.
Пакеты icmp я бы посоветовал пропускать все.
Сообщение от v-good
Пытаюсь открыть порт и пробросить его на локальный сервер, и никак.
Пробросом порта называют перенаправление пакета на другой адрес в цепочке prerouting таблицы NAT. У вас я не заметил такого правила. Может, плохо смотрел.
Вопрос: Прочитать правило iptables

Прочитал кучу статей и всё равно не могу понять.
Суть: настраиваю роутер на linux, в качестве прокси сервера будет использоваться squid3

Какая из этих строчек верная?

Bash
1
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
или

Bash
1
iptables -t nat -A PREROUTING -i eth1 ! -d 192.168.0.0/24 -p tcp  --dport 80 -j DNAT --to-destination 192.168.0.1:3128
Можно по русски написать, что каждая строчка делает, желательно поподробнее.

P.S. только изучаю, прошу помощи
Ответ: ну тогда надо делать что-то другое с чем-то другим. потому как описание то - самое подробное
Вопрос: Вопрос по iptables

Есть программа принимающая TCP подключения.
В описании одной из настроек:
автор
Программа позволяет пропускать запросы через внешний сервер (например, через шлюз, защищающий от DDOS). Внешний сервер должен при этом передавать реальный IP пользователя в специальном пакете. Этот пакет должен быть отправлен первым и содержать 6 байт: 2 байта размера (всегда 0x06, 0x00) и 4 байта реального IP-адреса. На шлюзы не распространяется ограничение на число одновременных соединений.


Каким образом можно сформировать такой пакет при помощи iptables?
Ответ:
Hett
Iptables еще и изменять заголовки может. На всякий случай спросил, вдруг и данные можно добавлять...

Увы, но только заголовки...
Но никто не запрещает внести изменения в код. Тогда можно расширить правилами, изменяющими и данные пакета.
Вопрос: Запретить выход в интернет правилами iptables

Здравствуйте...

В общем руководство дало задание запретить большинство пользователям выходит в интернет. Поднял SQUID3 с прозрачным проксированием. 80 порт пробросил на айпи прокси порт 3128. Теперь когда в цепочке FORWARD разрешаю определенным айпишникам интернет(по умолчанию Форвард дропает) - хост выходит в интернет. А те, кого нет в списке разрешения, даже шлюз провайдера не пингует, то есть через цепочку не проходят., но так как трафик 8080 заворачивается через прокси, они тоже выходят в интернет. Я бы на Сквиде через аксес лист запретил бы айпишникам, но он насколько знаю 443 порт не умеет проксировать. Не поможете как можно через фильтры iptable запретить выход в интернет?

Заранее спасибо...
Ответ: iptables -A OUTPUT -d 0.0.0.0 -j REJECT
Вопрос: Пара вопросов по iptables.

Всем добра!

Помогите, пожалуйста, с iptables.

Я получаю такую ошибку:
автор
Call From debianSecond.debian.com/127.0.1.1 to localhost:45365 failed on connection exception: java.net.ConnectException: Connection refused


Особенность в том, что это пишет логгер на debianSecond. То есть, если верить этому сообщению он не может присоединиться сам к себе.

Вопросы:

1) Работает ли iptables для случая, когда приложение коннектиться на тот же хост, где оно находится - через его полный сетевой адрес, или через localhost, или через 127.0.0.1 ?

2) Как мне открыть все порты моего хоста для определенного другого хоста? У меня есть кластер и я хочу чтобы для нод кластера не было ограничений на любые соединения. Либо открыть диапазон портов.

3) Я пытался открыть порты в iptables такой командой:
sudo iptables -A INPUT -p tcp --dport 5432 -j ACCEPT
Однако теперь iptables -L выдает мне
автор
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:postgresql
ACCEPT tcp -- anywhere anywhere tcp dpt:postgresql
ACCEPT tcp -- anywhere anywhere tcp dpt:postgresql


А где мой 5432 порт?
При чем тут postgresql?
Почему одинаковые строчки?

Debian Wheezy. Спасибо за внимание.
Ответ:
Dymytry
Вопросы:

1) Работает ли iptables для случая, когда приложение коннектиться на тот же хост, где оно находится - через его полный сетевой адрес, или через localhost, или через 127.0.0.1 ?

2) Как мне открыть все порты моего хоста для определенного другого хоста? У меня есть кластер и я хочу чтобы для нод кластера не было ограничений на любые соединения. Либо открыть диапазон портов.

3) Я пытался открыть порты в iptables такой командой:


1. -A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

2. -A INPUT -s 12.34.56.78 -j ACCEPT
-A OUTPUT -d 12.34.56.78 -j ACCEPT

3. -A INPUT -p tcp -m multiport --sport 123,456 -j ACCEPT
-A OUTPUT -j ACCEPT
Вопрос: iptables + SNAT диапазона IP

Коллеги,
Есть задача объединить несколько сетей с неизвестной IP-адресацией внутри VPN-сервера с которым устанавливают соединения маршрутизаторы из каждой сети.
Схему можно увидеть на картинке. Техническая составляющая:
Transparent Proxy - CentOS 7
Router #X - Дешевые wifi-роутеры умеющие поднимать PPTP + отключено NAT'ирование под сетей
Под сети за router'ами могут быть любые и скорее всего они пересекаются.

Есть две идеи как это запилить
1) SNAT средствами iptables интерфейсов pppX + обратный маршрут к SNAT'еной сети
2) Тэгирование пакетов в iptables + policy-routing

Но реализовать на Transparent Proxy у меня не получилось. Первый способ наиболее приемлем.

Вся эта история нужна для выхода пользователей под сетей в интернет, так как на proxy стоит squid работающий в transparent режиме + прикручена авторизация.

К сообщению приложен файл. Размер - 96Kb
Ответ: неТолик1,
В этом случаи клиенты удаленных сетей будут НАТироватся на своих роутерах. Что исключает возможность авторизовывать их на проксе.
Как мне все таки кажется, мне тут без двух машин не обойтись :(
На одной поднять просто VPN и маркирвать на входе пакеты механизмом conntrack zones, далее заворачивать вообще весь клиенкий трафик на вторую машину, но по выходе из интерфейса первой машины SNAT'ить (или NETMAP'ть не суть важно)
Т.е. как то так
роутер удаленной сети -> Интернет -> pppX -> iptables PREROUTE -j CT - > iptables POSTROUTING -j SNAT -> eth0 -> ...сервер с proxy... -> eth0 -> iptables PREROUTE -j REDIRECT -> squid:3128 -> Интернет
Вопрос: Не работают IPTABLES правила на моем шлюзе

Не работают IPTABLES правила на моем шлюзе.
Вот правила на моем фаерволе:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
#!/bin/bash
 
 
#########################
### Variables         ###
#########################
 
### Variable iptables
IPTABLES="/sbin/iptables"
 
### Variables for input tcp & udp ports (input)
INPUT_TCP_PORTS="43,53,80,3128,443,1194,1197,1198,1723,5001,5080"
INPUT_UDP_PORTS="21,43,22,53,3128,80,1194,1197,1198,1723,5001"
 
 
### Variables for forward tcp & udp ports (forward)
FORWARD_TCP_PORTS="21,43,25,53,80,143,443,465,587,993,5938,8081,9003,3389,1194"
FORWARD_UDP_PORTS="20,43,21,53,123,1723,8081,3389,69,87,1194,5080,5938,8000"
ADD_FORWARD_TCP_PORTS="9,20,23,69,110,123,995,1024,1723,33899,5190,8000,8080,9443,7002"
ADD_FORWARD_TCP_PORTS_2="9000,49154"
 
 
### Variables for output tcp & udp ports (output)
OUTPUT_TCP_PORTS="43,53,80,443,8081,8080,1723,1194,1197,1198,5080"
OUTPUT_UDP_PORTS="43,53,80,1723,8080,8081,443,1194,1197,1198"
 
 
 
################
### Flushing ###
################
 
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
 
$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X
 
########################
### lOADING MODULES  ###
########################
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_nat
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_limit
/sbin/modprobe ipt_state
/sbin/modprobe ipt_owner
/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_MASQUERADE
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_nat_irc
/sbin/modprobe ip_gre
/sbin/modprobe ip_nat_pptp
 
###########################################################
### DROP ALL POLICY                                     ###
###########################################################
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
 
 
 
###########################################################################################
### Chain for for incoming from Internet connections. I show view accepted ports.         #
### Permission is granted to new and initiated packets and their subsidiaries to output   #
###########################################################################################
$IPTABLES -A INPUT -p tcp -m multiport --dports $INPUT_TCP_PORTS -j ACCEPT
$IPTABLES -A INPUT -p udp -m multiport --dports $INPUT_UDP_PORTS -j ACCEPT
$IPTABLES -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
 
### Drop "bad" input ip
if [ -f /etc/rc.d/bad_input.ip ]; then
 for BAD_INPUT_IP in `grep -v ^# /etc/rc.d/bad_input.ip`; do
  $IPTABLES -I INPUT -s $BAD_INPUT_IP -j DROP
  done
fi
 
### Accept ping
$IPTABLES -A INPUT -p icmp -j ACCEPT
 
### Rules for openvpn
$IPTABLES -A INPUT -i tun+ -j ACCEPT
$IPTABLES -A INPUT -i tap+ -j ACCEPT
$IPTABLES -A INPUT -i bond+ -j ACCEPT
 
### Drop invlaid packets
$IPTABLES -A INPUT -m state --state INVALID -j DROP
 
 
 
###########################################################################################
### Chain for for forwarding to the Internet connections. I show view accepted ports.     #
### Permission is granted to new and initiated packets and their subsidiaries to output   #
###########################################################################################
$IPTABLES -A FORWARD -p tcp -m multiport --dports $FORWARD_TCP_PORTS -j ACCEPT
$IPTABLES -A FORWARD -p tcp -m multiport --dports $ADD_FORWARD_TCP_PORTS -j ACCEPT
$IPTABLES -A FORWARD -p tcp -m multiport --dports $ADD_FORWARD_TCP_PORTS_2 -j ACCEPT
$IPTABLES -A FORWARD -p udp -m multiport --dports $FORWARD_UDP_PORTS -j ACCEPT
$IPTABLES -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
$IPTABLES -A FORWARD -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
 
### Accept pptp port
$IPTABLES -A FORWARD -p gre -j ACCEPT
$IPTABLES -A FORWARD -i eth0 -o eth1 -p tcp --dport 1723 -j ACCEPT
 
### Drop "bad" input ip
if [ -f /etc/rc.d/bad_input.ip ]; then
 for BAD_INPUT_IP in `grep -v ^# /etc/rc.d/bad_input.ip`; do
  $IPTABLES -I FORWARD -s $BAD_INPUT_IP -j DROP
  done
fi
 
### Accept destination IP. File "/etc/rc.d/dest.ip"
if [ -f /etc/rc.d/dest.ip ]; then
 for DEST_IP in `grep -v ^# /etc/rc.d/dest.ip`; do
  $IPTABLES -I FORWARD -d $DEST_IP -j ACCEPT
  done
fi
 
### "Bad" destination IP. File "/etc/rc.d/bad_dest.ip"
if [ -f /etc/rc.d/bad_dest.ip ]; then
 for BAD_DEST_IP in `grep -v ^# /etc/rc.d/bad_dest.ip`; do
  $IPTABLES -I FORWARD -d $BAD_DEST_IP -j DROP
  done
fi
 
#################################################################
######################################### This rule with problem#
#################################################################
if [ -f /etc/rc.d/bad.sites ]; then
 for DNS in `grep -v ^# /etc/rc.d/bad.sites`; do
  address=$(nslookup $DNS | tail -2 | awk -F ":" '{print $2}')
  echo $address
  origin=$(whois -h whois.radb.net $address | awk '/origin:/ {print $2}')
  echo $origin
  nets=$(whois -h whois.radb.net '!g'$origin'' | grep /)
  echo $nets
 for ip in $nets
  do
  $IPTABLES -I FORWARD -d $ip -j DROP
done
done
fi
 
### Vip users over squid. File "/etc/rc.d/vip.ip". File "/etc/rc.d/vip.ip"
if [ -f /etc/rc.d/vip.ip ]; then
 for VIP_IP in `grep -v ^# /etc/rc.d/vip.ip`; do
  $IPTABLES -I FORWARD -s $VIP_IP -j ACCEPT
  done
fi
 
### Bad users over squid. File "/etc/rc.d/bad.ip". File "/etc/rc.d/bad.ip"
if [ -f /etc/rc.d/bad.ip ]; then
 for BAD_IP in `grep -v ^# /etc/rc.d/bad.ip`; do
  $IPTABLES -I FORWARD -s $BAD_IP -j DROP
  done
fi
 
### rules for openvpn
$IPTABLES -A FORWARD -i tun+ -j ACCEPT
$IPTABLES -A FORWARD -o tun+ -j ACCEPT
$IPTABLES -A FORWARD -i tap+ -j ACCEPT
$IPTABLES -A FORWARD -o tap+ -j ACCEPT
$IPTABLES -A FORWARD -i bond+ -j ACCEPT
$IPTABLES -A FORWARD -o bond+ -j ACCEPT
 
### drop invlaid packets
$IPTABLES -A FORWARD -m state --state INVALID -j DROP
 
 
 
############################################################################################
### Chain for output connections to the Internet. Permission is granted to new and ,       #
### initiated packets and their subsidiaries to output                                     #
############################################################################################
$IPTABLES -A OUTPUT -p tcp -m multiport --dports $OUTPUT_TCP_PORTS -j ACCEPT
$IPTABLES -A OUTPUT -p udp -m multiport --dports $OUTPUT_UDP_PORTS -j ACCEPT
$IPTABLES -A OUTPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
 
### accept ping
$IPTABLES -A OUTPUT -p icmp -j ACCEPT
 
### rules for openvpn
$IPTABLES -A OUTPUT -o tun+ -j ACCEPT
$IPTABLES -A OUTPUT -o tap+ -j ACCEPT
$IPTABLES -A OUTPUT -o bond+ -j ACCEPT
 
 
 
##############################################################
# accept traffic to looback and local network                #
##############################################################
# Accept all from lo and to lo
$IPTABLES -A INPUT -i lo -p all -j ACCEPT
$IPTABLES -A OUTPUT -o lo -p all -j ACCEPT
 
# Accept all from eth1 and to eth1 
$IPTABLES -A INPUT -i eth1 -j ACCEPT
$IPTABLES -A OUTPUT -o eth1 -j ACCEPT
 
 
 
#######
# NAT #
#######
### Redirect pptp port
$IPTABLES -t nat -A PREROUTING -p tcp -d xxx.xxx.xxx.xxx --dport 1723 -j DNAT --to-destination 192.168.110.8
$IPTABLES -t nat -A POSTROUTING -p tcp --dst 192.168.110.8 --dport 1723 -j SNAT --to-source xxx.xxx.xxx.xxx
$IPTABLES -t nat -A OUTPUT -p tcp -d xxx.xxx.xxx.xxx --dport 1723 -j DNAT --to-destination 192.168.110.8
 
### Vip users over squid. File "/etc/rc.d/vip.ip"
if [ -f /etc/rc.d/vip.ip ]; then
 for VIP_IP in `grep -v ^# /etc/rc.d/vip.ip`; do
  $IPTABLES -t nat -A PREROUTING -s $VIP_IP -j ACCEPT
  done
fi
 
### Bad users over squid. File "/etc/rc.d/bad.ip"
if [ -f /etc/rc.d/bad.ip ]; then
 for BAD_IP in `grep -v ^# /etc/rc.d/bad.ip`; do
  $IPTABLES -t nat -A PREROUTING -s $BAD_IP -j ACCEPT
  done
fi
 
### Redirect to squid port (networks 192.168.0.0/16 & 172.16.170.0/24)
$IPTABLES -t nat -A PREROUTING  -i eth1 -p tcp -m multiport --dport 80 -j REDIRECT --to-port 3128
 
### Masqurade
$IPTABLES -t nat -A POSTROUTING -o eth0 -j MASQUERADE
xxx.xxx.xxx.xxx – мой внешний IP.

Все хорошо, все правила работают прекрасно. Проблемы с вот этим участком кода:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if [ -f /etc/rc.d/bad.sites ]; then
 for DNS in `grep -v ^# /etc/rc.d/bad.sites`; do
  address=$(nslookup $DNS | tail -2 | awk -F ":" '{print $2}')
  echo $address
  origin=$(whois -h whois.radb.net $address | awk '/origin:/ {print $2}')
  echo $origin
  nets=$(whois -h whois.radb.net '!g'$origin'' | grep /)
  echo $nets
 for ip in $nets
  do
  $IPTABLES -I FORWARD -d $ip -j DROP
done
done
fi
Где в "/etc/rc.d/bad.sites" я вставляю "плохие" для пользователей сайты. Если я запускаю все это в одном скрипте, то именно вот это правило не работает. Но когда, я вставляю этот участок кода в отдельный скрипт и запускаю его, то все прекрасно отрабатывает. В чем может быть ошибка ? Ломаю голову, понять не могу, почему оно не работает.
Ответ: А ты выводил (iptables -L) правила, сравнивал? В iptables есть логирование, можешь проверить по нему.
Вопрос: Правило в iptables

ввел правило

Код Bash
1
iptables -A INPUT -p udp --dport 1234 -m connlimit --connlimit-above 3 -j DROP
вместо 1234 другой порт, и сервер перестал отвечать по всем портам. На сервер ведется атака именно на этот порт. Данное правило устанавливает лимит подключений на этот порт или как ?
Ответ:
Сообщение от Pingviner
ввел правило

Код Bash
1
iptables -A INPUT -p udp --dport 1234 -m connlimit --connlimit-above 3 -j DROP
вместо 1234 другой порт, и сервер перестал отвечать по всем портам. На сервер ведется атака именно на этот порт. Данное правило устанавливает лимит подключений на этот порт или как ?
--connlimit-above, в данном случае разрешает подключаться с одного IP-адреса, на порт 1234 не больше трех раз.

скиньте свой конфиг, глянем.
не забывайте о приоритете правил в iptables.
есть ключики -I, которые вставляют правило на верх таблицы iptables

iptables -I INPUT --dport 1234 -m connlimit --connlimit-above 3 -j DROP

Приоритет данного правила в таблице Filter будет максимальный