Показаны сообщения с ярлыком шлюз. Показать все сообщения
Показаны сообщения с ярлыком шлюз. Показать все сообщения

понедельник, 9 февраля 2015 г.

Настройка SSH для авторизации по ключам

И так, SSH (англ. Secure Shell — «безопасная оболочка») — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений. Вданной статье пойдет разговор о настройке серверной части SSH.
Все команды выполнялись от прав пользователя root.
1. Устанавливаю SSH — 'apt-get install ssh'. После установки останавливаю его, ибо нужно сконфигурировать его под мои нужды - '/etc/init.d/ssh stop'.
2. Собственно редактирую конфиг SSH-сервера — 'nano /etc/ssh/sshd_config', до следующего вида:

# Package generated configuration file
# See the sshd(8) manpage for details

# What ports, IPs and protocols we listen for
# Меняем стандартный порт 22 для большей безопасности на 122 или иной
Port 122
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
# Указываем серверу работать лишь по 2 протоколу
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes

# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 768

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120
# Запрещаем подключение к серверу по логину root
PermitRootLogin no
# Отключаем проверку прав пользователей в их домашних каталогах перед тем, как пустить на сервер
StrictModes no
# Разрешаем подключение только перечисленным пользователям
AllowUsers demon klim dethroner

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

# To enable empty passwords, change to yes (NOT RECOMMENDED)
# Согласно рекомендациям запрещаем подключение пользователей с пустыми паролями
PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords
# Отключаем вход на сервер по паролям
PasswordAuthentication no

# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

#MaxStartups 10:30:60
#Banner /etc/issue.net

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

UsePAM yes

3. Генерирую ключи для каждого пользователя (в моем случае demon klim dethroner). Можно пользоваться средствами самой ОС – описано тут (пункт 2), но я пользуюсь PuTTYGen. Т.е. запускаю программу нажимаю кнопку «Generate» перемещаю курсор мышки по экрану для набора случайной статистики при генерации. Должно получиться что-то типа:
4. Далее сохраняю ключи в надежном месте, получаю файлы вида:
public
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20150209"
AAAAB3NzaC1yc2EAAAABJQAAAIB245BgWSXUf/qC8c5vytQBLp1B6dMO0cJ9YyUIIHcOwWYz
wLbmQynlTZGB6IKFmtqF+z6cHdzx9NE2Mn2hD9nb0ThG8NsS72FLpxGgfVhsMlKeKuGyR3EdV89tY
lgCKYLta+QXA/FPmMtXjldQ+z3xqWFSjp5waelbMJSNGVQSlw==
---- END SSH2 PUBLIC KEY ----
private.ppk
PuTTY-User-Key-File-2: ssh-rsa
Encryption: none
Comment: rsa-key-20150209
Public-Lines: 4
AAAAB3NzaC1yc2EAAAABJQAAAIB245BgWSXUf/qC8c5vytQBLp1B6dMO0cJ9YyUIIHcOwWYz
wLbmQynlTZGB6IKFmtqF+z6cHdzx9NE2Mn2hD9nb0ThG8NsS72FLpxGgfVhsMlKeKuGyR3EdV89tY
lgCKYLta+QXA/FPmMtXjldQ+z3xqWFSjp5waelbMJSNGVQSlw==
Private-Lines: 8
AAAAgDAyvf2L7L3usaq1DoBZJYPwTZdDHjZwtqGJDwNLbolw/+t3pBgpEPwYhxj9ZVjCPOo1bGjN1
hzmta4wJRfIJ+LwuBfU4U8x3JUaBRdHerhFlk3jLF8NAdVwi5QwCzCrCobZql+kpWX8QsvE5AXcsBT
USB19+OdBlTY4oeraMQodAAAAQQC2+r0kr3ovycrvHMLyQ8VB8yeWhg9yknpZiyEhJMJz2g7SNVI
KXLwbBxWVfgxa/ihtXp4LPngR9aR2KE4IuN3vAAAAQQCmVU8DVSq8EP/eLJMN9wKI/ceGIWMKHmFPDiL95HJUBl7FCoO4yWS6MI+bt+DVOB5jlRZuxs76cpdh7eqyIj3ZAAAAQQC216nt
eeUyXbQkF9tMPeHjKfpQ7B5JTnhHTQ43J5QJSGp2whVoRK5Zzry/DCcOhG3v/QEZiKw1eLutVJRt6QWN
Private-MAC: 5d1f912438f2712c6701170dd77b08ba6b5fa918
5. В домашней папке каждого пользователя, разрешенного в конфиге, создаю файл в домашней директории, где будет храниться публичный ключ, например - 'touch /home/dethroner/.ssh/authorized_keys'
6. Назначаю права на созданную папку .ssh - 'chown dethroner:dethroner /home/dethroner/.ssh' и 'chmod 700 /home/dethroner/.ssh'
7. Прописываю сгенерированный ключ в созданный файл - 'nano /home/dethroner/.ssh/authorized_keys ', получаю что-то типа:
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIB245BgWSXUf/qC8c5vytQBLp1B6dMO0cJ9YyUIIHcOwWYz
wLbmQynlTZGB6IKFmtqF+z6cHdzx9NE2Mn2hD9nb0ThG8NsS72FLpxGgfVhsMlKeKuGyR3EdV89tY
lgCKYLta+QXA/FPmMtXjldQ+z3xqWFSjp5waelbMJSNGVQSlw== dethroner@server.ex
8. Назначаю права на файл - 'chmod 600 /home/dethroner/.ssh/authorized_keys'
9. Запускаю SSH - '/etc/init.d/ssh start'
10. Важно добавить правила в таблицу iptables например как у меня или так (пункт 3).
11. Добавляю указанных пользователей для обеспечения root доступа из-под sudo для это набираю - 'visudo' (файл /etc/sudoers откроется в редакторе по умолчанию) и добавляю:
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root ALL=(ALL) ALL
demon ALL=(ALL) NOPASSWD: ALL
dethroner ALL=(ALL) NOPASSWD: ALL
klim ALL=(ALL) NOPASSWD: ALL

# Uncomment to allow members of group sudo to not need a password
# (Note that later entries override this, so you might need to move
# it further down)
# %sudo ALL=NOPASSWD: ALL
Затем жму 'ctrl+o', 'enter', 'ctrl+x' для сохранения изменений и выхода из редактора.
12. При использовании PuTTY для подключения к SSH-серверу указываю адрес и порт в программе:

 

Так же указываю путь к private.ppk



Нажимаю «Open» и подключаюсь к SSH-серверу. Ну или можно сохранить настройки, чтобы не вводить постоянно. После подключения к SSH-серверу в строке логин ввожу имя пользователя и попадаю в систему. Доступ с правами root осуществляется посредством sudo.

воскресенье, 2 июня 2013 г.

Iptables или мои настройки NAT+Firewall

Все команды выполнялись от прав пользователя root.
1. Создаю скрипт в файле -
'nano /etc/init.d/rc.firewall' следующего содержания:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          rc.firewall+
# Required-Start:  
# Required-Stop:
# Default-Start:     2
# Default-Stop:         0 6   
# Short-Description: Run /etc/init.d/rc.firewall if it exist
### END INIT INFO
######################################################################################
# Configured by Dethroner, 2009
######################################################################################
# Внешний интерфейс
 EXTIF=eth0
# Внутренний интерфейс
 INTIF=eth1
# Loop-устройство/localhost
 LPDIF=lo
 LPDIP=127.0.0.1
 LPDMSK=255.0.0.0
 LPDNET="$LPDIP/$LPDMSK"
# Переменные текстовых инструментов
 IPT='/sbin/iptables'
 IFC='/sbin/ifconfig'
 G='/bin/grep'
 SED='/bin/sed'
 UNPRIPORTS="1024:65535"
# Перечень ip адресов закрытых для FORWARD
 FILENAME_DENY="/etc/deny_inet_hosts"

start_fw()
{
    echo ""  
    echo "IpTables configured by Dethroner"
    # Deny вместо accept: предотвращает открытие "дыр"
    # в то время, как мы закрываем порты и все такое
     $IPT     -P INPUT       DROP
     $IPT     -P OUTPUT      DROP
     $IPT   -P FORWARD     DROP
    # Сброс всех существующих цепочек и стирание персональных цепочек
     CHAINS=`cat /proc/net/ip_tables_names 2>/dev/null`
     for i in $CHAINS
     do
      $IPT -t $i -F
      $IPT -t $i -X
     done
     echo 1 > /proc/sys/net/ipv4/tcp_syncookies
     echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
    # Проверка адреса источника
     for f in /proc/sys/net/ipv4/conf/*/rp_filter;
     do
      echo 1 > $f
     done
    # Запрет маршрутизации IP от источника и редиректов ICMP
     for f in /proc/sys/net/ipv4/conf/*/accept_source_route;
     do
      echo 0 > $f
     done
     for f in /proc/sys/net/ipv4/conf/*/accept_redirects;
     do
      echo 0 > $f
     done
    # Включить перенаправление пакетов через ядро.
    echo 1 > /proc/sys/net/ipv4/ip_forward

    # Установка переменных среды для внешнего интерфейса
     EXTIP="192.168.1.2"
     EXTBC="192.168.1.255"
     EXTMSK="255.255.255.0"
     EXTNET="$EXTIP/$EXTMSK"
      echo ""
     echo "EXTIP=$EXTIP EXTBC=$EXTBC EXTMSK=$EXTMSK EXTNET=$EXTNET"
  
    # Установка переменных среды для внутреннего интерфейса
     INTIP="192.168.0.1"
     INTBC="192.168.0.255"
     INTMSK="255.255.255.0"
     INTNET="192.168.0.0/24"
     echo ""
     echo "INTIP=$INTIP INTBC=$INTBC INTMSK=$INTMSK INTNET=$INTNET"
  
    # Сейчас мы собираемся создать несколько собственных цепочек, результатом работы
    # которых будет логгинг отброшенных пакетов. Это поможет нам избежать необходимости
    # вводить команду log перед каждым отбрасыванием пакета, что мы хотим запротоколировать.
    # Первыми идут лог отброшенных пакетов и собственно отброс, затем лог пакетов с отказами
    # и собственно отказы.
    # Отключаем сообщения о том, что цепочки уже существуют (чтобы перезапуск был без мусора)
     $IPT -N DROP   2> /dev/null
     #$IPT -A DROP   -j LOG --log-level DEBUG --log-prefix "DROP:"
     #$IPT -A DROP   -j DROP
     $IPT -N REJECT 2> /dev/null
     #$IPT -A REJECT -j LOG --log-level DEBUG --log-prefix "REJECT:"
     #$IPT -A REJECT -j REJECT
     #$IPT -A INPUT -j LOG --log-level DEBUG --log-prefix "INPUT:"
     #$IPT -A OUTPUT -j LOG --log-level DEBUG --log-prefix "OUTPUT:"
     #$IPT -A FORWARD -j LOG --log-level DEBUG --log-prefix "FORWARD:"
     #$IPT -A DROP -j LOG --log-level DEBUG --log-prefix "DROP:"
    
  
    # Весь траффик от устройства loopback принимается
    # если IP совпадает с любым из наших интерфейсов.
     $IPT -A INPUT    -i $LPDIF -s   $LPDIP  -j ACCEPT
     $IPT -A INPUT    -i $LPDIF -s   $EXTIP  -j ACCEPT
     $IPT -A INPUT    -i $LPDIF -s   $INTIP  -j ACCEPT
  
    # Широковещательные пакеты
     $IPT -A INPUT   -i $EXTIF -d   $EXTBC  -j ACCEPT
     $IPT -A INPUT   -i $INTIF -d   $INTBC  -j ACCEPT
     $IPT -A OUTPUT  -o $EXTIF -d   $EXTBC  -j ACCEPT
     $IPT -A OUTPUT  -o $INTIF -d   $INTBC  -j ACCEPT
     $IPT -A FORWARD -o $EXTIF -d   $EXTBC  -j ACCEPT
     $IPT -A FORWARD -o $INTIF -d   $INTBC  -j ACCEPT
  
    # Блокируем доступ к внутренней сети из WAN
    # Это также призвано не дать нечестивым крякерам использовать нашу сетку
    # в качестве отправной точки для атак на других людей
    # Перевод с языка iptables:
    # "если пришедшие на наружный интерфейс пакеты были отправлены не с выданного
    # nefarious адреса, выкинуть их как горячую картошку"
     $IPT -A INPUT  -i $EXTIF -d ! $EXTIP  -j DROP
  
    # А сейчас мы блокируем внутренние адреса, кроме двух, присвоенных нашим двум
    # внутренним интерфейсам.....только помните, что если вы воткнете свой лэптоп или
    # какой другой pc в напрямую в одну из этих сетевых карт, то нужно удостовериться,
    # что они имеют именно эти IP-адреса или добавить соответствующий адрес отдельно.
  
    # Первый интерфейс/первая внутренняя сеть
    # $IPT -A INPUT   -i $INTIF -s ! $INTNET -j DROP
    # $IPT -A OUTPUT  -o $INTIF -d ! $INTNET -j DROP
    # $IPT -A FORWARD -i $INTIF -s ! $INTNET -j DROP
    # $IPT -A FORWARD -o $INTIF -d ! $INTNET -j DROP
  
    # Дополнительная Egress-проверка
    # $IPT -A OUTPUT  -o $EXTIF -s ! $EXTNET -j DROP
  
    # Блокируем исходящиие пакеты ICMP (за исключением PING)
    # $IPT -A INPUT -p icmp --icmp-type ! 8 -j DROP
    # $IPT -A OUTPUT -p icmp --icmp-type ! 8 -j DROP
    # $IPT -A FORWARD -p icmp --icmp-type ! 8 -j DROP
     $IPT -A INPUT -p icmp -j ACCEPT
     $IPT -A OUTPUT -p icmp -j ACCEPT
     $IPT -A FORWARD -p icmp -j ACCEPT
      

         $IPT -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1300

    # печально известные порты:
    # 0 - tcpmux; у SGI есть уязвимость, через которую можно атаковать
    # 13 - daytime
    # 98 - Linuxconf
    # 111 - sunrpc (portmap)
    # SNMP: 161,2
    # Флотилия Squid: 3128, 8000, 8008, 8080 (пока закроем)
    # 1214 - Morpheus или KaZaA
    # 2049 - NFS
    # 3049 - очень заразный троян для Linux, часто путаемый с NFS
    # Часто атакуемые: 1999, 4329, 6346
    # Частые трояны 12345 65535
     COMBLOCK="0:1 13 98 111 161:162 1214 1999 2049 3049 4329 6346 8000 8008 12345 65535"
    # Порты TCP:
    # 98 - Linuxconf
    # 512-515 - rexec, rlogin, rsh, printer(lpd)
    #   [очень серьезеные уязвимости; продолжаются ежедневные атаки]
    # 1080 - прокси-серверы Socks
    # 6000 - X (ЗАМЕЧАНИЕ. X через SSH - безопасен, и работает на порту TCP 22)
    # Блокировка 6112 (CDE у Sun и HP)
     TCPBLOCK="$COMBLOCK 98 512:515 1080 6000:6009 6112"
    # Порты UDP:
    # 161:162 - SNMP
    # 520=RIP, 9000 - Sangoma
    # 517:518 - talk и ntalk (самые надоедливые)
     UDPBLOCK="$COMBLOCK 520 123 517:518 1427 9000"
    echo -n "FW: Blocking attacks to TCP port"
    for i in $TCPBLOCK;
    do
     echo -n "$i "
      $IPT -A INPUT   -p tcp --dport $i  -j DROP
      $IPT -A OUTPUT  -p tcp --dport $i  -j DROP
      $IPT -A FORWARD -p tcp --dport $i  -j DROP
    done
    echo ""
    echo -n "FW: Blocking attacks to UDP port "
    for i in $UDPBLOCK;
    do
     echo -n "$i "
      $IPT -A INPUT   -p udp --dport $i  -j DROP
      $IPT -A OUTPUT  -p udp --dport $i  -j DROP
      $IPT -A FORWARD -p udp --dport $i  -j DROP
    done
    echo ""
  
    # Открываем отлеживание соединений по ftp
     MODULES="ip_nat_ftp ip_conntrack_ftp"
     for i in $MODULES;
     do
      echo "Inserting module $i"
      modprobe $i
     done
      
    # Защищаем некоторые распространенные клиенты для чата.
    # Уберите из списка допустимых для пущей безопасности.
    # IRC='ircd'
     MSN=1863
     ICQ=5190
     SSH2=122
     TCP81=81
     #RDM=489
     NFS='sunrpc'
    # Нам нужно синхронизировать данные!!
     PORTAGE='rsync'
     OpenPGP_HTTP_Keyserver=11371
    # Все порты сервисов читаются из /etc/services
    # TCPSERV="domain ssh http https ftp ftp-data mail pop3 pop3s imap3 imaps imap2 time $PORTAGE $IRC $MSN $ICQ  $OpenPGP_HTTP_Keyserver" UDPSERV="domain time"
      TCPSERV="domain $SSH2 $TCP81 http https ftp ftp-data mail pop3 pop3s imap3 imaps imap2 time www webmin $PORTAGE $MSN $ICQ $OpenPGP_HTTP_Keyserver 4899" UDPSERV="domain time netbios-ns netbios-dgm netbios-ssn microsoft-ds"
    echo -n "FW: Allowing inside systems to use service:"
    for i in $TCPSERV;
    do
     echo -n "$i "
        $IPT -A INPUT  -i $INTIF -p tcp --dport $i --syn -m state --state NEW -j ACCEPT
      $IPT -A INPUT  -i $EXTIF -p tcp --dport $i --syn -m state --state NEW -j ACCEPT
      $IPT -A OUTPUT -o $INTIF -p tcp --dport $i --syn -m state --state NEW -j ACCEPT
      $IPT -A OUTPUT -o $EXTIF -p tcp --dport $i --syn -m state --state NEW -j ACCEPT
      $IPT -A FORWARD -i $INTIF -p tcp -s $INTNET --dport $i --syn -m state --state NEW -j ACCEPT
    done
    echo ""
    echo -n "FW: Allowing inside systems to use service:"
    for i in $UDPSERV;
    do
     echo -n "$i "
        $IPT -A INPUT  -i $INTIF -p udp --dport $i -m state --state NEW -j ACCEPT
      $IPT -A OUTPUT -o $INTIF -p udp --dport $i -m state --state NEW -j ACCEPT
      #$IPT -A OUTPUT -o $EXTIF -p udp --dport $i -m state --state NEW -j ACCEPT
      $IPT -A FORWARD -i $INTIF -p udp -s $INTNET --dport $i -m state --state NEW -j ACCEPT
    done

    # Запрещаем форвардинг для юзеров с отключенным инетом
    echo "Blocked IP forwarding"
  
    # первой внутренней сети
    for ip in $(cat $FILENAME_DENY); do
    $IPT -I FORWARD -s $ip -j DROP
    done

    # DNS rndc сервер на Lo разрешаем. (обход connection refused)
        $IPT -A OUTPUT -p tcp -m tcp -o $LPDIF --dport 953 --sport $UNPRIPORTS -j ACCEPT
  
    # разрешаем доступ DNS-серверу наружу
    $IPT -A OUTPUT -o $EXTIF -p tcp --dport domain -j ACCEPT
    $IPT -A OUTPUT -o $EXTIF -p udp --dport domain -j ACCEPT
      
    # NAT
    $IPT -t nat -A PREROUTING -j ACCEPT
    $IPT -t nat -A POSTROUTING -o $EXTIF -s $INTNET -j MASQUERADE
    $IPT -t nat -A POSTROUTING -j ACCEPT
    $IPT -t nat -A OUTPUT -j ACCEPT
    $IPT -A INPUT -p tcp --dport auth --syn -m state --state NEW -j ACCEPT
    $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
  
    # Заблокировать и запротоколировать все, что мы могли забыть.
    #$IPT -A INPUT -j DROP

    #Для тэстирования NetAMS раскомментировать
    #$IPT -P FORWARD DROP
    #$IPT -P FORWARD QUEUE
    #$IPT -A FORWARD -p all -j QUEUE
    $IPT -A INPUT -j DROP
    $IPT -A OUTPUT -j REJECT
    $IPT -A FORWARD -j DROP
  
    # Squid transparent
     $IPT -t nat -A PREROUTING -i $INTIF -s $INTNET -p tcp -d 0.0.0.0/0 --dport 80 -j REDIRECT --to-port 3128


}
flush_fw()
{
    $IPT -P INPUT ACCEPT
    $IPT -P FORWARD ACCEPT
    $IPT -P OUTPUT ACCEPT
    $IPT -t nat -P PREROUTING ACCEPT
    $IPT -t nat -P POSTROUTING ACCEPT
    $IPT -t nat -P OUTPUT ACCEPT
    $IPT -t mangle -P PREROUTING ACCEPT
    $IPT -t mangle -P OUTPUT ACCEPT
  
    $IPT -F
    $IPT -t nat -F
    $IPT -t mangle -F

    $IPT -X
    $IPT -t nat -X
    $IPT -t mangle -X
}

case "$1" in
start)    echo -n "Starting firewall: iptables"
    start_fw
    echo ""
        echo -n "Starting firewall Ok!"
    echo ""  
    ;;
stop)    echo -n "Stopping firewall: iptables"
    flush_fw
    echo ""
        echo -n "Stopping firewall Ok!"
    echo ""
        ;;
save)    echo -n "Saving firewall: iptables"
    iptables-save > /etc/rules-save
    echo ""  
    echo -n "Status save Ok!."
    echo ""
    ;;
restart) echo -n "Restarting firewall: iptables"
    flush_fw
    start_fw
    echo ""
    echo -n "Status restart Ok!"
    echo ""
        ;;
reload|force-reload) echo -n "Reloading configuration files for firewall: iptables"
        echo "."
        ;;
*)    echo "Usage: /etc/init.d/rc.firewall start|stop|restart|reload|force-reload|save"
        exit 1
        ;;
esac
exit 0


2.
Делаю скрипт исполняемым - 'chmod +x /etc/init.d/rc.firewall'
3. Добавляю в автозагрузку ссылку - 'ln -s /etc/init.d/rc.firewall /etc/rc2.d/S99rc.firewall'
4. Создаю файл в котором будет перечень адресов которым запрещен доступ в Internet (файл задействован в конфиге)  - 'nano /etc/deny_inet_host' следующего содержания:
192.168.0.250
192.168.0.251
192.168.0.252
192.168.0.253
192.168.0.254 


PS. В скрипте задействованы многие правила отдельно публикуемые в предыдущих статьях.