CS/Linux

[Linux] 주요 네트워크 명령어 및 설정 파일

kyoulho 2024. 9. 27. 23:03

nmtui

nmtui는 NetworkManager의 텍스트 기반 사용자 인터페이스로, 네트워크와 관련된 대부분의 작업을 이 명령어를 통해 수행할 수 있다. 이를 통해 자동 IP 주소 설정 또는 고정 IP 주소 사용 여부를 결정하고, IP 주소, 서브넷 마스크, 게이트웨이 정보 및 DNS 정보를 입력할 수 있다. 또한, 네트워크 카드 드라이버 설정과 네트워크 장치의 세부 설정도 가능하며, 텍스트 기반으로 작동하여 GUI 환경 없이도 쉽게 네트워크를 관리할 수 있다.

nmtui로 네트워크 설정을 변경한 후에는 변경된 내용을 시스템에 적용해야한다.

sudo nmtui

sudo systemctl restart NetworkManager


ifconfig

ifconfig 명령어는 네트워크 인터페이스의 상태를 제어하고 정보를 확인하는 데 사용된다.

  • 장치를 활성화하려면:
    • sudo ifconfig <인터페이스> up
    • sudo ifup <인터페이스>
  • 장치를 비활성화하려면
    • sudo ifconfig <인터페이스> down
    • sudo ifdown <인터페이스>
  • 장치의 IP 주소 설정 정보를 확인하려면:
    • ifconfig <인터페이스>


nslookup

nslookup은 DNS 서버의 작동을 테스트하고 도메인 이름을 IP 주소로 변환하거나 그 반대로 수행할 때 사용된다. 이를 통해 서버나 특정 도메인을 검색할 수도 있다.

[root@localhost ~]# nslookup
> server
Default server: 8.8.8.8
Address: 8.8.8.8#53
> www.google.com
Server:        8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:    www.google.com
Address: 142.250.207.100
Name:    www.google.com
Address: 2404:6800:400a:813::2004


주요 네트워크 설정 파일

/etc/NetworkManager/system-connections/<인터페이스>.nmconnection

이 파일은 네트워크 인터페이스에 설정된 모든 네트워크 정보를 포함하고 있다. 여기에는 IP 주소, 서브넷 마스크, 게이트웨이 정보, DNS 설정 및 네트워크 카드 드라이버 설정 등이 저장된다. 이 파일은 nmtui나 텍스트 에디터를 사용하여 직접 편집할 수 있다.

/etc/resolve.conf

DNS 서버의 정보 및 호스트 이름을 포함하고 있다. 이 파일에는 도메인 이름 해석을 위한 DNS 서버 주소와 검색 도메인 설정이 포함된다.

nameserver 8.8.8.8
nameserver 8.8.4.4
search example.com

주의사항: /etc/resolv.conf 파일을 수동으로 수정한 후 systemctl restart NetworkManager를 실행하면, NetworkManager가 이 파일을 다시 생성하면서 수정한 내용이 사라질 수 있다. 이를 방지하려면 NetworkManager를 통해 DNS 설정을 영구적으로 변경해야 한다.

/etc/hosts

현 컴퓨터의 호스트 이름과 완전한 도메인 이름(FQDN)을 매핑하는 데 사용된다. 이를 통해 도메인 이름과 IP 주소 간의 매핑을 수동으로 설정할 수 있다.

127.0.0.1   localhost localhost.localdomain
192.168.1.10 server.example.com server
  • 로컬 호스트 정의: 특정 IP 주소에 호스트 이름을 매핑하여 네트워크 요청 시 DNS 서버를 거치지 않고도 빠르게 이름을 해석할 수 있다.
  • 개발 및 테스트 환경 구성: 개발 중인 애플리케이션이 특정 도메인 이름을 로컬 서버로 가리키도록 설정할 수 있다.
  • 호스트 이름 충돌 해결: 네트워크 내에서 동일한 호스트 이름을 가진 여러 장치가 있을 때, 특정 호스트 이름을 특정 IP 주소로 지정하여 충돌을 방지할 수 있다.
  • 보안 강화: 특정 악성 도메인 이름을 로컬 IP 주소(예: 127.0.0.1)로 매핑하여 접근을 차단할 수 있다.
# 예시: 특정 도메인 차단
127.0.0.1   malicious-site.com


네트워크 보안을 위한 SELinux

SELinux(Security-Enhanced Linux)는 시스템의 보안을 강화하기 위해 커널 수준에서 접근 제어를 제공하는 보안 모듈이다. SELinux는 정책 기반의 보안 모델을 사용하여, 시스템의 각 프로세스와 파일에 대한 세밀한 접근 권한을 정의하고 관리한다. 네트워크 보안 측면에서 SELinux는 다음과 같은 역할을 한다:

SELinux의 기본 개념

  • 도메인(Domain): 각 프로세스는 특정 도메인으로 분류되며, 이 도메인은 해당 프로세스가 수행할 수 있는 작업을 정의한다.
  • 타입(Type): 파일, 디렉토리, 소켓 등 시스템 객체는 타입으로 분류된다.
  • 정책(Policy): 도메인과 타입 간의 상호작용을 정의하는 규칙 집합이다. 정책에 따라 프로세스가 특정 파일에 접근하거나 네트워크 서비스를 사용할 수 있는지 여부가 결정된다.

네트워크 보안에서 SELinux의 역할

SELinux는 네트워크 관련 서비스와 애플리케이션의 동작을 제어함으로써 시스템을 보호한다. 주요 기능은 다음과 같다:

  • 서비스 간 격리: 웹 서버, 데이터베이스 서버 등 서로 다른 네트워크 서비스를 격리하여, 한 서비스의 취약점이 다른 서비스로 확산되는 것을 방지한다.
  • 포트 제한: 각 네트워크 서비스가 사용할 수 있는 포트를 제한하여, 불필요한 포트 접근을 차단한다.
  • 파일 접근 제어: 네트워크 서비스가 접근할 수 있는 파일과 디렉토리를 엄격하게 제한하여, 데이터 유출이나 손상을 방지한다.
  • 네트워크 리소스 관리: 네트워크 소켓과 리소스에 대한 접근 권한을 세밀하게 제어하여, 악의적인 접근을 방지한다.

SELinux 활성화

# 활성화 여부 확인
sestatus
# 설정 파일을 수정하여 활성화한다.
sudo vi /etc/selinux/config

SELinux 모드

SELinux는 세 가지 모드로 동작할 수 있다:

  • Enforcing: SELinux 정책이 강제로 적용되어, 허용되지 않은 접근 시도가 차단되고 로그에 기록된다.
  • Permissive: SELinux 정책이 적용되지 않지만, 정책 위반 시도는 로그에 기록된다.
  • Disabled: SELinux가 완전히 비활성화되어, 모든 접근 시도가 허용된다.

SELinux 정책 관리

SELinux 정책은 도메인과 타입 간의 접근 규칙을 정의한다. 네트워크 보안을 위해 정책을 수정하거나 확장할 수 있다.

  • 도메인 타입 변경: 특정 서비스의 도메인을 변경하여, 해당 서비스가 더 제한된 권한을 가지도록 설정할 수 있다.
  • 포트 접근 허용: 특정 포트를 서비스가 사용할 수 있도록 정책을 수정할 수 있다.
  • 파일 컨텍스트 설정: 네트워크 서비스가 접근할 수 있는 파일의 컨텍스트를 설정하여, 접근 권한을 제어할 수 있다.

SELinux 관리 도구

  • semanage: SELinux 정책을 관리하는 데 사용된다. 포트, 파일 컨텍스트, 사용자 매핑 등을 설정할 수 있다.
  • setsebool: SELinux 부울 변수를 설정하여, 특정 정책을 활성화하거나 비활성화할 수 있다.
  • restorecon: 파일의 SELinux 컨텍스트를 기본 정책에 맞게 복원한다.
  • audit2allow: SELinux 로그를 기반으로 필요한 정책 허용 규칙을 생성한다.
# SELinux 부울 변수 설정 예시
sudo setsebool -P httpd_can_network_connect on

 


네트워크 서비스와 SELinux 예제

Apache 웹 서버

Apache는 기본적으로 특정 포트에서만 동작하도록 SELinux 정책이 설정되어 있다. 예를 들어, Apache가 HTTP 포트(80)와 HTTPS 포트(443)에서만 작동하도록 제한할 수 있다.

# Apache가 추가적인 포트에서 작동하도록 허용
sudo semanage port -a -t http_port_t -p tcp 8080
sudo systemctl restart httpd

FTP 서버

FTP 서버는 파일 전송과 관련된 다양한 작업을 수행하므로, SELinux 정책을 통해 FTP 서비스가 접근할 수 있는 디렉토리와 파일을 제한할 수 있다.

# FTP 서비스가 특정 디렉토리에 접근할 수 있도록 설정
sudo semanage fcontext -a -t public_content_rw_t "/srv/ftp(/.*)?"
sudo restorecon -Rv /srv/ftp

SELinux 로그 확인

SELinux가 접근을 차단한 시도는 /var/log/audit/audit.log 파일에 기록된다. 문제 해결을 위해 로그를 확인하고 필요한 정책을 수정할 수 있다.

sudo ausearch -m avc -ts recent  # 최근의 SELinux 차단 로그 조회
sudo sealert -a /var/log/audit/audit.log  # SELinux 경고 분석

 

728x90

'CS > Linux' 카테고리의 다른 글

[Linux] 부트로더  (0) 2024.09.29
[Linux] 파이프, 프로세스, 서비스  (1) 2024.09.28
[Linux] CRON과 AT  (0) 2024.09.22
[Linux] 파일 위치 검색  (1) 2024.09.22
[Linux] 파일의 압축과 묶기  (1) 2024.09.22