GNU/Linux >> Znalost Linux >  >> Debian

Zabezpečení vašeho VPS založeného na Ubuntu/Debianu pomocí firewallu IPTABLES/Netfilter

V následujícím článku vám ukážeme, jak můžete zabezpečit a chránit svůj virtuální server založený na Ubuntu nebo Debianu pomocí firewallu aplikace s názvem iptables.

Co je to iptables?

Jedná se o aplikační program pro uživatelský prostor, který umožňuje správci systému konfigurovat tabulky poskytované firewallem jádra Linuxu (implementované jako různé moduly Netfilter ) a řetězce a pravidla, která ukládá.

Chcete-li snížit počet pokusů o vloupání a filtrovat porty otevřené na vašem virtuálním serveru, je nutné správně nakonfigurovat firewall .

Abychom vám usnadnili správu pravidel brány firewall vašeho serveru, poskytneme jednoduchý skript Shell, který vám pomůže se správou pravidel brány firewall. V podstatě vždy, když potřebujete změnit pravidla brány firewall, použijete tento skript k přidání/odebrání požadovaných pravidel.

NASTAVENÍ PRAVIDEL FIREWALL

Než pravidla zabalíte do skriptu, rozdělíme jej do sekcí, abyste věděli, jak vypadá firewall a jaká pravidla budou platit.

PROPLACHNĚTE STARÁ PRAVIDLA

Pravidla brány firewall lze vyprázdnit pomocí následujících příkazů:

## iptables --flush
## iptables --delete-chain
## iptables --table nat --flush
## iptables --table nat --delete-chain

URČENÍ SERVISNÍCH PORTŮ

Musíte vědět, jaké služby jste zpřístupnili veřejnosti, abyste pro ně mohli nastavit vhodná pravidla. Jedním ze způsobů, jak zjistit, které služby naslouchají na jakých portech, je použít netstat nebo ss příkazy jako v:

## netstat -tunlp

or

## ss -tunlp

například používáme jeden z našich virtuálních serverů Ubuntu 12.04 LTS a následující je výstup netstat příkaz:

## netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      296/mysqld
tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN      449/sendmail: MTA:
tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN      261/dovecot
tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      261/dovecot
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      590/apache2
tcp        0      0 209.135.140.77:53       0.0.0.0:*               LISTEN      353/named
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      353/named
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      173/vsftpd
tcp        0      0 0.0.0.0:5622            0.0.0.0:*               LISTEN      630/sshd
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      449/sendmail: MTA:
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      353/named
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      590/apache2
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      261/dovecot
tcp        0      0 0.0.0.0:995             0.0.0.0:*               LISTEN      261/dovecot
udp        0      0 209.135.140.77:53       0.0.0.0:*                           353/named
udp        0      0 127.0.0.1:53            0.0.0.0:*                           353/named

takže to znamená, že máme následující porty otevřené pro veřejnost:

  • 25 (smtp)
  • 587 (odeslání smtp)
  • 110 (pop3)
  • 143 (imap)
  • 993 (imap ssl)
  • 995 (pop3 ssl)
  • 80 (http)
  • 443 (https)
  • 53 (dns)
  • 21 (ftp)
  • 5622 (ssh)

NASTAVTE VÝCHOZÍ ZÁSADY

dobře, takže teď můžeme nastavit zásady našeho firewallu na DROP vše v INPUT a Vpřed řetězců a povolit provoz na OUTPUT řetěz.

výchozí tabulka filter obsahuje tři vestavěné řetězce:

  1. Příchozí provoz adresovaný samotnému počítači narazí na řetězec INPUT.
  2. Odchozí, místně generovaný provoz zasáhne OUTPUT řetězec.
  3. Směrovaný provoz, který by neměl být doručován místně, zasáhne řetězec FORWARD.

zkontrolujte man 8 iptables pro více informací o tomto

výchozí zásady lze použít pomocí následujících příkazů:

## iptables -P INPUT DROP # <- do not run this over ssh as it will lock you out
## iptables -P FORWARD DROP
## iptables -P OUTPUT ACCEPT

NASTAVENÍ PRAVIDEL FIREWALL

Další věc, kterou musíte udělat, je skutečně nastavit pravidla brány firewall pro naše služby. Vzhledem k tomu, že řetězec INPUT je VYPNUTÝ, budeme muset přidat na seznam povolených služeb, které naslouchají na veřejných portech, takže:

první věcí je umožnit bezplatné používání loopback interfaces , aby bylo zajištěno, že všechny relace TCP by měly začínat SYN a aby byly povoleny vytvořené a související pakety:

## iptables -A INPUT -i lo -j ACCEPT
## iptables -A OUTPUT -o lo -j ACCEPT
## iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
## iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

dále otevřeme porty našich služeb pomocí pravidel brány firewall jako:

### SSH
## iptables -A INPUT -p tcp --dport 5622  -m state --state NEW -j ACCEPT

### HTTP
## iptables -A INPUT -p tcp --dport 80  -m state --state NEW -j ACCEPT

### SMTP
## iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT

a tak dále. Jakmile jsou všechny služby na seznamu povolených, je dobré povolit pakety ICMP a vše ostatní v řetězci INPUT LOGOVAT a DROP.

## iptables -A INPUT -p ICMP --icmp-type 8 -j ACCEPT
## iptables -A INPUT -j LOG
## iptables -A INPUT -j DROP

ULOŽTE/OBNOVTE PRAVIDLA FIREWALL

Pravidla brány firewall nejsou ve výchozím nastavení trvalá, což znamená, že budou ztracena, pokud například restartujete virtuální server. Chcete-li uložit aktuální firewall do /etc/fwall.rules použili byste něco jako:

## iptables-save > /etc/fwall.rules

a k obnovení uložených pravidel byste použili něco jako:

## iptables-restore -c /etc/fwall.rules

aby se pravidla automaticky obnovila při startu systému, museli byste buď použít balíček s názvem iptables-persistent nebo můžete jednoduše vytvořit skript v /etc/network/if-pre-up.d který načte pravidla uložená v /etc/fwall.rules , například:

## vim /etc/network/if-pre-up.d/iptables

#!/bin/bash
test -e /etc/fwall.rules && iptables-restore -c /etc/fwall.rules

## chmod +x /etc/network/if-pre-up.d/iptables

SCRIPT FIREWALL

uložte skript do /usr/local/bin/fwall-rules a udělejte jej spustitelný

#!/bin/bash

IPTABLES=/sbin/iptables

echo " * flushing old rules"
${IPTABLES} --flush
${IPTABLES} --delete-chain
${IPTABLES} --table nat --flush
${IPTABLES} --table nat --delete-chain

echo " * setting default policies"
${IPTABLES} -P INPUT DROP
${IPTABLES} -P FORWARD DROP
${IPTABLES} -P OUTPUT ACCEPT

echo " * allowing loopback devices"
${IPTABLES} -A INPUT -i lo -j ACCEPT
${IPTABLES} -A OUTPUT -o lo -j ACCEPT

${IPTABLES} -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
${IPTABLES} -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

## BLOCK ABUSING IPs HERE ##
#echo " * BLACKLIST"
#${IPTABLES} -A INPUT -s _ABUSIVE_IP_ -j DROP
#${IPTABLES} -A INPUT -s _ABUSIVE_IP2_ -j DROP

echo " * allowing ssh on port 5622"
${IPTABLES} -A INPUT -p tcp --dport 5622  -m state --state NEW -j ACCEPT

echo " * allowing ftp on port 21"
${IPTABLES} -A INPUT -p tcp --dport 21  -m state --state NEW -j ACCEPT

echo " * allowing dns on port 53 udp"
${IPTABLES} -A INPUT -p udp -m udp --dport 53 -j ACCEPT

echo " * allowing dns on port 53 tcp"
${IPTABLES} -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT

echo " * allowing http on port 80"
${IPTABLES} -A INPUT -p tcp --dport 80  -m state --state NEW -j ACCEPT

echo " * allowing https on port 443"
${IPTABLES} -A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT

echo " * allowing smtp on port 25"
${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT

echo " * allowing submission on port 587"
${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 587 -j ACCEPT

echo " * allowing imaps on port 993"
${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 993 -j ACCEPT

echo " * allowing pop3s on port 995"
${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 995 -j ACCEPT

echo " * allowing imap on port 143"
${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 143 -j ACCEPT

echo " * allowing pop3 on port 110"
${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 110 -j ACCEPT

echo " * allowing ping responses"
${IPTABLES} -A INPUT -p ICMP --icmp-type 8 -j ACCEPT

# DROP everything else and Log it
${IPTABLES} -A INPUT -j LOG
${IPTABLES} -A INPUT -j DROP

#
# Save settings
#
echo " * SAVING RULES"

if [[ -d /etc/network/if-pre-up.d ]]; then
    if [[ ! -f /etc/network/if-pre-up.d/iptables ]]; then
        echo -e "#!/bin/bash" > /etc/network/if-pre-up.d/iptables
        echo -e "test -e /etc/iptables.rules && iptables-restore -c /etc/iptables.rules" >> /etc/network/if-pre-up.d/iptables
        chmod +x /etc/network/if-pre-up.d/iptables
    fi
fi

iptables-save > /etc/fwall.rules
iptables-restore -c /etc/fwall.rules
## chmod +x /usr/local/bin/fwall-rules

pro aktivaci pravidel, která jste připravili ve skriptu, stačí provést

## fwall-rules

z příkazového řádku. Chcete-li přidat nebo odebrat pravidlo, stačí otevřít skript, přidat nebo odebrat požadované pravidlo, uložit a znovu spustit, například:

## fwall-rules
 * flushing old rules
 * setting default policies
 * allowing loopback devices
 * allowing ssh on port 5622
 * allowing ftp on port 21
 * allowing dns on port 53 udp
 * allowing dns on port 53 tcp
 * allowing http on port 80
 * allowing https on port 443
 * allowing smtp on port 25
 * allowing submission on port 587
 * allowing imaps on port 993
 * allowing pop3s on port 995
 * allowing imap on port 143
 * allowing pop3 on port 110
 * allowing ping responses
 * SAVING RULES

Samozřejmě nemusíte nic z toho dělat, pokud používáte některou z našich hostingových služeb Linux VPS, v takovém případě můžete jednoduše požádat naše odborné linuxové administrátory, aby to udělali za vás. Jsou k dispozici 24×7 a okamžitě se postarají o váš požadavek.

PS. Pokud se vám tento příspěvek líbil, sdílejte jej se svými přáteli na sociálních sítích pomocí tlačítek vlevo nebo jednoduše zanechte odpověď níže. Děkuji.


Debian
  1. Konfigurace brány firewall pomocí Iptables na Ubuntu 14.04

  2. Debian – použití dvou displejů v Debianu?

  3. Jak zlepšit zabezpečení Debian VPS pomocí DenyHosts a Logwatch

  1. Příklad použití UFW firewallu v Debian/Ubuntu

  2. Instalace a používání Dockeru na Ubuntu a Debianu

  3. Nainstalujte MODX na Debian 7 VPS

  1. Zrychlete své webové stránky založené na PHP pomocí Zend Optimizer na CentOS 6 VPS

  2. Skript:Nainstalujte WordPress na Debian/Ubuntu VPS

  3. Jak nainstalovat SSHGuard na Ubuntu VPS