# Практическая работа №5. Основы iptables ###### tags: `Организация сетевой безопасности` --- ## Топология сети ![](https://i.imgur.com/0TzXvp7.png) > ![](https://i.imgur.com/vQjstwn.png) - windows > ![](https://i.imgur.com/fQce2X1.png) - ubuntu > ![](https://i.imgur.com/D6Blqwm.png) - ssh-канал для проверки проброса портов (12 задание) --- ## Настройка SSH Было настроено два ssh-сервера: bubuntu-v1 - для проверки правила №12 smb-srv - для проверки правил №5,7,9 ### 1. Настройка ssh-сервера bubuntu-v1 ![](https://i.imgur.com/cItEOJL.png) ### 2. Настройка ssh-сервера smb-srv ![](https://i.imgur.com/pmH5wNh.png) --- ## Базовая настройка iptables ### 1. Установка iptables ![](https://i.imgur.com/52aneyb.png) ### 2. Создание базовых правил с дефолтной политикой DROP ![](https://i.imgur.com/ZPKJNOk.png) ![](https://i.imgur.com/NXnzOmt.png) ### 3. Пример правила, разрешающего HTTP ![](https://i.imgur.com/VKRRZuA.png) ### 4. Пример правила, разрешающего HTTPS ![](https://i.imgur.com/Y3YxvSP.png) ### 5. Пример правила, разрешающего SSH ![](https://i.imgur.com/ILAVGyL.png) --- ## Создание профильных правил Был написан bash-скрипт, который по заданному аргументу (номеру правила) применял следующие правила или выводил логи по данным правилам. ``` #!/bin/bash # default policies sudo iptables -P INPUT ACCEPT sudo iptables -P OUTPUT ACCEPT sudo iptables -P FORWARD ACCEPT case "$1" in -4-1) # Ping-block 1 sudo iptables -F sudo iptables -A INPUT -p ICMP --icmp-type echo-request -j LOG --log-prefix="Iptables: Ping block: " sudo iptables -A INPUT -p ICMP --icmp-type echo-request -j REJECT ;; -4-2) # Ping-block 2 sudo iptables -F sudo iptables -A INPUT -p ICMP --icmp-type echo-request -j LOG --log-prefix="Iptables: Ping block: " sudo iptables -A INPUT -p ICMP --icmp-type echo-request -j DROP ;; -4-l) # Ping logging sudo tail /var/log/iptables_ping.log ;; -5) # SSH-block sudo iptables -F sudo iptables -A INPUT -p TCP --dport 10022 -j LOG --log-prefix="Iptables: SSH block: " sudo iptables -A INPUT -p TCP --dport 10022 -j REJECT ;; -5-l) # SSH logging sudo tail /var/log/iptables_ssh.log ;; -6) # All_connections-block sudo iptables -F sudo iptables -A INPUT -j LOG --log-prefix="Iptables: All connect block: " sudo iptables -P INPUT DROP ;; -6-l) # All logging sudo tail /var/log/iptables_all.log ;; -7) # SSH'nt-block sudo iptables -F sudo iptables -A INPUT -p TCP --dport 10022 -j ACCEPT sudo iptables -A INPUT -j LOG --log-prefix="Iptables: SSH2 block: " sudo iptables -P INPUT DROP ;; -7-l) # SSH'nt logging sudo tail /var/log/iptables_ssh2.log ;; -8) # host-block sudo iptables -F sudo iptables -A INPUT -s 192.168.100.1 -j LOG --log-prefix="Iptables: Host block: " sudo iptables -A INPUT -s 192.168.100.1 -j REJECT ;; -8-l) # Host logging sudo tail /var/log/iptables_host.log ;; -9) # ssh'nt_host-block sudo iptables -F sudo iptables -A INPUT -s 192.168.100.1 -p TCP --dport 10022 -j ACCEPT sudo iptables -A INPUT -s 192.168.100.1 -j LOG --log-prefix="Iptables: Host2 block: " sudo iptables -A INPUT -s 192.168.100.1 -j DROP ;; -9-l) # Host2 logging sudo tail /var/log/iptables_host2.log ;; -10) # net-block sudo iptables -F sudo iptables -A INPUT -s 192.168.100.0/24 -j LOG --log-prefix="Iptables: Net block: " sudo iptables -A INPUT -s 192.168.100.0/24 -j REJECT ;; -10-l) # Net logging sudo tail /var/log/iptables_net.log ;; -11) # net_port-block sudo iptables -F sudo iptables -A INPUT -s 192.168.0.0/16 -p TCP --dport 3000:4000 -j LOG --log-prefix="Iptables: Net-port block: " sudo iptables -A INPUT -s 192.168.0.0/16 -p TCP --dport 3000:4000 -j REJECT ;; -11-l) # Port logging sudo tail /var/log/iptables_port.log ;; -12-1) # forward-log 1 sudo iptables -F sudo iptables -t nat -F sudo iptables -A INPUT -i ens34 -p TCP --dport 1000:5000 -j LOG --log-prefix="Iptables: Port-forwarding: " sudo iptables -A INPUT -i ens34 -p TCP --dport 1000:5000 -j ACCEPT sudo iptables -t nat -A PREROUTING -i ens34 -p TCP --dport 1000:5000 -j DNAT --to-destination 192.168.1.1 sudo iptables -t nat -A POSTROUTING -o ens33 -p TCP --dport 1000:5000 -d 192.168.1.1 -j SNAT --to-source 192.168.1.3 sudo iptables -P INPUT DROP ;; -12-2) # forward-log 2 sudo iptables -F sudo iptables -t nat -F sudo iptables -A INPUT -i ens34 -p TCP --dport 1000:5000 -j LOG --log-prefix="Iptables: Port-forwarding: " sudo iptables -A INPUT -i ens34 -p TCP --dport 1000:5000 -j ACCEPT sudo iptables -A OUTPUT -o ens34 -p TCP --dport 1000:5000 -j ACCEPT sudo iptables -A FORWARD -p TCP --dport 1000:5000 -j ACCEPT sudo iptables -A FORWARD -i ens34 -p TCP --dport 1000:5000 -j ACCEPT sudo iptables -A FORWARD -i ens33 -p TCP --dport 40000:65535 -j ACCEPT sudo iptables -t nat -A PREROUTING -i ens34 -p TCP --dport 1000:5000 -j DNAT --to-destination 192.168.1.1 sudo iptables -t nat -A POSTROUTING -o ens33 -p TCP --dport 1000:5000 -d 192.168.1.1 -j SNAT --to-source 192.168.1.3 sudo iptables -P INPUT DROP sudo iptables -P FORWARD DROP sudo iptables -P OUTPUT DROP ;; -12-l) # Forward logging sudo tail /var/log/iptables_forw.log ;; -smb) # smb sudo iptables -F sudo iptables -A INPUT -s 192.168.0.0/16 -p TCP --dport 445 -j ACCEPT sudo iptables -A INPUT -s 192.168.0.0/16 -p TCP --dport 137:139 -j ACCEPT sudo iptables -P INPUT DROP ;; *) # clear rule sudo iptables -F sudo iptables -t nat -F echo "Wrong rule, iptables was flushed." ;; esac ``` ### 1. Запрет ping (правило №4) #### 1 способ ``` sudo iptables -F sudo iptables -A INPUT -p ICMP --icmp-type echo-request -j LOG --log-prefix="Iptables: Ping block: " sudo iptables -A INPUT -p ICMP --icmp-type echo-request -j REJECT sudo iptables -P INPUT ACCEPT ``` #### 2 способ ``` sudo iptables -F sudo iptables -A INPUT -p ICMP --icmp-type echo-request -j LOG --log-prefix="Iptables: Ping block: " sudo iptables -A INPUT -p ICMP --icmp-type echo-request -j DROP sudo iptables -P INPUT ACCEPT ``` ![](https://i.imgur.com/RvPM1U5.png) > логирование ### 2. Запрет ssh-соединений (правило №5) ``` sudo iptables -F sudo iptables -A INPUT -p TCP --dport 10022 -j LOG --log-prefix="Iptables: SSH block: " sudo iptables -A INPUT -p TCP --dport 10022 -j REJECT sudo iptables -P INPUT ACCEPT ``` ![](https://i.imgur.com/g414NMv.png) > логирование ### 3. Запрет всех соединений (правило №6) ``` sudo iptables -F sudo iptables -A INPUT -j LOG --log-prefix="Iptables: All connect block: " sudo iptables -P INPUT DROP ``` ![](https://i.imgur.com/ZCyPYKP.png) > логирование ### 4. Запрет всех соединений, кроме ssh (правило №7) ``` sudo iptables -F sudo iptables -A INPUT -p TCP --dport 10022 -j ACCEPT sudo iptables -A INPUT -j LOG --log-prefix="Iptables: SSH'nt block: " sudo iptables -P INPUT DROP ``` ![](https://i.imgur.com/vGOCtU3.png) > логирование ### 5. Запрет всех соединений по одному ip-addr (правило №8) ``` sudo iptables -F sudo iptables -A INPUT -s 192.168.100.1 -j LOG --log-prefix="Iptables: Host block: " sudo iptables -A INPUT -s 192.168.100.1 -j REJECT sudo iptables -P INPUT ACCEPT ``` ![](https://i.imgur.com/LWVLcOC.png) > логирование ### 6. Запрет всех соединений по одному ip-addr, кроме ssh (правило №9) ``` sudo iptables -F sudo iptables -A INPUT -s 192.168.100.1 -p TCP --dport 10022 -j ACCEPT sudo iptables -A INPUT -s 192.168.100.1 -j LOG --log-prefix="Iptables: SSH'nt host block: " sudo iptables -A INPUT -s 192.168.100.1 -j DROP sudo iptables -P INPUT ACCEPT ``` ![](https://i.imgur.com/gDZ2DDD.png) > логирование ### 7. Запрет всех соединений по диапазону ip-addr/24 (правило №10) ``` sudo iptables -F sudo iptables -A INPUT -s 192.168.100.0/24 -j LOG --log-prefix="Iptables: Net block: " sudo iptables -A INPUT -s 192.168.100.0/24 -j REJECT sudo iptables -P INPUT ACCEPT ``` ![](https://i.imgur.com/2q4iewo.png) > логирование ### 8. Запрет диапазона портов 3000:4000 в сети с маской /16 (правило №11) ``` sudo iptables -F sudo iptables -A INPUT -s 192.168.0.0/16 -p TCP --dport 3000:4000 -j LOG --log-prefix="Iptables: Net-port block: " sudo iptables -A INPUT -s 192.168.0.0/16 -p TCP --dport 3000:4000 -j REJECT sudo iptables -P INPUT ACCEPT ``` ![](https://i.imgur.com/f5wdQNz.png) > логирование ### 9. Проброс диапазона портов 1000:5000 на другой хост (правило №12) #### 1 вариант - с отслеживанием соединения ``` sudo iptables -F sudo iptables -t nat -F sudo iptables -A INPUT -i ens34 -p TCP --dport 1000:5000 -j LOG --log-prefix="Iptables: Port-forwarding: " sudo iptables -A FORWARD -i ens34 -p TCP --syn --dport 1000:5000 -m conntrack --ctstate NEW -j ACCEPT sudo iptables -A FORWARD -i ens34 -p TCP --syn --dport 1000:5000 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -A FORWARD -i ens33 -p TCP --syn --dport 1000:5000 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -t nat -A PREROUTING -i ens34 -p TCP --dport 1000:5000 -j DNAT --to-destination 192.168.1.1 sudo iptables -t nat -A POSTROUTING -o ens33 -p TCP --dport 1000:5000 -d 192.168.1.1 -j SNAT --to-source 192.168.1.3 sudo iptables -P INPUT DROP sudo iptables -P FORWARD DROP ``` #### 2 вариант - без отслеживания соединения ``` sudo iptables -F sudo iptables -t nat -F sudo iptables -A INPUT -i ens34 -p TCP --dport 1000:5000 -j LOG --log-prefix="Iptables: Port-forwarding: " sudo iptables -t nat -A PREROUTING -i ens34 -p TCP --dport 1000:5000 -j DNAT --to-destination 192.168.1.1 sudo iptables -t nat -A POSTROUTING -o ens33 -p TCP --dport 1000:5000 -d 192.168.1.1 -j SNAT --to-source 192.168.1.3 sudo iptables -P INPUT DROP ``` ![](https://i.imgur.com/NoTYMNB.png) ![](https://i.imgur.com/aoo5irY.png) > логирование ### 10. Создание правила для smb-сервера (правило №13) ``` sudo iptables -F sudo iptables -A INPUT -s 192.168.0.0/16 -p TCP --dport 445 -j ACCEPT sudo iptables -A INPUT -s 192.168.0.0/16 -p TCP --dport 137:139 -j ACCEPT sudo iptables -P INPUT DROP ``` ### 11. Создание правила для очистки таблиц iptables (правило №*) ``` sudo iptables -F sudo iptables -t nat -F ``` ## Базовая настройка samba-сервера ### 1. Установка сервиса ![](https://i.imgur.com/yBoDNeL.png) ### 2. Активация автозагрузки samba-сервиса ![](https://i.imgur.com/2JbxuHf.png) ### 3. Создание публичной и приватной директории, изменение прав ![](https://i.imgur.com/0aFxGiG.png) ### 4. Создание пользователя, группы, добавление пользователя в группу, изменение группы владельца приватной директории, установка пароля ![](https://i.imgur.com/Krnmanl.png) ### 5. Изменение конфигурационного файла samba-сервера ![](https://i.imgur.com/7kSFpkW.png) ### 6. Создание правил iptables ![](https://i.imgur.com/1owZazR.png) ### 7. Сохранение правил через netfilter-persistent ![](https://i.imgur.com/2Le22RW.png) ### 8. Успешный вход с linux ![](https://i.imgur.com/Wi4x2Lz.png) ![](https://i.imgur.com/smYqBaF.png) ### 9. Успешный вход с windows ![](https://i.imgur.com/wjEaNdc.png) ![](https://i.imgur.com/oPegNwz.png) ![](https://i.imgur.com/ed8Jqk1.png) ![](https://i.imgur.com/IzSpbju.png) ## Профильная настройка samba ### 1. Создание директории, пользователей, групп ``` sudo chmod -R 0777 /samba/share sudo groupadd admins sudo groupadd users sudo adduser gaga sudo adduser maga sudo usermod -aG admins gaga sudo usermod -aG users maga sudo adduser mirea sudo smbpasswd -a gaga ``` /etc/samba/smb.conf ``` [global] workgroup = WORKGROUP admin users = admins security = user map to guest = bad user wins support = no dns proxy = no invalid users = anon include = /etc/samba/share.conf recycle:versions = yes recycle:touch = yes recycle:keeptree = yes recycle:repository = /samba/share/.trash vfs object = recycle #[public] #path = /samba/public #guest ok = yes #force user = nobody #browsable = yes #writable = yes #[private] #path = /samba/private #valid users = @smbgr #guest ok = no #browsable = yes #writable = yes ``` /etc/samba/share.conf ``` [share] path = /samba/share valid users = @users, @admins, mirea guest ok = no write list = @admins, mirea read list = @users browseable = yes ``` ## Sar ![](https://i.imgur.com/WBaqJyR.png) ![](https://i.imgur.com/W8Q5wOS.png)