becool

20210429 (목) 본문

linux

20210429 (목)

gusalstm 2021. 4. 29. 16:50
반응형

9:33 review

 

 

[root@host1 ~]# timedatectl set-ntp true
[root@host1 ~]# timedatectl status
      Local time: Thu 2021-04-29 10:18:48 KST
  Universal time: Thu 2021-04-29 01:18:48 UTC
        RTC time: Thu 2021-04-29 01:18:49
       Time zone: Asia/Seoul (KST, +0900)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

 

========

 

방화벽

 

firewalld

 비인가된 접근을 차단하는 장비/소프트웨어

 네트워크 상에서 인가되지 않은 접근 시도를 차단함.

 지정(허가)된 서비스/포트만 접근을 허용

 

ipchain

iptables

firewalld

 

firewalld

 -CentOS7 에서 사용하는 기본 방화벽 서비스

 -XML 형태로 구성파일 보관

 -Predefined Zone 으로 방화벽을 관리함.

 

 

Predefine zone (사전 정의된 영역)

영역이름 기본 구성
block 나가는 트래픽과 관련되지 않은 경우에 모든 트래픽 거부 (reject) / 변경불가
dmz 내부로 들어오는 패킷 거부(reject), 외부로 연결, ssh 서비스는 허용
drop 내부로 들어오는 모든 패킷을 폐기(drop), 외부로의 연결만 허용 (ICMP 오류에도 대응하지 않음)
external 내부로 들어오는 패킷 거부, 외부로의 연결 ssh서비스는 허용.
home 내부로 들어오는 패킷 거부, dhcpv6, ipp-client, mdns, samba-client, ssh 는 허용
internal 내부로 들어오는 패킷 거부, dhcpv6, ipp-client, mdns, samba-client, ssh 는 허용
public 내부로 들어오는 패킷 거부, ssh, dhcpv6-client 허용 Network Interface 중 default zone 에 해당.
trusted 들어오는 모든 트래픽을 허용한다.
work 내부로 들어오는 패킷 거부, dhcp6-client, ssh, ipp-client 는 허용

Predefine service (사전정의된 서비스)

서비스 이름 구성
ssh 로컬 ssh서버. 22/tcp에 대한 트래픽
dhcpv6-client 로컬 DHCPv6 클라이언트 fe80:://64 IPv6 네트워크의 546/udp에 대한 트래픽
ipp-client 로컬 IPP 인쇄. 631/udp에 대한 트래픽
samba-client 로컬 Windows 파일 및 출력 공유 클라이언트. 137/udp 및 138/udp 에 대한 트래픽
mdns mDNS(멀티캐스트 DNS) 로컬 링크 이름 확인. 224.0.0.251 (IPv4) 또는 ff02::fb(IPv6) 
멀티캐스트 주소로 보내는 5353/udp 에 대한 트래픽

# firewalld-config

 

방화벽 서비스 상태 확인 

# firewall-cmd

[root@host1 ~]# firewall-cmd --state
running
[root@host1 ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
[root@host1 ~]# firewall-cmd --get-services 

[root@host1 ~]# firewall-cmd --get-active-zones 
public
  interfaces: enp0s3 enp0s8

[root@host1 ~]# firewall-cmd --get-default-zone 
public

[root@host1 ~]# firewall-cmd --list-all --zone=work
work
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: dhcpv6-client ssh  → 허용
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

 

하나의 인터페이스당 하나의 영역(zone)에 연결이 가능하다.

 

work존에 enp0s3 추가

[root@host1 ~]# firewall-cmd --change-interface=enp0s3 --zone=work
success
[root@host1 ~]# firewall-cmd --list-all --zone=work
work (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3     → 기존 public에 있던 인터페이스가 이동되어짐
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

 

work존에서 enp0s3 제거

[root@host1 ~]# firewall-cmd --remove-interface=enp0s3 --zone=work 
success
[root@host1 ~]# firewall-cmd --list-all --zone=work
work
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

 

work존을 디폴트존으로 설정하기

[root@host1 ~]# firewall-cmd --set-default-zone=work
success
[root@host1 ~]# firewall-cmd --get-default-zone
work

 

소스 정책 추가 (단일 호스트 추가, 네트워크 대역 추가)

[root@host1 ~]# firewall-cmd --add-source=8.8.8.8 --zone=dmz
success
[root@host1 ~]# firewall-cmd --add-source=10.0.0.0/24 --zone=dmz
success
[root@host1 ~]# firewall-cmd --list-all --zone=dmz
dmz (active)
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 8.8.8.8 10.0.0.0/24
  services: ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

 

소스 정책 제거

[root@host1 ~]# firewall-cmd --remove-source=8.8.8.8 --zone=dmz
success
[root@host1 ~]# firewall-cmd --remove-source=10.0.0.0 --zone=dmz
Error: UNKNOWN_SOURCE: '10.0.0.0' is not in any zone  → /24까지 정확하게 입력필요
[root@host1 ~]# firewall-cmd --remove-source=10.0.0.0/24 --zone=dmz
success

 

 

영역(zone)지정 없이 서비스 추가/제거  : 액티브 영역

[root@host1 ~]# firewall-cmd --add-service=http
success
[root@host1 ~]# firewall-cmd --add-service=dns
success
[root@host1 ~]# firewall-cmd --list-all
work (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s8
  sources: 
  services: dhcpv6-client dns http ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
[root@host1 ~]# firewall-cmd --remove-service=dns
success
[root@host1 ~]# firewall-cmd --remove-service=http
success
[root@host1 ~]# firewall-cmd --list-all
work (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s8
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

 

특정 영역(zone)에 서비스 추가

[root@host1 ~]# firewall-cmd --add-service=http --zone=public

 

영구(permanent) 서비스 추가

[root@host1 ~]# firewall-cmd --add-service=ftp --permanent 
success
[root@host1 ~]# firewall-cmd --list-all
work (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s8
  sources: 
  services: dhcpv6-client ssh  → 서비스 없음
  …

[root@host1 ~]# firewall-cmd --list-all --permanent 
work
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: dhcpv6-client ftp ssh  → --permanent 옵션을 사용해야 출력됨.

 

※ 또는 firewall-cmd --reload 를 통해 런타임에서도 인식할 수 있음.

 

 

====================================

 

SELinux (/etc/selinux/config)

 

 

DAC Discretionary Access Control 임의적 접근제어

  : Subject가 임의로 자신이 소유한 Object에 대한 권한을 관리하는 접근제어 모델

MAC Mandatory Access Control 강제적 접근제어

  : Subject가 Object에 접근할 때 권한과 보안레이블을 같이 검증하여 접근을 제어하는 접근제어 모델

RBAC Role Based Access Control 역할 기반 접근제어

  : Role에 기반한 접근제어

 

동작모드

동작모드 동작설명
Enforcing SELinux가 동작중인 상태로 SELinux의 보안정책을 강제하는 모드
Permissive SELinux가 동작하지만 SELinux의 보안정책을 강제하지 않는(허용) 모드
Disabled SELinux가 동작하지 않는 상태

 

setenforce명령어를 통해 모드 전환 (모드확인 : getenforce) 런타임

[root@host1 ~]# setenforce enforcing  → setenforce 1도 가능
[root@host1 ~]# setenforce permissive → setenforce 2 도 가능
[root@host1 ~]# getenforce 
Permissive

disable 전환은 /etc/selinux/config 통해서 수정하고, 반드시 재부팅 필요. (enforcing으로 원복할때도 마찬가지)

 

==================

 

SELinux 보안 컨텍스트

SELINUX_USER:SELINUX_ROLE:SELIUX_TYPE_CONTEXT:LEVEL

SELINUX_USER
  - 실제 사용자가 아닌 SELINUX 사용자
  - SELinux의 정책에 의해 각 사용자에 연결됨

SELINUX_ROLE
  - SELINUX 역할로 SELINUX_USER와 도메인을 연결하기 위한 항목

TYPE_CONTEXT
  - Subject가 Object에 접근할 때 컨텍스트를 비교하기 위하여 사용하는 항목

LEVEL(민감도)
  - 민감도를 의미하며 SELinux가 MLS로 동작하는 경우 사용

#chcon (런타임임시)

[root@host1 html]# chcon -t 'httpd_sys_content_t' /var/www/html/index.html
#semanage (영구)

[root@host1 html]# semanage fcontext -a -t TYPE CONTEXT FILE_PATH

#restorecon [option] FILE

 

 

 

 

728x90

'linux' 카테고리의 다른 글

20210503 (월)  (0) 2021.05.03
20210430 (금)  (0) 2021.04.30
20210428 (수)  (0) 2021.04.28
20210427 (화)  (0) 2021.04.27
20210426 (월)  (0) 2021.04.26
Comments