RelaxДом

Быстрый поиск

Расширенный поиск

Авторизация

Запомнить? | Забыл пароль?
 
Register
Welcome
 
RelaxДом > Андеграунд > Операционные системы > Unix » настройка iptables для десктопа
Unix Обсуждение систем отличных от Windows

Ответ
Непрочитано 21.07.2009, 23:23   #1
FreeSky Мужской

Аватар для FreeSky
 
Осваиваюсь
Регистрация: 11.06.2008
Адрес: /dev/sda2
Сообщений: 143
pm
По умолчанию настройка iptables для десктопа

Поглядев на многие руководства по настройке iptables решил написать правила сам. конечно, использовал материал и теорию из интернета, основываясь на правильных руководствах и выбирая необходимое. надеюсь, кому-нибудь это пригодится)
Итак, начнем.

Сначала определимся с нашими задачами. Нам необходимо:
1. Запретить доступ к нашему компьютеру извне для любых пользователей/сервисов, кроме оговоренных
2. Разрешить доступ к нашей рабочей станции тем пользователям/сервисам, с которыми мы сами устанавливаем соединение (проверенные пользователи)
3. Разрешить доступ к нашей рабочей станции для оговоренных пользователей/сервисов

Оформим всю настройку iptables в виде скрипта.
I. Создаем любой файл в любой директории (к примеру - /etc/init.d/iptables.local):
Код:
# vim /etc/init.d/iptables.local
II. Начинаем писать наш скрипт. Будем писать скрипт BASH:
Код:
#!/bin/bash
Создадим несколько переменных для упрощения нашей задачи:
Код:
## Переменные
IFACE="eth0" # Сетевой интерфейс, для которого необходимо создавать правила
IPT="/sbin/iptables" # iptables
Все операции по непосредственной настройке iptables вынесем в отдельную функцию:
Код:
## Скрипт применения правил iptables
start_iptables()
{
## Настройка цепочек
# Очистка всех цепочек от правил
$IPT -F
$IPT -X

# Установка политик цепочек
$IPT -P INPUT DROP
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD DROP

## Настройка правил приёма пакетов
# Принимать ESTABLISHED пакеты
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Разрешить loopback
$IPT -A INPUT -i lo -j ACCEPT

## Открытие портов
# SMB
$IPT -A INPUT -p tcp -m multiport --source 192.168.1.0/24 --dports 137,138,139,445 -j ACCEPT
$IPT -A INPUT -p udp -m multiport --source 192.168.1.0/24 --dports 137,138,139,445 -j ACCEPT
$IPT -A INPUT -p udp -m multiport --source 192.168.1.0/24 --sports 137,138,139,445 -j ACCEPT

# FTP
$IPT -A INPUT -p tcp --dport 21 -j ACCEPT

# HTTP
$IPT -A INPUT -p tcp --dport 80 -j ACCEPT

# SSH
$IPT -A INPUT -p tcp --source 192.168.1.0/24 --dport 22 -j ACCEPT
}
Теперь внесем в наш скрипт больше функциональности. Добавим возможности остановки действия правил iptables, их перезапуска, старта, сохранения настроек и их восстановления и вывода списка текущих правил:
Код:
case "$1" in
start) echo -n "Starting iptables: iptables" # старт правил iptables
       start_iptables
       echo "."
       ;;
stop) echo -n "Stopping iptables: iptables" # остановка действия правил iptables
      iptables -F
      iptables -X
      iptables -P INPUT ACCEPT
      iptables -P OUTPUT ACCEPT
      iptables -P FORWARD ACCEPT
      echo "."
      ;;
save) echo -n "Saving iptables configuration: iptables" # сохранение настроек iptables
      iptables-save > /etc/iptables.save
      echo "."
      ;;
restart) echo -n "Restarting iptables: iptables" # перезапуск правил iptables
      iptables -F
      iptables -X
      iptables -P INPUT ACCEPT
      iptables -P OUTPUT ACCEPT
      iptables -P FORWARD ACCEPT
      start_iptables
      echo "."
      ;;
reload) echo -n "Reloading iptables configuration: iptables" # перезагрузка сохраненной конфигурации iptables
        iptables -F
        iptables -X
        iptables -P INPUT ACCEPT
        iptables -P OUTPUT ACCEPT
        iptables -P FORWARD ACCEPT
        cat /etc/iptables.save | iptables-restore
        echo "."
        ;;
list) echo "List of iptables rules" # вывод списка текущих правил
      iptables -L
      ;;
*) echo "Usage: /etc/init.d/iptables.local start|stop|save|restart|reload" # подсказка к использованию нашего скрипта
   exit 1
   ;;

esac
Ну и как положено, в случае удачной работы скрипт должен возвращать 0:
Код:
exit 0
В итоге мы получаем такой скрипт:
Код:
#!/bin/bash
## Переменные
IFACE="eth0" # Сетевой интерфейс
IPT="/sbin/iptables" # iptables

## Скрипт применения правил iptables
start_iptables()
{
## Настройка цепочек
# Очистка всех цепочек от правил
$IPT -F
$IPT -X

# Установка политик цепочек
$IPT -P INPUT DROP
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD DROP

## Настройка правил приёма пакетов
# Принимать ESTABLISHED пакеты
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Разрешить loopback
$IPT -A INPUT -i lo -j ACCEPT

## Открытие портов
# SMB
$IPT -A INPUT -p tcp -m multiport --source 192.168.1.0/24 --dports 137,138,139,445 -j ACCEPT
$IPT -A INPUT -p udp -m multiport --source 192.168.1.0/24 --dports 137,138,139,445 -j ACCEPT
$IPT -A INPUT -p udp -m multiport --source 192.168.1.0/24 --sports 137,138,139,445 -j ACCEPT

# FTP
$IPT -A INPUT -p tcp --dport 21 -j ACCEPT

# HTTP
$IPT -A INPUT -p tcp --dport 80 -j ACCEPT

# SSH
$IPT -A INPUT -p tcp --source 192.168.1.0/24 --dport 22 -j ACCEPT
}

case "$1" in
start) echo -n "Starting iptables: iptables"
       start_iptables
       echo "."
       ;;
stop) echo -n "Stopping iptables: iptables"
      iptables -F
      iptables -X
      iptables -P INPUT ACCEPT
      iptables -P OUTPUT ACCEPT
      iptables -P FORWARD ACCEPT
      echo "."
      ;;
save) echo -n "Saving iptables configuration: iptables"
      iptables-save > /etc/iptables.save
      echo "."
      ;;
restart) echo -n "Restarting iptables: iptables"
      iptables -F
      iptables -X
      iptables -P INPUT ACCEPT
      iptables -P OUTPUT ACCEPT
      iptables -P FORWARD ACCEPT
      start_iptables
      echo "."
      ;;
reload) echo -n "Reloading iptables configuration: iptables"
        iptables -F
        iptables -X
        iptables -P INPUT ACCEPT
        iptables -P OUTPUT ACCEPT
        iptables -P FORWARD ACCEPT
        cat /etc/iptables.save | iptables-restore
        echo "."
        ;;
list) echo "List of iptables rules"
      iptables -L
      ;;
*) echo "Usage: /etc/init.d/iptables.local start|stop|save|restart|reload"
   exit 1
   ;;

esac
exit 0
III. Сохраняем наш скрипт и даем ему права на исполнение:
Код:
chmod +x /etc/init.d/iptables.local
Теперь вы можете применять правила iptables просто исполняя наш скрипт с ключом start. Но правила iptables действуют только до следующего запуска системы, поэтому имеет смысл автоматизировать запуск правил iptables. Сделать это можно несколькими способами, кому какой нравится. Мы же сделаем это путем добавления в файл /etc/rc.local необходимых записей. Открываем файл /etc/rc.local и приводим его к следующему виду:
Код:
# vim /etc/rc.local
Код:
#!/bin/sh -e
/etc/init.d/iptables.local start
exit 0
Все, теперь мы решили поставленные нами задачи. Если кто-то заметит неточности или предложит другие варианты - буду очень признателен!
Вложения
Тип файла: zip iptables.zip (888 байт, 0 просмотров)
FreeSky вне форума   Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо FreeSky за это полезное сообщение:
Непрочитано 22.07.2009, 03:27   #2
BIT Мужской

Аватар для BIT
 
Администратор
Регистрация: 26.11.2007
Сообщений: 998
pm
По умолчанию Re: настройка iptables для десктопа

Я так понимаю под дебиан настругал
Цитата:

#!/bin/bash
## Переменные
IFACE="eth0" # Сетевой интерфейс
IPT="/sbin/iptables" # iptables
IFC="/sbin/ifconfig"
G="/bin/grep"
SED="/bin/sed"
AWK="/usr/bin/awk"
ECHO="/bin/echo"

LOCIF="eth0"
LOCIP="`$IFC $EXTIF | $AWK /$EXTIF/'{next}//{split($0,a,":");split(a[2],a," ");print a[1];exit}'`" # В силу своей ленивости дергаем ип из ipconfig`а

SAMBA="137,138,139,445" # порты под самбу
FTP="21" # аналогично
SSH="22"

TCP_PORTS=" \
$SAMBA \
$FTP \
$SSH \"

UDP_PORTS=" \
$SAMBA \"


## Скрипт применения правил iptables
start_iptables()
{
## Настройка цепочек
# Очистка всех цепочек от правил
$IPT -F
$IPT -X

# Установка политик цепочек
$IPT -P INPUT DROP
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD DROP

## Настройка правил приёма пакетов
# Принимать ESTABLISHED пакеты
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Разрешить loopback
$IPT -A INPUT -i lo -j ACCEPT

## Открытие портов
# SMB
$IPT -A INPUT -p tcp -m multiport --source $LOCIP --dports $TCP_PORTS -j ACCEPT
$IPT -A INPUT -p udp -m multiport --source $LOCIP --dports $UDP_PORTS -j ACCEPT
$IPT -A INPUT -p udp -m multiport --source $LOCIP --sports $UDP_PORTS -j ACCEPT
}

case "$1" in
start) echo -n "Starting iptables: iptables"
start_iptables
echo "."
;;
stop) echo -n "Stopping iptables: iptables"
iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
echo "."
;;
save) echo -n "Saving iptables configuration: iptables"
iptables-save > /etc/iptables.save
echo "."
;;
restart) echo -n "Restarting iptables: iptables"
iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
start_iptables
echo "."
;;
reload) echo -n "Reloading iptables configuration: iptables"
iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
cat /etc/iptables.save | iptables-restore
echo "."
;;
list) echo "List of iptables rules"
iptables -L
;;
*) echo "Usage: /etc/init.d/iptables.local start|stop|save|restart|reload"
exit 1
;;

esac
exit 0
Быстренько поправил... на глаз вроде должно работать
__________________

В памяти моей ты останешься молодой и любимой...
BIT вне форума   Ответить с цитированием
Непрочитано 22.07.2009, 12:07   #3
FreeSky Мужской

Аватар для FreeSky
 
Осваиваюсь
Регистрация: 11.06.2008
Адрес: /dev/sda2
Сообщений: 143
pm
По умолчанию Re: настройка iptables для десктопа

да, было под дебиан) мб тогда и пост поправить? )
FreeSky вне форума   Ответить с цитированием
Непрочитано 22.07.2009, 12:11   #4
BIT Мужской

Аватар для BIT
 
Администратор
Регистрация: 26.11.2007
Сообщений: 998
pm
По умолчанию Re: настройка iptables для десктопа

сам смотри, я лишь поделился своим видением iptables правил, хотя написал немного неправильно ))
там в цикле нада TCP_PORTS и UDP_PORTS обрабатывать
__________________

В памяти моей ты останешься молодой и любимой...
BIT вне форума   Ответить с цитированием
Непрочитано 22.07.2009, 13:07   #5
FreeSky Мужской

Аватар для FreeSky
 
Осваиваюсь
Регистрация: 11.06.2008
Адрес: /dev/sda2
Сообщений: 143
pm
По умолчанию Re: настройка iptables для десктопа

ладно, пусть будет два варианта)
FreeSky вне форума   Ответить с цитированием
 
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход