---
# System prepended metadata

title: Практическая работа №5. Основы iptables
tags: [Организация сетевой безопасности]

---

# Практическая работа №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)
