Показанные сообщения отсортированы по релевантности запросу "iptables". Сортировать по дате Показать все сообщения
Показанные сообщения отсортированы по релевантности запросу "iptables". Сортировать по дате Показать все сообщения

iptables полезные команды

Посмотреть все правила
# iptables -L -n -v
(я предпочитаю iptables-save)

Посмотреть правила с нумерацией строк 
# iptables -L INPUT -n --line-numbers

Вставить правило между 1 и 2 строкой: 
# iptables -I INPUT 2 -s 120.155.16.23 -j DROP

Удалить строку 3
# iptables -D INPUT 3

Удалить все правила
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD ACCEPT

# iptables -F
# iptables -X
# iptables -t nat -F
# iptables -t nat -X
# iptables -t mangle -F
# iptables -t mangle -X


Где:
-F - Удалить (flush) правила
-X - Удалить цепочку
-t table_name - Выбрать таблицу (nat или mangle) и удалить все правила.
-P - Выбрать действия по умолчанию (такие, как DROP, REJECT, или ACCEPT).

Ограничить количество параллельных соединений к серверу для одного адреса.

Для ограничений используется модуль connlimit. Чтобы разрешить только 5 ssh соединений на одного клиента
# iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 5 -j REJECT

Установить количество запросов HTTP до 10
# iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 24 -j DROP

Открыть диапазон портов
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8000:8888 -j ACCEPT

Также полезная информация http://blog.ispsystem.info/search?q=iptables
Куда пишет ISPmanager правила iptables https://doc.ispsystem.ru/index.php/Алгоритм_работы_модуля_"Брандмауэр"

Установка KIOSK для отображения web страницы

 Делаем простой киоск отображающий веб-страницу

* необходимо, чтобы видеокарта поддерживала 3d, иначе будет тупо серый (в mir-kiosk оранжевый и потом черный) экран (в virtualbox включить /в qemu на vds не работает)


Ставим Ubuntu Server 22.04, убеждаемся в работе ssh-сервера, далее всё ставим через него, используется в качестве основы ubuntu-frame (также есть устаревший mir-kiosk, но на его замену пришел ubuntu-frame)


Далее заходим по ssh и выполняем установку ubuntu-frame

snap install ubuntu-frame

snap set ubuntu-frame daemon=true


#snap start ubuntu-frame (данный снап сам запускается после хука для daemon=true)


экран светится серым - всё хорошо, вейланд запустился


Ставим webkit приложение которое будет работать в ubuntu-frame

snap install wpe-webkit-mir-kiosk

snap connect wpe-webkit-mir-kiosk:wayland


snap set wpe-webkit-mir-kiosk daemon=true

snap set wpe-webkit-mir-kiosk url=https://mir-server.io


snap start wpe-webkit-mir-kiosk


Смотреть логи

snap logs wpe-webkit-mir-kiosk


Настроить разрешение экрана (если необходимо)

cp /var/snap/ubuntu-frame/current/frame.display /root/

vi /root/frame.display

mode:1920x1080@60.0


snap set ubuntu-frame display="$( cat /root/frame.display )"


Настраиваем vnc-сервер (внимание, он без пароля, слушает localhost)

snap install ubuntu-frame-vnc

/snap/ubuntu-frame-vnc/current/bin/setup.sh

snap set ubuntu-frame-vnc daemon=true


Делаем доступным vnc из вне (без пароля!)

sysctl -w net.ipv4.conf.all.route_localnet=1

iptables -t nat -I PREROUTING -p tcp --dport 5900 -j DNAT --to 127.0.0.1:5900


echo "net.ipv4.conf.all.route_localnet=1" >> /etc/sysctl.conf

apt install iptables-persistent

iptables-save > /etc/iptables/rules.v4


Полезные ссылки

https://www.opennet.ru/opennews/art.shtml?num=55933
https://mir-server.io/docs/make-a-secure-ubuntu-web-kiosk
https://mir-server.io/docs/how-to-use-remote-assistance-with-ubuntu-frame
https://superuser.com/questions/661772/iptables-redirect-to-localhost
https://linuxconfig.org/how-to-make-iptables-rules-persistent-after-reboot-on-linux

Блокировка UserAgent через iptables

iptables -A INPUT -m string --algo kmp --string AhrefsBot -p tcp --dport 80 -j DROP
iptables -A INPUT -m string --algo kmp --string AhrefsBot -p tcp --dport 443 -j DROP


Вывод правил цепочки с указанием номеров:
iptables -L INPUT --line-numbers

Удаление правила с указанным номером:
iptables -D INPUT номерправила

Открыть трафик только для IP адресов cloudflare

iptables -I INPUT -p tcp --dport 80 -j DROP

iptables -I INPUT -p tcp --dport 443 -j DROP

wget -O - https://www.cloudflare.com/ips-v4 | while read subnet; do iptables -I INPUT -s $subnet -j ACCEPT; done

Борьба с DDOS атаками вида synflood

Подсчет числа полуоткрытых TCP-соединений:
$ netstat -na | grep ":порт\ " | grep SYN_RCVD | wc -l

Просмотр списка IP-адресов, с которых идут запросы на подключение:

$ netstat -na | grep ":порт\ " | sort | uniq -c | sort -nr

Анализ подозрительных пакетов с помощью tcpdump:

# tcpdump -n -i eth0 -s 0 -w output.txt dst port порт and host IP-сервера

Блокируем подключения атакующего:

# iptables -A INPUT -s IP-атакующего -p tcp --destination-port порт -j DROP

Ограничиваем максимальное число полуоткрытых соединений с одного IP к конкретному порту:

# iptables -I INPUT -p tcp --syn --dport порт -m iplimit --iplimit-above 8 -j DROP

Отключаем ответы на запросы ICMP ECHO:

# iptables -A INPUT -p icmp -j DROP --icmp-type 8

Устанавливаем netstat в CentOS 7:

# yum install net-tools

Настраиваем NAT iptables

iptables -t nat -I POSTROUTING 1  -s 10.254.254.0/24 -o ens3 -j MASQUERADE

(только из 10.254.254.0/24)

iptables -t nat -I POSTROUTING 1 -o ens3 -j MASQUERADE

из любых сетей в мир через ens3

Заблокировать всем доступ к порту 25 кроме exim port 25 block

iptables -A OUTPUT -p tcp -s 149.10.10.10 ! -d 149.10.10.10 --dport 25 --syn -m owner --uid-owner 93 -j ACCEPT
iptables -A OUTPUT -p tcp -s 149.10.10.10 ! -d 149.10.10.10 --dport 25 --syn -j DROP

Настраиваем VPN L2TP IPsec сервер для подключения с мобильных устройств (на Debian 10)

# apt install xl2tpd libreswan

# vi /etc/ipsec.conf
config setup
        nat_traversal=yes
        virtual_private=%v4:10.1.2.0/24
        oe=off
        protostack=netkey
conn L2TP-PSK-NAT
        rightsubnet=vhost:%priv
        also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
        authby=secret
        pfs=no
        auto=add
        keyingtries=3
        rekey=no
        ikelifetime=8h
        keylife=1h
        type=transport
        left=внешний.ip.адрес.сервера
        leftprotoport=17/1701
        right=%any
        rightprotoport=17/%any


# vi /etc/ipsec.d/my.secrets
внешний.ip.адрес.сервера %any: PSK "секрет_для_ipsec_символов_20" 

# vi /etc/xl2tpd/xl2tpd.conf
[global]
ipsec saref = yes

[lns default]
ip range = 10.1.2.2-10.1.2.255
local ip = 10.1.2.1
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

# vi /etc/ppp/options.xl2tpd
require-mschap-v2
ms-dns 8.8.8.8
ms-dns 1.1.1.1
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name VPN
proxyarp
mtu 1200
mru 1200
lcp-echo-interval 30
lcp-echo-failure 4

# vi /etc/ppp/chap-secrets
user    VPN    пароль_символов_20_для_l2tp    *

# systemctl enable ipsec ; systemctl start ipsec
# systemctl enable xl2tpd ; systemctl start xl2tpd

Настроим NAT в интернет, примерно так (где eth0 внешний интерфейс, имя узнать ip a)
# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
# crontab -e
@reboot /sbin/iptables -t nat -A POSTROUTING -s 10.1.2.0/24 -o eth0 -j MASQUERADE

# sysctl net.ipv4.ip_forward=1 ; iptables -t nat -A POSTROUTING -s 10.1.2.0/24 -o eth0 -j MASQUERADE



Настроим IOS-устройство, перейти в меню
Настройки - VPN - Добавить конфигурацию VPN
Тип – L2TP
Описание – на ваше усмотрение (VPN)
Сервер – домен или IP-адрес VPN-сервера
Учетная запись – имя пользователя VPN
Пароль – пароль пользователя VPN (файл /etc/ppp/chap-secrets)
Общий ключ – секрет IPsec (файл /etc/ipsec.d/my.secrets)

На Android добавляется аналогично в сетевых подключениях

Заблокировать исходящий multicast трафик

/sbin/iptables -A OUTPUT -m pkttype --pkt-type multicast -j DROP