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 443 -j DROP
Вывод правил цепочки с указанием номеров:
iptables -L INPUT --line-numbers
Удаление правила с указанным номером:
iptables -D INPUT номерправила
Открыть трафик только для IP адресов cloudflare
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
$ 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)
Заблокировать исходящий multicast трафик
/sbin/iptables -A OUTPUT -m pkttype --pkt-type multicast -j DROP