Co je vůbec cílem článku? Potřebuji vyměnit stávající mailserver (15 klientů) za nový ve velice krátkém čase. Proto si píšu postup, jak zvládnout migraci v co nejkratším čase. Určitě víte, že když něco děláte načisto bez podkladů, ladění jednotlivých aplikací trvá neskutečně dlouho, protože se člověk častokrát zastaví na banálních věcech. Na mailserveru nyní běží
Pro novou instalaci jsem vybral
To je zatím vše a jdeme na to.
Na server jsem vzal Gentoo 2007.0. Podle handbooku jsem si vzal stage3, rozbalil na disk, přikopíroval jsem resolv.conf do gentoo, mountnul proc, stahnul portage-snapshot-2007.0 a taky rozbalil na disk do správného adresáře. Pak jsem si nastavil /etc/make.conf:
CFLAGS="-O2 -march=i686 -pipe" CHOST="i686-pc-linux-gnu" CXXFLAGS="${CFLAGS}" FEATURES="buildpkg" MAKEOPTS="-j3" # Use flags USE="-X -xorg hardened -kde -gnome -authdaemond -berkdb \ pam -gtk apache2 jpeg cgi cli ctype pcre session unicode slang bzip2 pop3d \ maildir -authdaemond dovecot-sasl sasl ssl imap mysql mysqli sqlite \ nls vhosts pam pcre gd session xml unicode -ipv6 -oss alsa logrotate \ extensions nagios-dns nagios-ntp nagios-ping nagios-ssh snmp -cups iproute2" # PORTDIR and others PORTDIR=/usr/portage DISTDIR=${PORTDIR}/distfiles PKGDIR=${PORTDIR}/packages PORTAGE_TMPDIR=/var/tmp
V chrootu jsem po synchronizaci balíčků přihrál následující aplikace:
emerge vixie-cron screen uptimed syslog-ng postfix procmail mutt dovecot dhcp \ openssh openvpn apache iproute2 portage-utils gentoolkit xfsprogs logrotate mc \ gentoo-sources proftpd samba squid grub
Budu se snažit nepracovat s žádným neoficiálním portage (layman a spol) ať je systém co možná nejčístší. Zkompiloval jsem si jádro, nastavil password pro root-a, nastavil správně svazky v /etc/fstab. Vyzkoušel jsem, zda gentoo na novém disku nabootuje a mohl jsem se vrátit k nastavování dalších aplikací. Pár nastavení podle Handbooku:
rc-update add vixie-cron default rc-update add syslog-ng default rc-update add sshd default rc-update add apache2 default rc-update add uptimed default
Na server se nám bude velice brzo někdo dobývat. Dobyvatele pořešíme už v zárodku a server zabezpečíme nejdříve. Nejbolavější je určitě ssh-čko. Danny mi doporučil šikovnou věcičku http://denyhosts.sf.net/ (díky za to). Závislosti pořešíme pomocí emerge. Denyhosts se kouká do logů, kde je napsáno, že se někdo na server dobývá a po několika neúspěšných pokusech šupne jeho ip adresu do /etc/hosts.deny a je od něj pokoj
Denyhosts přihrajeme a nastavíme jeho spouštění po startu serveru:
emerge -up --deep denyhosts rc-update add denyhosts default
V souboru /etc/denyhosts.conf si nastavíme základní info, jako jsou admin_email, smtp_host, smtp_from, atd. zrestartujeme službu
/etc/init.d/denyhosts restart
a je pokoj.
Do /etc/init.d přidáme symbolické odkazy net.eth0 a net.eth1 na net.lo, aby o nich systém věděl a přidáme je do spuštění po startu:
cd /etc/init.d ln -s eth.lo net.eth0 ln -s eth.lo net.eth1 rc-update add net.eth0 default rc-update add net.eth1 default
V souboru /etc/conf.d/net nastavíme ip adresy pro síťové karty:
cat /etc/conf.d/net modules=( "iproute2" ) # WAN config_eth1=( "172.19.3.2 netmask 255.255.0.0" ) # WAN static routes_eth1=("default via 172.19.3.1") # IPv4 default route # LAN config_eth0=( "192.168.1.1 netmask 255.255.255.0" ) # LAN static
Nastavíme konfiguraci dhcp serveru:
emerge dhcpd cat >> /etc/dhcp/dhcpd.conf << EOF option domain-name "mydomain.cz"; option domain-name-servers 192.168.1.1; ddns-update-style ad-hoc; default-lease-time 3600; max-lease-time 8400; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.7 192.168.1.100; option broadcast-address 192.168.1.255; option routers 192.168.1.1; } # zde si nadefinujeme hosty podle MAC adres #host xyz { # hardware ethernet 00:40:f4:65:58:b6; # fixed-address 192.168.1.20; #} EOF /etc/init.d/dhcp restart
V souboru /etc/conf.d/dhcpd jen nastavíme, na kterém interfacu bude dhcp server spuštěn. U nás je LAN-ka na portu eth0:
cat /etc/conf.d/dhcpd | grep DHCPD_IFACE DHCPD_IFACE="eth0"
Jako dnscache jsem zvolil djbdns od D.J.Bernsteina:
mkdir /var/djbdns # zde nainstalujeme dnscache emerge djbdns # přitáhneme dnscache dnscache-setup # a nastavíme. Změní se tím resolv.conf cat /etc/resolv.conf mail / # cat /etc/resolv.conf search kingstyle.cz nameserver 127.0.0.1 touch /var/djbdns/dnscache/root/ip/192.168 # cache-ujeme dotazy i z rozsahu LAN /etc/init.d/svscan start # stustíme djb deamona pro djbware rc-update add svscan default # přidame do startu a je to :-)
Dnscache nám nyní cachuje dns dotazy. Jak jednoduché a jak účinné. Co víc si můžeme přát
Za IMAP a POP3 jsem vybral Dovecot.
Vzhledem k malému počtu uživatelů je do systému zadáme tak, aby mohli číst poštu a nemohli se na server vzdáleně přihlásit (ssh). Pošta se pro jednotlivé uživatele se bude standardně sypat do jejich schránek v jejich adresářích. Čtení pošty samozřejmě bránit nebudeme, jenže tu vybíráme pomocí protokolu IMAP a a POP3 Uživatelé budou mít uloženou poštu v maildir, proto přidáme do skeletonu pár adresářů pro ukládání pošty. Nově zřízeným uživatelům se budou tyto adresáře automaticky zřizovat. Nyní můžeme vytvářet nové uživatele s i bez možnosti přihlášení. Uživatelům, kterým chceme dát přístup přirozeně dáme správný shell.
mkdir -p /etc/skel/maildir/new mkdir -p /etc/skel/maildir/cur mkdir -p /etc/skel/maildir/tmp adduser -s /sbin/nologin -m user1;passwd user1 adduser -s /sbin/nologin -m user2;passwd user2 adduser -s /bin/bash -m adminuser;passwd adminuser # pro vzdálenou správu přes ssh
Nyní máme v systému všechny potřebné uživatele.
Nainstalujeme si MTA postfix:
apt-get install postfix
Budeme mít Internet site. Vyplníme mail hostname Nyní chodí pošta uživatelům do mbox-u /var/mail/<user>. Postfix říká, kam dávat poštu, proto mu sdělíme, že chceme, aby doručoval zprávy do Maildiru a přidáme náš subnet k mým sítím
echo "" >> /etc/postfix/main.cf echo "home_mailbox = Maildir/">> /etc/postfix/main.cf cat /etc/postfix/main.cf | grep mynetworks mynetworks = 192.168.1.0/24, 127.0.0.0/8 echo "root: petr@localhost" >> /etc/postfix/aliases newaliases /etc/init.d/postfix restart
Nyní máme základ hotov. MTA nyní umí zprávy přehazovat do Maildir-u. Zprávy měly nyní chodit ven i na náš mailserver. S Maildir-em umi pracovat Courier, který z něj umí číst zprávy přes POP3 a IMAP. Vyzkoušíme si čtení zpráv přes POP3 a IMAP
Pošleme se jednu testovací zprávu a můžeme testovat, zda nám chodí POP3 a IMAP.
echo To:petr | /usr/sbin/sendmail petr@mail-king:~$ telnet localhost 110 Trying 127.0.0.1... Connected to localhost.localdomain. Escape character is '^]'. +OK Hello there. user petr +OK Password required. pass heslouzivatelepetr +OK logged in. list +OK POP3 clients that break here, they violate STD53. 1 562 . quit +OK Bye-bye. Connection closed by foreign host. petr@mail-king:~$
Skvělé. A Ještě můžeme vyzkoušet i IMAP:
petr@mail-king:~$ telnet localhost 143 Trying 127.0.0.1... Connected to localhost.localdomain. Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2004 Double Precision, Inc. See COPYING for distribution information. AA LOGIN petr heslouzivatelepetr AA OK LOGIN Ok. AB SELECT Inbox * FLAGS (\Draft \Answered \Flagged \Deleted \Seen \Recent) * OK [PERMANENTFLAGS (\* \Draft \Answered \Flagged \Deleted \Seen)] Limited * 1 EXISTS * 1 RECENT * OK [UIDVALIDITY 1169939434] Ok * OK [MYRIGHTS "acdilrsw"] ACL AB OK [READ-WRITE] Ok ZZ LOGOUT * BYE Courier-IMAP server shutting down ZZ OK LOGOUT completed Connection closed by foreign host.
Nyní vyzkoušíme POP3S a IMAPS. Pošleme z Internetu nějakou poštu k uživateli a zpět.
openssl s_client -crlf -connect my-server.cz:995 # POP3S openssl s_client -crlf -connect my-server.cz:993 # IMAPS
Vše jede, jak z praku.
Nejdříve doinstalujeme potřebné programy:
apt-get install libsasl2-modules sasl2-bin postfix-tls
Nyní zařídíme v /etc/postfix/main.cf TLS pro šifrování spojení a SASL pro ověřování jména a hesla v postfixu a vygenerujeme si pro postfix pem certifikát:
cat >> /etc/postfix/main.cf << EOF # TLS smtp_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd_use_tls = yes smtpd_tls_auth_only = yes smtpd_tls_key_file = /etc/postfix/ssl/postfix.pem smtpd_tls_cert_file = /etc/postfix/ssl/postfix.pem smtpd_tls_received_header = yes smtpd_tls_loglevel = 1 smtpd_tls_session_cache_timeout = 3600s # SASL smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes smtpd_sasl_local_domain = $myhostname smtpd_sasl_security_options = noanonymous smtpd_sasl_application_name = smtpd EOF mkdir /etc/postfix/ssl openssl req -new -x509 -nodes -days 3650 -out /etc/postfix/ssl/postfix.pem \ -keyout /etc/postfix/ssl/postfix.pem
Nyní jsme u rozhodnutí, jak bude SASL v postfixu ověřovat jméno/heslo pro odesílání pošty. SASL je možné nastavit tak, že se bude ověřovat jméno/heslo vůči stávajícím uživatelským účtům nebo se bude ověřovat vůči sasl databázi, kde jsou jména a hesla nadefinovana sólo. Nejdříve zkusíme nastavit SASL vůči stávajícím účtům.
cat > /etc/postfix/sasl/smtpd.conf << EOF # overovani SASL vuci uzivatelskym uctum pwcheck_method: saslauthd mech_list: PLAIN LOGIN EOF
Postfix pracuje v prostředí chroot, proto vytvoříme pro saslauth deamona adresář v chrootu postfixu. V /etc/init.d/saslauthd upravíme začátek scriptu a zajistime spouštění SASL po restartu s nastavením mechanismu autentizace. Hned můžeme otestovat, zda nám sasl funguje.
mkdir -p /var/spool/postfix/var/run/saslauthd cat /etc/init.d/saslauthd | more ... PARAMS="-m /var/spool/postfix/var/run/saslauthd" # original PID file #PIDFILE="/var/run/${NAME}/saslauthd.pid" # new PID file PIDFILE="/var/spool/postfix/var/run/${NAME}/saslauthd.pid" ... cat > /etc/default/saslauthd << EOF # spousteni saslauthd po restartu START=yes MECHANISMS="pam" EOF testsaslauthd -u user -p heslo -f /var/spool/postfix/var/run/saslauthd/mux 0: OK "Success."
Řekneme našemu postfixu, že může odesílat maily i mimo naši doménu, nadefinujeme pár pravidel ohledně blokovaných domén. Nyní můžeme pomocí TLS/SASL s ověřením přes uživatelské jméno a heslo posílat poštu odkudkoliv a kamkoliv přes naš SMTP server. Relay přes náš SMTP server není možné, jelikož spamer nezná jméno a heslo uživatele na serveru.
cat >> /etc/postfix/main.cf << EOF smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, reject_rbl_client relays.ordb.org, reject_rbl_client opm.blitzed.org, reject_rbl_client list.dsbl.org, reject_rbl_client multihop.dsbl.org, reject_rbl_client sbl.spamhaus.org, reject_rbl_client cbl.abuseat.org, reject_rhsbl_sender rhsbl.sorbs.net, permit EOF
Pokud chceme ověřovat oproti sasl2 databázi, tak změníme /etc/postfix/sasl/smtpd.conf takto:
cat > ./smtpd.conf << EOF # overovani SASL vuci sasl databazi pwcheck_method: auxprop mech_list: PLAIN LOGIN EOF
saslpasswd2 -c -a smtpauth test1 zadame si heslo
Nyní budeme schopni naše MTA odesílat maily kdekoliv z Internetu.
Vyzkoušíme a uvidíme. Třeba pomocí:
openssl s_client -starttls smtp -crlf -connect mail-king.dyndns.org:25
Mutt si instaluji, páč je textový a „lehký“ a dá se pohodlně nastavit nejen pro testovací účely. Pro mail spool budeme používat Maildir (djb produkt) u každého uživatele. Aby se nám při zřizování uživatele již tento adresář vytvořil, dáme Maildir do /etc/skel. Pak můžeme vytvořit uživatele.
cd /etc/skel maildirmake Maildir useradd petr # 1.user ls /home/petr Maildir
Mutt naučíme, aby uměl pracovat s Maidir-em (viz. http://www.elho.net/mutt/maildir/):
su - petr mkdir .mutt cat >> /home/petr/.mutt/muttrc << EOF set mbox_type=Maildir set folder="~/Maildir" set mask="!^\\.[^.]" set mbox="~/Maildir" set record="+.Sent" set postponed="+.Drafts" set spoolfile="~/Maildir" my_hdr From: petr@my-mailserver.cz set realname = "Petr Podrabsky" mailboxes `echo -n "+ "; find ~/Maildir -type d -name ".*" -printf "+'%f'"` EOF
Bogofilter je zajímavá věcička na odfilterování spamů. Nejdříve si bogofilter naučíme, co je/není spam a pak už může sám rozeznávat spamy. Pro bogofilter si ještě doinstalujeme procmail, jestli jej už v systému nemáme.
emerge bogofilter procmail
K uživateli přidáme adresáře ve formátu maildir a do něj adresář pro spam
maildirmake maildir maildirmake maildir/.spam
Nespam bude končit v maildir-u a spam bude končit v adresáři maildir/.spam/ Bogofilter nejdříve naučíme, co je spam a HAM:
# neni spam for f in maildir_directory/cur/* do bogofilter -n < $f done # je spam for f in maildir_directory/.spam/cur/* do bogofilter -s < $f done
Pokud skončí podivná zpráva v doručené poště a naopak ve spam adresáři skočí dobrá zpráva, jednoduše je přesuneme tam, kam podle vás patří. Pak už je jen třeba pomocí cron-u tuto zautomatizovat scriptem pro každého uživatele učení se spamů a nespamů.
bog
K uživateli nejlépe před jeho zřízením přidáme do /etc/skel soubor .procmailrc:
# $Id: .procmailrc,v 1.1 2003/07/14 17:22:49 ssm Exp $ # # filter mail through bogofilter, tagging it as spam and # updating the word lists. Return the mail to the queue # on error MAILDIR=$HOME/maildir/ DEFAULT=$MAILDIR VERBOSE=yes PMDIR=$HOME LOGFILE=$HOME/procmail.log LINEBUF=32768 # run bogofilter on incoming mail :0fw | /usr/bin/bogofilter -u -e -p :0e { EXITCODE=75 HOST } # move to .spam if bogofilter thinks it is spam :0: * ^X-Bogosity: (Spam|Yes), tests=bogofilter ${MAILDIR}.spam/ # move to maildir if bogofilter thinks it is not spam :0 $DEFAULT
Pokud chceme některým uživatelům povolit administrátorská práva, můžeme to udělat několika způsoby. Asi nejznámější způsoby jsou pomocí:
Zde si popíšeme, jak to udělat pomocí wheel group. Přidáme do systému skupinu wheel
addgroup wheel
V /etc/pam.d/su odkomentujeme řádky:
auth required pam_wheel.so auth sufficient pam_wheel.so trust
Do skupiny adm a wheel doplníme potřebného uživatele
usermod -G adm,wheel petr
Pak se může uživatel petr dostat k administrátorovi pomocí su bez hesla administrátora
petr@mail-king:~$ su mail-king:/home/petr#
Na serveru budeme synchronizovat čas přes servery tik,tak.cesnet.cz. Doinstalujeme potřebné aplikace a uděláme pár úprav pro správnou funkci ntp serveru:
emerge ntp cp /usr/share/zoneinfo/Europe/Prague /etc/localtime
V souboru /etc/conf.d/clock nastavíme CLOCK=„local“ a v souboru /etc/ntp.conf nastavíme server tik.cesnet.cz. Pak zrestartujeme službu clock a ntp a ověříme programem date, zda máme správný čas a datum.
/etc/init.d/clock restart /etc/init.d/ntp restart date
Pro postfix a server si doladíme několik doplňků, které nám něco řeknou o systému, mailserveru a dalších aplikacích.
Logwatch je jednoduchá aplikace, která nám sbírá z logů informace a každý den nám zašle souhrnné informace.
apt-get install logwatch
Mailgraph ve spolupráci s apachem nám grafdicky znázorní, kolik zpráv se proflákalo systémem tam a zpět (http://nas-mailserver/cgi-bin/mailgraph.cgi/).
emerge -pu apache mailgraph
Pro uživatele později vyzkoušíme antivir clamav.
emerge -pu clamav
Nastavíme si iptables podle představ resp., jak jste PARANOIDNÍ Nejsem žádný guru na iptables, proto pořeším jen základní věci. Pro výmaz všech pravidel jsem použil script z http://www.petricek.cz/. Viz. výpis.
#!/bin/bash # verze 02 #howto get ip WAN address INET_IFACE="eth1" # get WAN ip via ip route #INET_IP=`ip add show dev $INET_IFACE | grep "inet "| awk -F " " '{print $2}' | awk -F "/" '{print $1}'` # get WAN ip via ifconfig INET_IP=`ifconfig $INET_IFACE | grep cast | awk -F " " '{print $2}' | awk -F ":" '{print $2}'` echo "WAN address=$INET_IP" LAN1_IP="192.168.1.1/32" LAN1_BCAST="192.168.1.255/32" LAN1_IFACE="eth0" LO_IFACE="lo" LO_IP="127.0.0.1/32" IPTABLES=`which iptables` # cistime iptables function delete_chain() { echo -n "$1/$2: "; while [ -z "`$IPTABLES -t $1 -D $2 1 2>&1 `" ]; do echo -n "#" done echo " OK"; } $IPTABLES -t filter -P INPUT ACCEPT $IPTABLES -t filter -P OUTPUT ACCEPT $IPTABLES -t filter -P FORWARD ACCEPT delete_chain filter INPUT; delete_chain filter OUTPUT; delete_chain filter FORWARD; delete_chain filter IN_FW; delete_chain filter logdrop; delete_chain filter syn-flood; $IPTABLES -X IN_FW 2> /dev/null; $IPTABLES -X logdrop 2> /dev/null; $IPTABLES -X syn-flood 2> /dev/null; $IPTABLES -t nat -P PREROUTING ACCEPT $IPTABLES -t nat -P OUTPUT ACCEPT $IPTABLES -t nat -P POSTROUTING ACCEPT delete_chain nat PREROUTING; delete_chain nat OUTPUT; delete_chain nat POSTROUTING; $IPTABLES -t mangle -P PREROUTING ACCEPT $IPTABLES -t mangle -P OUTPUT ACCEPT delete_chain mangle PREROUTING; delete_chain mangle OUTPUT; # nyni zacneme neco teprve nastavovat /sbin/depmod -a /sbin/modprobe ipt_LOG /sbin/modprobe ipt_REJECT /sbin/modprobe ipt_MASQUERADE /sbin/modprobe ip_conntrack_ftp echo "1" > /proc/sys/net/ipv4/ip_forward for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do echo "1" > ${interface} done $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP $IPTABLES -P FORWARD DROP $IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to $INET_IP #$IPTABLES -t nat -A PREROUTING -p tcp --dport 80 -i ! $INET_IFACE \ # -d ! $INET_IP -j REDIRECT --to-port 3128 $IPTABLES -t mangle -A PREROUTING -p tcp --sport ssh -j TOS --set-tos Minimize-Delay $IPTABLES -t mangle -A PREROUTING -p tcp --dport ssh -j TOS --set-tos Minimize-Delay $IPTABLES -t mangle -A PREROUTING -p tcp --sport ftp -j TOS --set-tos Minimize-Delay $IPTABLES -t mangle -A PREROUTING -p tcp --dport telnet -j TOS --set-tos Minimize-Delay $IPTABLES -t mangle -A PREROUTING -p tcp --sport ftp-data -j TOS --set-tos Maximize-Throughput $IPTABLES -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP $IPTABLES -A FORWARD -i $LAN1_IFACE -j ACCEPT #$IPTABLES -A FORWARD -i $INET_IFACE -o $LAN1_IFACE -j ACCEPT $IPTABLES -A FORWARD -i $INET_IFACE -o $LAN1_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT #$IPTABLES -A FORWARD -m limit --limit 12/h -j LOG --log-prefix "FORWARD drop:" $IPTABLES -A INPUT -i $INET_IFACE -p tcp ! --syn -m state --state NEW -j DROP $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 21 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 22 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 25 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p UDP --dport 53 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 53 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 80 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 143 -j ACCEPT # imap $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 993 -j ACCEPT # imaps $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 995 -j ACCEPT # pop3s $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 110 -j ACCEPT # pop3 -plain text zakazeme :-) $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 1194 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p UDP --dport 1194 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 5000 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p UDP --dport 5000 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p ICMP --icmp-type echo-request -j ACCEPT $IPTABLES -A INPUT -i $LO_IFACE -j ACCEPT $IPTABLES -A INPUT -i $LAN1_IFACE -d $LAN1_IP -j ACCEPT $IPTABLES -A INPUT -i $LAN1_IFACE -d $INET_IP -j ACCEPT $IPTABLES -A INPUT -i $LAN1_IFACE -d $LAN1_BCAST -j ACCEPT $IPTABLES -A INPUT -i $LAN1_IFACE -p udp --dport 67 -j ACCEPT $IPTABLES -A INPUT -d $INET_IP -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -m limit --limit 12/h -j LOG --log-prefix "INPUT drop:" $IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --sport ssh -j TOS --set-tos Minimize-Delay $IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --dport ssh -j TOS --set-tos Minimize-Delay $IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --sport ftp -j TOS --set-tos Minimize-Delay $IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --dport ftp -j TOS --set-tos Minimize-Delay $IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --dport telnet -j TOS --set-tos Minimize-Delay $IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --sport ftp-data -j TOS --set-tos Maximize-Throughput $IPTABLES -A OUTPUT -s $LO_IP -j ACCEPT $IPTABLES -A OUTPUT -s $LAN1_IP -j ACCEPT $IPTABLES -A OUTPUT -s $INET_IP -j ACCEPT $IPTABLES -A OUTPUT -o $LAN1_IFACE -p UDP --dport 68 --sport 67 -j ACCEPT #$IPTABLES -A OUTPUT -j LOG --log-prefix "OUTPUT drop:
Firewall pravidla jsem si dal do /etc/init.d/firewall.sh a zajistil, aby pravidla byly spouštěny ve všech run-levels. Samozřejmě provedeme restart firewallu, aby nám to k něčemu bylo, že? Pak se můžeme podívat, co jsme s naším firewall scriptem udělali
update-rc firewall.sh defaults /etc/init.d/firewall.sh restart iptables -L -v