본문 바로가기

IT 관련정보/리눅스

리눅스 기본 이론(10) - 네트워크 설정, 네트워크 진단 명령어, 서버 포트와 방화벽

오후 1:49 2016-05-03


리눅스 정리 10일차


TCP/IP 네트워크 설정


1. 이더넷 네트워크 카드 설정


/etc/modprobe.conf

커널에서 지원되는 이더넷 네트워크 장치는 부팅 시 자동으로 모듈이 로딩되어 장치를 사용할 수 있는 상태가 된다.

커널에서 자동으로 검색된 이더넷 모듈 장치는 /etc/modprobe.conf 파일에 정의되어 있다.


alias  디바이스명  모듈명


alias eth0 vmxnet

alias scsi_hostadapter mptbase

alias scsi_hostadapter1 mptspi

alias scsi_hostadapter2 ata_piix

alias snd-card-0 snd-ens1371



*자주 사용하는 랜카드 모듈명

Realtek 8139too

Realtek 8169 1G PCI r8169

intel express rpo100 PCI e100

Marvell Yukon 88E8055 sky2, forcedeth



2. 로컬 호스트 이름 설정 (/etc/sysconfig/network)

로컬시스템에 고유한 이름을 지정할 수 있다.


HOSNAME=지정값


지정값은 사전적의미이거나 도메인형식으로도 가능하다.




3. /etc/hosts

호스트 주소에 호스트이름을 맵핑해주는 파일이다.

아이피 호스트이름 별칭


예)

127.0.0.1 hyunho h1

172.16.4.159 localhost.localdomain kdu


# ping hyunho




4. 인터페이스 설정

대표적으로 사용되는 인터페이스는 lo, eth0(물리적인 첫번째 랜카드) 이다.


** ifconfig  사용법 **


ifconfig <장치명> <IP> <Netmask 서브넷값> [Broadcast 브로드캐스트주소] [up/down]


ifconfig eth0 192.168.10.100 netmask 255.255.255.128 broadcast 255.255.255.127 up



ifconfig eth0

eth0  Link encap:Ethernet  HWaddr 00:0C:29:F8:8D:8D  

          inet addr:172.16.4.50  Bcast:172.16.4.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fef8:8d8d/64 Scope:Link

          UP BROADCAST MULTICAST  MTU:1500  Metric:1

          RX packets:24365 errors:0 dropped:0 overruns:0 frame:0

          TX packets:200 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:2461748 (2.3 MiB)  TX bytes:30038 (29.3 KiB)

          Interrupt:67 Base address:0x2024 


랜카드정보 => /etc/sysconfig/network-scripts/ifcfg-eth0


vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0 인터페이스 종류, 장치명

BOOTPROTO=none IP 할당방식, static/dhcp/bootp/none

HWADDR=00:0C:29:F8:8D:8D

ONBOOT=yes 재부팅시 활성화 여부  yes/no

NETMASK=255.255.255.0

IPADDR=172.16.4.50

GATEWAY=172.16.4.1

TYPE=Ethernet

USERCTL=no

IPV6INIT=no

PEERDNS=yes




랜카드 활성화/비활성화


ifdown eth0 = ifconfig eth0 down

ifup eth0      = ifconfig eth0 up




5. dhclient

DHCP 서버에 연결하여 자동으로 아이피를 할당받을 때 사용한다.


ifdown eth0

dhclient eth0



랜카드 자동아이피 설정

DEVICE=eth0

BOOTPROTO=dhcp

HWADDR=00:0C:29:F8:8D:8D

ONBOOT=yes

TYPE=Ethernet

USERCTL=no

IPV6INIT=no

PEERDNS=yes


랜카드 고정아이피 설정

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]

DEVICE=eth0

BOOTPROTO=none

HWADDR=00:0C:29:F8:8D:8D

ONBOOT=yes

TYPE=Ethernet

USERCTL=no

IPV6INIT=no

PEERDNS=yes

NETMASK=255.255.255.0

IPADDR=172.16.4.50

GATEWAY=172.16.4.1




6. route 


# route


Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

172.16.4.0          *               255.255.255.0   U         0       0        0     eth0

169.254.0.0        *               255.255.0.0       U         0       0        0      eth0




1)Destination     목적지 네트워크 또는 목적지 호스트주소

2)Gateway 외부 네트워크 연결해주는 호스트주소(톨게이트와 같다)

3)Genmask 목적지 네트워크 또는 목적지 호스트의 netmask를 의미한다.

255.255.255.255  --> 단일 대상 호스트의 넷마스크

0.0.0.0                   --> 기본라우트

4)Flags U 라우트 동작 상태

H 타켓 호스트

G 게이트웨이로 사용

R 동적라우팅에 대한 라우트 재생성

D 데몬 또는 리다이렉션에 의해 동적으로 설치된 상태

M 라우팅 데몬

i 라우트 거부

5)Metric 목적지까지의 거리로 홉 단위로 계산.(최신 커널에서는사용 안함)

6)Ref 현재 라우터 통계

7)Use 라우트 탐색 수

8)Iface 패킷이 전달되는 인터페이스



# route add -host 아이피주소 dev 인터페이스명


ex)

# route add -host 10.10.10.10 dev eth0


# route del 아이피주소 dev 인터페이스명


# route del 10.10.10.10. dev eth0




7. 게이트웨이 설정

사용법


route   add   default   gw   <게이트웨이주소>   dev   <인터페이스명>


route   del  default  gw  <게이트웨이주소>



게이트웨이주소가 172.16.4.159 일 경우

route add defalut gw 172.16.4.159 dev eth0    스태틱설정 비슷하다.


설정확인

route


실습1] eth0 인터페이스에 C클래스 사설아이피 192.168.10.0/29 주소중에서

           사용가능한 3~5번째중 하나의 아이피를 할당하여 라우팅 테이블에 등록하시오.


ifconfig eth0 192.168.10.69

route




8. DNS 설정 (/etc/resolv.conf)

최대 3개의 서버를 지정할 수 있다


nameserver 서버주소

nameserver 서버주소

nameserver 서버주소





9. 네트워크 진단 명령어


  (1) 핑

  

ping -c 회수 -s 크기 아이피주소


ping -c 5 -s 100 localhost



  (2) tarceroute

패킷이 목적 호스트까지 어느 노드를 거쳐 전달되는지 경로를 출력해준다.


tarceroute 아이피주소




  (3) netstat

route 명령보다 자세한 라우팅 테이블정보와 네트워크 상태를 체크할 수 있는 명령어.


netstat -nr




  (4) nslookup

네임서버에 질의하여 도메인을 검색하거나 아이피정보를 확인하는 명령어


nslookup 서버주소

nslookup

> set type=srv

> naver.com




  (5) host

주로 도메인을 검색할 때 자주 사용한다.


host 아이피주소

host 도메인




  (6) ARP

아이피주소로 물리적 고유주소를 확인한다.


/sbin/arp




  (7) lsof (List Open File)

프로세스에 의해 열려진 파일들에 대한 정보를 보여준다.

특정파일을 액세스하고 있는지, 특정호스트의 접속을 확인하거나 특정 포트로 접속한 리스트를 확인하고자 할 때 유용하다.


losf /usr/sbin/sshd




  (8) ssh


ssh 계정명@서버주소     또는    ssh 서버주소 -l계정명


예)

ssh 172.16.4.159 -ltesl2




  (9) ftp


ftp 서버주소


아이디 anonoymous

암호    이메일형식      1@123.com




  (10) sftp


sftp 옵션  계정명@호스트명


sftp 파일명 계정명@호스트명


sftp 계정명@호스트명 파일명






  (11) wget


다운로드

wget URL



지정디렉토리 다운로드하기

wget URL -P 디렉토리명



다운로드하면서 압축풀기

wget -O- URL | tar xvfz - -C 경로명/


------------------------------------------------------------------------------------------------


서비스 포트와 방화벽


1. /etc/services


0 ~ 1023   Well Known Port  : 특권포트, 잘 알려진포트 -> IANA에서 할당.

1024 ~ 65,535          비특권포트





2. 방화벽 (iptables)


/etc/sysconfig/iptables


COMMIT 구문 다음줄에 추가하거나 같은줄에 추가할 경우 무효처리된다.


-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT



방화벽 확인

iptables -L


------------------------------------------------------------------------------------------------------


SSH

OpenSSH, SSH2(상용)


MITM 공격 (Man-In-The-Middle Attacks)


ssh localhost

공개키 저장여부 : yes / no


no값으로 선택하면 접속거부, yes 선택하면 사용자 홈디렉토리 .ssh/known_hosts


cat known_hosts

아이피  공개키  키값~~~~~~~~~~~~~~~~~~~~~~~~~



@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

Someone could be eavesdropping on you right now (man-in-the-middle attack)!

It is also possible that the RSA host key has just been changed.

The fingerprint for the RSA key sent by the remote host is

66:08:27:80:d9:b1:4e:ac:53:81:27:8d:42:cd:0b:7b.

Please contact your system administrator.

Add correct host key in /root/.ssh/known_hosts to get rid of this message.

Offending key in /root/.ssh/known_hosts:2

RSA host key for localhost has changed and you have requested strict checking.

Host key verification failed.



해결방안 : known_hosts 파일을 삭제하여 공개키를 새로 생성한다.




홈페이지 http://www.openssh.com



패키지설치

사전패키지   zlib-devel   libcrypt-devel openssl-devel pam-devel

yum install -y openssh openssh-clients openssh-server




인증키생성방법


1)/usr/local/bin/ssh-keygen -t rsa


2) /usr/local/bin/ssh-keygen -t dsa




환경설정파일


1) /etc/ssh/sshd_config   서버환경설정

   

2) /etc/ssh/ssh_config     클라이언트 환경설정





데몬확인


텔레그래빙


telnet localhost 22


Trying 127.0.0.1...

Connected to hyunho (127.0.0.1).

Escape character is '^]'.

SSH-2.0-OpenSSH_4.3



접속하기


ssh -l 계정명  서버주소



SSH 인증방법


1. 서버 인증 (Server Authentication)

SSH 서버에서 생성된 공개키를 클라이언트 시스템에 저장되도록 하여 다음번에 서버에 접속하였을 경우 이전에 접속한 서버와 동일한지를 확인하는 인증방식이다.



2. 클라이언트 인증 (User Authencation)

SSH서버에 클라이언트가 접속하였을 때 SSH 서버에 로그인할 수 있는 사용자인지를 인증하는 과정이다.


    (1)열쇠글 인증방식(Password Authentication)

         로그인 시 패스워드가 다르면 로그인하지 못한다.


/etc/ssh/sshd_config

         PasswordAuthentication yes



    (2)공개키 인증방식 (Publickey Authentication)

클라이언트에서 ssh-keygen명령으로 RSA 공개키와 개인키를 생성한 후 sftp나 scp 명령을 이용하여 클라이언트의 공개키를 서버의 해당 홈디렉토리에 (.ssh) 저장한다.


ssh-keygen -t rsa

chmod 600 ~/.ssh/id_rsa             개인키

chmod 644 ~/.ssh/id_rsa.pub     공개키




서버에서 /etc/ssh/sshd_config


1) PasswordAuthentication no

2) PubkeyAuthentication yes

3) AutorizedKeyFile .ssh/authorized_keys





    (3)호스트기반 인증방식 (Host-based Authentication)

클라이언트의 공개키를 서버의 known_hosts 파일에 저장하여 공개키가 일치하는

클라이언트의 접속이 있을 시 패스워드 인증없이 곧바로 서버에 접속할 수 있도록 하는 방식


*클라이언트에서 설정

ssh-keygen -t rsa

cp   ~/.ssh/id_rsa    /etc/ssh/ssh_host_rsa_key

cp   ~/.ssh/id_rsa.pub    /etc/ssh/ssh_host_rsa_key.pub


*환경설정

EnableSSHKeysign yes

HostbasedAuthentication yes


*서버에서 설정

클라이언트의 공개키를 서버로 업로드한다.(/etc/ssh/ssh_host_rsa_key.pub)

cat /etc/ssh/ssh_host_rsa_key.pub >> known_hosts


vi known_hosts

도메인명,아이피주소 ssh-rsa 암호화키값


퍼미션설정

chmod 644 known_hosts


환경설정(sshd_config)

vi /etc/ssh/sshd_cofnig

HostbasedAuthentication yes

IgnoreRhosts no

PasswordAuthentication no


호스트명을 도메인형태로 수정

vi /etc/hosts.equiv

localhost.localdomain

hong.bluescreen.com


*** 동작 테스트 *****

클라이언트에서 서버로 접속한다.

ssh 서버아이피

바로 로그인이된다.






*** 보안강화 --> PAM 인증강화 ****


서버에서 vi /etc/ssh/sshd_config

UsePAM yes

ChallengeResponseAuthentication yes



vi /etc/pam.d/sshd

#%PAM-1.0

auth       include      system-auth

account    required     pam_nologin.so

account    include      system-auth

password   include      system-auth

session    optional     pam_keyinit.so force revoke

session    include      system-auth

session    required     pam_loginuid.so


확인 후 저장.


ssh 서버아이피(호스트주소)

Password: 




------------------------------------------------------------------------------------------------------------------------