Автор Гілка: firewall.sh  (Прочитано 4479 раз)

Відсутній Oles Rid

  • Дописувач
  • **
  • дописів: 53
  • Карма: +0/-0
  • Debian Linux
firewall.sh
« : 2007-08-01 17:09:49 »
Почитав трохи різні howto по iptable і створив скрипт firewall.sh з деякими правилами, які чомусь ігноруються. Допоможіть визначити помилку.
#!/bin/sh
IPTABLES="/sbin/iptables"
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP

#Очищаю всі правила
$IPTABLES -F
$IPTABLES -X

$IPTABLES -N bad_tcp
$IPTABLES -N allowed
$IPTABLES -N tcp_pack
$IPTABLES -N udp_pack
$IPTABLES -N icmp_pack

#Дозволяю зєднання по петлі
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT

$IPTABLES -A bad_tcp -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j DROP

$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT

#Для allow решту пакетів відкидаєм
$IPTABLES -A allowed -j DROP

#Відкриваєм потрібні порти
$IPTABLES -A tcp_pack -p TCP -s 0/0 --dport 21 -j allowed
$IPTABLES -A tcp_pack -p TCP -s 0/0 --dport 80 -j allowed
$IPTABLES -A udp_pack -p UDP -s 0/0 --sport 53 -j ACCEPT  
#-------------------------------------------------------------
#Настроюємо icmp
$IPTABLES -A icmp_pack -p ICMP -s 0/0 --icmp-type 3 -j ACCEPT # Dest unreachable
$IPTABLES -A icmp_pack -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT # Time exceeded
$IPTABLES -A icmp_pack -p ICMP -s 0/0 --icmp-type 12 -j ACCEPT # Parameter problem
$IPTABLES -A icmp_pack -p ICMP -s 0/0 --icmp-type 8 -j DROP # Ping
#--------------------------------------------------------------
$IPTABLES -A INPUT -p tcp -j bad_tcp

$IPTABLES -A INPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p TCP -j tcp_pack
$IPTABLES -A INPUT -p UDP -j udp_pack
$IPTABLES -A INPUT -p ICMP -j icmp_pack
Наприклад той самий ping йде як при DROP, так і при ACCEPT
Також які в кого є рекомендації щодо вдосконалення цього скрипта.
Те, що ми знаємо, – обмежене, а те, чого ми не знаємо, – нескінченне.
(Лаплас П.)

Praporshic

  • Гість
Re: firewall.sh
« Відповідей #1 : 2007-08-01 21:00:07 »
Не уважно прочитали порядок проходження пакунків через iptables і наворотили багато зайвого.
Правильніше було б так:
#!/bin/sh
IPTABLES="/sbin/iptables"
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -F
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A INPUT -p tcp --syn -j ACCEPT
$IPTABLES -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p tcp -m tcp -s 0/0 --dport 21 -j allowed
$IPTABLES -A INPUT -p tcp -m tcp -s 0/0 --dport 80 -j allowed
$IPTABLES -A INPUT -p udp -m udp -s 0/0 --sport 53 -j ACCEPT  
$IPTABLES -A INPUT -p icmp -m icmp -s 0/0 --icmp-type 3 -j ACCEPT
$IPTABLES -A INPUT -p icmp -m icmp -s 0/0 --icmp-type 11 -j ACCEPT
$IPTABLES -A INPUT -p icmp -m icmp -s 0/0 --icmp-type 12 -j ACCEPT
$IPTABLES -A INPUT -p icmp -m -s 0/0 --icmp-type 8 -j DROP
$IPTABLES -A INPUT -p tcp -j bad_tcp
$IPTABLES -A INPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
За принципом Окама‌ - нічого зайвого.

Відсутній Oles Rid

  • Дописувач
  • **
  • дописів: 53
  • Карма: +0/-0
  • Debian Linux
Re: firewall.sh
« Відповідей #2 : 2007-08-02 11:04:59 »
Цитата
$IPTABLES -A INPUT -p tcp -m tcp -s 0/0 --dport 21 -j allowed
$IPTABLES -A INPUT -p tcp -m tcp -s 0/0 --dport 80 -j allowed
allowed перед цим куском коду треба описувати, і як він має виглядати? Бо ви наскільки я поняв створили стандартне правило для INPUT
Цитата
$IPTABLES -A INPUT -p tcp --syn -j ACCEPT
$IPTABLES -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
, яке в мене було для allow. Вибачаюсь можливо за дурні запитання.  :-/
Зараз мені видає таке
[root@linadmin scripts]# ./firewall2.sh
iptables v1.3.5: Couldn't load match `-s':/lib/iptables/libipt_-s.so: cannot open shared object file: No such file or directory
« Змінено: 2007-08-02 11:13:35 від OlesKO »
Те, що ми знаємо, – обмежене, а те, чого ми не знаємо, – нескінченне.
(Лаплас П.)

Praporshic

  • Гість
Re: firewall.sh
« Відповідей #3 : 2007-08-02 20:14:52 »
Перепрошую. Трохи затурканий з роботи.
1 той -s там взагалі не потрібен.
2. замість allowed - ACCEPT
Стосовно ж створення allow та інших подібних - не слід творити сутності понад потребою.

Відсутній hse

  • Графоман
  • ****
  • дописів: 473
  • Карма: +0/-0
  • Gentoo Linux
Re: firewall.sh
« Відповідей #4 : 2007-08-02 20:19:36 »
Цитата
$IPTABLES -A INPUT -p tcp -m tcp -s 0/0 --dport 21 -j allowed
$IPTABLES -A INPUT -p tcp -m tcp -s 0/0 --dport 80 -j allowed
allowed перед цим куском коду треба описувати, і як він має виглядати? Бо ви наскільки я поняв створили стандартне правило для INPUT
Цитата
$IPTABLES -A INPUT -p tcp --syn -j ACCEPT
$IPTABLES -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
, яке в мене було для allow. Вибачаюсь можливо за дурні запитання.  :-/
Зараз мені видає таке
[root@linadmin scripts]# ./firewall2.sh
iptables v1.3.5: Couldn't load match `-s':/lib/iptables/libipt_-s.so: cannot open shared object file: No such file or directory
Allowed можна описати так:
${iptables} -N allowed
${iptables} -A allowed -p TCP --syn -j ACCEPT
${iptables} -A allowed -p TCP -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Loging incorect packets:
${iptables} -A allowed -p TCP -m limit --limit 5/m -j LOG --log-prefix "iptables tcp INPUT " --log-tcp-options --log-ip-options
# Bann all IP which try acces to other
${iptables} -A allowed -p TCP -j DROP

Десь опечатка є біля -s (Couldn't load match `-s':/lib/iptables/libipt_-s.so) передивіться скрипт уважніше.

Ще порада в DYSTRYK/cfg_ppp/etc/iptables/* є приклади ІР екранів. Там трохи параноїдальні детектори сканерів тому їх можна заремарити...
бушократія - цинічний помаранчевий геноцид, витравлювання Української Нації, плюс мікрософтизація всієї країни.

Відсутній hse

  • Графоман
  • ****
  • дописів: 473
  • Карма: +0/-0
  • Gentoo Linux
Re: firewall.sh
« Відповідей #5 : 2007-08-02 20:22:42 »
Цитата
$IPTABLES -A INPUT -p tcp -m tcp -s 0/0 --dport 21 -j allowed
$IPTABLES -A INPUT -p tcp -m tcp -s 0/0 --dport 80 -j allowed
allowed перед цим куском коду треба описувати, і як він має виглядати? Бо ви наскільки я поняв створили стандартне правило для INPUT
Цитата
$IPTABLES -A INPUT -p tcp --syn -j ACCEPT
$IPTABLES -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
, яке в мене було для allow. Вибачаюсь можливо за дурні запитання.  :-/
Зараз мені видає таке
[root@linadmin scripts]# ./firewall2.sh
iptables v1.3.5: Couldn't load match `-s':/lib/iptables/libipt_-s.so: cannot open shared object file: No such file or directory
Allowed можна описати так:
${iptables} -N allowed
${iptables} -A allowed -p TCP --syn -j ACCEPT
${iptables} -A allowed -p TCP -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Loging incorect packets:
${iptables} -A allowed -p TCP -m limit --limit 5/m -j LOG --log-prefix "iptables tcp INPUT " --log-tcp-options --log-ip-options
# Bann all IP which try acces to other
${iptables} -A allowed -p TCP -j DROP

Десь опечатка є біля -s (Couldn't load match `-s':/lib/iptables/libipt_-s.so) передивіться скрипт уважніше.

Ще порада в DYSTRYK/cfg_ppp/etc/iptables/* є приклади ІР екранів. Там трохи параноїдальні детектори сканерів тому їх можна заремарити...
бушократія - цинічний помаранчевий геноцид, витравлювання Української Нації, плюс мікрософтизація всієї країни.

Відсутній Oles Rid

  • Дописувач
  • **
  • дописів: 53
  • Карма: +0/-0
  • Debian Linux
Re: firewall.sh
« Відповідей #6 : 2007-08-06 14:25:17 »
Рішив скористатися скриптами з DYSTRYK/cfg_ppp/etc/iptables/.
[root@linadmin scripts]# ./iptables-workstation wlan0 start
Device /dev/wlan0 not exist!!!
 Machine type: i586-mandriva-linux-gnu  hostname:  linadmin.
 Interface=wlan0  HostIP=192.168.0.70  BroadcastIP=192.168.0.255  NetMask=255.255.255.0
iptables v1.3.5: Couldn't load target `BadGuy':/lib/iptables/libipt_BadGuy.so: cannot open shared object file: No such file or directory

Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.5: Couldn't load target `GoodGuy':/lib/iptables/libipt_GoodGuy.so: cannot open shared object file: No such file or directory

Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.5: Couldn't load target `BadTcp':/lib/iptables/libipt_BadTcp.so: cannot open shared object file: No such file or directory

Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.5: Couldn't load target `TCPRules':/lib/iptables/libipt_TCPRules.so: cannot open shared object file: No such file or directory

Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.5: Couldn't load target `TCPRules':/lib/iptables/libipt_TCPRules.so: cannot open shared object file: No such file or directory

Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.5: Bad OWNER UID value `tor'
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.5: Bad OWNER UID value `named'
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.5: Bad OWNER UID value `ebuild'
Try `iptables -h' or 'iptables --help' for more information.
В мене мережева карта dwl-520 піднята через ndiswrapper. Підкажіть мені де це девайс шукати, бо скрипт шукає його в /dev/wlan0 - а його там нема
Те, що ми знаємо, – обмежене, а те, чого ми не знаємо, – нескінченне.
(Лаплас П.)

Відсутній hse

  • Графоман
  • ****
  • дописів: 473
  • Карма: +0/-0
  • Gentoo Linux
Re: firewall.sh
« Відповідей #7 : 2007-08-13 19:19:30 »
Вибачаюсь за "оперативність"! Я тільки но побачив питання...
 /dev/wlan0 може і не бути, скрипт шукає девайс виключно за допомогою ifconfig і як бачимо розпізнає його налаштування нормально:
Machine type: i586-mandriva-linux-gnu  hostname:  linadmin.
 Interface=wlan0  HostIP=192.168.0.70  BroadcastIP=192.168.0.255  NetMask=255.255.255.0
Спочатку цього скрипта написано що він залежить від iptables-lo тому перед його виконанням слід запустити:
iptables-lo lo start
тоді створяться всі таблиці і не буде помилок типу:
iptables v1.3.5: Couldn't load target `BadGuy':/lib/iptables/libipt_BadGuy.so: cannot open shared object file: No such file or directory

Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.5: Couldn't load target `GoodGuy':/lib/iptables/libipt_GoodGuy.so: cannot open shared object file: No such file or directory

Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.5: Couldn't load target `BadTcp':/lib/iptables/libipt_BadTcp.so: cannot open shared object file: No such file or directory

Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.5: Couldn't load target `TCPRules':/lib/iptables/libipt_TCPRules.so: cannot open shared object file: No such file or directory

Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.5: Couldn't load target `TCPRules':/lib/iptables/libipt_TCPRules.so: cannot open shared object file: No such file or directory

Також слід підкоригувати фільтр вихідного трафіку, який фільтрується по користувачах яким дозволено звязуватись з інетом, тоді зникнуть помилки:
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.5: Bad OWNER UID value `tor'
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.5: Bad OWNER UID value `named'
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.5: Bad OWNER UID value `ebuild'
Try `iptables -h' or 'iptables --help' for more information.
бушократія - цинічний помаранчевий геноцид, витравлювання Української Нації, плюс мікрософтизація всієї країни.

Відсутній Oles Rid

  • Дописувач
  • **
  • дописів: 53
  • Карма: +0/-0
  • Debian Linux
Re: firewall.sh
« Відповідей #8 : 2007-08-21 13:04:52 »
Користуюсь наступним скриптом:
#!/bin/sh
IPTABLES="/sbin/iptables"

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP

$IPTABLES -F
$IPTABLES -X

$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT

$IPTABLES -A INPUT -m state -p tcp --state ESTABLISHED,RELATED -j ACCEPT

#Доступ до ФТП серверу
$IPTABLES -A INPUT -p tcp -i wlan0 --dport 20:21 -s 192.168.0.0/24 -j ACCEPT
#Доступ до ВЕБ серверу
$IPTABLES -A INPUT -p tcp -i wlan0 --dport 80 -s 192.168.0.0/24 -j ACCEPT
#До проксі серверу
$IPTABLES -A INPUT -p tcp -i wlan --dport 3128 -s 192.168.0.0/24 -j ACCEPT
#Пускаті всі пакети по ТСР
$IPTABLES -A OUTPUT -p tcp -o wlan0 -j ACCEPT

$IPTABLES -A OUTPUT -p udp -o wlan0 --sport 1024:65535 -j ACCEPT

$IPTABLES -A INPUT -p udp -i wlan0 --dport 1024:65535 --sport 53 -j ACCEPT

$IPTABLES -A INPUT -p udp -m state --state ESTABLISHED -i wlan0 --dport 1024:65535 -j ACCEPT

#ICMP пакети
$IPTABLES -A INPUT -p icmp -i wlan0 -m limit -m length --limit 3/second --limit-burst 6 --length :110 -j ACCEPT
$IPTABLES -A OUTPUT -p icmp -o wlan0 -m limit -m length --limit 7/second --limit-burst 14 --length :110 -j ACCEPT
#$IPTABLES -A INPUT -p icmp -j ACCEPT

Як дозволити доступ до проксі-серверу Squid вcій локалці. При вищевказаних значеннях не дозволяє. Ping на ПК з squidом проходить.
« Змінено: 2007-08-21 13:06:57 від OlesKO »
Те, що ми знаємо, – обмежене, а те, чого ми не знаємо, – нескінченне.
(Лаплас П.)

Praporshic

  • Гість
Re: firewall.sh
« Відповідей #9 : 2007-08-21 20:02:34 »
А там і має бути пристрій wlan, чи може таки wlan0?

Відсутній Oles Rid

  • Дописувач
  • **
  • дописів: 53
  • Карма: +0/-0
  • Debian Linux
Re: firewall.sh
« Відповідей #10 : 2007-08-22 10:16:49 »
Дійсно непомітив, що wlan0 неправильно внесений. Дякую, після виправлення все запрацювало  :)
Те, що ми знаємо, – обмежене, а те, чого ми не знаємо, – нескінченне.
(Лаплас П.)

Praporshic

  • Гість
Re: firewall.sh
« Відповідей #11 : 2007-08-22 22:08:26 »
You are welcome.