CentOS6까지는 iptables를 이용해 방화벽 설정
CentOS7부터는 firewalld를 사용해 방화벽 설정
이를 위해 리눅스 OS 버전 확인
$ sudo cat /etc/*release*
1. Firewall 상태 확인하기
현재 firewall이 구동되고 있는지 죽어있는지 먼저 확인
$ firewall-cmd --state
현재 실행 중이면 running, 실행 중이 아니면 not running 을 출력합니다.
2. 시스템(CentOS) firewall 설치
보통 리눅스도 기본적으로 Firewall은 설치가 되서 나오기는 하지만 간혹 설치가 되어있지 않은 경우도 있습니다.
이럴때 firewall을 설치하는 방법
yum을 이용하여 firewall을 설치
$ sudo yum install firewalld
매번 서버 부팅/재부팅 시 자동으로 firewall 데몬(firewalld)이 실행되게 함(enable)
$ sudo systemctl enable firewalld
$ sudo systemctl start firewalld
firewall을 설치하고 실행하면 기본적으로 모든 들어오고 나가는 것에 대해 막습니다. 그래서 설치 후에 내가 원하는 서비스나 port는 통과될 수 있게 열어줘야 합니다. 물론 모두 개방해 놓고 원하는 것만 막을 수도 있긴한데 그것은 firewall의 취지와 역행하는 것이라 추천하지 않습니다.
3. 서비스로 방화벽 해제 하기
일단 방화벽이 다 막고 있다는 가정하에 원하는 서비스에 대해 해제하는 방법입니다. http, https 서비스에 대해서….
추가(해제) 하기(접근허용)
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
제거하기
$ sudo firewall-cmd --permanent --remove-service=http
$ sudo firewall-cmd --permanent --remove-service=http
-sudo : 관리자 권한으로 실행해라
-firewall-cmd : firewall cli명령어
--permanent : 영구적으로 실행해라 (default zone에 등록됩니다.)
--add-service : 해당 서비스를 추가해라
--remove-service : 해당 서비스를 삭제해라
4. 특정 port로 방화벽 해제하기
80 , 81 , 82 번 포트에 대해서….
추가(해제) 하기(접근허용)
$ sudo firewall-cmd --permanent --add-port=80/tcp
$ sudo firewall-cmd --permanent --add-port=81/tcp
$ sudo firewall-cmd --permanent --add-port=82/tcp
제거
$ sudo firewall-cmd --permanent --add-remove=80/tcp
$ sudo firewall-cmd --permanent --add-remove=81/tcp
$ sudo firewall-cmd --permanent --add-remove=82/tcp
$ sudo firewall-cmd --permanent --remove-port=82/tcp
5. port 구간으로 방화벽 해제하기
6000 ~ 9000 번 포트에 대해서….
추가(해제) 하기(접근허용)
$ sudo firewall-cmd --permanent --add-port=6000-9000/tcp
제거하기
$ sudo firewall-cmd --permanent --remove-port=6000-9000/tcp
6. 특정 IP에 대해 방화벽 해제하기
특정 IP에 대해서 해당 서버에 접근하는 것을 허용하는 방법입니다. 192.168.0.100 에 대해서….
추가(해제) 하기(접근허용)
$ sudo firewall-cmd --permanent --add-source=192.168.0.100
제거하기
$ sudo firewall-cmd --permanent --remove-source=192.168.0.100
7. IP대역에 대해 방화벽 해제하기
특정 IP대역에 대해서 해당 서버에 접근하는 것을 허용하는 방법입니 다. 192.168.0.0/255.255.255.0 에 대해서….
추가(해제) 하기(접근허용)
$ sudo firewall-cmd --permanent --add-source=192.168.0.0/24
제거하기
$ sudo firewall-cmd --permanent --remove-source=192.168.0.0/24
8. 특정 IP에 대해 접근 못하게 하기
이번에는 특정 IP에 대해서 해당 서버에 접근하지 못하게하는 방법입니다. 192.168.0.100 에 대해서….
추가하기(접근불가)
$ sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address=19
2.168.0.100 reject' #--> 피드백 보내줌
$ sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address=19
2.168.0.100 drop' #--> 피드백 없음
제거하기
$ sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address=
192.168.0.100 reject '#--> 피드백 보내줌
$ sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address=1
92.168.0.100 drop' #--> 피드백 없음
9. 특정 IP에 대해 특정 Port에 접근하게 하기
이번에는 특정 IP에 대해서 특정 Port에만 접근하게 하는 방법입니다. 192.168.0.100 가 8000 포트에 대해서 접근을….
추가(해제) 하기(접근허용)
$ sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address=19
2.168.0.100 port port="8000" protocol="tcp" accept'
제거하기
$ sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address=
192.168.0.100 port port="8000" protocol="tcp" accept'
10. IP대역에 대해 특정 Port에 접근하게 하기
이번에는 IP대역에 대해서 특정 Port에만 접근하게 하는 방법입니 다. 192.168.0.0/255.255.255.0 가 8000 포트에 대해서 접근을….
추가(해제) 하기(접근허용)
$ sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address=19
2.168.0.0/24 port port="8000" protocol="tcp" accept'
제거하기
$ sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address=
192.168.0.0/24 port port="8000" protocol="tcp" accept'
💡 변경된 firewall 구성을 적용하기
해당 firewall을 설정했으면 반드시 리로딩을 해주어야 반영 필수!
$ sudo firewall-cmd --reload
💡 현재 방화벽 리스트 보기
이제 현재 등록되어 있는 방화벽 리스트를 보고 원하는데로 등록이 되었는지 확인
$ firewall-cmd --list-all
아래와 같이 현재 등록되어 있는 리스트가 보여짐
public (default)
interfaces:
sources: 192.168.2.100 192.168.0.0/24
services: dhcpv6-client ssh
ports: 80/tcp 6000-9000/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="192.168.0.100"
rule family="ipv4" source address="192.168.5.100" reject
rule family="ipv4" source address="192.168.10.101" port port="80" protocol="tcp" accept
참고사이트