Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: HOWTO: Iptables для новичков  (Прочитано 527429 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1305 : 09 Июля 2011, 22:03:40 »
Как это понимать?Нет там в nat цепочки INPUT! :o
А должна быть?

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1695
  • А чего вы так смотрите?..
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1306 : 10 Июля 2011, 00:12:00 »
Как это понимать?Нет там в nat цепочки INPUT! :o
А должна быть?
Обязана.
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1307 : 10 Июля 2011, 00:19:38 »
Да ладно.
А нука покажите на структуной схеме, где эта цепочка в таблице nat? А то я что-то не нахожу.
(Нажмите, чтобы показать/скрыть)

Ну и расскажите, какое её назначение Вы видите.

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1695
  • А чего вы так смотрите?..
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1308 : 10 Июля 2011, 01:21:28 »
Теперь вообще ничего не понимаю... :D
У меня на хосте делаю:
root@sofocl:/home/protopopulus# iptables -L -vn -t nat
Chain PREROUTING (policy ACCEPT 6152 packets, 302K bytes)
 pkts bytes target     prot opt in     out     source               destination        
 103K   12M DNAT       udp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW to:207.46.197.32

Chain INPUT (policy ACCEPT 30 packets, 1628 bytes)
 pkts bytes target     prot opt in     out     source               destination        

Chain OUTPUT (policy ACCEPT 177K packets, 9822K bytes)
 pkts bytes target     prot opt in     out     source               destination        

Chain POSTROUTING (policy ACCEPT 181K packets, 9939K bytes)
 pkts bytes target     prot opt in     out     source               destination        
 4323  266K SNAT       udp  --  *      *       0.0.0.0/0            207.46.197.32       to:192.168.0.0-192.168.255.255
Делаю на втором хосте:
root@herodot:~# iptables -t nat -L -vn
Chain PREROUTING (policy ACCEPT 2668 packets, 136K bytes)
 pkts bytes target     prot opt in     out     source               destination        
10962 1062K DNAT       udp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW to:207.46.197.32

Chain POSTROUTING (policy ACCEPT 6027 packets, 311K bytes)
 pkts bytes target     prot opt in     out     source               destination        
 4180  509K SNAT       udp  --  *      *       0.0.0.0/0            207.46.197.32       to:192.168.0.0-192.168.255.255

Chain OUTPUT (policy ACCEPT 3364 packets, 204K bytes)
 pkts bytes target     prot opt in     out     source               destination
На обоих хостах стоит iptables 1.4.4. Что происходит?!!

З.Ы, Если проблема у меня на хосте, то откуда ноги у нее растут? Посмотрел по всем источникам, действительно, не должно быть там INPUT-а. Утверждение о том, что он должен там быть, признаю неверным.
« Последнее редактирование: 10 Июля 2011, 01:26:48 от Protopopulus »
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1309 : 10 Июля 2011, 05:50:29 »
iptables-save показывайте, сколько раз можно повторять?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1695
  • А чего вы так смотрите?..
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1310 : 10 Июля 2011, 09:49:40 »
(Нажмите, чтобы показать/скрыть)
Это с моего хоста, где есть INPUT в таблице nat. В сейве он тоже есть.
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1311 : 10 Июля 2011, 10:48:52 »
И в чём проблема?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1695
  • А чего вы так смотрите?..
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1312 : 11 Июля 2011, 06:55:59 »
Выяснил в чем проблема. Она в 38-м ядре. Два хоста с самосборным 38-м и на обоих присутствует INPUT в nat.
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн nik_user

  • Новичок
  • *
  • Сообщений: 26
    • Просмотр профиля
    • записки на память
Re: HOWTO: Iptables для новичков
« Ответ #1313 : 11 Июля 2011, 13:06:05 »
Очень благодарен за подсказки!!! Спасибо... теперь хоть можно забыть на не много времени о Linuxе, правда осталось настроить squid и sams, но это уже проще....


проверено ubuntu 8.04 -11.04
единственное где закоментировать пишут не всегда надо закоментировать, нужно смотреть


Прокси сервер SQUID + SAMS + SamsRedirector на Ubuntu Server

необходимы следующие пакеты:
Squid - сам прокси сервер
MySQL-Server - MySQL сервер
MySQL-Client - MySQL клиент
mysql-devel - файлы заголовков для MySQL
Apache2 - ну а это же наш великий веб индеец :)
mod_php - модуль php для Apache2
php - консольный php
php-mysql - библиотека поддержки MySQL в php
libgd - библиотека поддержки графики
php-gd - модуль поддержки libgd в php (используется для рисования графиков)
libpcre - библиотека, пока не определил :)
libpcre-devel - файлы заголовков libpcre
php-fpdf - библиотека конвертирования отчетов в pdf
Дополнительно установим следующие пакеты для удобства работы:
mc - Midnight Commander консольный оконный файловый менеджер, а главное OpenSource
htop - очень мощный консольный диспечер задач, с большим набором функций, а самое главное все наглядно и понятно
openssh-server - ну тут и говорить уже не надо, и так все все знают.
# sudo su
# aptitude install mc htop openssh-server make
Устанавливаем прокси сервер SQUID:
# sudo apt-get install squid     (squid3)
Устанавливаем apache:
# sudo apt-get install apache2
Устанавливаем php5:
# sudo apt-get install aptitude install php5 libapache2-mod-php5 php5-cli php5-common php5- mysql php5-gd
Устанавливаем MySql:
# sudo apt-get install mysql-server-5.1 mysql-client-5.1 libmysqlclient15off
Введем пароль для MySQL и обязательно его запомним
# aptitude install libpcre3 libpcre3-dev libgd2-xpm libapache2-mod-php5 php-fpdf gcc
Также, возможно, потребуется установить дополнительные пакеты:
squidguard – для использования редиректора squidguard
php5-ldap – для авторизации пользователей в Active Directory | LDAP
php-fpdf – для генерации pdf отчетов

install apache2 apache2-mpm-prefork libapache2-mod-php5 php5-cgi php5-common php5-mysql mysql-server mysql-client libmysqlclient15off squid libpcre3 php5-gd libpcre3-dev libmysqlclient15-dev gcc make



По завершению установки следует отредактировать файл /etc/php5/apache2/php.ini
Необходимо изменить параметры:
safe_mode = On
safe_mode_exec_dir = “/usr/share/sams/bin”
disable_functions = “chdir,dl,ini_get_all,popen,proc_open,passthru,pcntl_exec”

PHP готов к работе.
Настраиваем прокси-сервер squid
Для этого откроем /etc/squid/squid.conf
# sudo nano /etc/squid/squid.conf     (или в mc F4 кому как удобно и если Вы поставили squid3 набирайте /etc/squid3/squid.conf)
Внимание! Ни в коем случае не менять структуру файла и не удалять коментарии !
...
http_port 3128 #<<< раскомментировать эту строчку

Изменяем эту опцию, добавляя интерфейс, на котором принимаем запросы, и включая прозрачность:
http_port 192.168.15.1:3128 transparent

...
cache_dir ufs /var/spool/squid 100 16 256 #<<< раскомментировать

access_log /var/log/squid/access.log
pid_filename /var/run/squid.pid
...
acl our_networks src 192.168.10.0/24 #<<< раскомментировать
http_access allow our_networks #<<< раскомментировать
...
visible_hostname proxy.localdomain #<<< добавить строчку, скорее всего взамен строки 2161
...
добавляем для SamsRedirector  строчки
# TAG: url_rewrite_program
url_rewrite_program /usr/bin/samsredir
Ищем соответствующие секции и вставляем/раскоментариваем :
url_rewrite_program /usr/local/bin/samsredir
url_rewrite_children 5
auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/ncsa.sams
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
проверяем работу squid, т.е мы разрешили всем выходить в интернет
/etc/init.d/squid stop
squid -z
/etc/init.d/squid start
если ошибок не наблюдаем, настраиваем компьютер на работу с интернет
прокси сервер 192.168.10.0  порт 3128
Установка SAMS
wget http://www.nixdev.net/release/sams/ubuntu/jaunty/sams_1.0.5_i386.deb
wget http://www.nixdev.net/release/sams/ubuntu/jaunty/sams-web_1.0.5_all.deb
wget http://www.nixdev.net/release/sams/ubuntu/jaunty/sams-doc_1.0.5_all.deb

(http://www.nixdev.net/release/sams/ubuntu/hardy/)

Начнем установку
dpkg -i sams_1.0.5_i386.deb
dpkg -i sams_1.0.5_i386.deb (выйдет информация о правке init-скрипта.

Делаем следующее:
nano /etc/init.d/sams
изменяем в открывшемся файле значение false на true в строке “SAMS_ENABLE=false”
dpkg -i sams-web_1.0.5_all.deb
dpkg -i sams-doc_1.0.5_all.deb


Отредактируем в конфиге пароли, логины доступа пользователя к SAMS-MySql  и пути к (squid3)
nano /etc/sams.conf
Учтите, что в строке
SHUTDOWNCOMMAND=shutdown -h now # прописана команда на полный останов прокси!
Собственно редактируем следующие строки:
DB_USER=sams - Имя пользователя MySQL, от имени которого будет работать SAMS
; Password for database connection
DB_PASSWORD="yourpassword" - Пароль пользователя в MySQL.
SQUIDROOTDIR=/etc/squid3
SQUIDLOGDIR=/var/log/squid3
SQUIDCACHEDIR=/var/spool/squid3
SAMS уже установлен, приступаем к конфигурированию. Нам необходимо создать учетную запись в базе данных, для этого:
Переходим в каталог /usr/src/sams/mysql/
# cd /usr/src/sams/mysql/
# mysql -u root -p < sams_db.sql
# mysql -u root -p < squid_db.sql
# mysql -u root -p < create_sams_user.sql

В файле /usr/src/sams/mysql/create_sams_user.sql прописываем вышеназначенного пользователя.

mysql -u root -p (необходимо ввести пароль суперпользователя MySQL)
GRANT ALL ON squidctrl.* TO sams@localhost IDENTIFIED BY "yourpassword";
GRANT ALL ON squidlog.* TO sams@localhost IDENTIFIED BY "yourpassword";
exit


ЗАМЕТКА. Для установленной версии php5 и сервера mysql-5.1 в WEB интерфейсе будут проблемы с настройками. Необходимо сделать следующее.
1. В файле /usr/local/share/sams/src/webconfigtray.php закоментировать таким образом следующие строчки.
/* function GetHostName()
* {
* if (!($value=getenv('SERVER_NAME')))
* {   $value="N.A.";  }
* return($value);
*}
*/
2. В файле /usr/local/share/sams/src/configtray.php закоментировать таким образом следующие строчки.
/* function GetHostName()
* {
* if (!($value=getenv('SERVER_NAME')))
* {   $value="N.A.";  }
* return($value);
*}
*/


Перезагружаем сервер – желательно

WEB-интерфейс SAMS’а доступен по адресу http://<адресс сервера>/sams/

Для доступа к web-интерфейсу используйте следующие логин/пароль:

Админ:
admin / qwerty

Статистика:
auditor / audit 

Настройка WEB интерфейса:
ставим язык russian utf-8
Показывать графики в отчетах
Создавать PDF отчеты с помощью fpdf

Администрирование SAMS:
авторизация в NCSA
файл перенаправления запроса http://<адресс сервера>/sams/icon/classic/blank.gif
Путь к каталогу, где лежат файлы запрета запроса http://<адресс сервера>/sams/messages
Редиректор встроенный SAMS
Сохранять данные о трафике в базе за последние 12 месяцев

Удалить все существующие группы пользователей и шаблоны пользователей
удаляем все безжалостно…
Регулярные выражения :
создать список ban и поместить туда к примеру vkontakte.ru
Локальные домены:
добавить workgroup и <адресс сервера>
Создаем шаблон пользователей users:
Запрет доступа по регулярным выражениям
ban
Авторизация IP (авторизация по IP адресу)

Теперь добавим группу Users
и первого юзера
(не забудьте поставить галку в поле – Пользователь активен)

Запускаем демона
/etc/init.d/samsd start
Идем в меню SQUID – реконфигурировать
после того, как убедились, что команда демоном получена – смотрим в консоли:
ps -auxw|grep proxy

Теперь для проверки reboot и будем смотреть как это все работает,
В браузере прописываем настройки прокси <адресс сервера> порт 3128
Все должно работать, а при попытке входа на запрещенный URL должны получить:




iptables


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
 
sysctl -w net.ipv4.ip_forward=1    # Настройка ядра, для разрешения на продвижение пакетов
sysctl -w net.ipv4.ip_dynaddr=1    # Позволяет выполнять корректно MASQUERADE при динамическом изменении ip адреса
 
modprobe ip_nat_ftp                # Для правильной работы активного режима FTP

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F #очищаем все предыдущее правила
iptables -t nat -F #очищаем все предыдущее правила таблици NAT
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X

# добовляют протоколирующие функции.
## neue Kette DROP und LOG Regel
iptables -N LOG_DROP #- дефинируем новую цупочку с именем LOG_DROP
iptables -A LOG_DROP -j LOG --log-prefix "--rest-muell-- "  # создаем новую цепочку,это будет добавлятся в лог файл строчка "--rest-muell-- "
iptables -A LOG_DROP -j DROP  # комбинируем предыдущие 2 правила, блокируем и пишем в лог.

iptables -A INPUT -i lo -j ACCEPT  # разрешаем входящий трафик на интерфейсе loopback
iptables -A INPUT -p icmp -j ACCEPT  # разрешаем входящий трафик по протоколу ICMP
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT  # разрешаем входящий трафик по ранее установленным соединениям
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A INPUT -p tcp --dport 21 -j ACCEPT
#  Внутрение компьютеры заворачиваем всех на 3128 squid
#iptables -t nat -A PREROUTING -i 192.168.10.2 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
#  Внутрение компьютеры могли подключаться 3128 squid
iptables -A INPUT -p tcp -i eth1 --dport 3128 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j  DROP # запрещаем подключаться извне к нашему apache
iptables -A INPUT -i eth1 -s 192.168.10.0/24 -j ACCEPT  # разрешаем входящий трафик из локальной сети
iptables -A INPUT -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN,ACK SYN -j LOG --log-level 7 --log-tcp-options
iptables -A INPUT -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN,ACK SYN -j REJECT --reject-with icmp-port-unreachable
iptables -A INPUT -i eth1 -p tcp -m tcp --tcp-flags FIN,SYN,ACK SYN -j LOG --log-level 7 --log-tcp-options
iptables -A INPUT -i eth1 -p tcp -m tcp --tcp-flags FIN,SYN,ACK SYN -j REJECT --reject-with icmp-port-unreachable

#######################################################################
iptables -P INPUT DROP  # запрещаем остальной входящий трафик

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#######################################################################
iptables -P OUTPUT ACCEPT  # разрешаем весь исходящий трафик


#разрешаем транзитный трафик из локальной сети по порту 21
#iptables -A FORWARD -p tcp --sport 21 -j ACCEPT
#iptables -A FORWARD -p tcp --dport 21 -j ACCEPT
#iptables -I FORWARD -s 192.168.10.10 -p tcp --dport 21 -j ACCEPT
#iptables -I FORWARD -s 192.168.10.10 -p tcp --dport 21 -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.10.23 -d XXX.xxx.xxx.xxx --dport 21 -j ACCEPT

iptables -A FORWARD -p tcp -s 192.168.10.1 -d XXX.xxx.xxx.xxx --dport 80 -j ACCEPT


# kanevskadm.ru
LOCALNET="192.168.10.1"
iptables -A FORWARD -p tcp -s $LOCALNET -d smtp.kanevskadm.ru --dport 25 -j ACCEPT
iptables -A FORWARD -p tcp -s smtp.kanevskadm.ru -d $LOCALNET --sport 25 -j ACCEPT
iptables -A FORWARD -p tcp -s $LOCALNET -d pop.kanevskadm.ru --dport 110 -j ACCEPT
iptables -A FORWARD -p tcp -s pop.kanevskadm.ru -d $LOCALNET --sport 110 -j ACCEPT
iptables -t nat -A POSTROUTING -p tcp -s $LOCALNET --dport 110 -j MASQUERADE
iptables -t nat -A POSTROUTING -p tcp -s $LOCALNET --dport 25 -j MASQUERADE

#BTI
iptables -A FORWARD -p tcp -s 192.168.10.19 -d XXX.xxx.xxx.xxx -j ACCEPT

iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT  # разрешаем транзитный трафик по ранее установленным соединениям
#iptables -A FORWARD -i eth1 -s 192.168.10.0/24 -j ACCEPT  # разрешаем транзитный трафик из локальной сети

###################################################################
iptables -P FORWARD DROP  # запрещаем остальной транзитный трафик

iptables -t nat -F POSTROUTING  # очищаем правила для POSTROUTING
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE  # выполняем преобразование адресов для трафика, выходящего в Интернет



может кому поможет

Благодfрю за созданный свой ман, google и конференцию ubuntu@jabber.ru
читаю записки на память http://nikmy.ru отличный сайт

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1314 : 11 Июля 2011, 13:11:08 »
При чём тут "HOWTO: Iptables для новичков" ?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн SergeySV

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
    • http://gamesv.ru
Re: HOWTO: Iptables для новичков
« Ответ #1315 : 19 Июля 2011, 17:50:19 »
Блин уже неделю жеско досят сеть разрывает на несколько секунд каждые 10-30мин помогите советом, вот текушие настройки iptables
(Нажмите, чтобы показать/скрыть)

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1316 : 19 Июля 2011, 18:16:48 »
C чего вы вообще взяли, что вас досят?
Может, тупо сетевая карта/порт в коммутаторе сгорели.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн SergeySV

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
    • http://gamesv.ru
Re: HOWTO: Iptables для новичков
« Ответ #1317 : 19 Июля 2011, 18:26:24 »
C того что 4 дня проверяли все оборудование, поменяли 3 разных сетевых карты, обрезали-переобжали провод, с провайдером инета связались, оборудование все проверили, он подтвердил что замечено много запросов вредоносного характера, они смогут вычислить кто лишь через неделю (типо им отдельный серв надо для этого подымать сейчас не могут), а мне бы хотелось защетить серв и восстановить нормальную работу.
« Последнее редактирование: 19 Июля 2011, 18:28:16 от SergeySV »

Оффлайн bubuntu-ru

  • Любитель
  • *
  • Сообщений: 92
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1318 : 19 Июля 2011, 20:00:26 »
Поиграться если тарпит+геоайпи для таблеса. А ты инет тут что ли берешь
-A INPUT -i eth0 -j ACCEPT
« Последнее редактирование: 19 Июля 2011, 20:03:14 от bubuntu-ru »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #1319 : 19 Июля 2011, 21:44:45 »
Поменять первую строчку в цепочках
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

на

-A INPUT -m state --state ESTABLISHED -j ACCEPT
-A INPUT -m state --state INVALID -j DROP
-A INPUT -m state --state RELATED -j ACCEPT

то же для FORWARD.

И вообще смотрите статиcтику по цепочкам и сравнивайте с другими доступными данными.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

Страница сгенерирована за 0.035 секунд. Запросов: 25.