77[CentOS] 7으로 버전업된 방화벽관리(firewall-cmd)Admin
출처: http://xmodulo.com/install-puppet-server-client-centos-rhel.html

centos7으로 업데이트 되면서 iptables이 사라져서 번거롭게 되었다.

이젠 명령어 하나라도 외우기 싫어지고 있다.  그냥 그런 기능을 하는 명령어가 있다는 것만 외우는 것이 좋은 세상임.  나머진 검색^^


방화벽상태확인
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


Re[CentOS] 7으로 버전업되면서 달라진 것Admin
출처: https://www.certdepot.net/rhel7-rc-local-service/

1. 기본설정상태에서 rc.local이 자동 실행되지 않는다.
-- 해결법
# chmod u+x /etc/rc.d/rc.local
# systemctl start rc-local


2. 'ifconfig'가 없다T_T
--해결법(설치해도 되지만...)
'ip addr'로 대체

3. 'netstat'이 없다T_T
--해결법(설치해도 되지만...)
'ss'로 대체


Refirewalld 각종 명령어Admin
출처: 
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



Re특정 IP만 접근가능하게 하기Admin
[상단 글의 특정 존 확인 기능을 먼저 알아둘 것]

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