오후 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:
------------------------------------------------------------------------------------------------------------------------
'IT 관련정보 > 리눅스' 카테고리의 다른 글
리눅스 기본 이론(12) - NFS (0) | 2017.04.19 |
---|---|
리눅스 기본 이론(11) - SAMBA, DHCP (0) | 2017.04.19 |
리눅스 기본 이론 (9) - Nmap, rootkit, rkhunter, snort, TCP/IP 네트워크 설정 (0) | 2017.04.19 |
리눅스 기본 이론(8) - 로그 분석, 백도어 실습, tripwire (0) | 2017.04.19 |
리눅스 기본 이론(7) - CD-ROM, 커널 컴파일, 시스템 로그 (0) | 2017.04.19 |