본문 바로가기

서버작업

1. 리눅스 centOS7 방화벽 설정 firewall-cmd

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

 

 

 

참고사이트

https://uxgjs.tistory.com/162

 

 

반응형