From the Book of Tar, 1:14:
And it came to pass that, in a town in Galilee, a SysAdmin could not stomach SELinux.
And he went to talk to a security.guru, and he said unto him:
"Because of SELinux, there is much crashing amongst my daemons, and my log files are void and empty, and my data center is silent"
And the security.guru replied:
"You have only your ignorance to blame, as SELinux will not yield its enlightenment to those who do not pursue its intimate knowledge".
And the SysAdmin, chastened, hung his head in shame, and returned to his datacenter cave, and began studying the SELinux wisdom in earnest. But instead of enlightenment, he felt the study was growing the doubt in his heart. And it came to pass that one of the sacred books read:
"You will learn the details of the SELinux policy for your distribution".
Ando so the SysadMin browsed its server policy and lo, the rules were thousands and their lot meaningless, and the kernel in its binary form was crystal clear by comparison.
And the SysAdmin, with much doubt in his heart, returned to the security.guru dwelling and said unto him:
"Surely you knew that intimate knowledge of thousands of rules is not possible and you were trying to test my resolve. Pray tell me what should I do now."
And the security.guru smiled, and told him, sternly:
"You fool! Why do concern yourself with questions that are beyond thee? Don't you know that SELinux policies are brought to you by higher powers which you never may hope to stare upon? Return therefore to your keyboard, and relax."
But the sysadmin was sad in his heart, thinking:
"The guru advises me to study, but when study brings chaos and nonsense, he tells me to relax. But still my servers are down, and my logs are void and my datacenter suffers."
And turning in anger to the security.guru he saith unto him:
"Surely you have been smoking bad stuff, or ate the weed that brings madness"
But the guru replied:
"Your heart is evil and your soul is now lost, because you did not abide to the Principle of least privilege."
But the SysAdmin arose and explained to the guru, with several interesting details, what he should do with the Principle of least privilege and SELinux and its accursed lot, and advised him that returning to write windows ACLs would have brought several blessings unto him.
And the guru left with great anger and disdain, but as he left he fell in the group policies Gehenna, were there was much wailing and teeth grinding.
But the SysAdmin returned to his console and typed:
# for h in $(serverlist) ; do ssh $h setenforce 0; done
And lo, he felt a great peace in his heart, and a soft light shone on his black and green monitor, and a sweet scent filled the cave and the buzz of the servers was loud, and the daemons were running and the logs were full and the diagnostics again meaningful, and joy returned to the datacenter.
L'uso di questo sito
autorizza anche l'uso dei cookie
necessari al suo funzionamento.
(Altre informazioni)
Tuesday, March 24, 2015
Monday, March 23, 2015
La Parabola di SELinux
C'era in Galilea un SysAdmin che non riusciva a digerire SELinux.
Andò allora da un security.guru, che gli disse:
"Non puoi pretendere di capire SELinux senza conoscerlo intimamente".
Il SysAdmin, umiliato, chinò la testa, tornò nella sua caverna e si procurò diversi
testi su SELinux. Iniziò a studiarli, ma, invece di sentire
l'illuminazione dentro di sè, sentiva un senso di sgomento crescere
nel suo animo.
Finchè un giorno, su uno dei testi egli lesse la frase
"è molto importante conoscere bene la policy di selinux per la vostra
distribuzione".
Egli allora aprì il tool grafico per il browsing della
policy ed ecco, le regole erano migliaia, e la loro concatenazione era
senza senso, e sendmail.cf era chiaro come un cristallo di rocca al
confronto (e tale era anche il kernel in forma binaria).
Il SysAdmin tornò allora dal security.guru e gli disse:
"Di certo tu sapevi che non è possibile studiare e conoscere miglialia di regole - dimmi dunque come devo procedere".
E il security.guru gli disse:
"Perchè ti preoccupi di queste cose? La policy di SELinux viene a te compilata da chi ne capisce".
E il SysAdmin dubitò nel suo cuore, e pensò:
"Costui prima mi dice studia. Quando studio e trovo il non senso, mi dice di non preoccuparmi. Ma intanto i miei server languiscono e i log sono muti."
E allora volgendosi al security.guru gli disse
"Tu hai fumato molto
male".
E il guru a lui:
"Tu parli così perché il tuo cuore è perduto,
e non conosci il Principio del Minimo Privilegio".
Ma allora il SysAdmin spiegò al guru, con molti interessanti dettagli, a quali fini poteva
porre il principio del minimo privilegio, e di usare SELinux per farcisi i bigodini, e gli consigliò di tornare a scrivere ACL in Windows, che gli avrebbe arrecato giovamento. E il guru, provando grande sdegno nel suo cuore si allontanò dal SysAdmin, ma allontanandosi cadde nella Geenna delle group policies, dove per lui fu pianto e stridor di denti.
Ma il SysAdmin si volse verso la sua console e digitò:
# for h in $(serverlist) ; do ssh $h setenforce 0; done
Ed ecco un grande senso di pace scese nel suo cuore, e i demoni
ricominciarono a funzionare e tutto fu letizia nel data center.
Andò allora da un security.guru, che gli disse:
"Non puoi pretendere di capire SELinux senza conoscerlo intimamente".
Il SysAdmin, umiliato, chinò la testa, tornò nella sua caverna e si procurò diversi
testi su SELinux. Iniziò a studiarli, ma, invece di sentire
l'illuminazione dentro di sè, sentiva un senso di sgomento crescere
nel suo animo.
Finchè un giorno, su uno dei testi egli lesse la frase
"è molto importante conoscere bene la policy di selinux per la vostra
distribuzione".
Egli allora aprì il tool grafico per il browsing della
policy ed ecco, le regole erano migliaia, e la loro concatenazione era
senza senso, e sendmail.cf era chiaro come un cristallo di rocca al
confronto (e tale era anche il kernel in forma binaria).
Il SysAdmin tornò allora dal security.guru e gli disse:
"Di certo tu sapevi che non è possibile studiare e conoscere miglialia di regole - dimmi dunque come devo procedere".
E il security.guru gli disse:
"Perchè ti preoccupi di queste cose? La policy di SELinux viene a te compilata da chi ne capisce".
E il SysAdmin dubitò nel suo cuore, e pensò:
"Costui prima mi dice studia. Quando studio e trovo il non senso, mi dice di non preoccuparmi. Ma intanto i miei server languiscono e i log sono muti."
E allora volgendosi al security.guru gli disse
"Tu hai fumato molto
male".
E il guru a lui:
"Tu parli così perché il tuo cuore è perduto,
e non conosci il Principio del Minimo Privilegio".
Ma allora il SysAdmin spiegò al guru, con molti interessanti dettagli, a quali fini poteva
porre il principio del minimo privilegio, e di usare SELinux per farcisi i bigodini, e gli consigliò di tornare a scrivere ACL in Windows, che gli avrebbe arrecato giovamento. E il guru, provando grande sdegno nel suo cuore si allontanò dal SysAdmin, ma allontanandosi cadde nella Geenna delle group policies, dove per lui fu pianto e stridor di denti.
Ma il SysAdmin si volse verso la sua console e digitò:
# for h in $(serverlist) ; do ssh $h setenforce 0; done
Ed ecco un grande senso di pace scese nel suo cuore, e i demoni
ricominciarono a funzionare e tutto fu letizia nel data center.
Thursday, March 19, 2015
Euridice e i suoi innamorati
Che bello, che commovente, il raccontino che Erri de Luca fa degli anni settanta. C'erano quelli buoni e nobili che, nei panni di Orfeo, cercavano di liberare la giustizia (Euridice), di cui erano innamorati, dalle profondità dell'Ade, e così trasformavano la società; poi c'erano gli ignavi (pare la stragrande maggioranza della generazione di cui si parla, ad onta delle "masse" di cui si fregia de Luca) che non presero posizione; e i cattivi che presero le parti del potere, e oggi sono la classe dirigente.
Ed andò a finire che, povero Orfeo, conobbe:
"...le prigioni e le condanne sommarie costruite sopra reati associativi che non avevano bisogno di accertare responsabilità individuali. Ognuno era colpevole di tutto. Il nostro Orfeo collettivo e stato il più imprigionato per motivi politici di tutta la storia d’Italia,[...] Si consumò una guerra civile di bassa intensità ma con migliaia di detenuti politici. Una parte di noi si specializzò in agguati e in clandestinità. Ci furono azioni micidiali e clamorose ma senza futuro..."
Quanto ci piace, direbbe Brecht, lodare il nostro cappello. Questo racconto rifulge talmente di nobiltà orfica che si stenta a ricordare che, negli stessi anni, non c'era solo la mafia ad ammazare, dopo processi sommari documentati in penosissimi filmati, i fratelli dei pentiti. (Roberto Peci, anyone?)
Come accade nei migliori romanzi storici, anche qui alcune comparse sono ignorate per non appesantire il discorso di dettagli - si tratta degli operai, ingegneri, giornalisti, giudici e semplici ragazzi che finirono mortammazzati in quelle azioni micidiali, ma ahimè, sospira Erri, senza futuro. D'altronde, loro Euridice l'hanno davvero incontrata e si suppone che per il nostro Erri siano quelli fortunati.
Il 5 Giugno Erri de Luca (che quanto ad errare non scherza) viene processato per aver rilasciato un'intervista dove auspicava il sabotaggio dei cantieri della TAV. Non penso neppure per un momento di prendere per buone le sue proteste sul candore di quelle dichiarazioni - penso ciononostante che non debba essere condannato, perché ritengo la libertà di parola un bene irrinunciabile - la sua, ma anche di quella di David Irving, e non so se lui sarebbe d'accordo. So che è in questi casi che è massimamente attuale la citazione di H.L.Mencken:
"Il guaio di combattere per la libertà umana è che si passa la maggior parte del tempo
a difendere dei farabutti. Infatti è contro costoro che le leggi oppressive sono inizialmente dirette, e l'oppressione va fermata alla radice, se la si vuole fermare."
"The trouble with fighting for human freedom is that one spends most of one's time defending scoundrels. For it is against scoundrels that oppressive laws are first aimed, and oppression must be stopped at the beginning if it is to be stopped at all."
- H.L. Mencken
Ed andò a finire che, povero Orfeo, conobbe:
"...le prigioni e le condanne sommarie costruite sopra reati associativi che non avevano bisogno di accertare responsabilità individuali. Ognuno era colpevole di tutto. Il nostro Orfeo collettivo e stato il più imprigionato per motivi politici di tutta la storia d’Italia,[...] Si consumò una guerra civile di bassa intensità ma con migliaia di detenuti politici. Una parte di noi si specializzò in agguati e in clandestinità. Ci furono azioni micidiali e clamorose ma senza futuro..."
Quanto ci piace, direbbe Brecht, lodare il nostro cappello. Questo racconto rifulge talmente di nobiltà orfica che si stenta a ricordare che, negli stessi anni, non c'era solo la mafia ad ammazare, dopo processi sommari documentati in penosissimi filmati, i fratelli dei pentiti. (Roberto Peci, anyone?)
Come accade nei migliori romanzi storici, anche qui alcune comparse sono ignorate per non appesantire il discorso di dettagli - si tratta degli operai, ingegneri, giornalisti, giudici e semplici ragazzi che finirono mortammazzati in quelle azioni micidiali, ma ahimè, sospira Erri, senza futuro. D'altronde, loro Euridice l'hanno davvero incontrata e si suppone che per il nostro Erri siano quelli fortunati.
Il 5 Giugno Erri de Luca (che quanto ad errare non scherza) viene processato per aver rilasciato un'intervista dove auspicava il sabotaggio dei cantieri della TAV. Non penso neppure per un momento di prendere per buone le sue proteste sul candore di quelle dichiarazioni - penso ciononostante che non debba essere condannato, perché ritengo la libertà di parola un bene irrinunciabile - la sua, ma anche di quella di David Irving, e non so se lui sarebbe d'accordo. So che è in questi casi che è massimamente attuale la citazione di H.L.Mencken:
"Il guaio di combattere per la libertà umana è che si passa la maggior parte del tempo
a difendere dei farabutti. Infatti è contro costoro che le leggi oppressive sono inizialmente dirette, e l'oppressione va fermata alla radice, se la si vuole fermare."
"The trouble with fighting for human freedom is that one spends most of one's time defending scoundrels. For it is against scoundrels that oppressive laws are first aimed, and oppression must be stopped at the beginning if it is to be stopped at all."
Tuesday, March 17, 2015
L'incubo della modernità
![]() |
| Franz von Stuck: Lucifero |
Alla fine della mostra, un video antologico raccoglie scene di film e documentari della stessa epoca (con scene da Metropolis, fra gli altri) popolato da visioni di incubi futuribili. Un'ottima dimostrazione di cone una gran parte degli artisti e intellettuali europei interpretarono l'introduzione delle tecnologie che liberarono le masse d'Europa dalla più abietta povertà come l'annuncio di un'epoca di orrori concentrazionari.
Si pensi che ancora nell'ottocento la maggior parte delle case contadine di Francia non aveva che un pavimento di terra battuta, si leggano i racconti di Verga che rappresentano la vita rurale della Sicilia alla fine del XIX secolo.
Eppure la paura dei registi dell'inzio del novecento si appuntava sulla fabbrica e sulle macchine (e le loro nostalgie, si immagina, erano rivolte ad una immaginaria arcadia di comunione con la natura). E se a qualcuno vengono i mente i moderni cantori delle felici decrescite, può essere solo una coincidenza?
![]() |
| Sascha Schneider: Il Principe dei Dannati |
Progredire
"I progressisti dicono regolarmente di voler dare il massimo spazio a tutti i punti di vista, salvo poi sorprendersi e seccarsi davanti alla scoperta che esistono, in effetti, punti di vista diversi dai loro."
William F. Buckley, Jr.
Thursday, February 12, 2015
Un normale pomeriggio di follia informatica
12:58 monitor di destra Acer 22", 1680x1050
12:59 xlock
13:00 pranzo
13:58 x(un)lock
13:59 monitor di destra zoomato, sfocato
ಠ_ಠ
14:00 monitor [on]*[off]
14:01 ma BIOPARCO
14:02 accessibility-zoom-unzoom
f1..f12
shift f1..12
shift-ctrl-alt-meta-cokebottle-f1..f12
14:07 system->displays
monitor di destra sconosciuto, 1024x678
14:08 PORTA TUA NONNA
reboot
cold reboot
[ring...]
[ring...]
[ring si potrebbe riavere la posta eliminata di un'oretta fa?> (wut)
15:00 google 'cinnamon linux Acer 22" lost resolution'
(About 599,000 results)
# cvt 1680 1050
# xrandr --newmode "1680x1050_60.00" 146.25 1680 1784 ...
# xrandr --addmode VGA-0 "1680x1050_60.00"
# arandr
(cursecursecursecurse)
[mailstorm]
[provision hosting]
[ring..."Scusi ma lei mi può far capire chi è anonymous?"]
(mi fanno male gli occhi - forse è il monitor)
EDID?
# less /var/log/Xorg.log
# zless /var/log/Xorg*.*log*
16:00 OK, generiamo xorg.conf
reboot
cold reboot
xorg.conf EPIC FAIL (strano, non capisco come mai)
# rm /etc/X11/xorg.conf
reboot
16:45 ricerca altro monitor (no)
comincia ordine monitor nuovo
[sospetto - pink panther theme]
disconnetti cavo di alimentazione monitor dx
riconnetti cavo di alimentazione monitor dx
16:55 monitor di destra Acer 22", 1680x1050
17:00 rage⚓tilt⚓cringe⚓rage⚓cringe⚓tilt@#☽☾!⚒
[ring...]
Saturday, February 7, 2015
I may not know much math, but...
Economics is possibly the only quantitative discipline where opinions are expressed, and solutions proposed, by persons who were never quite successful in mastering long division.
Friday, February 6, 2015
On converting openssh's id_rsa.pub to openssl, interface design, and lazy people
I just spent two hours trying to find the information needed to convert an
openssh public key to openssl format (All hail and kudos to Lars and
his awesome
post on the subject). It has been a fun time, spent amongst
acronyms such as PEM, DER, PKCS#1, PKCS#8, ASN1.1 and content-rich
error messages suc as "cannot uudecode" and "Expected
PUBLIC_KEY".
So, how is this different from a standard day at the office? In a way it is not - after all,This is not the first time I meet the SSL zoo and wrestle with it. It's just the fact that this kind of wrestling is becoming more and more frequent, as demands for encryption grow - courtesy of the Snowden-NSA snafu.
Problem: the entire field is way too mysterious, laden with three-letter acronyms, and dark corners that nobody cares to document.
Even worse, this is all FOSS software, that should put a premium on good software engineering, be standards minded, have good documentation.
Sheesh. Take my problem. ssh comes with a tool (ssh-keygen) that generates the public/private key pair for ssh usage. Given the private key, you can always reconstruct the public part:
The private key is in a format (PKCS#1, PEM-encoded) that openssl understands. Crucially, the .pub file is in a different, largely undocumented, format. And my problem was: convert the .pub part of an openssh key pair to an openssl compatible format without having access to the private part. In fact. If the private key is available, that is easy:
But God helps you if your version is less than 5.6, because - in that that case - ssh-keygen will happily perform several tricks on your .pub file except the one that's needed. And openssl. will not help either. So what you need is a custom program (Hello, Lars!) - and not even one that any schmuck could write.
Which takes me to my rant.
Why is the field of encryption cursed with scores of obscure, incompatible formats that almost no one cares to make explicit (yes that's PEM, DER, PKCS#1, PKCS#8, ASN1.1, BER...I could go on, but won't). Why do we need more than one? (because none of these formats is worth its salt, that's why)
And, most importantly, why none of the aforementioned formats is self documenting? Why won't the toolset be so kind to inform its user on what's going on, or even, for God's sake agree with itself?
Take Bob - a not very experienced, not very cultured sysadmin which receives a file named fubar. Bob's task is to figure it out. Now, Bob suspects fubar may have something to do with encryption (generally) and openssl (specifically). So, being a sysadmin, Bob tries to throw the toolset at fubar.
If the toolset was sane that's what would happen:
But the toolset is insane, so what actually happens is this:
Note that, throughout this process, Bob is not gaining any useful insight on the world of encryption, data security, etc. He is just being trained with electric shocks, mouse-in-a-maze like, to remember the quirks of one of the quirkiest user interfaces ever.
I find the bit where "openssl rsa -in " refuses to yield any information on fubar unless the right switch is flipped particularly delightful. This is bad interface design at its finest: it doesn't get any worse than that.
The rant would go on (why do CAs that have certificate chains do not distribute them along with their certificates? and why o why cannot it be all in the same file? and why o why o why they change it every other Wednesday and hide it in a different web place? and why o why o why o why if you forego the chain file - whose internal composition has to be guessed by trial-and-error - browsers react as if your cert had been signed by George "Baby Face" Nelson?) but I feel that, for today, this may be enough.
Next guy that tells me "You know, people don't really care about data privacy, 'cos they're lazy", ends up on a gore image board. I guarantee it.
P.S.: Don't get me wrong: I do think that openssl and openssh are a godsend gift to the computing world, and I am thankful for that. But their UIs? Ouch.
So, how is this different from a standard day at the office? In a way it is not - after all,This is not the first time I meet the SSL zoo and wrestle with it. It's just the fact that this kind of wrestling is becoming more and more frequent, as demands for encryption grow - courtesy of the Snowden-NSA snafu.
Problem: the entire field is way too mysterious, laden with three-letter acronyms, and dark corners that nobody cares to document.
Even worse, this is all FOSS software, that should put a premium on good software engineering, be standards minded, have good documentation.
Sheesh. Take my problem. ssh comes with a tool (ssh-keygen) that generates the public/private key pair for ssh usage. Given the private key, you can always reconstruct the public part:
# ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
The private key is in a format (PKCS#1, PEM-encoded) that openssl understands. Crucially, the .pub file is in a different, largely undocumented, format. And my problem was: convert the .pub part of an openssh key pair to an openssl compatible format without having access to the private part. In fact. If the private key is available, that is easy:
# openssl rsa -in mykey.pem -pubout > mykey.pub
Most of my time was spent in finding out that - if you have access to openssh 5.6 and later (not to be found on several servers, chiefly the RHEL6 based ones) ssh-keygen will do the deed for you:
# ssh-keygen -e -m pem -f id_rsa.pub
But God helps you if your version is less than 5.6, because - in that that case - ssh-keygen will happily perform several tricks on your .pub file except the one that's needed. And openssl. will not help either. So what you need is a custom program (Hello, Lars!) - and not even one that any schmuck could write.
Which takes me to my rant.
Why is the field of encryption cursed with scores of obscure, incompatible formats that almost no one cares to make explicit (yes that's PEM, DER, PKCS#1, PKCS#8, ASN1.1, BER...I could go on, but won't). Why do we need more than one? (because none of these formats is worth its salt, that's why)
And, most importantly, why none of the aforementioned formats is self documenting? Why won't the toolset be so kind to inform its user on what's going on, or even, for God's sake agree with itself?
Take Bob - a not very experienced, not very cultured sysadmin which receives a file named fubar. Bob's task is to figure it out. Now, Bob suspects fubar may have something to do with encryption (generally) and openssl (specifically). So, being a sysadmin, Bob tries to throw the toolset at fubar.
If the toolset was sane that's what would happen:
# openssl fubar
RSA Public-Key: (2048 bit) Modulus: ...
But the toolset is insane, so what actually happens is this:
# openssl fubar openssl:Error: 'fubar' is an invalid command. [...Bob selects a random command and tries again...] # openssl x509 fubar unknown option fubar usage x509 args [...Bob reads usage....] #openssl x509 -in fubar unable to load certificate 140191632783176:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE [man openssl,head,..... gotta be a public key (rsa? dsa? coin toss)] # openssl rsa -in fubar unable to load Private Key 140524681410376:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: ANY PRIVATE KEY [...time and 10001 curses pass....] # openssl rsa -pubin -text -in fubar Public-Key: (2048 bit) Modulus:
Note that, throughout this process, Bob is not gaining any useful insight on the world of encryption, data security, etc. He is just being trained with electric shocks, mouse-in-a-maze like, to remember the quirks of one of the quirkiest user interfaces ever.
I find the bit where "openssl rsa -in " refuses to yield any information on fubar unless the right switch is flipped particularly delightful. This is bad interface design at its finest: it doesn't get any worse than that.
The rant would go on (why do CAs that have certificate chains do not distribute them along with their certificates? and why o why cannot it be all in the same file? and why o why o why they change it every other Wednesday and hide it in a different web place? and why o why o why o why if you forego the chain file - whose internal composition has to be guessed by trial-and-error - browsers react as if your cert had been signed by George "Baby Face" Nelson?) but I feel that, for today, this may be enough.
Next guy that tells me "You know, people don't really care about data privacy, 'cos they're lazy", ends up on a gore image board. I guarantee it.
P.S.: Don't get me wrong: I do think that openssl and openssh are a godsend gift to the computing world, and I am thankful for that. But their UIs? Ouch.
Thursday, February 5, 2015
Guardi, io non ho mai capito la matematica
L'economia è forse l'unica disciplina numerica in cui vengono espresse opinioni e proposte soluzioni anche da chi non ha mai capito a fondo le divisioni a due cifre.
Monday, January 26, 2015
A Unix Administrator's Bookshelf
These titles came about from a discussion on the Italian Facebook Group VUA. I'm leaving them here (minus the obviously jocular titles), as a form of public service.
Technical
- "The C programming language" Kerningham, Ritchie
- "Advanced Programming in the Unix Environment","UNIX Network Programming" Stevens
- "Modern Operating Systems","Computer Networks" Tanenbaum
- "UNIX and Linux System Administration Handbook" Evi Nemeth et al.
- "Programming Perl", "Learning Perl", "Perl Cookbook" O' Reilly Media publishing
- "Modern Perl" Chromatic
- "Programming Python", "Learning Python", "Python Cookbook" O' Reilly Media publishing
- "The Art of capacity planning:scaling web resources" J.Allspaw
Conceptual
- "The Art of Computer Programming" Knuth
- "Gödel, Escher, Bach: an Eternal Golden Braid", Hofstadter
Essays & Journalism
- "In Search of Stupidity: Over 20 Years of High-Tech Marketing Disasters" Chapman
- "Spaghetti Hacker" Monti, Chiccarelli
- "Microservi", D. Coupland
- "Come Funziona Google" Schmidt, Rosenberg
- "The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win" Kim, Behr, Spafford
Inspirational
- "L'arte di insultare" e "L'arte di avere ragione" Arthur Schopenhauer
- "2001: A Space Odissey", A.C. Clarke
- "IT", S. King
Subscribe to:
Posts (Atom)


