[RedHat]하이브리드 클라우드 엔지니어/Linux

[리눅스] 16. 리눅스 수업6 (로키 리눅스, 서버, DHCP, FTP, 방화벽)

JJeong5 2023. 8. 16. 17:48

1. Rocky 리눅스 세팅

Rocky9-1.txt
0.00MB

grubby —update-kernel ALL —args selinux=0 : 부팅 프로세스 중에 SELinux 적용이 비활성화됩니다.

 

 

 

 

nmtui : 터미널 유저 인터페이스 열기

비활성화 했다가 다시 활성화 시킨다. *표시가 있어야 활성화 되어있는것이다.

hostnamectl set-hostname 이름 : 호스트이름 설정

 

 

2. 서버와 클라이언트

1.Server

무엇인가를 서비스하는 시스템

2.Client

서버가 서비스하는 무엇인가를 제공받는 시스템

3.'무엇'의 종류

DHCP(Dynamic Host Configuration Protocol)

- IP Address를 자동으로 할당하는 기능

- IP자원의 효율적인 관리

- DHCP 동작(Broadcast)

  • 1. Discover: DHCP서버나 DHCP기능을 가지고 있는 Host를 찾는 메시지를 네트워크 전체에 전송합니다.
  • 2.Offer: DHCP서버나 DHCP기능을 가지고 있는 Host는 응답을 전송합니다. 최초서비스할 IP주소, 서브넷, 임대기간, 서버의 IP주소, 옵션 게이트웨이, DNS는 선택적으로 전송
  • 3. Request: 다시 재요청을 하면서 확인
  • 4. Ack: 서버는 Ack메시지로 응답

tip) 1~4 단계의 앞글자를 따서 DORA라고 외우자

  • APIPA(Automatic Private IP Addressing) : 윈도우는 자동으로 IP를 할당해 주는 기능이다. 이걸 사용한다는 의미는 DHCP 서버에 장애가 생겼거나, 네트워크 장애로 DHCP 서버와 통신이 불가능 하다던가, 고정 IP를 사용하는 환경일 경우이다.

 

FTP(File Transfer Protocol)

- 대용량 데이터 전송

- Protocol: TCP

- Port

  • 1. 인증및제어: 21번 포트
  • 2. 데이터

2-1 Active: Client가 결정해서 서버에게 알려줍니다. 서버는 클라이언트가 알려준 포트로 데이터를 전송합니다. 방화벽을 모두 Open해야합니다. 20번 포트를 사용

2-2 Passive: 서버가 데이터 전송 포트를 결정합니다. 서버의 설정은 관리자가 함으로 해당 포트만 Open하면 됩니다. 클라이언트가 서버에 접속해서 데이터를 전송합니다.

 

WEB(HTTP)

- Web Contents 제공

- Protocol: TCP

- Port: 80

 

DNS(Domain Name Server or System)

- URL을 IP 주소로 변환

- 인터넷 환경에서 모든 통신은 IP 주소로 이루어집니다.

- Protocol: UDP, TCP

  • 1. 기본설정: UDP
  • 2. TCP로 설정하는 경우

2-1 전송데이터의 양이 512바이트를 넘어갈 때

2-2 Zone Transfer(영역 전송), 주 DNS에서 보조 DNS로 데이터를 넘겨줄 때

  • Port: 53

 

MAIL

- 전자 우편 서비스

- 보내는 메일 서버(SMTP: Simple Mail Transfer Protocol)

  • 1. Protocol: TCP
  • 2. Port: 25

- 받는 메일 서버(IMAP, POP3)

  • 1. IMAP: 메일을 읽어도 메일이 서버에 남아 있음. Web Mail사서함 용량 관리가 필요. 143번 포트를 사용
  • 2. POP3: 클라이언트가 메일을 읽으면 클라이언트 측으로 다운로드 됩니다. 전용 단말이 없는 경우에는 메일 통합 작업이 필요합니다. 110번 포트를 사용

 

 

3. DHCP 서버 다운로드

dnf install -y dhcp-server
vi /etc/dhcp/dhcpd.conf

#vi에서
#$ r !ls -al  ($ = 맨 끝줄 의미, r = 붙여넣겠다, ! = 명령어 한번 수행하고 vi로 돌아온다)
#!bash  (원하는 만큼 작업하고 exit으로 vi로 돌아올 수 있다)

:$ r /usr/share/doc/dhcp-server/dhcpd.conf.example 
:1,51d
:10,28d
:14,$d ($는 문서의 끝)

 

4. vsftp passive mode 설정

 

1. FTP : File Transfer Protocol 로 대용량 파일을 전송할 때 사용합니다.

 1.1. TCP 21 port는 인증 및 제어에 사용

 1.2. mode

  1.2.1. active mode : Client 데이터 전송 포트를 결정합니다. 때문에 Client쪽 Port를 모두 open해야 하지만 현실적으로 불가능한 일입니다. (ftp 사용하니까 사용자 포트 모두 열어주세요! 허걱!)

   1.2.1.1. 데이터 전송포트는 TCP 20번 입니다.

  1.2.2. passive mode : 서버측에서 데이터 전송 포트를 결정합니다. 특정 포트로 한정할 수 있기때문에 현실적인 설정입니다.

 

2. 설정파일

 2.1. # /etc/vsftpd/vsftpd.conf

 

3. passive 설정

 3.1. Test에 사용할 계정 생성

계정 추가

 3.2. 패스워드 설정

패스워드 설정

 3.3. vsftpd.conf 설정 파일 편집

설정파일 열기

 3.4. 배너 파일 설정

배너 파일 설정

 3.5. 편집기에서 잠시 shell에서 작업할 일이 있다면 :!bash가 편리합니다. 다시 편집기 복구가 쉽습니다.

shell로 잠시 외출

 3.6. 배너 파일 디렉토리 및 배너 파일 편집

배너 디렉토리 생성

배너 파일 편집

 3.6. 저장 후 다시 vsftpd.conf 편집기로 돌아오기 위해서 exit 입력 후 Enter

편집기 복귀

 3.7. Login한 자신의 Home Directory를 최상위 디렉토리로 인식하는 chroot 설정 

chroot 설정

 3.8. 잠시 shell로 외출

shell 외출

 3.9. chroot 파일 생성

파일 생성

 3.10. chroo 적용할 사용자 계정 입력

chroot 적용계정

 3.11. 다시 vsftpd.conf 편집 상태로 복귀

편집 파일 복귀

 

 

 3.12. passive mode 설정 : data 전송 포트는 60000-61000

passive mode 설정

 3.13. vsftpd.conf 전체 설정

vsftpd.conf

 3.14. Firewall Open : TCP21, TCP 60000-61000

firewall 설정

3.15. Test용 FileZilla 설정

filezilla 설정

 3.16. FileZilla Passive Mode 설정

FileZilla Passive Mode

 3.17. Test용 파일을 dd를 이용하여 생성

dd 파일 생성

 3.18. data전송 포트 확인 명령어

data전송 포트 확인

Wireshark Packet Capture 한 후 ftp 필터링 후 전송 포트 계산하는 법 잊지 마세요!

 

4. Option

* /etc/vsftpd/vsftpd.conf\

 * anonymous_enable=YES : 익명사용자 허용/거부

 * local_enable=YES : 로컬 사용자(/etc/passwd에 있는 사용자) 로그온 허용/거부

 * write_enable=YES : 파일시스템에 데이터 쓰기 허용/거부

 * local_umask=022 : 퍼미션. 반대로 적용된다. 022: 666-022=644 : rwx에서 x는 필요없음. 666이 기본

 * anon_upload_enable=YES : 익명사용자의 파일 업로드 허용/거부

 * anon_mkdir_write_enable=YES : 익명사용자의 디렉토리 생성 허용/거부

 * dirmessage_enable=YES : ftp접속자가 디렉토리 이동시 알림메세지로 설정된 파일 내용 출력

 * xferlog_enable=YES : 사용자의 업로드 다운로드를 로그 파일로 저장(/var/log/xferlog에 기록)

 * connect_from_port_20=YES : 데이터전송포트

 * chown_uploads=YES : 익명사용자가 업로드한 파일의 퍼미션 자동 변경

 * chown_username=whoever : chown_uploads 옵션이 YES일 경우 변경할 사용자 명

 * xferlog_file=/var/log/xferlog : xferlog_enable옵션이 YES일 경우 저장할 경로 지정

 * xferlog_std_format=YES : xferlog 로그의 표준 포맷 사용

 * idle_session_timeout=600 : idle상태가 600초 동안 이어질때 세션 종료

 * data_connection_timeout=120 : 파일 업/다운로드시 연결 유지시간 지정. 시간 초과시 업/다운 취소.

                                 주석처리되면 기본값으로 300초 지정.

 * nopriv_user=ftpsecure : 익명 접속시 사용할 유저 명

 * async_abor_enable=YES : async ABOR 명령 사용을 허용/거부

                           (일부ftp클라이언트에서 파일 전송 취소해도 취소되지 않는 상태가 생길수 있음. 그때 사용)

 * ascii_upload_enable=YES : ASCII 파일 업로드 허용/거부

 * ascii_download_enable=YES : ASCII 파일 다운로드 허용/거부

 * ftpd_banner=Welcome to... : ftp 접속 성공시 출력하는 환영 메세지 지정

 * deny_email_enable=YES : 익명 접속 시 패스워드에 입력하는 이메일 중 특정 이메일 거부

 * banned_email_file=/etc/vsftpd/banned_emails : deny_email_enable 옵션이 YES일때 거부할 이메일 목록

 * chroot_local_user=YES : 사용자 접속시 자신의 홈디렉토리를 / 로 인식하게 하여 하위로 이동만 가능

 * chroot_list_enable=YES : chroot에서 제외할 사용자 목록 사용 여부

 * chroot_list_file=/etc/vsftpd/chroot_list :  chroot_list_enable이 YES일 경우 해당 목록 파일 지정

 * ls_recurse_enable=YES : 접속자에게 ls -R(하위dir까지출력) 명령어 사용 허가/거부(부하가 많으므로 NO)

 * listen=YES : standalone모드는 YES, xinetd모드는 NO

 * listen_ipv6=YES : IPv6응답 허용/거부

 * pam_service_name=vsftpd : 사용자 PAM 인증 시 사용할 설정 파일 이름 지정 (vi /etc/pam.d/vsftpd)

 * userlist_enable=YES : /etc/vsftpd/user_list에 지정된 사용자 접속 거부

 * tcp_wrappers=YES :

 * pasv_min_port=5000 : 패시브 모드시 사용할 시작 포트 번호

 * pasv_max_port=6000 : 패시브 모드시 사용할 마지막 포트 번호

 * pasv_enable=YES : 패시브 모드 사용/사용안함. NO일 경우 액티브 모드

 

 

5. 시나리오1

네트워크 10.0.0.0/24

1. 서버는 30대 사용중,

1.1. 서버는 고정 IP사용중, 네트워크 앞쪽부터 순차적으로 사용 중

10.0.0.1 ~ 10.0.0.30 은 사용중

2. Gateway는 네트워크의 마지막 주소 사용 ( 10.0.0.254 사용중)

3. DHCP서버는 열한번째 서버에서 운영중 (10.0.0.11

4. DNS는 열한번째 서버와 Kornet dns 사용중. (10.0.0.11, 168.126.63.1)

5. 임대시간

5.1. 기본임대: 3600(초)

5.2. 최대임대: 7200

6. 도메인은 이니셜.local

주의: 바인딩주소 → DHCP를 서비스하는 서버는 특별한 경우가 아니라면 서비스하는 네트워크 대역중 하나의 IP를 고정IP로 사용해야한다.

위에서 사용했던 vi /etc/dhcp/dhcpd.conf로 들어가서

위의 조건에 맞게 바꾸어준다.

주의: 바인딩주소 → DHCP를 서비스하는 서버는 특별한 경우가 아니라면 서비스하는 네트워크 대역 중 하나의 IP를 고정IP로 사용해야 한다.

 

그리고 systemctl start dhcpd로 DHCP를 실행한다.

그후 윈도우10, 11에 들어가서

ipconfig /release —> ipconfig /renew 하면 새롭게 할당된 ip가 생긴다.

10.0.0.31과 10.0.0.32로 할당된다.

 

  • 명령어들

systemctl enable - -now dhcpd를 하면 dhcp가 실행되고 재부팅시에도 자동으로 실행되게되며, 심볼릭 링크가 생성된다.

systemctl status dhcpd로 dhcp상태를 볼 수 있다.

systemctl list-unit-files | grep enabled: enabled로 실행되고 있는 파일들 확인

:s/-/:/g → 현재 포인터 위치부터 끝까지 ‘-’를 ‘:’로 변환

:15s/-/:/g → 15번째 위치부터 끝까지 ‘-’를 ‘:’로 변환

10,13co$ → 10번쨰 줄 ~ 13번째 줄의 내용을 문서의 끝에 복붙한다는 의미

 

  • 윈도우 cmd

ipconfig /release

ipconfig /renew

ipconfig /all

 

  • dhcp 삭제

dnf history list : 설치 및 삭제 히스토리 리스트 보기

dnf history undo 2

rm -rf /etc/dhcp/

rm -rf /var/lib/dhcpd/

dnf remove -y dhcp-server vsftpd : vsftpd와 dhcp 제거

rm -rf /etc/dhcp/ /etc/vsftpd/ /var/lib/dhcpd/ : 다른 폴더도 완전히 삭제

 

 

6. 시나리오2

할당된 네트워크는

192.168.100.0/24

  • 사용하는 서버는 40대, 고정IP사용중이며 네트워크 앞쪽부터 순차적으로 사용 (

192.168.100.1 ~ 192.168.100.40 사용

  • DHCP서버는 첫번째 서버이다 (192.168.100.1
  • DNS서버는 세번째와 google public dns 사용중(192.168.100.3, 8.8.8.8)
  • gateway 주소는 네트워크의 마지막 ip 사용(192.168.100.254
  • 임대시간은 기본 2시간, 최대 2시간 (7200, 7200)
  • 예약기능을 사용해서 w10-1은 항상 100번째 ip, w11-1은 항상 200번째 IP를 사용

00:00:00:00:00:00 → 192.168.100.100

예약기능: DHCP환경에서 항상 고정 IP를 사용하는 Host에 적용

 

풀이 순서

  1. nmtui로 dhcp서버의 ip를 설정하고
  2. dhcpd 에서 설정도 다 바꿔주고 w10, w11에서 ipconfig /release, ipconfig /renew, ipconfig /all로 확인한다.

FTP 설치 및 사용

vsftpd

dnf install -y vsftpd

vi /etc/vsftpd/vsftpd.conf

chroot를 설정하면 반드시 127째 줄을 넣어줘야합니다.

 

 

  • 방화벽 설정

firewall-cmd --list-all: 방화벽 정보 보기

firewall-cmd --get-default-zone: 설정되어있는 zone보기

firewall-cmd --permanent --zone=public --add-port=21/tcp: 방화벽 열기

firewall-cmd --reload

firewall-cmd --permanent --remove-port=20/tcp

vi /etc/firewalld/zones/public.xml → 편집기로 들어가서 방화벽 직접 설정

 

 

윈도우 방화벽 FTP규칙 설정

 

 

 

 

 

dd if=/dev/zero of=/home/a/a.txt bs=200M count=1

dd if=/dev/zero of=/home/b/b.txt bs=200M count=1

 

 

 

  1. get 명령: get 명령은 원격 FTP 서버에서 로컬 시스템으로 파일을 다운로드하는 데 사용됩니다. 서버에 저장된 파일을 검색하여 로컬 시스템의 특정 위치에 저장할 수 있습니다.
get remote_file [local_file]
  • remote_file: 다운로드하려는 원격 FTP 서버의 파일 이름입니다.
  • local_file: (선택 사항) 로컬 시스템에 파일을 제공하려는 이름입니다. 지정하지 않으면 서버와 동일한 이름으로 파일이 저장됩니다.

ex)

get file.txt

이 명령은 원격 서버에서 file.txt라는 파일을 다운로드하고 현재 로컬 디렉토리에 같은 이름으로 저장합니다.

  1. put 명령: put 명령은 로컬 컴퓨터에서 원격 FTP 서버로 파일을 업로드하는 데 사용됩니다. 저장을 위해 로컬 시스템에서 서버로 파일을 보낼 수 있습니다.
put local_file [remote_file]
  • local_file: 업로드하려는 로컬 시스템의 파일 이름입니다.
  • remote_file: (선택 사항) 원격 서버에서 파일에 부여하려는 이름입니다. 지정하지 않으면 파일이 로컬 시스템과 동일한 이름으로 저장됩니다.

ex)

put document.pdf

이 명령은 로컬 시스템에서 원격 서버로 document.pdf라는 파일을 업로드하고 동일한 이름으로 저장합니다.

 

 

 

 

7. FTP 예제

2번
3번
4번
5번

!bash → 잠시 쉘로 나오고

mkdir /config → config 디렉토리를 만들어주고

vi /config/chroot → chroot를 적용할 사용자 bbb를 입력해주고 저장한다.

exit → 다시 편집기로 돌아온다.

 

6번

!bash

vi /config/ban → 배너만들기

 

 

7,8번
방화벽 설정

참고

https://virtualtech.tistory.com/83

 

CenTOS7 : VSFTPD Passive Mode Config

오늘은 vsftp passive mode 설정에 대해서 포스팅 합니다. 1. FTP : File Transfer Protocol 로 대용량 파일을 전송할 때 사용합니다. 1.1. TCP 21 port는 인증 및 제어에 사용 1.2. mode 1.2.1. active mode : Client 데이터 전

virtualtech.tistory.com