1. Настройка сетевых интерфейсов и параметров DNS
редактор nano
Ctrl+O - сохраняем
Ctrl+X - выход из листинга
- nano /etc/network/interfaces
Код: Выделить всё
# loopback уже настроено
auto lo
iface lo inet loopback
# WAN интерфейс смотрящий в Интернет
auto eth1
iface eth1 inet static
address XXX.XXX.XXX.XXX #прописываем свой IP
netmask XXX.XXX.XXX.XXX #прописываем свою маску
gateway XXX.XXX.XXX.XXX #прописываем свой IP шлюза
# LAN интерфейс смотрящий в локальную сеть
auto eth0
iface eth0 inet static
address XXX.XXX.XXX.XXX #прописываем свой IP
netmask XXX.XXX.XXX.XXX #прописываем свою маску
- nano /etc/resolv.conf
Код: Выделить всё
nameserver XXX.XXX.XXX.XXX #прописываем свой IP DNS
nameserver XXX.XXX.XXX.XXX #прописываем свою IP DNS, если есть вторичный
search #прописываем свой домен типа domain.local
- reboot
- ifconfig
- ping ya.ru
- apt-get update
- apt-get dist-upgrade
- reboot
Консольный редактор с подсветкой синтаксиса vim-gtk
- apt-get install vim-gtk
- apt-get install mc
- apt-get install openssh-server
Подключаемся на внутренний IP по 22 порту
Устанавливаем Прокси-сервер SQUID
- apt-get install squid
- apt-get install mysql-server mysql-client apache2 php5 libapache2-mod-php5 php5-mysql build-essential autoconf automake libtool g++ libpcre3 libpcre3-dev php5-gd libmysqlclient15-dev php-fpdf
ЗАПОМИНАЕМ ПАРОЛЬ
4. Допиливаем WEB-сервер APACHE2
SAMS для некоторых функций WEB интерфейса использует системные команды. В режиме safe_mode = Off PHP блокирует доступ к системным командам. PHP позволяет выполнять системные команды, расположенные в каталоге, заданном параметром safe_mode_exec_dir. Допиливаем:
- nano /etc/php5/apache2/php.ini
Код: Выделить всё
safe_mode = On
safe_mode_exec_dir = /usr/local/share/sams2/bin
Небольшой тюнинг блокируемого размера файлов
post_max_size = 50M
upload_max_filesize = 50M
- /etc/init.d/apache2 restart
- nano /etc/squid/squid.conf
Делаем прозрачное проксирование
- http_port 3128 transparent
Код: Выделить всё
acl localnet src 192.168.1.0/24
Код: Выделить всё
icp_port 0
cache_mem 256 MB
maximum_object_size_in_memory 512 KB
maximum_object_size 120480 KB
cache_dir ufs /var/spool/squid 5000 32 256
cache_swap_low 90
cache_swap_high 95
logfile_rotate 5
было:
Код: Выделить всё
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
Код: Выделить всё
acl SSL_ports port 443 # https
#acl SSL_ports port 563 # snews
#acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
#acl Safe_ports port 70 # gopher
#acl Safe_ports port 210 # wais
#acl Safe_ports port 1025-65535 # unregistered ports
#acl Safe_ports port 280 # http-mgmt
#acl Safe_ports port 488 # gss-http
#acl Safe_ports port 591 # filemaker
#acl Safe_ports port 777 # multiling http
#acl Safe_ports port 631 # cups
#acl Safe_ports port 873 # rsync
#acl Safe_ports port 901 # SWAT
- service squid stop
- squid -z
- service squid start
Переходим в директорию установки SAMS
- cd /usr/src
- tar xjvf sams-2.0.0-rc1.tar.bz2
- cd sams-2.0.0-rc1
- make -f Makefile.cvs
- ./configure
- make
- make install
- chown -R www-data:www-data /usr/local/share/sams2/
- chown -R www-data:www-data /usr/local/etc/sams2.conf
- ln -s /usr/local/share/sams2/ /var/www/sams2
- sudo /etc/init.d/apache2 stop
- sudo /etc/init.d/apache2 start
Создаём базу данных, нажав на «Run setup program»
Ставим кодировку Russian UTF-8
На следующей странице, если всё правильно вводили в конфиге APACHE2, должны отсутствовать красные пометки. Если они присутствуют, подсказки глядим там же.
Само создание базы SAMS:
Хост базы данных localhost
Имя пользователя БД root
Пароль к базе данных ЗАПОМНЕННЫЙ ПАРОЛЬ!!!
Создать пользователя SAMS для доступа к базе данных - галочка установлена
Имя пользователя SAMS sams@localhost
пароль ЗАПОМНЕННЫЙ ПАРОЛЬ!!!
На следующей странице все параметры должны быть - "Ok"
На следующей странице - database MySQL not connected. Ничего не трогаем. Валерьянку тоже!!!
Идём допиливать SAMS2
- nano /usr/local/etc/sams2.conf
Код: Выделить всё
DB_USER=root
DB_PASSWORD=ЗАПОМНЕННЫЙ ПАРОЛЬ!!!
Логин admin
Пароль qwerty
Для запуска демона выполняем команду
sams2daemon
7. Включаем форвардинг между сетевыми интерфейсами
- nano /etc/sysctl.conf
Код: Выделить всё
# Форвардинг между интерфейсами шлюза
#
# Controls IP packet forwarding. Основной параметр.
#
net.ipv4.ip_forward = 1
#
# Параметры контроля соединения
#
# Controls source route verification
#
net.ipv4.conf.default.rp_filter = 1
#
# Do not accept source routing
#
net.ipv4.conf.default.accept_source_route = 0
#
# Controls the System Request debugging functionality of the kernel
#
kernel.sysrq = 0
#
# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
#
kernel.core_uses_pid = 1
#
# Controls the use of TCP syncookies
#
net.ipv4.tcp_syncookies = 1
#
# Controls the maximum size of a message, in bytes
#
kernel.msgmnb = 65536
#
# Controls the default maxmimum size of a mesage queue
#
kernel.msgmax = 65536
#
# Controls the maximum shared segment size, in bytes
#
kernel.shmmax = 68719476736
#
# Controls the maximum number of shared memory segments, in pages
#
kernel.shmall = 4294967296
#
# Other
#
net.core.rmem_default = 16777216
#
net.core.rmem_max = 16777216
#
net.core.wmem_default = 16777216
#
net.core.wmem_max = 16777216
#
net.ipv4.tcp_rmem = 4096 16777216 16777216
#
net.ipv4.tcp_wmem = 4096 16777216 16777216
#
net.ipv4.conf.all.accept_redirects = 0
#
net.ipv4.conf.default.accept_redirects = 0
#
net.ipv4.icmp_echo_ignore_broadcasts=1
#
net.ipv4.conf.all.accept_source_route=0
#
net.ipv4.ip_local_port_range = 16384 61000
#
net.ipv4.tcp_fin_timeout = 30
#
kernel.panic=10
#
net.ipv4.tcp_timestamps=0
#
Переносим правила в один файл iptables.up.rules и кладём его в корневую директорию
- iptables-save > /etc/iptables.up.rules
- nano /etc/network/interfaces
Код: Выделить всё
pre-up iptables-restore < /etc/iptables.up.rules
- nano /etc/iptables.up.rules
Код: Выделить всё
######################################################################################################################################
#
#
# WAN внешний интерфейс
#
#
# eth0 - AAA.AAA.AAA.AAA Ваш внешний IP
#
#
# LAN внутренний интерфейс
#
#
# eth1 - BBB.BBB.BBB.BBB Ваш внутренний IP
#
#
######################################################################################################################################
#
#
# Правила NAT (Network Address Translation — Преобразование Сетевых Адресов)
#
#
*nat
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
#
#
######################################################################################################################################
#
#
# Выпускаем Админов мимо правил NAT порубиться в World of Tanks. Тестовый IP для настройки Therminal Client.
#
#
# Старый админ
#
#
-A PREROUTING -i eth1 ! -s 192.168.1.XXX -p tcp -m multiport --dport 80,8080 -j DNAT --to AAA.AAA.AAA.AAA:3128
#
#
# Молодой админ
#
#
-A PREROUTING -i eth1 ! -s 192.168.1.XXX -p tcp -m multiport --dport 80,8080 -j DNAT --to AAA.AAA.AAA.AAA:3128
#
#
# Тестовый IP
#
#
-A PREROUTING -i eth1 ! -s 192.168.1.XXX -p tcp -m multiport --dport 80,8080 -j DNAT --to AAA.AAA.AAA.AAA:3128
#
#
######################################################################################################################################
#
#
# Механизм NAT
#
#
-A POSTROUTING -o eth0 -j SNAT --to-source AAA.AAA.AAA.AAA
#
#
######################################################################################################################################
#
#
COMMIT
#
#
######################################################################################################################################
#
#
# Правила FIREWALL
#
#
*filter
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
#
#
#####################################################################################################################################
#
#
# Защита от подбора пароля к соединению SSH. AntiBrootforce SSH.
#
#
-I INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
#
#
-I INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 5 --name DEFAULT --rsource -j DROP
#
#
######################################################################################################################################
#
#
# Правила активного соединения. ESTABLISHED CONNECTION.
#
#
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
#
#
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
#
#
######################################################################################################################################
#
#
# Прячемся от внешнего пинга
#
#
-A INPUT -i eth0 -p icmp -j DROP
#
#
######################################################################################################################################
#
#
# Loop интерфейс. LOCALHOST.
#
#
-A INPUT -i lo -d 127.0.0.1 -j ACCEPT
#
#
-A OUTPUT -o lo -s 127.0.0.1 -j ACCEPT
#
#
######################################################################################################################################
#
#
# Выпускаем внутреннюю подсеть в Интернет
#
#
-A INPUT -i eth1 -s 192.168.1.0/24 -j ACCEPT
#
#
######################################################################################################################################
#
#
# Пробрасываем 443 порт SSL во внутреннюю подсеть
#
#
-A FORWARD -p tcp -m tcp -s 192.168.1.0/24 --dport 443 -i eth1 -j ACCEPT
#
#
######################################################################################################################################
#
#
# Разрешаем ICQ
#
#
-A FORWARD -p tcp -m tcp -s 192.168.1.0/24 --dport 5190 -i eth1 -j ACCEPT
#
#
######################################################################################################################################
#
#
# Разрешаем MailAgent
#
#
-A FORWARD -p tcp -m tcp -s 192.168.1.0/24 --dport 2041 -i eth1 -j ACCEPT
#
#
-A FORWARD -p tcp -m tcp -s 192.168.1.0/24 --dport 2042 -i eth1 -j ACCEPT
#
#
######################################################################################################################################
#
#
# Разрешаем почтовые клиенты MS Outlook
#
#
-A FORWARD -p tcp -m tcp -s 192.168.1.0/24 --dport 25 -i eth1 -j ACCEPT
#
#
-A FORWARD -p tcp -m tcp -s 192.168.1.0/24 --dport 110 -i eth1 -j ACCEPT
#
#
######################################################################################################################################
#
#
# Разрешаем DNS
#
#
-A FORWARD -p udp -m udp -s 192.168.1.0/24 --dport 53 -i eth1 -j ACCEPT
#
#
######################################################################################################################################
#
#
# Запрещаем внутренней подсети пинговать внешние ресурсы
#
#
-A FORWARD -p icmp -s 192.168.1.0/24 --icmp-type 8 -i eth0 -j ACCEPT
#
#
-A FORWARD -p icmp -s 192.168.1.0/24 --icmp-type 11 -i eth0 -j ACCEPT
#
#
######################################################################################################################################
#
#
# Выпускаем Админов мимо правил FIREWALL порубиться в World of Tanks. Тестовый IP для настройки Therminal Client.
#
#
# Старый админ
#
#
-A FORWARD -s 192.168.1.XXX -i eth1 -j ACCEPT
#
#
# Молодой админ
#
#
-A FORWARD -s 192.168.1.XXX -i eth1 -j ACCEPT
#
#
# Тестовый IP
#
#
-A FORWARD -s 192.168.1.XXX -i eth1 -j ACCEPT
#
#
######################################################################################################################################
#
#
# Выпускаем в интернет службу DNS контроллера домена
#
#
-A FORWARD -s 192.168.1.50 -i eth1 -j ACCEPT
#
#
######################################################################################################################################
#
#
# Проброс IP:Port KlienBank на рабочее место СДБО
#
#
-A FORWARD -p tcp -m tcp -s 192.168.1.XXX -d IP-Банка/32 --dport порт-банка -i eth1 -j ACCEPT
#
#
######################################################################################################################################
#
#
# Разрешаем порты на вход/выход, которые используются за шлюзом в LAN
#
#
-A OUTPUT -o eth0 -p tcp -m multiport --dports 22,80,443,5190,8080,9091 -j ACCEPT
#
#
-A OUTPUT -o eth0 -p udp -m multiport --dports 53,123 -j ACCEPT
#
#
######################################################################################################################################
#
#
# FINAL - Блокируем всё лишнее
#
#
-A INPUT -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN,ACK SYN -j LOG --log-level 7 --log-tcp-options
#
#
-A INPUT -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN,ACK SYN -j REJECT --reject-with icmp-port-unreachable
#
#
-A OUTPUT -o eth0 -p tcp -m tcp -j DROP
#
#
-A OUTPUT -o eth0 -p udp -m udp -j DROP
#
#
-A FORWARD -i eth1 -j DROP
#
#
-A FORWARD -o eth1 -j DROP
#
#
######################################################################################################################################
#
#
COMMIT
#
#
######################################################################################################################################
#
#
# Здесь можно писать заметки об изменениях в листинге
#
#
#
#
#####################################################################################################################################
До перезагрузки и применения правил IPTABLES нужно настроить SAMS2 и учётную запись администратора
После редактирования финальная перезагрузка
- reboot
- sams2daemon
Код: Выделить всё
[size=150]ENJOY!!![/size]
Есть пара недочётов.
- Первый иногда отваливается squid. Приходится запускать руками. service squid start.
- Второй sams никак не могу добавить в автозапуск. Надо править скрипт. Запускаю руками. sams2daemon.
Пробовал ставить на 12.04. Много пакетов не хватает. Надо ставить руками из сторонних источников. На некоторые библиотеки надо ставить патчи.
Буду признателен всем кто выложит подобный мануал для 12.10.