Темы урока
- Межсетевой экран
- Полная виртуализация, паравиртуализация и контейнерная виртуализация
- Настройка контейнерной виртуализации OpenVZ
- Виртуальные частные сети - SSH
Настройка межсетевого экрана IPTABLES/Netfilter
Инфа по IPTABLES:
iptables -L Iptables -L --line-numbers # посмотреть правила с нумерацией строк
3 цепочки IPTABLES:
INPUT - входящий траффик
FORWARD - транзитный траффик
OUTPUT - исходящий траффик
Установка базовой политики IPTABLES (POLICY):
Политика - это базовое правило по умолчанию, которое работает, если других правил нет.
iptables INPUT -P ACCEPT # разрешить весь входящий траффик iptables INPUT -P DROP # запретить весь входящий траффик iptables OUTPUT -P ACCEPT # разрешить весь исходящий траффик iptables FORWARD -P DROP # запретить весь транзитный траффик
Удаление правил в IPTABLES - FLUSH:
Если в политике входящих/исходящих пакетов не прописано ALLOW, сервер вышибет из SSH сессии после этой команды.
iptables -F # убить вообще все правила, кроме базовых политик
Добавление (APPEND) правил в IPTABLES:
По интерфейсам:
iptables -A INPUT -i lo -j ACCEPT # разрешить пакеты на входе в loopback интерфейс iptables -A INPUT -i eth0 -j ACCEPT # разрешить пакеты на входе eth0 iptables -A INPUT -i ppp0 -j ACCEPT # разрешить пакеты на входе по модемному соединению
По статусу пакетов:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # подгрузить модуль (-m) инспекции пакетов, разрешить пакеты на вход лишь со статусами ESTABLISHED и RELATED из уже установленных сессий. К новым пакетам (статус NEW) правило не применяется.
По портам:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # разрешить порт SSH, dport = "destination port", sport = "source port" iptables -A INPUT -p tcp --dport 6881:6890 -j ACCEPT # разрешить группу TCP портов с 6881 по 6890
По IP адресам, подсетям, MAC-адресам:
iptables -A INPUT -s 192.168.0.4 -j ACCEPT # разрешить пакеты с одного IP iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT # разрешить пакеты из подсети iptables -A INPUT -s 192.168.0.0/255.255.255.0 -j ACCEPT # разрешить пакеты из подсети iptables -A INPUT -s 192.168.0.4 -m mac --mac-source 00:50:8D:FD:E6:32 -j ACCEPT # фильтр по IP и по MAC
Комбинирование правил:
iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 22 -j ACCEPT # разрешить SSH только с выбранной подсети IP
Удаление правил:
iptables -D <chain-name> <line-number> | <rule> # удалить правило с цепочке по номеру строки или правилу (правило должно четко соответствовать существующему)
Применение и сохранение правил в IPTABLES (CentOS):
sudo ./sbin/service iptables save
Применение и сохранение правил в IPTABLES (Ubuntu Server):
apt-get install iptables-persistent iptables-save > /etc/iptables/rules
Настройка контейнерной виртуализации OpenVZ
Установка
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ yum install vzctl vzquota ploop
Перезагрузить и проверить версию ядра:
uname -a # Linux centos 2.6.32-042stab084.14
Создание контейнера
Создание контейнера по шаблону vps2g:
vzctl create 103 --ostemplate centos-6-x86_64 --config vps2g # template is taken from http://openvz.org/Download/template/precreated vzctl set 103 --save --onboot yes # autostart container after host boot vzctl set 103 --save --hostname centos.example.com # container OS hostname vzctl set 103 --save --ipadd 192.168.1.31 # add IP for VENET NIC - venet0 vzctl set 103 --save --nameserver 208.67.220.220 --nameserver 208.67.222.222 # OpenDNS servers vzctl set 103 --save --cpus 1 # set cpu cores number vzctl set 103 --save --ram 0G:4G # RAM soft and hard limits vzctl set 103 --save --swap 0G:4G # swap soft and hard limits vzctl set 103 --save --diskspace 20G:22G # HDD size soft and hard limits vzctl start 103 # start container vzctl exec 103 passwd # execute command inside container to set root password
Миграция контейнера
vzmigrate -t -v --live <host IP> <CTID>
-t - display time statistics of migration
-v - verbose migration
--live - do migration without container shutdown