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

пятница, 7 августа 2015 г.

Использование не прозрачных прокси-серверов.

Все команды выполнялись от прав пользователя root.
При установке Debian по сети можно увидеть сообщение с предложением ввести параметры прокси-сервера для доступа в Internet. В общем виде такая запись представляет из себя следующее:
- https://ip_proxy:port' если прокси не требует авторизацию.
- http://user:password@ip_proxy:port если прокси требует авторизацию.

Если пароль содержит специальные символы, их необходимо заменить на ASCII-коды. Например символ собаки "@", должен быть заменен на "%40" (т. е. p@ssword = p%40ssword).

Использовать прокси для различных типов трафика (http, https, ftp)  из командной строки можно настроив переменные окружения - http_proxy, https_proxy, ftp_proxy. Т.е. по аналогии с вышесказанным получаются команды для подключения прокси:
- если не требуется авторизация на прокси
'export http_proxy="http://ip_proxy:port"'
'export https_proxy="https://ip_proxy:port"'
'export ftp_proxy="http://ip_proxy:port"'
- если необходима авторизация
'export http_proxy="user:password@ip_proxy:port"'
'export https_proxy="user:password@ip_proxy:port"'
'export ftp_proxy="user:password@ip_proxy:port"'
 Отключение прокси осуществляется следующими командами:
'unset http_proxy'
'unset https_proxy'
'unset ftp_proxy'
Если используется один и тот же прокси для доступа к различным типам трафика можно объединить команды в одну:
'export {http,https,ftp}_proxy="http://ip_proxy:port"' для подключения.
'unset {http,https,ftp}_proxy' для отключения.

понедельник, 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. В скрипте задействованы многие правила отдельно публикуемые в предыдущих статьях.

понедельник, 2 марта 2009 г.

Настройка сетевого соединения для сетей со статическими адресами





Встала необходимость настройки сетевого соединения под Debian'ом для возможности выхода в домашнюю сеть и Интернет. Как я настраивал приведено ниже. Настройки приводимые здесь относятся только к сетям в которых используются статические IP-адреса, а не DHCP.
Все команды в статье идут от прав root'а.
Для начала проверил все свои сетевые интерфейсы командой 'ifconfig' и получил следующее сообщение на экране:

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:227287379 errors:0 dropped:0 overruns:0 frame:0
TX packets:227287379 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1750794110 (1.6 GiB) TX bytes:1750794110 (1.6 GiB)

Как оказалось из сетевых интерфейсов у меня подключено и работает только «внутренняя петля» (замыкание на себя), т.е. присутствует IP-адрес по которому компьютер может осуществлять сетевое подключение сам на себя.
Соответственно мне пришлось задействовать свой сетевой интерфейс командой 'ifconfig eth0 up' (соответственно отключить сетевой интерфейс можно командой 'ifconfig eth0 down'). После чего команда 'ifconfig' вывела следующие данные:

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:227287379 errors:0 dropped:0 overruns:0 frame:0
TX packets:227287379 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1750794110 (1.6 GiB) TX bytes:1750794110 (1.6 GiB)

eth0 Link encap:Ethernet HWaddr 00:80:AD:76:45:97
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:5 Base address:0xc000

Вот теперь приступил к настройке сетевого интерфейса, т.е. отредактировал файл 'etc/network/interfaces' для чего пришлось в него добавить следующие строчки:

auto eth0
iface eth0 inet static
address 192.168.1.3 - мой IP-адрес в сети
netmask 255.255.255.0 - маска моей домашней сети
network 192.168.1.0 - принадлежность к классу сети
broadcast 192.168.1.255 - адрес для передачи широковещательных пакетов
hostname dethroner - сетевое имя моего компьютера
gateway 192.168.1.1 - шлюз моего сервера/модема

Далее прописываем в файле 'etc/resolv.conf' адрес\адреса DNS-серверов в виде:

nameserver 192.168.1.1 - адрес 1-ого DNS-сервера
nameserver 82.209.240.241 -адрес 2-ого DNS-сервера

У меня этот файл не был обнаружен. Пришлось установить дополнительный пакет 'apt-get install resolvconf'. Ну и вписать адрес как описано выше.
Вот и вся настройка сетевого подключения. Сетевые настройки вступят в силу после перезагрузки компьютера, либо их можно задействовать командой '/etc/init.d/networking restart'.