[22] SELinux(소개), NIC, route, netstat, arp, nslookup, dig

|


- 2014.12.05



1. SELinux


과거엔 리눅스는 소스코드가 공개되어 보안에 취약하다는 인식이 있었지만

SELinux라는 새로운 보안 모델이 나오면서 보안이 많이 향상되었다.

단, 보안과 편의성은 반비례 한다는 사실을 알아야 한다.


1) 설정 변경 문서


# vi /etc/sysconfig/selinux

disabled 등으로 변경 시 리부팅 해야 적용됨





2. NIC


NIC = Network Interface Card


NIC 설정 문서 파일

# vi /etc/sysconfig/network-scripts/ifcfg-장치명


장치 활성화 및 비활성화

# ifconfig eth2 up

# ifconfig eth2 down


IP주소 변경

# ifconfig eth2 192.168.1.144


IP, B/d, Subnetmask 변경

# ifconfig eth2 10.10.10.10 netmask 255.255.255.0 broadcast 10.10.10.255

장치 down 후 up 하면 원상복귀 된다.

즉, 일시적인 변경을 위한 명령어이다.


영구 변경 되는 네트워크 설정 위한 쉬운 명령어가 있다. (minimal엔 없음)

# system-config-network

# setup

(setup 의 경우 전반적인 셋팅 가능)





3. route


ex)

# route

Kernel IP routing table

Destination        Gateway         Genmask          Flags       Metric  Ref    Use Iface

192.168.1.0          *          255.255.255.0        U               1      0      0   eth2

default          192.168.1.2        0.0.0.0            UG              0      0      0   eth2


Destination : 목적지 주소를 가르킴

Gateway : 외부로 패킷을 포워딩 하기 위한 장치의 IP Address

Genmask : 라우팅 항목의 넷마스크

Flags : U - 인터페이스가 Up인 상태

           H - 라우팅 경로를 통해 호스트로의 연결

 G - 게이트웨이의 라우트

 D - 라우트가 재지정되어 동적으로 생성

          M - 라우팅 경로가 ICMP 리다이렉트 메시지를 통해 수정되었을 경우

Metric : 다음 라우트와의 거리

Ref : 라우터에 대한 참조수

Use : 라우트를 찾아본 횟수

Iface : 목적지로 패킷을 보낼 때 사용할 장치



명령어 설명


# route add [ -net | -host ] target [netmask <nm>] [gw <nm>] dev <i/f>

# route del [ -net | -host ] target [netmask <nm>] [gw <nm>] dev <i/f>



게이트웨이 설정


# route add default gw <gw> dev <i/f>

# route del default gw <gw> dev <i/f>




[실습]


1번대 컴퓨터인 나에게 10번대 컴퓨터인 친구가 들어온다고 한다.

나가는, 들어오는 문 지정을 해줘야 한다.


# route add -net 192.168.10.0 netmask 255.255.255.0 dev eth2

=> 친구 ip를 정확히 모르기 때문에 네트워크 아이디를 전체(192.168.10.0)을 넣어준다.

   (게이트웨이는 다른 명령어를 통해 설정할 것)


하지만 들어온 친구가 다시 나갈 순 없다. 나가는 문도 만들어주자.

# route add default gw 192.168.10.2 dev eth2


Metric 값(나로부터 떨어진 거리)도 수동으로 설정 해줘야 한다.

# route add default gw 192.168.10.2 dev eth2 metric 2

=> 기존 것에 추가 되는 것이 아닌 새로 추가가 됨. 지정할 땐 한번에 명령어 내리는 것 필요


# route

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

192.168.1.0     *               255.255.255.0   U     1      0        0 eth2

192.168.10.0    *               255.255.255.0   U     0      0        0 eth2

default         192.168.10.2    0.0.0.0         UG    0      0        0 eth2

default         192.168.1.2     0.0.0.0         UG    0      0        0 eth2

default         192.168.10.2    0.0.0.0         UG    2      0        0 eth2


# route del default gw 192.168.10.2 dev eth2

=> 가장 가까운 metric 값인 0 부터 지운다.


지정한 10번대 지우기

# route del -net 192.168.10.0 (metric 2 dev eth2)

# route del -net 192.168.10.0 netmask 255.255.255.0 (dev eth2)





4. netstat


네트워크 관련 정보를 보는데 일반적으로 사용하는 범용 유틸리티. 옵션 없이 netstat만 사용할 경우, 현재 열려 있는 모든 소켓의 연결 상태를 보여준다.


# netstat -nA inet 항목 설명

Proto : 사용 중인 프로토콜

        udp : 전송 속도는 빠르나 오류 검출 없다. 한번 보내면 장땡일 때 주로 사용 ex)radio, tv 등

        tcp : 오류 검출

                3 hand shake (C -> S)  // 가져갈게요. 응 가져가. (확인 후)가져갔어요 다음것 주세요.


Recv-Q : 수신 소켓 버퍼에 존재하는 바이트 수

Send-Q : 송신 소켓 버퍼에 존재하는 바이트 수. 반대편 peer socket에 전송되지 못한 것

Local Address : 로컬 쪽 주소

Foreign Address : 상대편 주소

State

        LISTEN : 열려있음

        CLOSED : 닫혀있음

        ESTABLISHED : 연결 완료

SYN-SENT : 연결을 요청한 상태

SYN-RECEIVED : 연결 요구에 의한 응답을 준 후 확인메시지를 기다리고 있는 상태

FIN-WAIT, CLOSE-WAIT, FIN-WAIT2 : 연결 종료를 위해 종료 요청을 받은 후의 종료 과정



출처 : 구글 어딘가..




[명령어 옵션]


-a : all 정보 출력

-n : full format 형식으로 출력

-l : listen 상태 출력

-t : tcp 방식 출력

-u : udp 방식 출력

-r : route 테이블 출력

-p : program 을 함께 출력

-s : system log 출력 - 트래픽 량 확인 가능

        ex) # netstat -s > /backup/20141205_netlog


ex)

# netstat -lntup | grep 포트, 프로그램...

# netstat -lntup | grep ssh

tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1813/sshd

tcp        0      0 :::22                              :::*                        LISTEN      1813/sshd


네트워크 안될 때 netstat 명령어 통해서 내가 접속하려는 프로그램 및 포트가 열려있는지 확인한다.





5. ping


ping은 상대 호스트가 응답할 수 있는지 확인하는 프로그램으로, 상대 호스트가 살아 있는지 확인하거나 네트워크 구간에서 패킷 손실을 확인하는 용도로 사용한다.

icmp 프로토콜 이용하며 TTL 에 따른 상대편 OS는 아래와 같이 확인할 수 있다.

TTL : 64, 128 -> Unix, Solaris, Linux

        250~    -> Windows



[명령어 옵션]


-c number : 패킷 보낼 횟수

-i number : 일반 사용자는 0.2초가 가장 빠르며 그 이하는 root 권한 필요

-s number : 패킷 사이즈


ex)

# ping -c 5 -i 0.2 -s 1000 192.168.1.134

PING 192.168.1.134 (192.168.1.134) 1000(1028) bytes of data.

1008 bytes from 192.168.1.134: icmp_seq=1 ttl=64 time=0.256 ms

1008 bytes from 192.168.1.134: icmp_seq=2 ttl=64 time=0.080 ms

1008 bytes from 192.168.1.134: icmp_seq=3 ttl=64 time=0.080 ms

1008 bytes from 192.168.1.134: icmp_seq=4 ttl=64 time=0.078 ms

1008 bytes from 192.168.1.134: icmp_seq=5 ttl=64 time=0.078 ms

--- 192.168.1.134 ping statistics ---

5 packets transmitted, 5 received, 0% packet loss, time 802ms

rtt min/avg/max/mdev = 0.078/0.114/0.256/0.071 ms

=> size 1000으로 했는데 1008 이 된 이유 : 헤더값 8byte이기 때문





6. traceroute


상대 호스트까지 도달하는 경로를 확인하는 프로그램

udp, icmp 프로토콜 이용


in Windows) tracert google.com


1) 명령어 옵션


-m number : 추적 횟수

-n : 결과는 숫자만 보여주세요





7. arp


ARP = Adress Resolution Protocal

ARP는 IP주소와 하드웨어주소인 MAC 주소를 매칭시켜 주는 테이블이며 네트워크에서 통신하기 위해서는 MAC 주소를 사용한다.

  => 실제. 이것 이용하여 비번 걸려있는 AP 사용하는 방법이 있다.


ex)

# arp

Address                  HWtype  HWaddress           Flags Mask            Iface

192.168.1.1              ether   00:50:56:c0:00:08          C                     eth2

192.168.1.2              ether   00:50:56:e6:c8:78     C                     eth2



임의의 IP주소와 MAC 주소를 매칭시켜보자.

# arp -s 192.168.1.10 00:11:22:33:44:55

# arp

Address                  HWtype  HWaddress           Flags Mask            Iface

192.168.1.254            ether   00:50:56:eb:7d:53   C                     eth2

192.168.1.1              ether   00:50:56:c0:00:08   C                     eth2

192.168.1.2              ether   00:50:56:e6:c8:78   C                     eth2

192.168.1.10             ether   00:11:22:33:44:55   CM                    eth2



삭제

# arp -d 192.168.1.10

# arp

Address                    HWtype        HWaddress           Flags Mask            Iface

192.168.1.254            ether     00:50:56:eb:7d:53      C                     eth2

192.168.1.1                ether     00:50:56:c0:00:08  C                     eth2

192.168.1.2                ether     00:50:56:e6:c8:78  C                     eth2

192.168.1.10                     (incomplete)                                                    eth2

=> 삭제되는데 조금의 시간인 필요 




8. nslookup


DNS Server 통해 도메인 - ip 확인 할 수 있음.


# yum install -y bind-utils

명령어를 통해 nslookup 명령어 설치 가능


in windows)

nslookup google.com

set type=ns : 네임서버의 설정 값 볼 수 있음

set type=any : 모든 정보

set type=a  : 기본 설정





9. dig


리눅스 전용 명령어. nslookup 보다 더 자세히 보여준다.

하지만 nslookup 을 더 많이 쓴다.





10. host


nslookup 과 비슷하지만 간단하게 보여주는 명령어




And


[21] 이론 - ip, subnetmask, prefix

|


- 2014.12.04



[복습]


1) root 비밀번호 바꾸기

2) GUI 환경으로 부팅 설정

3) grub 비밀번호 설정

4) putty 접속

5) samadal 계정 정보 변경



1) single 모드 접속하여 패스워드 변경 진행

2) vi /etc/inittab 수정

3) grub -> md5crypt 로 암호화된 패스워드 생성,

   vi /boot/grub/gurb.conf  주석 밑에 password --md5 [암호화된패스워드] 입력

4) 인터넷 자동연결 설정, ip 확인하여 putty 접속

5)

# mkdir -p /export/home/

# mv /home/samadal/ /export/home/

# usermod -d /export/home/samadal samadal




1. IP


(교재 p130 필기)

IP (IPv4 = 4x8bit = 32 bit)


000.000.000.000

옥텟(8bit) 구분자



2. Static vs DHCP



3. Subneting



[문제]


회사에서 ip 10.20.30.x/24 를 구매했습니다.

사무실에 PC 갯수는 16대가 있습니다.

서브네팅해서 5번째 구간을 구해보세요.




And


[20] 분실된 root 비밀번호 재설정, grub 암호설정 ps, top, pstree, kill, who, write, wall, skill, inittab, uname, file

|


- 2014.12.03




1. 분실된 root 비밀번호 재설정


1) 시스템 재부팅, 부팅시 VM logo 뜨면 아무 키나 누른다.

2) 최신 커널 선택 후 알파벳 e를 누른다.

3) kernel ... 을 선택한 후 알파벳 e를 누른다.

4) rhgb quiet 를 지우고 single 이라고 입력한다.

5) b를 통해 boot 시킨다.

6) passwd 통해 패스워드 변경

7) reboot 후 확인





2. grub에 암호 설정


1) 프롬프트 상태에서 grub를 입력한다.

2) grub> 에서 md5crypt를 입력한 후 password 를 넣는다.

3) 암호화된 패스워드를 복사 해둔다.

4) # vi /etc/grub.conf (=# vi /boot/grub/grub.conf)를 열어 주석 밑에

   password --md5 [복사한 암호화된 password]

5) 재부팅 통해 grub 모드 들어가 p 눌러 password 입력 되는지 확인한다.





3. ps


현재 동작하고 있는 프로세스들의 상황(스냅샷)을 보여줌 - 실시간이 아닌 그 때 그 상황


in Windows)

Ctrl + Shift + Ese : Process Management 실행 단축키

system idle process - 시스템 점유율 갖고 있다가 필요한 곳에 주는 녀석.


in Linux)

# ps -ef    명령어를 주로 사용.


UID : 사용자

PID : Process ID

PPID : Parent Process ID

C : CPU

STIME : Start Time

TTY : terminal

TIME : 작업시간

CMD : 명령어 (= PID)


즉, UID 사용자가 STIME 시간에 TTY(terminal)을 통해 CMD 명령어를 실행한 시간이 TIME 만큼이고 이 때 CPU 점유율은 C 만큼이다.





4. top


프로세스 실행 상황을 3초의 간격을 두고 새로고침하여 보여준다.

스페이스를 누르면 현재 프로세스 실행 상황을 보여준다.

꺽쇠 (< , >) 통해 화면 전환 가능하며 h 누르면 도움말, q 누르면 종료.

단, 프로세스가 어떻게 연결되어 있는지 잘 모른다.





5. pstree


프로세스를 트리 형식으로 보여준다.


# pstree -p : with PID

           -pn : with PID & 번호순





6. kill


프로세스 강제 종료 명령어.


# kill + PID : PID  프로세스 종료





7. who


현재 접속 중인 사용자 상황 조회

자세히보기 : # w





8. write


접속중인 사용자에게 메세지 전송


# write 사용자계정 pts/n (<- who 명령어 통해 알 수 있음)


연결 끊기 : Ctrl + C





9. wall


모든 사용자에게 메세지 전달. 즉 broadcast message 전달.


# wall 할말





10. skill


특정 사용자의 접속 끊기


# skill -KILL 사용자명





11. inittab


# vi /etc/inittab   에서 설정 변경 가능.


- runlevel. (init 숫자)

0 - halt

1 - Single Single user mode

2 - Multiuser, without NFS 

3- Full multiuser mode

4 - unused

5 - X11

6 - reboot





12. uname


시스템 정보를 출력


ex)

# uname

Linux

# uname -a

Linux localhost.localdomain 2.6.32-504.1.3.el6.x86_64 #1 SMP Tue Nov 11 17:57:25 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

# uname -i

x86_64





13. file


리눅스의 파일 속성 확인 및 디스크 파티션 포맷 확인


1) 파일 속성 확인

# file [file_name]


2) 디스크 파티션 포맷 확인

# file -s /dev/sda1



And