В debian 12 фаервол iptables вшит в ядро и в отличие от предыдущих debian не имеет статуса службы. В данном руководстве мы рассмотрим основные команды по управлению.
1. Просмотр списка правил
iptables -L -n
Использование ключа -n отключает преобразование ip адресов в название хоста (IP-PTR).
1.1 Просмотр списка правил с нумерацией
iptables -L --line-numbers
2 Работа с правилами
2.1 Примеры правил для разрешения порта
2.1.1 Разрешим подключение по 22 порту
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
2.1.2 Разрешим подключение по 80 порту
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2.1.2 Разрешим подключение по 443 порту и сделаем правило первым в цепочке правил
iptables -A INPUT 1 -p tcp --dport 443 -j ACCEPT
2.2 Удаление правил
2.2.1 Удаление по номеру правила
iptables -D INPUT 1
2.2.2 Удаление по содержанию правила
iptables -D INPUT -p tcp --dport 80 -j ACCEPT
2.3 Примеры правил для запрета
2.3.1 Запретим подключение для определенного ip к 25 порту
iptables -A INPUT -s xx.ip.xx.ip -p tcp –destination-port 25 -j DROP
2.3.2 Запретим подключение для определенного ip полностью
iptables -A INPUT -s 192.168.0.100 -j DROP
2.3.3 Запретим подключение для всей подсети
iptables -A INPUT -s 192.168.0.0/24 -j DROP
2.4 Сброс цепочки правил
Обратите внимание, чтобы у Вас было установлено правило по умолчанию перед вводом команды сброса правил, так как это приведет к потере соединения с сервером.
iptables -P INPUT ACCEPT
2.4.1 Сброс всех правил
iptables -F
2.4.2 Сброс цепочки правил
iptables -F INPUT
3. Сохранение правил
После перезагрузке сервера все прописанные правила будут удалены, чтобы этого не происходило, установим утилиту.
apt install iptables-persistent
В процессе установки будет предложено сохранить текущие настройки правил. iptables-persistent ищет файлы rules.v4 и rules.v6 в /etc/iptables и восстанавливает их при запуске сервера.
3.1 Сохранение правил
3.1.1 Сохранение через iptables-persistent
netfilter-persistent save
3.1.2 Сохранение через iptables
Для того чтобы сохранить настройки правил позже, используйте команду
iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6
3.2 Восстановление правил
3.2.1 Восстановление с заменой текущих правил
iptables-restore < /etc/iptables/rules.v4
3.2.2 Восстановление с сохранением текущих правил
iptables-restore -n < /etc/iptables/rules.v4
Выдаёт
bash: iptables: команда не найдена
apt-get install iptables
mersoid@hp:~$ sudo apt install iptables
[sudo] пароль для mersoid:
Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово
Уже установлен пакет iptables самой новой версии (1.8.9-2).
Обновлено 0 пакетов, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
mersoid@hp:~$ iptables -L
bash: iptables: команда не найдена
Для смены пользователя root, используйте команду su -
root@hp:/# iptables -L -n
bash: iptables: команда не найдена
root@hp:/
root@hp:/# sudo iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
root@hp:/#
Может переменные окружения не заданы.
Полный путь на debian 12:
/sbin/iptables
BASH=/usr/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=([0]="0")
BASH_ARGV=()
BASH_CMDS=()
BASH_LINENO=()
BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:.
BASH_SOURCE=()
BASH_VERSINFO=([0]="5" [1]="2" [2]="15" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
BASH_VERSION='5.2.15(1)-release'
COLORTERM=truecolor
COLUMNS=120
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
DESKTOP_SESSION=gnome
DIRSTACK=()
DISPLAY=:0
EUID=0
GDMSESSION=gnome
GDM_LANG=ru_RU.UTF-8
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
GNOME_SETUP_DISPLAY=:1
GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/04e98a7b_d034_486e_b8f1_6219b477a8df
GNOME_TERMINAL_SERVICE=:1.89
GROUPS=()
GTK_MODULES=gail:atk-bridge
HISTFILE=/root/.bash_history
HISTFILESIZE=500
HISTSIZE=500
HOME=/root
HOSTNAME=hp
HOSTTYPE=x86_64
IFS=$' \t\n'
IM_CONFIG_PHASE=1
LANG=ru_RU.UTF-8
LINES=24
LOGNAME=mersoid
LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=00:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.avif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:*~=00;90:*#=00;90:*.bak=00;90:*.old=00;90:*.orig=00;90:*.part=00;90:*.rej=00;90:*.swp=00;90:*.tmp=00;90:*.dpkg-dist=00;90:*.dpkg-old=00;90:*.ucf-dist=00;90:*.ucf-new=00;90:*.ucf-old=00;90:*.rpmnew=00;90:*.rpmorig=00;90:*.rpmsave=00;90:'
MACHTYPE=x86_64-pc-linux-gnu
MAIL=/var/mail/root
MAILCHECK=60
OLDPWD=/etc/apt
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
PIPESTATUS=([0]="0")
PPID=3024
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
PS2='> '
PS4='+ '
PWD=/
QT_ACCESSIBILITY=1
QT_IM_MODULE=ibus
SESSION_MANAGER=local/hp:@/tmp/.ICE-unix/1549,unix/hp:/tmp/.ICE-unix/1549
SHELL=/bin/bash
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
SHLVL=2
SSH_AGENT_LAUNCHER=openssh
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
SYSTEMD_EXEC_PID=1585
TERM=xterm-256color
UID=0
USER=mersoid
USERNAME=mersoid
VTE_VERSION=7006
WAYLAND_DISPLAY=wayland-0
XAUTHORITY=/run/user/1000/.mutter-Xwaylandauth.H681T2
XDG_CURRENT_DESKTOP=GNOME
XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/
XDG_MENU_PREFIX=gnome-
XDG_RUNTIME_DIR=/run/user/1000
XDG_SESSION_CLASS=user
XDG_SESSION_DESKTOP=gnome
XDG_SESSION_TYPE=wayland
XMODIFIERS=@im=ibus
_=--line-numbers
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Получится вот так:
PATH=/usr/local/bin:/usr/bin:/bin:/sbin:/usr/local/games:/usr/games
но ничего не поменялось
и без sudo также
root@hp:/# iptables -L -n
bash: iptables: команда не найдена
при проверке PATH ничего не изменилось в строке, в profile изменения сохранились
root@hp:/# printenv PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Либо полный путь писать /sbin/iptables