일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- mount
- pvcreate
- 프로세스
- chatGPT
- MSBing
- nmcli
- journalctl
- Kubernetes
- 랜카드인식불량
- docker image
- lvcreate
- vgcreate
- ssh
- swapon
- newbingai
- 리다이렉션
- firewalld
- tar
- chmod
- HTTPD
- docker
- M365필터
- vagrant kubernetes
- 같은폴더
- permission
- 엑셀파일명변경
- 날짜변경
- docker network
- yum
- ansible
- Today
- Total
becool
20210429 (목) 본문
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 에 대한 트래픽 |
방화벽 서비스 상태 확인
# 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
'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 |