Android

Centos 7'de Firewalld ile bir güvenlik duvarı nasıl kurulur

Установка и настройка CentOS в VirtualBox

Установка и настройка CentOS в VirtualBox

İçindekiler:

Anonim

Düzgün yapılandırılmış bir güvenlik duvarı, genel sistem güvenliğinin en önemli yönlerinden biridir.

FirewallD, sistemin iptables kurallarını yöneten ve bunlarda çalışmak için bir D-Bus arabirimi sağlayan eksiksiz bir güvenlik duvarı çözümüdür. CentOS 7 ile başlayarak, FirewallD iptables'ı varsayılan güvenlik duvarı yönetim aracı olarak değiştirir.

Bu öğreticide, CentOS 7 sisteminizde Güvenlik Duvarı ile bir güvenlik duvarı ayarlamayı ve temel Güvenlik DuvarıD kavramlarını nasıl açıklayacağımızı göstereceğiz.

Ön şartlar

Bu eğiticiye başlamadan önce, sunucunuza sudo ayrıcalıklarına sahip bir kullanıcı hesabıyla veya kök kullanıcıyla oturum açtığınızdan emin olun. En iyi uygulama, yönetici komutlarını root yerine sudo kullanıcısı olarak çalıştırmaktır. CentOS sisteminizde sudo kullanıcısı yoksa, bu talimatları izleyerek bir kullanıcı oluşturabilirsiniz.

Temel Firewalld Kavramları

FirewallD, iptables zinciri ve kuralları yerine bölge ve hizmet kavramlarını kullanır. Yapılandıracağınız bölgelere ve hizmetlere bağlı olarak, sisteme gelen ve sistemden gelen trafiğe izin verilip verilmeyeceğini kontrol edebilirsiniz.

FirewallD, firewall-cmd komut satırı yardımcı programı kullanılarak yapılandırılabilir ve yönetilebilir.

Firewalld Bölgeleri

Bölgeler, bilgisayarınızın bağlı olduğu ağlardaki güven düzeyine göre hangi trafiğe izin verileceğini belirleyen önceden tanımlanmış kural kümeleridir. Bir bölgeye ağ arabirimleri ve kaynakları atayabilirsiniz.

Aşağıda, FirewallD tarafından sağlanan, güvenilmeyenden güvenilene kadar olan bölgenin güven düzeyine göre sıralanan bölgeler verilmiştir:

  • drop: Gelen tüm bağlantılar herhangi bir bildirim yapılmadan bırakılır. Yalnızca giden bağlantılara izin verilir. engelle: Tüm gelen bağlantılar IPv4 için icmp-host-prohibited mesajla ve icmp6-adm-prohibited için icmp6-adm-prohibited mesajla reddedilir. Yalnızca giden bağlantılara izin verilir. public: Güvenilmeyen genel alanlarda kullanım için. Ağdaki diğer bilgisayarlara güvenmezsiniz, ancak seçilen gelen bağlantılara izin verebilirsiniz. external: Sisteminiz bir ağ geçidi veya yönlendirici gibi davrandığında NAT maskeli etkin dış ağlarda kullanım için. Yalnızca seçilen gelen bağlantılara izin verilir. internal: Sisteminiz bir ağ geçidi veya yönlendirici gibi davrandığında dahili ağlarda kullanım için. Ağdaki diğer sistemlere genellikle güvenilir. Yalnızca seçilen gelen bağlantılara izin verilir. dmz: Askersizleştirilmiş bölgenizde bulunan ve ağınızın geri kalanına sınırlı erişimi olan bilgisayarlar için kullanılır. Yalnızca seçilen gelen bağlantılara izin verilir. : İş makineleri için kullanılır. Ağdaki diğer bilgisayarlara genellikle güvenilir. Yalnızca seçilen gelen bağlantılara izin verilir. ev: Ev makineleri için kullanılır. Ağdaki diğer bilgisayarlara genellikle güvenilir. Yalnızca seçilen gelen bağlantılara izin verilir. güvenilir: Tüm ağ bağlantıları kabul edilir. Ağdaki tüm bilgisayarlara güvenin.

Güvenlik duvarı hizmetleri

Firewalld hizmetleri, bir bölge içinde geçerli olan ve belirli bir hizmet için gelen trafiğe izin vermek üzere gerekli ayarları tanımlayan önceden tanımlanmış kurallardır.

Firewalld Çalışma Zamanı ve Kalıcı Ayarlar

Firewalld iki ayrı yapılandırma kümesi kullanır: çalışma zamanı ve kalıcı yapılandırma.

Çalışma zamanı yapılandırması gerçek çalışan yapılandırmadır ve yeniden başlatmalarda kalıcı değildir. Firewalld hizmeti başladığında, çalışma zamanı yapılandırması haline gelen kalıcı yapılandırmayı yükler.

Varsayılan olarak, firewall-cmd yardımcı programını kullanarak Firewalld yapılandırmasında değişiklik yaparken, değişiklikler çalışma zamanı yapılandırmasına uygulanır. Değişiklikleri kalıcı hale getirmek için --permanent seçeneğini kullanmanız gerekir.

Güvenlik Duvarını Kurma ve EtkinleştirmeD

  1. Firewalld, CentOS 7'ye varsayılan olarak yüklenir, ancak sisteminizde yüklü değilse paketi yazarak yükleyebilirsiniz:

    sudo yum install firewalld

    Firewalld hizmeti varsayılan olarak devre dışıdır. Güvenlik duvarı durumunu aşağıdakilerle kontrol edebilirsiniz:

    sudo firewall-cmd --state

    FirewallD hizmetini başlatmak ve önyükleme türünde etkinleştirmek için:

    sudo systemctl start firewalld sudo systemctl enable firewalld

Ateşli Bölgelerle Çalışma

FirewallD hizmetini ilk kez etkinleştirdikten sonra, public bölge varsayılan bölge olarak ayarlanır. Varsayılan bölgeyi aşağıdakileri yazarak görüntüleyebilirsiniz:

sudo firewall-cmd --get-default-zone

public

Mevcut tüm bölgelerin bir listesini almak için şunu yazın:

sudo firewall-cmd --get-zones

block dmz drop external home internal public trusted work

Varsayılan olarak, tüm ağ arabirimlerine varsayılan bölge atanır. Ağ arayüz (ler) iniz tarafından hangi bölgelerin kullanıldığını kontrol etmek için:

sudo firewall-cmd --get-active-zones

public interfaces: eth0 eth1

Yukarıdaki çıktı bize her iki eth0 ve eth1 arabiriminin ortak bölgeye atandığını söyler.

Bölge yapılandırma ayarlarını aşağıdakilerle yazdırabilirsiniz:

sudo firewall-cmd --zone=public --list-all

public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

Yukarıdaki çıktıdan, ortak bölgenin aktif olduğunu ve hem eth0 hem de eth1 arayüzleri tarafından kullanılan varsayılan olarak ayarlandığını görebiliriz. Ayrıca, DHCP istemcisi ve SSH ile ilgili bağlantılara izin verilir.

sudo firewall-cmd --list-all-zones

Komut, kullanılabilir tüm bölgenin ayarlarıyla büyük bir liste yazdırır.

Bir Arayüz Bölgesini Değiştirme

Arabirim Bölgesi'ni, --change-interface seçeneğiyle birlikte --zone seçeneğini kullanarak kolayca değiştirebilirsiniz. Aşağıdaki komut eth1 arabirimini çalışma bölgesine atayacaktır:

sudo firewall-cmd --zone=work --change-interface=eth1

Değişiklikleri şunu yazarak doğrulayın:

sudo firewall-cmd --get-active-zones

work interfaces: eth1 public interfaces: eth0

Varsayılan Bölgeyi Değiştirme

Varsayılan bölgeyi değiştirmek için, --set-default-zone seçeneğini ve ardından varsayılan yapmak istediğiniz bölgenin adını kullanın.

Örneğin, varsayılan bölgeyi ev olarak değiştirmek için aşağıdaki komutu çalıştırmalısınız:

sudo firewall-cmd --set-default-zone=home

Değişiklikleri aşağıdakilerle doğrulayın:

sudo firewall-cmd --get-default-zone

home

Liman veya Hizmet Açma

FirewallD ile hizmetler adı verilen önceden tanımlanmış kurallara dayalı olarak belirli bağlantı noktaları için trafiğe izin verebilirsiniz.

Varsayılan tüm kullanılabilir hizmetlerin bir listesini almak için:

sudo firewall-cmd --get-services

/usr/lib/firewalld/services dizininde ilişkili.xml dosyasını açarak her hizmet hakkında daha fazla bilgi bulabilirsiniz. Örneğin, HTTP hizmeti şu şekilde tanımlanır:

/usr/lib/firewalld/services/http.xml

WWW (HTTP) HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages. WWW (HTTP) HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.

Genel bölgedeki arabirimler için gelen HTTP trafiğine (bağlantı noktası 80) yalnızca geçerli oturum (çalışma zamanı yapılandırması) türü için izin vermek için:

sudo firewall-cmd --zone=public --add-service=http Varsayılan bölgeyi değiştiriyorsanız --zone seçeneğini --zone .

Hizmetin başarıyla eklendiğini doğrulamak için --list-services seçeneğini kullanın:

sudo firewall-cmd --zone=public --list-services

ssh dhcpv6-client

sudo firewall-cmd --permanent --zone=public --add-service=http

Değişikliklerinizi doğrulamak için --permanent seçeneğiyle birlikte --list-services kullanın:

sudo firewall-cmd --permanent --zone=public --list-services

ssh dhcpv6-client

Hizmeti kaldırmak için kullanılan sözdizimi, bir hizmet eklerken kullanılanla aynıdır. --remove-service --add-service seçeneği yerine --remove-service kullanın:

sudo firewall-cmd --zone=public --remove-service=http --permanent

Yukarıdaki komut http hizmetini ortak bölge kalıcı yapılandırmasından kaldırır.

Uygun hizmeti bulunmayan Plex Media Server gibi bir uygulama çalıştırıyorsanız ne olur?

Bu gibi durumlarda iki seçeneğiniz vardır. Uygun bağlantı noktalarını açabilir veya yeni bir FirewallD hizmeti tanımlayabilirsiniz.

Örneğin, Plex Server 32400 numaralı bağlantı noktasını dinler ve TCP'yi kullanır, geçerli oturum için genel bölgedeki bağlantı noktasını açmak için --add-port= seçeneğini kullanın:

sudo firewall-cmd --zone=public --add-port=32400/tcp Protokoller tcp veya udp .

Bağlantı noktasının başarıyla eklendiğini doğrulamak için --list-ports seçeneğini kullanın:

sudo firewall-cmd --zone=public --list-ports

32400/tcp

Yeniden başlatma sonrasında 32400 bağlantı noktasını açık tutmak için, --permanent seçeneğini kullanarak aynı komutu çalıştırarak kuralı kalıcı ayarlara ekleyin.

Bir bağlantı noktasını kaldırma sözdizimi, bir bağlantı noktası eklerken kullanılanla aynıdır. --remove-port --add-port seçeneği yerine --remove-port kullanın.

sudo firewall-cmd --zone=public --remove-port=32400/tcp

Yeni bir FirewallD Hizmeti oluşturma

Daha önce de belirttiğimiz gibi, varsayılan hizmetler /usr/lib/firewalld/services dizininde saklanır. Yeni bir hizmet oluşturmanın en kolay yolu, varolan bir hizmet dosyasını kullanıcı tarafından oluşturulan hizmetlerin konumu olan /etc/firewalld/services dizinine kopyalamak ve dosya ayarlarını değiştirmektir.

Örneğin, Plex Media Server için bir hizmet tanımı oluşturmak için SSH hizmet dosyasını kullanabiliriz:

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml

Yeni oluşturulan plexmediaserver.xml dosyasını açın ve içindeki hizmetin kısa adını ve açıklamasını ve etiketleri. Değiştirmeniz gereken en önemli etiket, açmak istediğiniz bağlantı noktası numarasını ve protokolü tanımlayan port etiketidir.

Aşağıdaki örnekte, 1900 UDP ve 32400 TCP bağlantı noktalarını açıyoruz.

/etc/firewalld/services/plexmediaserver.xml

plexmediaserver Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere. plexmediaserver Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere.

Dosyayı kaydedin ve FirewallD hizmetini yeniden yükleyin:

sudo firewall-cmd --reload

Artık plexmediaserver hizmetini diğer servislerle aynı şekilde kullanabilirsiniz.

Firewalld ile Yönlendirme Limanı

Trafiği bir porttan başka bir porta veya adrese iletmek için, önce --add-masquerade anahtarını kullanarak istenen bölge için maskelemeyi etkinleştirin. Örneğin, external bölge türü için maskelemeyi etkinleştirmek için:

sudo firewall-cmd --zone=external --add-masquerade

  • Aynı sunucudaki bir bağlantı noktasından diğerine trafik iletme

Aşağıdaki örnekte, trafiği aynı sunucudaki 80 numaralı bağlantı noktasından 8080 numaralı bağlantı noktasına yönlendiriyoruz:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080

  • Trafiği başka bir sunucuya iletme

Aşağıdaki örnekte trafiği IP 10.10.10.2 olan bir sunucuda 80 numaralı bağlantı noktasından 80 numaralı bağlantı noktasına yönlendiriyoruz:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2

  • Trafiği farklı bir bağlantı noktasındaki başka bir sunucuya iletme

Aşağıdaki örnekte trafiği IP 10.10.10.2 olan bir sunucuda 80 numaralı bağlantı noktasından 8080 numaralı bağlantı noktasına yönlendiriyoruz:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2

FirewallD ile Kural Kümesi Oluşturma

Aşağıdaki örnekte, bir web sunucusu çalıştırıyorsanız güvenlik duvarınızı nasıl yapılandıracağınızı göstereceğiz. Sunucunuzun yalnızca bir arabirimi eth0 ve yalnızca SSH, HTTP ve HTTPS bağlantı noktalarında gelen trafiğe izin vermek istediğinizi varsayıyoruz.

  1. Varsayılan bölgeyi dmz olarak değiştirin

    Dmz (askersizleştirilmiş) bölgesini kullanacağız, çünkü varsayılan olarak yalnızca SSH trafiğine izin verir. Varsayılan bölgeyi dmz olarak değiştirmek ve eth0 arabirimine atamak için aşağıdaki komutları çalıştırın:

    sudo firewall-cmd --set-default-zone=dmz sudo firewall-cmd --zone=dmz --add-interface=eth0

    HTTP ve HTTPS bağlantı noktalarını açın:

    HTTP ve HTTPS bağlantı noktalarını açmak için dmz bölgesine kalıcı hizmet kuralları ekleyin:

    sudo firewall-cmd --permanent --zone=dmz --add-service=http sudo firewall-cmd --permanent --zone=dmz --add-service=https

    Güvenlik duvarını yeniden yükleyerek değişiklikleri hemen etkin hale getirin:

    sudo firewall-cmd --reload

    Değişiklikleri doğrulayın

    Dmz bölgesi yapılandırma ayarlarını kontrol etmek için:

    sudo firewall-cmd --zone=dmz --list-all

    dmz (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: ssh http https ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

    Yukarıdaki çıktı, dmz'nin varsayılan bölge olduğunu, eth0 arabirimine uygulandığını ve ssh (22) http (80) ve https (443) bağlantı noktalarının açık olduğunu gösterir.

Sonuç

CentOS sisteminizde FirewallD hizmetini nasıl yapılandıracağınızı ve yöneteceğinizi öğrendiniz.

Tüm gereksiz bağlantıları sınırlarken, sisteminizin düzgün çalışması için gerekli olan tüm gelen bağlantılara izin verdiğinizden emin olun.

firewalld güvenlik duvarı iptables centos güvenlik