Linux [CentOS] - (Licmd : Linux Command) 유용한 명령어 모음 (5) - 방화벽 관련(firewall-cmd)

2019. 5. 20. 16:55IT-OS/Linux

반응형

역시 잘 정리되어 있네요.

 

: http://hwangji.kr/sub/dev_leader/link/os/default.aspx?NHBBSID=NHBoardWebTip&NHBBSIDX=77

 

약간 수정해서 정리해서올립니다.

 

방화벽상태확인
firewall-cmd --list-all

포트허용 추가 sample
# firewall-cmd --permanent --zone=public --add-port=8140/tcp
# firewall-cmd --reload


포트허용 제거 sample
# firewall-cmd --permanent --zone=public --remove-port=8140/tcp
# firewall-cmd --reload


포트 포워딩 sample
# firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
# firewall-cmd --reload




firewalld 각종 명령어

출처: 
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html

* 설정하고 나면 리로드해야 변경된 상태를 확인할 수 있다.
firewall-cmd --reload

* firewalld 데몬 시작하기
systemctl start firewalld.service

* firewalld 실행여부 확인하기
firewall-cmd --state

* 디펄트 존 확인하기
firewall-cmd --get-default-zone

* 활성화된 존과 연결된 인터페이스 확인하기
firewall-cmd --get-active-zones

* 디펄트 존의 환경설정 보기 
firewall-cmd --list-all

* 사용가능한 존 목록 확인하기
firewall-cmd --get-zones

* home존의 환경설정 보기
firewall-cmd --zone=home --list-all

* 인터페이스의 존을 변경하기
firewall-cmd --zone=home --change-interface=eth0
or "/etc/sysconfig/network-scripts/"에 있는 ifcfg-eth0와 같은  파일에 ZONE=home과 같이 설정을 추가하면 해당 존으로 인터페이스가 잡힌다.

* 디펄트 존 변경하기
firewall-cmd --set-default-zone=home

* 미리 정의된 서비스 포트 목록 확인하기(정의된 위치: /usr/lib/firewalld/services/) [해당 서비스정의 파일을 복사하여 내용수정하면 다른 정의 파일 생성가능]
firewall-cmd --get-services

* 사용자 존 생성하기
firewall-cmd --permanent --new-zone=publicweb

* 사용자 존 삭제하기
firewall-cmd --permanent --delete-zone=publicweb

***************************************************
Configuring IP Address Masquerading
***************************************************
* external존을 Masquerading 가능상태인지 확인하기
firewall-cmd --zone=external --query-masquerade

* external존을 Masquerading 가능상태로 만들기
firewall-cmd --zone=external --add-masquerade

* external존을 Masquerading 불가능상태로 만들기
firewall-cmd --zone=external --remove-masquerade

* 설정된 포워딩 포트(22)로 들어온 패킷을 특정 IP(192.0.2.55)의 같은 포트로 포워딩하기
firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toaddr=192.0.2.55

* 설정된 포워딩 포트(22)로 들어온 패킷을 특정 IP(192.0.2.55)의 다른 포트(2055)로 포워딩하기
firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.0.2.55


특정 IP만 접근가능하게 하기

[상단 글의 특정 존 확인 기능을 먼저 알아둘 것]

firewall-cmd는 zone별로 구분하여 정책설정을 할 수 있음을 기억할 것

internal존에 해당 IP를 추가하고 public존의 ssh 서비스는 제거해보는 예제

# firewall-cmd --zone=internal --add-service=ssh --permanent

# firewall-cmd --zone=internal --add-source=192.168.1.2/32 --permanent

# firewall-cmd --zone=public --remove-service=ssh --permanent

# firewall-cmd --reload

확인해보기
#firewall-cmd --get-active-zones
#firewall-cmd --info-zone=internal

 

 

방화벽해제

 

samba라는 서비스 방화벽 조건에서 제외

firewall-cmd --permanent --zone=public --add-service=samba

firewall-cmd --reload

 

systemctl stop firewalld

systemctl disable firewalld

출처: https://blog.miyam.net/49 [낭만 프로그래머]

 

 

 

방화벽 설정된 내용은 vi /etc/firewalld/zones/public.xml 에 가면 확인 가능하다.