[보안] 해킹및 보안에 대한 이해
해킹 및 보안에 대한 이해
? 해킹 현황
▶ 국외–>국내–> 국외 : 30%
▶ 국외–>국내 : 15%
▶ 국내–>국내 : 8%
▶ 국내 –>국외 : 4%
▶ N/A : 41%
? 해킹 기법별 현황
▶scan 등취약점 정보 수집 : 272
▶버퍼 오버 플로우 : 214
▶ 사용자 도용 : 68
▶ Back Orifice 등 바이러스등 프로그램 : 58
▶ E-mail 관련 공격 : 20
▶ DOS 공격 : 16
▶ php3 / asp 등 S/W 보안 오류 공격 : 3
? 해킹 기법의 변화 양상
▶ 1970-80 : Password Guessing
▶ 1980-85 : 패스워드 크랙
▶ 1985-90 : 알려진 취약점 공격
▶ 1990-95 : Backdoor,Sniffer,Spoofing
▶ 1995-2000 : CGI Attack, Multiple Scan, DOS. Back Orifice, Buffer Overflow
? 최근 해킹 기법
▶ rpc 관련 취약점 공격
▶ Linux amd 공격
▶ DOS(Denial Of Service) Attack (Trinoo등)
▶ nmap -PI -sT -p 27665 -m logfile 210.121.176.* –>위대역에 trinoo 가 있는지 검
색.
?Buffer Overflow 공격에 대해
할당된 메모리의 양보다 더 많은 양의 데이터를 메모리에 copy 할 때 발생.
stack에서 return address를 수정함으로써 프로그램 실행 흐름을 조정
—– ———-
Text Buffer
—– ———–
Data sub()
—– ————-
Heap return address
—— ————
Stack ————-> main()
—– ————-
프로그램이 ReadOnly 의 Text 에 접근하려면 Segmentation Fault 에러.
?LINUX AMD 공격에 대해
AutoMount daemon으로 원격지의 File system 을 mount 할때 필요하다
telnet tt.co.kr 2222
Trying tt.co.kr
Connected tt.co.kr.
Escape Character is ]
bash# id
uid=0
? permission(권한) 에 대해
4000 : Set User ID
2000 : Set Group ID
1000 : Sticky Bit
drwxrwxrwt 3 root root 1024 May 19 22:30 tmp/
sticky 가 있을 때에는 누구나 와서 쓸 수 있지만 다른 사람의 파일을 지울 수는 없다.
find / -perm +4000 -print –> setuid 가 걸린 모든 파일을 listing 한다.
lpr 등 문제의 소지가 있는 것은 700 등으로 변환한다.
-rwsr-x— 1 root wheel 13208 Apr 14 1999 /bin/su*
chmod 4750 su
/etc/group에서 wheel 그룹에 이용자 추가
?/etc/securetty
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
? /etc/inittab
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
?/etc/security/limits.conf
<domain> <type> <item> <value>
<domain> can be
– an user name
– a group name, with @group syntax
– the wildcard *, for default entry
<type> can have the two values:
– “soft” for enforcing the soft limits
– “hard” for enforcing hard limits
<item> can be one of the following:
– core – limits the core file size (KB)
– data – max data size (KB)
– fsize – maximum filesize (KB)
– nofile – max number of open files
– rss – max resident set size (KB)
– stack – max stack size (KB)
– cpu – max CPU time (MIN)
– nproc – max number of processes
– as – address space limit
– maxlogins – max number of logins for this user
– priority – the priority to run user process with
예)
* soft core 0
* hard rss 10000 #10메가)
* soft nproc 20
kskim – maxlogins 4
◆/etc/login.defs
# *REQUIRED*
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail
#MAIL_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password
changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password
expires.
#
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 500
UID_MAX 60000
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 500
GID_MAX 60000
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
# If useradd should create home directories for users by default
# On RH systems, we do. This option is ORed with the -m flag on
# useradd command line.
#
CREATE_HOME yes
◆ umask
umask 는 파일이 생성될 때 미리 권한을 조정해 주는 작용을 하는 값으로 그 파일의
permission에서 umask 값을 뺀값이 permission 으로 만들어 진다.
umask 0 : 666
umask 022 : 666 – 022 = 644
◆process 에 대해
프로세스는 부모 프로세스로부터 태어나서 자신을 복제(fork)한다.
가장 초기의 process 는 init 인데, fork를 할 때 자식 프로세스는 부모 프로세스의 내용
을 그대로 이어 받는다. 그러나 같은 일을 하는 것이 아니라 다른 일을 할 경우에는 exec
를 통하여 fork 하며 프로세스가 죽을때의 시스템 call 은 exit 이다. 죽을때는 죽었다는 사
실을 자기를 낳아준 부모에게 알려준다.
?부팅시 실행 데몬에 대해
/etc/rc.d/rc3.d/ 에 있는 스크립트
S05apmd laptop 에서만 필요하므로 서버에서는 필요없다.
S10xntpd Network time protocol이다. 역시 필요없다.
S11portmap NIS 나 NFS 서비스 이용시 R 서비스에 대한 port 를 mapping 시켜주는
서비스이므로 필요없다.
S15sound 서버에서 Sound 를 서비스 하지 않으므로 필요없다.
S15netfs nfs client 가 nfs server 를 마운트 할때 필요하므로
역시 필요없다.
S20rstatd
S20rusersd
S20rwhod
S20rwalld
R 로 시작하는 서비스는 Remote 에서 실행하는 것이므로 반드시 죽여야 한다.
S20bootparamd 하드나 플로피등 부팅수단이 없을때 이용하는 것으로 반드시 죽여야
한다.
S25squid 프록시 서버 설정이므로 역시 필요없다.
S34yppasswdd NIS server 에서 필요하므로 필요없다.
S35ypserv NIS 에서 필요한 설정이므로 필요없다.
S35dhcpd dhcp(IP 동적할당 서비스) 에서 필요하므로 반드시 삭제한다.
S40atd cron 과 같은 서비스인데, cron 서비스를 하므로 삭제한다.
S45pcmcia 노트북에서 필요하므로 삭제한다.
S50snmpd 원격의 이용자가 상세한 정보를 필요로 할때 필요한데 ,삭제한다.
S55named DNS 서비스를 하지 않으면 삭제한다.
S55routed 라우터가 아닌 이상 일반 서버에서는 삭제한다.
S60lpd 프린트 서버가 아닌 이상 반드시 삭제한다.
S60mars-nwe Netware 에서 쓰는 file 이나 print server 이므로 삭제한다.
S60nfs NFS server 에서 필요하므로 반드시 삭제한다.
S72amd AutoMount daemon으로 원격지의 File system 을 mount 할때 필요하다,
반드시 삭제한다.
S75gated 역시 라우터가 아닌 이상 삭제한다.
S80sendmail sendmail 데몬이다. 삭제하지 않는다.
S85httpd Apache webserver 이다. 컴파일하여 설치하였을 경우에는 이 부분을 삭제
하고 /etc/rc.d/rc.local 에 추가한다.
S87ypbind NIS 를 쓸때 필요하다. 반드시 삭제한다.
S90xfs X font server 로 X-Windows 서비스를 하지 않으므로 삭제한다.
S95innd News server 로 News 서비스를 하지 않으므로 삭제한다.
S99linuxconf 원격지에서 브라우저를 통해 Linux systems 을 설정을 변경할 수 있는 것
으로 반드시 삭제하여야 한다.
? 각 데몬별 접속제한에 대해
(1) inetd(슈퍼 서버) 데몬
(2) standalone (sendmail, http, proftpd)
● inet의 경우 Tcp Wrapper를 이용하여 접속제한 가능.
systat , finger , ftp , telnet , rlogin , rsh , exec , tftp
talk , pop3 , imap etc….
환경 설정후 killall -HUP inetd
▶ TCP Wrapper –> 일단 해당 호스트와의 연결이 이루어진 상태에서 패킷검사
▶ Firewall –> 일단 패킷 인증을 한 후에 연결
● Standalone –> sendmail
/etc/mail/access에서 수정
spammer at aol.com REJECT
diiii.com REJECT
diiii at diiii.com OK
203.34 REJECT
211.47.64 RELAY
작성후
/etc/mail에서 “./makemap.sh access” 실행으로 갱신.
● Standalone –> httpd
<Directory /home/gon2/>
Order allow,deny
Allow from all
Deny from 211.47.64 211.47.65
</Directory>
–> /home/gon2/ 하위 디렉토리나 문서에 접근시 모든 접속은 허용하되
211.47.64.xxx 나 211.47.65.xxx 대역에서 접근시 forbidden 에러를 낸다.
다른 IP에서 접근시에는 정상적으로 Browsing 된다.
? 해커가 들어올수 있는 방법
(1) 데몬 프로그램의 버그
˙커널과 깊은 관련
˙커널은 외부 프로그램으로부터 요청해 오는 TCP/IP를 보고 판단하여 그에 맞는 데
몬 프로그램에게 제어를 넘긴다.
˙ 덩치가 큰 데몬(sendmail 등) 일수록 버그가 많다.
(2) Packet Sniffering(도청)
˙TCP/IP 가 암호화되지 않는 허점을 이용.
˙/sbin/ifconfig 시
eth0 Link encap:Ethernet HWaddr 00:10:5A:83:28:A8
inet addr:210.121.176.235 Bcast:210.121.176.255 Mask:255.255.255.192
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:27913375 errors:0 dropped:0 overruns:2817 frame:0
TX packets:22392953 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:11 Base address:0xe400
자신의 컴퓨터가 promiscuous mode 로 설정되어 있으면 누군가 sniffing 툴을 동작시
키는 것임(?)
ifconfig eth0 -promisc 를 하면 promisc mode 가 없어짐.
▶스니핑은 Dummy HUB에서 심각하게 일어나며 스위칭에서는 잘 일어나지 않는다.
▶스니핑이 돌 경우 속도가 느려지고 데이터의 Loss 가 많아지는 현상이 있다.
▶Sniffing 은 root 권한에서만 동작하므로 sniffing 이 동작하면 subnet 내에 최소한 하
나 이상의 시스템이 root 권한을 빼앗겼다는 것을 의미한다.
(3) 악의적인 코드
(4) scanner (PORT scan or IP scan)
COPS, SATAN , SAINT , nmap 등
RTSD 등은 Scan 감지 프로그렘.
(5) IP Spoofing (IP 속이기)
arp(Address Resolution Protocol) 는 IP 주소를 물리적 주소로 변화시키는 일을 한다.
ARP 캐쉬는 20분정도이며 arp Spoofing 는 이 캐쉬를 변화시키는 것이다.
www10에서 apr -a를 입력했을 때
? (210.121.176.236) at 00:10:5A:83:F4:AC [ether] on eth0
? (210.121.176.254) at 00:B0:4A:1F:80:A0 [ether] on eth0
? (210.121.176.250) at 00:50:04:C0:0F:04 [ether] on eth0
(6) DoS(Denial Of Service) Attack
˙Trin00 등
Intruser (27665)–> Master(27444) –> D(31335) –>Victim
nmap -PI -sT -p 27665 -m logfile 210.121.176.*
–> 위 대역에 Trinoo가 있는지 검색.
(5) 대표적 Trojaned 백도어
Remote Attack
Trojaned login 매직 패스워드를 이용, 로긴후 로그를 안남김
Trojaned inetd 외부에서 숨겨진 포트에 접속허용
.rhosts 또는 /etc/hosts.qquiv 패스워드 없이 모든 호스트의 접근허용
Trojaned rshd,rlogind 매직 패스워드를 이용.로긴후 로그를 안남김
Trojaned tcpd 특정 ip 에 대해 무조건 접근허가
Troajned telnetd 매직 패스워드를 사용,로긴후 로그를 안남김.
Trojaned fingered 외부의 접근허용 쉘을 띄움.
Local Attack
w,who 특정 사용자의 정보를 숨김.
ps, top 특정 프로세스의 정보를 숨김
ifconfig 스니퍼링 탐지를 노림.
finger 특정 사용자의정보를 숨김
netstat 특정 IP 의 접속정보 숨김
ls 특정 파일이나 디렉토리를 숨김
syslogd 특정 로그내용 숨김
백도어는 일반적으로 /dev 나 /tmp 또는 … 또는 “..<tab>” 와 같이 찾기 어려운
디렉토리에 많이 숨겨져 있다.
해킹을 당했을시에는 다음의 파일들에 대해 생성날짜 사이즈등을 같은 버전인
기존의 서버와 비교, 점검한다.
˙/etc/passwd 등 /etc/*
˙/bin/login 등 /bin/* , /usr/sbin/*, /usr/bin/* 등 각종 실행 파일
˙/etc/rc.d/* 아래의 부팅 파일.
▶ 점검방법
(1) touch test
touch 0524011000 test (test 의 생성날짜를 2000년 5월 24일 01시 10분으로 한다)
find / -newer test -print
–> test 파일보다 이후에 생성/변경된 파일을 listing 한다.
(2) ls -ltu OR ls -lRtu /
파일 접근/변경 순서대로 LISTING
? /etc/services
인터넷 서비스 요청시 사용될 포트번호와 프로토콜에 대한 정의가 있으며 부팅시 inetd
에 읽혀진다.
telnet 포트를 23번에서 다른 번호로 변경할 시에는
/etc/services에서
telnet 100/tcp 와 같이 수정하면 된다.
?/etc/inetd.conf
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
① ② ③ ④ ⑤ ⑥ ⑦
① 서비스 요청의 종류, /etc/services에 정의되어 있다.
② 사용소켓의 종류, 어떤 타입의 소켓을 이용할 것인가 정의되어 있다.
stream : 스트림 형태의 연속적인 데이터를 이용. 해당 데이터는 오류수정과 서비스
재 전송요청등 데이터 전달의 확인까지 가능하다.
dgram : 연속적이고 신속한 데이터 전송시에 사용, 오류수정이나 제전송등이 없다.
③ 사용될 프로토콜의 종류정의.
tcp : 오류수정이나 데이터 전송확인.
udp : dgram 에 해당.
tcp header
(1) Source port / Destition port
(2) Segment Sequence Number
(3) Acknowledgement Number
(4) THL / Flage / Window size
(5) Checksum
udp header = (2/5) tcp header
(1) Source port / Destition port
(2) Checksum
④ 서비스 요청후 반응
서비스의 요청이 들어왔을 때 반응방법을 정의.
wait / nowait 가 있으며 대부분 nowait 이지만 talk 의 경우에는 wait 이다.
⑤ 실행 권한
해당 데몬이 동작시 어떤 권한으로 도는지 정의.
⑥ 데몬 프로그램
실질적으로 서비스 요청시 실행될 데몬 프로그램.
⑦ 전달인자
6번과 동일하게 기입(tcpd를 거치지 않을 경우)
▶ inetd 만 돌경우
inetd — Daemon
— Daemon
— Daemon
▶ tcp wrapper를 통할 경우
inetd — tcpd — Daemon
— Daemon
— Daemon
/usr/sbin/tcpd : 환경 설정 파일에서 접속된 호스트의 IP 가 현재 호스트에 대한 접근
허가를 있는가를 알아내고 접속을 시켜주는 프로그램이다.
/etc/hosts.deny : 접근거부
all:all
/etc/hosts.allow : 접근허가
all:210.121.176.
all:168.126.29.
all:211.47.64.
all:211.47.65.
ipop3d:all
방화벽 (Firewall)
대표적 프로그램으로는 IPCHAINS 와 TIS 제품이 있으며 방화벽을 설치했을 경우 들어오
고 나오는 모든 패킷에 대해 실질적인 데이터 변환전에 일일이 체크를 하므로 일반적으
로 기존 속도의 1/3 정도가 된다고 하며 현재 개발중인 프로그램들은 약 70%정도까지도
가능하다고 알려져 있다.
방화벽의 경우 KIDC 의 경우에 방화벽 설치에 따른 추가비용(월50만원) + 속도저하등의
문제로 약 5%만 사용하고 있다.
? ftp 는열고 telnet은 막는법.
/etc/telnetusers라는 화일을 하나 만들고 여기다가 한 줄에 하나씩 텔넷을 허용할 사용
자들의 아이디를 적어 줌. 그리고 나서 /etc/pam.d/login의 맨 앞에 다음과 같이 추가.
auth required /lib/security/pam_listfile.so item=user sense=allow
file=/etc/telnetusers onerr=succeed
두 줄에 걸쳐 있지만, 한 줄에 합쳐서 써야 함.
이제 /etc/telnetusers 화일에 없는 사용자는 외부에서 접속할 수 없게 됨.
다른 사용자 아이디로 접속한 다음에 su 를 통해 그 사용자의 권한을 얻을 수는 있겠지
만…
참고로… 특정 사용자에 대해서만 telnet 을 막으려면
sense=allow 를 deny 로 만들기만 하면 됨.
? 특정 계정에 대해 telnet 접속 제한하는법.
/etc/security/access.conf
문법 –> permission : users : origins
permission에서는 “+” (허용) “-” (불가)이 가능.
예)
-:ALL EXCEPT wheel shutdown sync:console
wheel, shutdown 등을 제외하고는 console 로긴제한
-:wheel:ALL EXCEPT LOCAL .win.tue.nl
-:sammy sserra77 diiii :ALL
sammy, sserra77, diiii 에 대해서는 계정 접근 금지
? TCP/IP 의 약점을 이용한 Sniffing 에 대응하기 위해
★ telnet 보안 : telnet 대신 SSH(보안쉘) 이용
★ FTP 보안 : sslftp 등 암호화된 FTP 프로그램 이용.
★ sendmail 보안 :
[antihong@www10 antihong]$ telnet mail.tt.co.kr 25
Trying 210.121.176.216…
Connected to mail.tt.co.kr.
Escape character is ‘^]’.
220 aol01 ESMTP Sendmail 8.9.3/8.9.3; Wed, 24 May 2000 00:20:37 -0900
HELO TEST
250 withus.org Hello w10.withus.org [210.121.176.235], pleased to meet you
MAIL FROM: antihong at
tt.co.kr
250 antihong at tt.co.kr…
Sender ok
RCPT TO: antihong at
tt.co.kr
250 antihong at tt.co.kr…
Recipient ok
DATA
354 Enter mail, end with “.” on a line by itself
연습 메일입니다.
.
250 AAA06072 Message accepted for delivery
QUIT
221 withus.org closing connection
Connection closed by foreign host.
(1) HELO Buffer Overflow
HELO 명령을 사용할 때 비정상적으로 긴 문자를 전달하므로써 IP 발신지 주소를 나
타 내는 부분을 덮어써서 확인할 수 없게 만들었다.
(2) 패스워드 파일/ ROOT 접근
8.8.4에서 sendmail 이 배달되지 않은 메시지를 /var/tmp/dead.letter 파일 끝에 저장한
다 는 것과 /tmp 는 누구나 쓸 수 있다는 사실을 이용하여 일부러 존재하지 않는 메시
지를 sendmail 서버로 보내어 root를 얻음.
(3) sendmail 헤더파싱 Dos 공격(8.8.2에 적용)
to: 에 많은 메일을 동시에 발송하여 sendmail을 죽이는 것.
★ http 보안
### httpd.conf에서
BrowserMatch “WebZIP” go_out
BrowserMatch “Teleport” go_out
BrowserMatch “GetRight” go_out
<Directory />
Options Includes Indexes IncludesNOEXEC ExecCGI FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
Deny from env=no_access
</Directory>
IncludesNOEXEC 가 없을 경우
test.html
<!–#exec cmd =“cat /etc/passwd”–>
–> test.html 브라우징시 위의 command 실행.
PHP3 소스 업로드건,
★ SSL(Secure Socket Layer)
▶웹기반 통신의 문제점
(1) HTTP 는 암호화 기법을 제공하지 않으므로 Client 와 Server 사이에 데이터를 도청
할
수 있다.
(2) HTTP 는 Stateless protocol.
(3) 현재 진행중인 세션을 인증할 수 없다.
▶ SSL 통신 순서
(1) 클라이언트와 서버간 핸드쉐이크 (키교환, 상태설립,동기화)
(2) Application 계층의 데이터를 압축 & 암호화(Encrytion)
(3) 수신쪽에서 이의 역순으로 진행
? DoS 공격
DoS 공격의 위험성
▶공격자들은 위조된 IP로 위조된 패킷을 만들어 연결요구를 함.
요구를 받은 유닛은 위조된 주소를 찾지 못하기 때문에 세션 마비.
▶사용가능한 모든 세션을 차지함으로써 서비스 마비
▶로그인 루틴의 오버플로우를 이용하여 서버를 마비 & 재부팅
예)
① NMAP을 이용하여 inetd 정지
② lpr 이용한 공격
③ PORTMAP (rpc 서비스와 관계)
④ time(포트 13) 과 daytime(포트 37) 공격(/etc/inetd.conf)
⑤ teardrop (IP 단편화 공격)
IP 데이터그램의 전송을 위해 먼저 단편화한후 나중에 재조립을 하게 되는데,
공격자들이 단편의 길이를 음수로 만들어 보내 에러를 발생하여 시스템을 마비시킴.
⑥ 죽음의 ping
?Backup 현황 및 복구
1차 백업
#!/bin/sh
cd /backup
rm -f *.tar.gz
tar cvfpz httpd.tar.gz /www/*
tar cvfpz home2.tar.gz /home2/*
tar cvfpz home3.tar.gz /home3/*
tar cvfpz etc.tar.gz /etc/*
tar cvfpz mail.tar.gz /var/spool/mail/*
tar cvfpz msql.tar.gz /usr/local/Hughes/msqldb/*
tar cvfpz mysql.tar.gz /usr/local/mysql/var/*
chown backup.backup *.tar.gz
chmod 700 *.tar.gz
2차 백업
#!/usr/bin/expect
spawn ftp www6.tt.co.kr
expect “Name :”
sleep 2
send “backup\\r”
expect “Password:”
sleep 2
send “@ehdghkrk\\r”
expect “ftp>”
sleep 2
send “bin\\r”
expect “200 Type set to I.”
sleep 2
expect “ftp>”
sleep 2
send “get etc.tar.gz /home/backup/www6/etc.tar.gz\\r”
expect ” Kbytes/sec)”
sleep 2
expect “ftp>”
sleep 2
send “get mail.tar.gz /home/backup/www6/mail.tar.gz\\r”
expect ” Kbytes/sec)”
sleep 2
expect “ftp>”
sleep 2
send “get home2.tar.gz /home/backup/www6/home2.tar.gz\\r”
expect ” Kbytes/sec)”
set timeout -1
sleep 2
expect “ftp>”
sleep 2
send “get home3.tar.gz /home/backup/www6/home3.tar.gz\\r”
expect ” Kbytes/sec)”
set timeout -1
sleep 2
expect “ftp>”
sleep 2
send “get httpd.tar.gz /home/backup/www6/httpd.tar.gz\\r”
expect ” Kbytes/sec)”
set timeout -1
sleep 2
expect “ftp>”
sleep 2
send “get msql.tar.gz /home/backup/www6/msql.tar.gz\\r”
expect ” Kbytes/sec)”
sleep 2
expect “ftp>”
sleep 2
send “get mysql.tar.gz /home/backup/www6/mysql.tar.gz\\r”
expect ” Kbytes/sec)”
sleep 2
expect “ftp>”
sleep 2
send “quit\\r”
expect “221 Goodbye.”
sleep 2
interact
? 시스템 관리자로서 보안 수칙.
(1) 수시로 시스템에 접속, ps aux를 통해 기본 서비스 이외의 서비스가 돌고
있는지 확인한다. 단 불가피한 서비스로 인해 떠 있는 DpSvr(EC 서비스) 나 두레박등은
제외 한다.
(2) /etc/inetd.conf, /etc/rc.d/rc.local 또는 /etc/rc.d/rc3.d/ /etc/rc.d/init.d/ 등에
기본 제공 서비스 이외 다른 서비스가 있는지 확인한다.
(3) 실질적인 크래킹 사고중 70%는 내부 공격에 당한다.
contorl 서버에서 내부 사용자들의 입력 명령어를 매일 점검한다.
(4) control 서버의 /var/log/secure에서 외국등의 IP에서 불법접속 시도를 하지는 않았
는지 확인 후 조처한다.
국내 할당 IP 대역 : http://stat.nic.or.kr/public_html/ip.html
whois 111.222.333.111 at
whois.nic.or.kr
@whois.apnic.net
@whois.arin.net
@whois.ripe.net
http://www.ipindex.net/
(5) 수시로 df -h를 통해 특정 파티션이 차지 않았는지 확인한다.
(6) nmap www36.tt.co.kr 과 같이 수시로 열린 포트가 없는지 확인한다.
(7) RTSD를 설치하고 scan 이 감지되면 특정 감지된 IP는 접속금지하고 해당 IP 대역
관 리자에게 통보한다. (공지사항 참조)
(8) root 로 로긴한 상태에서 자리를 비우지 않는다.
(9) /www/cgi-bin/test-cgi 삭제
/www/cgi-bin/printenv 삭제
/etc/inetd.conf에서 pop3와 telnet을 제외한 모든 서비스 주석처리
/etc/passwd에서 ftp 계정 주석처리
mysql 실행시 root 가 아니라 mysql(암호없이 shell 은 Popsh 로 설정) 로 실행.
/usr/local/mysql/var 의 소유는 mysql로!!
? 원격지의 운영체제 아는법
(1) PING 의 TTL을 보고 판별
TTL 운영체제
64 라우터 / Digital UNIX
128 Windows 2000/NT/9X
256 UNIX / LINUX / 라우터
(2) http
———————–
#!/bin/sh
function senddata {
echo “GET / HTTP/1.0”
echo “Content-length: 0”
echo “Content-type: text/html”
echo
while true
do
echo
done
}
senddata|telnet $1 80
————————–
./http tt.co.kr 로 웹데몬 종류를 알 수 있다.
? RPM(Redhat Package Management)이용하기
▶ rpm -qa|sort|less
–> 현재 시스템에 설치되어 있는 모든 패키지를 보여줌
▶ rpm -e 패키지이름 or 패키지 이름-버전 or 패키지 이름-버전-릴리즈
–> 해당 패키지를 삭제한다.
ex) rpm -e apache
▶ rpm -Uvh 패키지
–> 해당 패키지를 업그레이드
▶ rpm -ql proftpd
–> proftpd 와 관련된 파일을 보여줌
▶ rpm -qf /usr/bin/free
–> /usr/bin/free 가 어떤 패키지안에 있는지 보여줌
▶ rpm -V setup
–> setup 패키지의 무결성 검사 (이상이 없을시 도트 표시)
S.5….T c /etc/hosts.allow
S.5….T c /etc/hosts.deny
S.5….T c /etc/profile
..?….. c /etc/securetty
S.5….T c /etc/services
⇒ 5 MD5 체크섬(화일의 내용이 원본과 같은가?)
⇒ S 파일크기
⇒ L 심볼릭 링크
⇒ T 파일 갱신 일시
⇒ D 장치
⇒ U 사용자
⇒ G 그룹
⇒ M 모드