리눅스 방화벽이란? Firewall
리눅스 방화벽에 대해 알아보겠습니다.
Firewalld는 CentOS7부터 이전의 많이 불편했던 Iptables를 대체해 새롭게 선보인 패킷 필터링 방화벽 프로그램이라고 한다.
Firewall 작동 원리
GUI 모드 배제하겠다. ( firewall-config를 써봤을때 편리하긴 했지만 CLI 모드를 사용하고 있으므로 )
Firewalld 데몬
이러한 명령어들은 Firewalld 란 데몬이 실행된 상태여야 명령어들을 실행하여 적용할 수 있으며, firewald 데몬은 이러한 명령어들로부터 설정 내용을 전달받아 명령어 iptables로 전달한다.
( firewalld 데몬은 systemctl start firewalld 를 통해 서비스를 시작할 수 있으며, 재부팅 할 때마다 계속 서비스를 실행하기 위해서는 systemctl enable firewalld 를 해주면 된다. )
Netfilter
이러한 firewall 관련 명령어가 firewalld 데몬을 통해 iptables로 전달되고 iptables 로 들어오면 리눅스 커널에서 Netfilter 모듈이 확성화되어야 제대로 동작한다. ( default로 활성화되어 있음 )
[ Firewall 패키지 설치 ]
yum -y install firewall-config / 설치
rpm -qa | grep firewall / 사람마다 다르게 뜰거임.
# yum -y install firewalld firewall-config
.. ( 설치 진행 )
# rpm -qa | grep firewall
firewall-config-0.6.3-2.el7_7.4.noarch
python-firewall-0.6.3-2.el7_7.4.noarch
firewalld-0.6.3-2.el7_7.4.noarch
firewalld-filesystem-0.6.3-2.el7_7.4.noarch
[ Firewalld 서비스 (데몬) 시작 . 실행 . 확인]
- systemctl restart firewalld / firewalld 데몬을 실행
- systemctl enable firewalld / firewalld 데몬이 재부팅 후에도 자동으로 시작되도록 설정
- systemctl status firewalld / firewalld 데몬 상태 확인
- ps -ef | grep firewalld
[root@localhost ~]# systemctl restart firewalld
[root@localhost ~]# systemctl enable firewalld
[root@localhost ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2020-03-21 08:38:10 PDT; 25s ago
Docs: man:firewalld(1)
Main PID: 1555 (firewalld)
CGroup: /system.slice/firewalld.service
└─1555 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
Mar 21 08:38:10 localhost.localdomain systemd[1]: Stopped firewalld - dynamic firewall d...n.
Mar 21 08:38:10 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall .....
Mar 21 08:38:10 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall d...n.
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]# ps -ef | grep firewalld
root 1555 1 0 08:38 ? 00:00:00 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
root 1692 1330 0 08:40 pts/0 00:00:00 grep --color=auto firewalld
[ Firewalld 정보 확인 ]
- firewall-cmd --list-all
services : default로 dhcpv6-client 와 ssh 가 허용되어 있는 것을 볼 수 있다.
ports : 22/tcp는 필자가 예전에 포트를 추가한 것이다. ( 그냥 해봄 )
처음이라면 아무것도 없어야 정상이다.
[ firewall 포트 추가, 해제, 설정 적용 ]
- firewall-cmd --permanent --zone=public --add-port=포트번호/tcp
( UDP 의 경우에는 tcp 말고 udp 라고 기입해야 한다. )
- firewall-cmd --permanent --remove-port=포트번호/tcp
- firewall-cmd --reload
firewall 설정 후 reload 하지 않으면 적용이 안된다. 꼭 해주어야 함
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp
success
[root@localhost ~]# firewall-cmd --permanent --remove-port=80/tcp
success
[root@localhost ~]# firewall-cmd --reload
success
[ 모든 서비스에 대해 특정 IP 허용 ]
- firewall-cmd --permanent --add-source=IP주소
[root@localhost ~]# firewall-cmd --permanent --add-source=IP주소
[ 간단한 firewalld 설정 ]
DNS 포트인 53번을 열어주었고, reload를 통해 설정 후 적용을 해주었다.
확인하기 위하여 firewall-cmd --list-all을 하였다.
( 부록 : firewall-cmd --state 로 작동 되는지 간단히 확인.. ㅎ )
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=53/tcp
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: dhcpv6-client ssh
ports: 22/tcp 53/tcp # 추가 된 것을 확인할 수 있다.
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@localhost ~]# firewall-cmd --state
running
[ 자주 사용하는 서비스 포트 번호 목록 ]
암기해두면 인생 살아가는데 많은 도움이 되니 암기해두자.
'OS,Network,Container' 카테고리의 다른 글
CentOS7 RAID 5 구성, parted (9) | 2020.04.16 |
---|---|
리눅스 tar 아카이브란? tar 개념, 실습 (2) | 2020.04.15 |
CentOS7 RAID1 구성, RAID 개념 (0) | 2020.04.15 |
CentOS7 설치 후 네트워크 설정 (1) | 2020.04.14 |
CentOS7 네트워크 본딩 이중화 구성 설정하기 (0) | 2020.04.14 |