CentOS 7 의 경우 iptables 대신 netfilter 를 기본 방화벽으로 사용합니다. 이러한 netfilter 의 관리 프로그램이 firewalld 서비스 입니다.

 

#systemctl start firewalld
#systemctl enable firewalld

 

설치 후 기본적으로 존재하는 zone의 경우 다음과 같습니다.

 

#firewall-cmd --get-zones
block dmz drop external home internal public trusted work

 

여기서 zone은 AWS 의 보안그룹과 같은 역할을 한다고 볼 수 있습니다. 즉, 방화벽 설정 등을 묶어 놓은 후 상황에 따라 교체하며 설정을 일괄 적용할 수 있습니다. 현재 적용되고 있는 zone 은 아래와 같이 확인할 수 있습니다.

 

#firewall-cmd --get-default-zone
public

 

1. SSH 방화벽 설정

 

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

 

vi /etc/firewalld/services/ssh.xml

 

<port protocol="tcp" port="포트번호"/>

 

기본 포트 이외의 포트를 사용한다면 해당 포트를 지정한 후, 방화벽 설정을 동적으로 반영합니다.

 

#firewall-cmd --reload

 

/usr/lib/firewalld/services 에 존재하는 기본 방화벽 설정들은 다음과 같습니다.

 

RH-Satellite-6.xml ceph.xml elasticsearch.xml http.xml kadmin.xml managesieve.xml nfs3.xml pmwebapis.xml redis.xml smtps.xml telnet.xml xmpp-client.xml amanda-client.xml cfengine.xml freeipa-ldap.xml https.xml kerberos.xml mdns.xml nmea-0183.xml pop3.xml rpc-bind.xml snmp.xml tftp-client.xml xmpp-local.xml amanda-k5-client.xml condor-collector.xml freeipa-ldaps.xml imap.xml kibana.xml minidlna.xml nrpe.xml pop3s.xml rsh.xml snmptrap.xml tftp.xml xmpp-server.xml bacula-client.xml ctdb.xml freeipa-replication.xml imaps.xml klogin.xml mongodb.xml ntp.xml postgresql.xml rsyncd.xml spideroak-lansync.xml tinc.xml zabbix-agent.xml bacula.xml dhcp.xml freeipa-trust.xml ipp-client.xml kpasswd.xml mosh.xml openvpn.xml privoxy.xml samba-client.xml squid.xml tor-socks.xml zabbix-server.xml bgp.xml dhcpv6-client.xml ftp.xml ipp.xml kprop.xml mountd.xml ovirt-imageio.xml proxy-dhcp.xml samba.xml ssh.xml transmission-client.xml bitcoin-rpc.xml dhcpv6.xml ganglia-client.xml ipsec.xml kshell.xml ms-wbt.xml ovirt-storageconsole.xml ptp.xml sane.xml syncthing-gui.xml upnp-client.xml bitcoin-testnet-rpc.xml dns.xml ganglia-master.xml irc.xml ldap.xml mssql.xml ovirt-vmconsole.xml pulseaudio.xml sip.xml syncthing.xml vdsm.xml bitcoin-testnet.xml docker-registry.xml git.xml ircs.xml ldaps.xml murmur.xml pmcd.xml puppetmaster.xml sips.xml synergy.xml vnc-server.xml bitcoin.xml docker-swarm.xml gre.xml iscsi-target.xml libvirt-tls.xml mysql.xml pmproxy.xml quassel.xml smtp-submission.xml syslog-tls.xml wbem-https.xml ceph-mon.xml dropbox-lansync.xml high-availability.xml jenkins.xml libvirt.xml nfs.xml pmwebapi.xml radius.xml smtp.xml syslog.xml xmpp-bosh.xml

 

2. 설정 추가

 

--permanent 옵션을 사용하면, /etc/firewalld/zones 디렉토리 아래 현재 존의 설정 파일에 관련 내용이 추가됩니다. 옵션을 생략하면 일시적으로 관련 설정을 적용하고 재부팅 또는 firewalld 재실행시 관련 설정들은 초기화됩니다. 즉, 설정이 유지되기를 원한다면 --permanent 옵션을 지정하여야합니다.

 

#firewall-cmd --permanent --add-service=http
#firewall-cmd --permanent --add-service=https

 

이때 --permananet 옵션을 지정한 경우에는 firewall-cmd --reload 를 실행하여야만 설정이 반영되며, 옵션을 제외할 경우 임시로 즉시 반영됩니다.

 

 

3. 설정 삭제

 

#firewall-cmd --permanent --remove-service=http

 

4. 임의의 포트 추가

 

#firewall-cmd --permanent --add-port=65000-65535/tcp

 

5. 서비스 설정 추가

 

vi /etc/firewalld/services/pptp.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>PPTP</short>
  <description>pptp port.</description>
  <port protocol="tcp" port="1723"/>
</service>

 

해당 설정을 적용합니다.

 

#firewall-cmd --permanent --add-service=pptp
#firewall-cmd --reload

 

 

6. 설정 확인

 

#firewall-cmd --list-all

 

 

7. 모든 접속을 허용하고 싶을때

 

방화벽을 내리지 않고, zone 을 trusted 로 변경합니다.

#firewall-cmd --set-default-zone=trusted

 

 

 

+ Recent posts