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
'서버 > 리눅스' 카테고리의 다른 글
CentOS 7 SELinux 사용 (0) | 2020.03.04 |
---|---|
CentOS 7, fail2ban 설정 (0) | 2019.06.04 |
간단한 보안 검사하기 (0) | 2019.05.30 |
CentOS7, 아마존 리눅스 Let's Encrypt 무료 인증서 사용하기 (0) | 2018.06.18 |
CentOS7, nginx, php-fpm 환경에서 버전별 PHP 사용하기 (0) | 2018.05.20 |
댓글