리눅스 서버를 설치하고 나서 보안을 위해서는 방화벽 설치가 필수 입니다.
IDC 서버를 사용하고 있다면 해당 회사에서 제공하는 추가 방화벽을 통해 해외 IP, 검색엔진 차단과 같은 부분도 같이 차단 해 주면 좋습니다.
디 도스 공격이나 IP 차단 방법은 별도의 서비스이므로 사이트가 커지면 보안 수준을 높히는 게 필요합니다.
방화벽 설치하고 포트는 왜 열어줘야 하는 거예요?
자, 이제 중요한 질문! 우리가 방화벽을 설치했는데, 왜 굳이 포트라는 걸 열어줘야 할까요? 쉽게 말하면, 방화벽은 우리 서버로 들어오는 모든 길을 꽉 막아 놓는 건데, 우리가 필요한 특정 서비스는 그 길을 통해서 외부와 통신해야 하거든요. 마치 택배를 받으려면 현관문을 열어줘야 하는 것처럼요!
리눅스 시스템의 똑똑한 방화벽 기능 중에 firewalld라는 게 있는데, 얘는 우리 서버로 들어오고 나가는 네트워크 신호들을 꼼꼼하게 검사해서 우리가 정해 놓은 규칙대로 통과시키거나 막아주는 역할을 해요.
컴퓨터 네트워크에서는 대부분 특정한 포트 번호를 사용해서 서로 이야기를 주고받아요. 그래서 우리가 어떤 서비스를 이용하고 싶다면, 그 서비스가 사용하는 포트를 방화벽에게 "이 포트로 들어오는 연결은 괜찮아!"라고 허락해 줘야 하는 거죠. 필요 없는 포트는 닫아두는 게 당연히 보안에 좋고요!
예를 들어, 우리가 웹사이트를 운영한다면 80번 포트(일반 웹사이트)랑 443번 포트(보안이 중요한 웹사이트)를 열어줘야 사람들이 우리 사이트에 접속할 수 있어요.
파일을 주고받는 FTP라는 기능을 쓰려면 보통 21번 포트를 사용하고, 서버에 안전하게 접속하는 SSH는 22번 포트를 쓰는데, SSH 포트는 보안을 위해서 다른 번호로 바꿔서 사용하는 경우도 많아요.
만약 우리가 고정 IP 주소를 가지고 있다면, 특정 IP 주소에서만 우리 서버에 접속하도록 허용하는 방법도 아주 좋은 보안 방법이 될 수 있어요! 마치 우리 집 비밀번호를 아는 사람만 들어올 수 있게 하는 것과 같은 거죠.
방화벽 설치 여부 확인
# rpm -qa | grep firewall
firewalld-0.9.11-9.el8_10.noarch
python3-firewall-0.9.11-9.el8_10.noarch
firewalld-filesystem-0.9.11-9.el8_10.noarch
업데이트가 필요하다면 실행한다.
# dnf update firewalld
Firewall 패키지가 없으면 설치한다
# dnf install -y firewalld
부팅시 자동실행
# systemctl enable firewalld
부팅시 자동실행 해제
# systemctl disable firewalld
방화벽 실행
# systemctl start firewalld
실행 여부 확인
# ps -ef | grep firewalld
실행 종료
# systemctl stop firewalld
추가된 룰을 적용
# firewall-cmd --reload
서비스 이름으로 방화벽 허용한다.
# firewall-cmd --get-services
등록된 규칙을 확인한다.
# firewall-cmd --list-all
특정 포트 허용 제거
# firewall-cmd --permanent --add-port=80/tcp # firewall-cmd --permanent --remove-port=80/tcp
현재 운영 중인 관계로 보안을 위해 결과 값은 표시하지 않았습니다.
실수 입력을 방지하기 위해 명령어 앞에는 샾 #을 두었으므로 제거 후 사용하세요.