Ubuntu'da iptables nasıl başlatılır / durdurulur?


86

Ubuntu'da iptables hizmetini nasıl başlatabilir / durdurabilirim?

denedim

 service iptables stop

ama "tanınmayan hizmet" veriyor .

Neden böyle yapıyor? Başka bir yöntem var mı?


Sanırım kargaşanın bir kısmı da böyle makalelerden geliyor: sadece Fedora / Red Hat için geçerli olan ve içinde bulacağını iddia eden cyberciti.biz/faq/turn-on-turn-off-firewall-in-linux/etc/init.d/ . (un) yararlı bir şekilde googling 'iptables ubuntu'yu kapattığınızda' elde ettiğiniz en üst bağlantıdır.
icc97

Yanıtlar:


76

"Ubuntu" hakkında bir şey bilmiyorum ama genel olarak Linux'ta "iptables" bir hizmet değil - netfilter çekirdek güvenlik duvarını değiştirmek için kullanılan bir komut. Tüm standart zincirlerdeki varsayılan politikaları "KABUL" olarak ayarlayarak ve kuralları temizleyerek güvenlik duvarını "devre dışı bırakabilir" (veya durdurabilirsiniz).

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F

(Kullandıysanız, "nat" gibi diğer tabloları da silmeniz gerekebilir)

Ubuntu web sitesinde yer alan aşağıdaki makale, NetworkManager ile kullanmak için iptables ayarını açıklamaktadır: https://help.ubuntu.com/community/IptablesHowTo


5
Bu, sonsuza dek geçerli olan tüm kuralları ortadan kaldırmayacak mı? Önce onları sudo iptables-save> / tmp / rules ile saklamak için en iyisi
Jens Timmerman

8
Bu, hizmeti durdurmaz, ancak her şeyin yoluna girmesine izin verir.
Frederik Nielsen

1
Ah teşekkürler. iptables -Fkaçırdığım şeydi :-)
Cameron

@JensTimmerman günümü iptables-save > /tmp/ruleskurtardı. Teşekkürler
blagus

46

Hepiniz yanlışsınız :-)

Aradığınız komut şudur:

$ sudo ufw disable

29
ufw hakkında konuştuğumuza eminim, ancak bu yazı iptables ile ilgili
webjay 26:12

1
Eh, bunun varsayılan bir Ubuntu yüklemesi olduğunu ve bunun iptable'larının olmadığını, ancak ufw'nin olduğunu varsaydım.
Frederik Nielsen

22
ufw iptables için sadece bir ön uçtur: "Iptables, tüm resmi Ubuntu dağıtımlarına (Ubuntu, Kubuntu, Xubuntu) varsayılan olarak yüklenen bir güvenlik duvarıdır. Ubuntu'yu kurduğunuzda iptables oradadır, ancak varsayılan olarak tüm trafiğe izin verir. Ubuntu 8.04 Comes ufw ile - kolayca iptables güvenlik duvarı yönetmek için bir program. " help.ubuntu.com/community/IptablesHowTo
18'de

2
Olabilir, ancak Ubuntu'da ufw == iptables (az ya da çok) olduğu gibi, ufw'yi devre dışı bırakmak iptables'ı devre dışı bırakmakla eşittir.
Frederik Nielsen

2
OP muhtemelen büyük olasılıkla güvenlik duvarlarını yönetmek için iptables hizmetinin karmaşıklıklarını anlamak yerine güvenlik duvarlarını devre dışı bırakmakla ilgileniyordu, bu yüzden bu iyi bir cevap.
BobDoolittle

30

Önce yüklü olup olmadığını kontrol ediyorum (muhtemelen öyle):

dpkg -l | grep iptables

Ubuntu'da iptables bir servis değildir. Durdurmak için aşağıdakileri yapmanız gerekir:

sudo iptables-save > /root/firewall.rules
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

Önceki kurallarınızı geri yüklemek için:

iptables-restore < /root/firewall.rules

Bu, http://www.cyberciti.biz/faq/turn-on-turn-off-firewall-in-linux/ adresinden alınmış ve birçok Ubuntu 8.X & 9.10 kurulumunda test edilmiştir.


Bunun neden bu kadar çok artıya sahip olduğunu bilmiyorum, iptables bir çekirdek modülüdür. Asla "durdurulabilecek" bir "hizmet" değildir. Çekirdeğe bağlantıları nasıl kullanacaklarını anlatmak için kullanılırlar. Ayrıca bir üretim ortamında güvenlik duvarınızı asla devre dışı bırakmamalısınız. Bir şey işe yaramazsa, kolay olanı değil, doğru çözümü bulun.
Broco

17

Iptables bir hizmet değil bir komuttur, bu nedenle genellikle gibi komutları kullanmak mümkün değildir.

service iptables start

veya

service iptables stop

güvenlik duvarını başlatmak ve durdurmak için, ancak centos gibi bazı dağıtımlar, güvenlik duvarını başlatmak ve durdurmak için iptables adında bir hizmeti ve yapılandırmak için bir yapılandırma dosyasını yüklediler. Yine de, bu kapsam için bir betik düzenleme veya komut dosyası yükleme ipotables'ı yönetmek için bir servis yapmak mümkündür. Linux, ubuntu'daki tüm hizmetler bir istisna değildir, /etc/init.d klasörü içinde çalıştırılabilir komut dosyalarıdır, standart bir arayüz uygular (başlat, durdur, yeniden başlat) Olası bir komut dosyası şöyle görünür:

 #!/bin/sh -e
 ### BEGIN INIT INFO
 # Provides:          iptables
 # Required-Start:    mountvirtfs ifupdown $local_fs
 # Default-Start:     S
 # Default-Stop:      0 6
 ### END INIT INFO

 # July 9, 2007
 # James B. Crocker <ubuntu@james.crocker.name>
 # Creative Commons Attribution - Share Alike 3.0 License (BY,SA)
 # Script to load/unload/save iptables firewall settings.

 PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"

 IPTABLES=/sbin/iptables
 IPTABLES_SAVE=/sbin/iptables-save
 IPTABLES_RESTORE=/sbin/iptables-restore

 IPTABLES_CONFIG=/etc/iptables.conf

 [ -x $IPTABLES ] || exit 0

 . /lib/lsb/init-functions


 case "$1" in
 start)
    log_action_begin_msg "Starting firewall"
         type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 120" || true
    if $IPTABLES_RESTORE < $IPTABLES_CONFIG ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
         type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 15" || true
    ;;

 stop)
    log_action_begin_msg "Saving current firewall configuration"
    if $IPTABLES_SAVE > $IPTABLES_CONFIG ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    log_action_begin_msg "Flushing ALL firewall rules from chains!"
    if $IPTABLES -F ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    log_action_begin_msg "Deleting ALL firewall chains [Warning: ACCEPTING ALL PORT SERVICES!]"
    if $IPTABLES -X ; then
        $IPTABLES -P INPUT ACCEPT
        $IPTABLES -P FORWARD ACCEPT
        $IPTABLES -P OUTPUT ACCEPT
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    ;;

 save)
    log_action_begin_msg "Saving current firewall configuration"
    if $IPTABLES_SAVE > $IPTABLES_CONFIG ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    ;;

 force-reload|restart)
    log_action_begin_msg "Reloading firewall configuration [Warning: POTENTIAL NETWORK INSECURITY DURING RELOAD]"
    $IPTABLES -F
    $IPTABLES -X
    if $IPTABLES_RESTORE < $IPTABLES_CONFIG ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    ;;

 *)
    echo "Usage: /etc/init.d/iptables {start|stop|save|restart|force-reload}"
    exit 1
    ;;
 esac

 exit 0 

Bu komut dosyası bu eğitimin bir parçasıdır , güvenlik duvarını yapılandırmak için kullanılan tüm komutların yukarıdaki komut dosyasına göre /etc/iptables.conf dosyasına eklenmesi gerekir. Bu betiğin /etc/init.d içindeki iptables adlı bir dosyaya eklenmesi ve çalıştırılabilir hale getirilmesi gerekir.

chmod+x *iptables* 

ve servisi kullanarak çalışma seviyelerine ekleyin.

update-rc.d iptables defaults

Kabuktan yeni kurallar ekleyebilirsiniz, bu kurallar derhal aktif olacaktır ve servis durduğunda /etc/iptables.conf dosyasına eklenecektir (servis kapatıldığında kesin olarak kaydedileceği anlamına gelir).

Umarım bu herkese yardımcı olur.


6

Her iki iptables ve UFW yönetmek için yollar nedeniyle netfilter Linux güvenlik duvarı ve her iki Ubuntu varsayılan olarak bulunan, çünkü güvenlik duvarı kuralları kullanabilirsiniz ya başlatmak ve durdurmak için (ve yönetme).

iptables daha esnektir, ancak ufw kullanabileceğiniz basit ve tipik işlevler için çok basit bir arabirim dili sağladığından:

sudo ufw disable # Güvenlik duvarını devre dışı bırakmak için

sudo ufw enable # Güvenlik duvarını etkinleştirmek için

Geçerli güvenlik duvarı ayarlarını görmek için sudo ufw status verbose, veya tuşlarını kullanın iptables -L.

Ubuntu Topluluk docs sayfaları iptables ve UFW çok daha fazla bilgi var.


3

Ubuntu'da güvenlik duvarını yönetmenin birkaç yolu var gibi gözüküyor, bu yüzden bunu okumak isteyebilirsiniz: https://help.ubuntu.com/community/IptablesHowTo#Configuration%20on%20startup

Tüm geçerli kuralları bırakmak için bu komutları kullanabilirsiniz (bazı komut dosyalarına koyun):

iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
iptables -t mangle -F
iptables -t mangle -X
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -F
iptables -t filter -X

Her zamanki gibi, varsayılan güvenlik duvarı kurallarınız bazı dosyalara kaydedilmiştir (örneğin, /etc/iptables.rules). Sistem komutu önyüklenirken iptables-restore </etc/iptables.rulesgüvenlik duvarı kurallarını yüklemek için yürütülür. Bu nedenle, yukarıdaki komutları kullanarak tüm kuralları bıraktıktan sonra aynı komutu çalıştırmak, istediğiniz “güvenlik duvarını yeniden yüklemek” ile sonuçlanacaktır.


2

Doğru hatırlıyorsam ubuntu kılavuzlarında iptables kurmanın önerilen yolu ağ komut dosyalarının bir parçası olarak ayarlamaktır. bu, BSD tarzı işletim sistemlerinde olduğu gibi /etc/init.d/iptables betiğinin olmadığı anlamına gelir.


Debian Woody'de (o zaman Ubuntu var mıydı?) Vardı, yine de bugün hala sysadmins tarafından uygulanmaktadır. Neden herhangi bir fikri değiştirdiler?

Bir ipucum yok ... ama ubuntu server 9.10 ya da başka bir şey kurduğumda çözmem gereken can sıkıcı şeylerden biri olduğunu hatırlıyor gibiyim. Sunucular içindi ... aksi halde arch linux kullandım.
xenoterracide

2

/Etc/init.d/ adresinde bir dosya oluşturun.

touch fw.rc

Dosyayı çalıştırılabilir hale getir chmod + x

/Etc/rc2.d/ adresindeki dosyaya bir link verin

ln -s /etc/init.d/fw.rc S80firewall

S80firewall’u düzenleyin ve aşağıdakileri ekleyin

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

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -F

Tüm özel iptables kurallarınızı bu dosyaya ekleyebilirsiniz.

Şimdi /etc/rc2.d/S80firewall (root olmalı) komutunu çalıştırarak güvenlik duvarını (iptables) yeniden başlatabilirsiniz.


2

Ben de aynı sorunu yaşadım. Aslında, içinde iptables-persistan yoktu/etc/init.d

Böylece, iptables-persistent dosyasını içinde oluşturdum. /etc/init.d

nano /etc/init.d/iptables-persistent

ve içine şunu yazdı:

#!/bin/sh
#       Written by Simon Richter <sjr@debian.org>
#       modified by Jonathan Wiltshire <jmw@debian.org>
#       with help from Christoph Anton Mitterer
#

### BEGIN INIT INFO
# Provides:          iptables-persistent
# Required-Start:    mountkernfs $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# X-Start-Before:    $network
# X-Stop-After:      $network
# Short-Description: Set up iptables rules
# Description:       Loads/saves current iptables rules from/to /etc/iptables
#  to provide a persistent rule set during boot time
### END INIT INFO

. /lib/lsb/init-functions

rc=0

load_rules()
{
    log_action_begin_msg "Loading iptables rules"

    #load IPv4 rules
    if [ ! -f /etc/iptables/rules.v4 ]; then
        log_action_cont_msg " skipping IPv4 (no rules to load)"
    else
        log_action_cont_msg " IPv4"
        iptables-restore < /etc/iptables/rules.v4 2> /dev/null
        if [ $? -ne 0 ]; then
            rc=1
        fi
    fi

    #load IPv6 rules    
    if [ ! -f /etc/iptables/rules.v6 ]; then
        log_action_cont_msg " skipping IPv6 (no rules to load)"
    else
        log_action_cont_msg " IPv6"
        ip6tables-restore < /etc/iptables/rules.v6 2> /dev/null
        if [ $? -ne 0 ]; then
            rc=1
        fi
    fi

    log_action_end_msg $rc
}

save_rules()
{
    log_action_begin_msg "Saving rules"

    #save IPv4 rules
    #need at least iptable_filter loaded:
    /sbin/modprobe -q iptable_filter
    if [ ! -f /proc/net/ip_tables_names ]; then
        log_action_cont_msg " skipping IPv4 (no modules loaded)"
    elif [ -x /sbin/iptables-save ]; then
        log_action_cont_msg " IPv4"
        iptables-save > /etc/iptables/rules.v4
        if [ $? -ne 0 ]; then
            rc=1
        fi
    fi

    #save IPv6 rules
    #need at least ip6table_filter loaded:
    /sbin/modprobe -q ip6table_filter
    if [ ! -f /proc/net/ip6_tables_names ]; then
        log_action_cont_msg " skipping IPv6 (no modules loaded)"
    elif [ -x /sbin/ip6tables-save ]; then
        log_action_cont_msg " IPv6"
        ip6tables-save > /etc/iptables/rules.v6
        if [ $? -ne 0 ]; then
            rc=1
        fi
    fi

    log_action_end_msg $rc
}

flush_rules()
{
    log_action_begin_msg "Flushing rules"

    if [ ! -f /proc/net/ip_tables_names ]; then
        log_action_cont_msg " skipping IPv4 (no module loaded)"
    elif [ -x /sbin/iptables ]; then
        log_action_cont_msg " IPv4"
        for param in F Z X; do /sbin/iptables -$param; done
        for table in $(cat /proc/net/ip_tables_names)
        do
            /sbin/iptables -t $table -F
            /sbin/iptables -t $table -Z
            /sbin/iptables -t $table -X
        done
        for chain in INPUT FORWARD OUTPUT
        do
            /sbin/iptables -P $chain ACCEPT
        done
    fi

    if [ ! -f /proc/net/ip6_tables_names ]; then
        log_action_cont_msg " skipping IPv6 (no module loaded)"
    elif [ -x /sbin/ip6tables ]; then
        log_action_cont_msg " IPv6"
        for param in F Z X; do /sbin/ip6tables -$param; done
        for table in $(cat /proc/net/ip6_tables_names)
        do
            /sbin/ip6tables -t $table -F
            /sbin/ip6tables -t $table -Z
            /sbin/ip6tables -t $table -X
        done
        for chain in INPUT FORWARD OUTPUT
        do
            /sbin/ip6tables -P $chain ACCEPT
        done
    fi

    log_action_end_msg 0
}

case "$1" in
start|restart|reload|force-reload)
    load_rules
    ;;
save)
    save_rules
    ;;
stop)
    # Why? because if stop is used, the firewall gets flushed for a variable
    # amount of time during package upgrades, leaving the machine vulnerable
    # It's also not always desirable to flush during purge
    echo "Automatic flushing disabled, use \"flush\" instead of \"stop\""
    ;;
flush)
    flush_rules
    ;;
*)
    echo "Usage: $0 {start|restart|reload|force-reload|save|flush}" >&2
    exit 1
    ;;
esac

exit $rc

ve sonra chmod 755'e izin verdi.

chmod 755 /etc/init.d/iptables-persistent

Şimdi mükemmel çalışıyor! Umarım birine yardım edebilir.


2

Ubuntu sunucusunu VM konukları olarak kullanıyorsanız (örn. VirtualBox'da), libvirt etkinleştirilebilir. Öyleyse, libvirt iptables kullanan bazı dahili ağ filtreleri içerir. Bu filtreler, nwfilters'ın güvenlik duvarı bölümünde açıklandığı şekilde yapılandırılabilir .

İptables kurallarını devre dışı bırakmak için, tüm rahatsız edici kuralları libvirt'ten silmeniz ya da kullanmadığınız takdirde libvirt'i devre dışı bırakmanız gerekebilir;

sudo bash -c 'echo "manual" > /etc/init/libvirt-bin.override'


1

Varsayılan olarak hiçbiri yoktur, ancak son debian türevlerinde (Ubuntu dahil) iptables'ı yönetmek için bir servis kurabilirsiniz :

sudo apt install iptables-persistent

Daha sonra önceden kaydedilmiş kuralları yükleyebilirsiniz:

systemctl start netfilter-persistent

Olanları gözden geçir:

systemctl status netfilter-persistent

netfilter-persistent.service - netfilter persistent configuration

       Loaded: loaded (/lib/systemd/system/netfilter-persistent.service; enabled; vendor preset: enabled)
       Active: active (exited) since Sun 2019-03-24 10:49:50 IST; 16min ago
     Main PID: 1674 (code=exited, status=0/SUCCESS)
        Tasks: 0
       Memory: 0B
          CPU: 0
       CGroup: /system.slice/netfilter-persistent.service

Mar 24 10:49:50 ubuntu systemd[1]: Starting netfilter persistent configuration...
Mar 24 10:49:50 ubuntu netfilter-persistent[1674]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start
Mar 24 10:49:50 ubuntu netfilter-persistent[1674]: Warning: skipping IPv4 (no rules to load)
Mar 24 10:49:50 ubuntu netfilter-persistent[1674]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start
Mar 24 10:49:50 ubuntu netfilter-persistent[1674]: Warning: skipping IPv6 (no rules to load)
Mar 24 10:49:50 ubuntu systemd[1]: Started netfilter persistent configuration.
Mar 24 11:02:49 ubuntu systemd[1]: Started netfilter persistent configuration.

Veya hizmeti durdurun:

systemctl stop netfilter-persistent

Hizmeti durdurmak, varsayılan olarak, olacak değil floş iptables (yani güvenlik duvarı devre dışı bırakmaz, bakınız man netfilter-persistent).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.