[CentOS7] Firewalld

Linux/CentOS / / 2015. 3. 17. 21:44
반응형

firewalld

- 방화벽을 관리하기 위한 기본 방법으로 CentOS7에서는 firewalld를 사용한다.

- firewalld는 하위 수준 iptables, ip6tables 및 ebtables명령을 사용하여 Linux 커널 netfilter 하위 시스템을 관리한다.

- firewalld 영역의 기본 구성

영역 이름 

 기본 구성

trusted(변경불가) 

모든 패킷 허용 

block(변경불가)

모든 패킷을 거부(reject)하고 있지만, 내부에서 외부로의 반환 패킷은 허용

drop(변경불가) 

내부로 들어 오는 모든 패킷 폐기(drop), 외부로의 연결만 허용 

dmz 

내부로 들어오는 패킷은 거부(reject), 외부로의 연결 허용, ssh 같은 사전 정의된 서비스는 허용 

external

내부로 들어오는 패킷은 거부(reject), 외부로의 연결 허용, ssh 같은 사전 정의된 서비스는 허용, IP 마스커레이딩 활성화 

internal 

내부로 들어오는 패킷은 거부(reject), 기본적으로 "dhcpv6-client", "ipp-client", "mdns", "samba-client", "ssh"는 허용(시작시 home과 동일) 

home 

내부로 들어오는 패킷은 거부(reject), 기본적으로 "dhcpv6-client", "ipp-client", "mdns", "samba-client", "ssh"는 허용

work

내부로 들어오는 패킷은 거부(reject), 기본적으로 "dhcpv6-client", "ipp-client", "ssh"는 허용

public 

기본 영역, 새롭게 추가된 네트워크 인터페이스의 기본 Zone(영역)으로 사용

내부로 들어오는 패킷은 거부(reject), "ssh"와 "dhcpv6-client"에만 허용 


1. firewalld 설정 도구

1) CLI : firewall-cmd

2) GUI : firewall-config


2. firewall-cmd 사용법

1) firewalld 상태 확인

# firewall-cmd --state

running


2) 지원 가능한 영역(zone) 목록 

# firewall-cmd --get-zones

block dmz drop external home internal public trusted work


3) 지원 가능한 서비스(zone) 목록

# firewall-cmd --get-services 

amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https


4) 지원 가능한 영역(zone) 목록

# firewall-cmd --list-all-zones

block

  interfaces: 

  sources: 

  services: 

  ports: 

  masquerade: no

  forward-ports: 

  icmp-blocks: 

  rich rules: 

dmz

  interfaces: 

  sources: 

  services: ssh

  ports: 

  masquerade: no

  forward-ports: 

  icmp-blocks: 

  rich rules: 

drop

  interfaces: 

  sources: 

  services: 

  ports: 

  masquerade: no

  forward-ports: 

  icmp-blocks: 

  rich rules: 

external

  interfaces: 

  sources: 

  services: ssh

  ports: 

  masquerade: yes

  forward-ports: 

  icmp-blocks: 

  rich rules: 

home

  interfaces: 

  sources: 

  services: dhcpv6-client ipp-client mdns samba-client ssh

  ports: 

  masquerade: no

  forward-ports: 

  icmp-blocks: 

  rich rules: 

internal

  interfaces: 

  sources: 

  services: dhcpv6-client ipp-client mdns samba-client ssh

  ports: 

  masquerade: no

  forward-ports: 

  icmp-blocks: 

  rich rules: 

public (default, active)

  interfaces: eno16777736

  sources: 

  services: dhcpv6-client ssh

  ports: 

  masquerade: no

  forward-ports: 

  icmp-blocks: 

  rich rules: 

trusted

  interfaces: 

  sources: 

  services: 

  ports: 

  masquerade: no

  forward-ports: 

  icmp-blocks: 

  rich rules: 

work

  interfaces: 

  sources: 

  services: dhcpv6-client ipp-client ssh

  ports: 

  masquerade: no

  forward-ports: 

  icmp-blocks: 

  rich rules: 


4) default zone 확인 및 변경

# firewall-cmd --get-default-zone

public


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


3. 예제

1) httpd 및 mod_ssl 패키지 설치

server# yum install httpd mod_ssl


2) httpd.service를 활성화 및 시작

server# systemctl enable httpd.service 

ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service'

server# systemctl start httpd.service
server# echo "hpccloud.tistory.com" > /var/www/html/index.html


3) 기본적으로 모든 패킷이 dmz 영역을 통과하도록 변경

server# firewall-cmd --set-default-zone=dmz

server# firewall-cmd --list-all

dmz (default, active)

  interfaces: eno16777736

  sources: 

  services: ssh    // ssh만 연결 가능

  ports: 

  masquerade: no

  forward-ports: 

  icmp-blocks: 

  rich rules:


4) 192.168.37.0/24의 모든 패킷이 work 영역을 통과하도록 server의 firewalld데몬 구성

server# firewall-cmd --permanent --zone=work --add-source=192.168.37.0/24

server# firewall-cmd --reload

server# firewall-cmd --zone=work --list-all

work

  interfaces: 

  sources: 192.168.37.0/24

  services: dhcpv6-client ipp-client ssh

  ports: 

  masquerade: no

  forward-ports: 

  icmp-blocks: 

  rich rules: 


5) work zone으로 들어오는 https 패킷을 허용

server# firewall-cmd --permanent --zone=work --add-service=https

server# firewall-cmd --reload

server# firewall-cmd --get-active-zones

dmz

  interfaces: eno16777736

work

  sources: 192.168.37.0/24

server# firewall-cmd --zone=work --list-all

work

  interfaces: 

  sources: 192.168.37.0/24

  services: dhcpv6-client https ipp-client ssh

  ports: 

  masquerade: no

  forward-ports: 

  icmp-blocks: 

  rich rules: 


6) 테스트

client# curl http://192.168.37.127/

curl: (7) Failed connect to 192.168.37.127:80; No route to host


client# curl -k https://192.168.37.127/

hpccloud.tistory.com




※ 포트 포워딩(443 to 22)

server# firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=172.25.11.10/32 forward-port port=443 protocol=tcp to-port=22'

server# firewall-cmd --reload


### 클라이언트에서 443으로 접속 시 22번으로 접속됨.

client$ ssh -p 443 server11.example.com

The authenticity of host '[server11.example.com]:443 ([172.25.11.11]:443)' can't be established.
ECDSA key fingerprint is 65:4d:ac:8a:c9:58:82:b5:0c:91:c4:ef:a5:e6:f6:65.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[server11.example.com]:443,[172.25.11.11]:443' (ECDSA) to the list of known hosts.
student@server11.example.com's password:
Last login: Wed Mar 18 09:06:25 2015 from 172.25.11.250
[student@server11 ~]$


반응형

'Linux > CentOS' 카테고리의 다른 글

[CentOS7] SELinux  (0) 2015.03.18
[CentOS7] unbound DNS  (0) 2015.03.17
[CentOS7] Network Bridge  (0) 2015.03.17
[CentOS7] Network Teaming  (0) 2015.03.17
[CentOS7] NFS  (0) 2015.03.17
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기